Lines Matching refs:inst
80 static inline void kvm_patch_ins(u32 *inst, u32 new_inst) in kvm_patch_ins() argument
82 *inst = new_inst; in kvm_patch_ins()
83 flush_icache_range((ulong)inst, (ulong)inst + 4); in kvm_patch_ins()
86 static void kvm_patch_ins_ll(u32 *inst, long addr, u32 rt) in kvm_patch_ins_ll() argument
89 kvm_patch_ins(inst, KVM_INST_LD | rt | (addr & 0x0000fffc)); in kvm_patch_ins_ll()
91 kvm_patch_ins(inst, KVM_INST_LWZ | rt | (addr & 0x0000fffc)); in kvm_patch_ins_ll()
95 static void kvm_patch_ins_ld(u32 *inst, long addr, u32 rt) in kvm_patch_ins_ld() argument
98 kvm_patch_ins(inst, KVM_INST_LD | rt | (addr & 0x0000fffc)); in kvm_patch_ins_ld()
100 kvm_patch_ins(inst, KVM_INST_LWZ | rt | ((addr + 4) & 0x0000fffc)); in kvm_patch_ins_ld()
104 static void kvm_patch_ins_lwz(u32 *inst, long addr, u32 rt) in kvm_patch_ins_lwz() argument
106 kvm_patch_ins(inst, KVM_INST_LWZ | rt | (addr & 0x0000ffff)); in kvm_patch_ins_lwz()
109 static void kvm_patch_ins_std(u32 *inst, long addr, u32 rt) in kvm_patch_ins_std() argument
112 kvm_patch_ins(inst, KVM_INST_STD | rt | (addr & 0x0000fffc)); in kvm_patch_ins_std()
114 kvm_patch_ins(inst, KVM_INST_STW | rt | ((addr + 4) & 0x0000fffc)); in kvm_patch_ins_std()
118 static void kvm_patch_ins_stw(u32 *inst, long addr, u32 rt) in kvm_patch_ins_stw() argument
120 kvm_patch_ins(inst, KVM_INST_STW | rt | (addr & 0x0000fffc)); in kvm_patch_ins_stw()
123 static void kvm_patch_ins_nop(u32 *inst) in kvm_patch_ins_nop() argument
125 kvm_patch_ins(inst, KVM_INST_NOP); in kvm_patch_ins_nop()
128 static void kvm_patch_ins_b(u32 *inst, int addr) in kvm_patch_ins_b() argument
134 if ((ulong)inst < (ulong)&__end_interrupts) in kvm_patch_ins_b()
138 kvm_patch_ins(inst, KVM_INST_B | (addr & KVM_INST_B_MASK)); in kvm_patch_ins_b()
164 static void kvm_patch_ins_mtmsrd(u32 *inst, u32 rt) in kvm_patch_ins_mtmsrd() argument
176 distance_start = (ulong)p - (ulong)inst; in kvm_patch_ins_mtmsrd()
177 next_inst = ((ulong)inst + 4); in kvm_patch_ins_mtmsrd()
203 p[kvm_emulate_mtmsrd_orig_ins_offs] = *inst; in kvm_patch_ins_mtmsrd()
207 kvm_patch_ins_b(inst, distance_start); in kvm_patch_ins_mtmsrd()
217 static void kvm_patch_ins_mtmsr(u32 *inst, u32 rt) in kvm_patch_ins_mtmsr() argument
229 distance_start = (ulong)p - (ulong)inst; in kvm_patch_ins_mtmsr()
230 next_inst = ((ulong)inst + 4); in kvm_patch_ins_mtmsr()
263 p[kvm_emulate_mtmsr_orig_ins_offs] = *inst; in kvm_patch_ins_mtmsr()
267 kvm_patch_ins_b(inst, distance_start); in kvm_patch_ins_mtmsr()
278 static void kvm_patch_ins_wrtee(u32 *inst, u32 rt, int imm_one) in kvm_patch_ins_wrtee() argument
290 distance_start = (ulong)p - (ulong)inst; in kvm_patch_ins_wrtee()
291 next_inst = ((ulong)inst + 4); in kvm_patch_ins_wrtee()
324 p[kvm_emulate_wrtee_orig_ins_offs] = *inst; in kvm_patch_ins_wrtee()
328 kvm_patch_ins_b(inst, distance_start); in kvm_patch_ins_wrtee()
335 static void kvm_patch_ins_wrteei_0(u32 *inst) in kvm_patch_ins_wrteei_0() argument
347 distance_start = (ulong)p - (ulong)inst; in kvm_patch_ins_wrteei_0()
348 next_inst = ((ulong)inst + 4); in kvm_patch_ins_wrteei_0()
362 kvm_patch_ins_b(inst, distance_start); in kvm_patch_ins_wrteei_0()
376 static void kvm_patch_ins_mtsrin(u32 *inst, u32 rt, u32 rb) in kvm_patch_ins_mtsrin() argument
388 distance_start = (ulong)p - (ulong)inst; in kvm_patch_ins_mtsrin()
389 next_inst = ((ulong)inst + 4); in kvm_patch_ins_mtsrin()
403 p[kvm_emulate_mtsrin_orig_ins_offs] = *inst; in kvm_patch_ins_mtsrin()
407 kvm_patch_ins_b(inst, distance_start); in kvm_patch_ins_mtsrin()
427 static void kvm_check_ins(u32 *inst, u32 features) in kvm_check_ins() argument
429 u32 _inst = *inst; in kvm_check_ins()
436 kvm_patch_ins_ld(inst, magic_var(msr), inst_rt); in kvm_check_ins()
439 kvm_patch_ins_ld(inst, magic_var(sprg0), inst_rt); in kvm_check_ins()
442 kvm_patch_ins_ld(inst, magic_var(sprg1), inst_rt); in kvm_check_ins()
445 kvm_patch_ins_ld(inst, magic_var(sprg2), inst_rt); in kvm_check_ins()
448 kvm_patch_ins_ld(inst, magic_var(sprg3), inst_rt); in kvm_check_ins()
451 kvm_patch_ins_ld(inst, magic_var(srr0), inst_rt); in kvm_check_ins()
454 kvm_patch_ins_ld(inst, magic_var(srr1), inst_rt); in kvm_check_ins()
461 kvm_patch_ins_ld(inst, magic_var(dar), inst_rt); in kvm_check_ins()
464 kvm_patch_ins_lwz(inst, magic_var(dsisr), inst_rt); in kvm_check_ins()
470 kvm_patch_ins_lwz(inst, magic_var(mas0), inst_rt); in kvm_check_ins()
474 kvm_patch_ins_lwz(inst, magic_var(mas1), inst_rt); in kvm_check_ins()
478 kvm_patch_ins_ld(inst, magic_var(mas2), inst_rt); in kvm_check_ins()
482 kvm_patch_ins_lwz(inst, magic_var(mas7_3) + 4, inst_rt); in kvm_check_ins()
486 kvm_patch_ins_lwz(inst, magic_var(mas4), inst_rt); in kvm_check_ins()
490 kvm_patch_ins_lwz(inst, magic_var(mas6), inst_rt); in kvm_check_ins()
494 kvm_patch_ins_lwz(inst, magic_var(mas7_3), inst_rt); in kvm_check_ins()
503 kvm_patch_ins_ld(inst, magic_var(sprg4), inst_rt); in kvm_check_ins()
510 kvm_patch_ins_ld(inst, magic_var(sprg5), inst_rt); in kvm_check_ins()
517 kvm_patch_ins_ld(inst, magic_var(sprg6), inst_rt); in kvm_check_ins()
524 kvm_patch_ins_ld(inst, magic_var(sprg7), inst_rt); in kvm_check_ins()
530 kvm_patch_ins_lwz(inst, magic_var(esr), inst_rt); in kvm_check_ins()
536 kvm_patch_ins_lwz(inst, magic_var(pir), inst_rt); in kvm_check_ins()
542 kvm_patch_ins_std(inst, magic_var(sprg0), inst_rt); in kvm_check_ins()
545 kvm_patch_ins_std(inst, magic_var(sprg1), inst_rt); in kvm_check_ins()
548 kvm_patch_ins_std(inst, magic_var(sprg2), inst_rt); in kvm_check_ins()
551 kvm_patch_ins_std(inst, magic_var(sprg3), inst_rt); in kvm_check_ins()
554 kvm_patch_ins_std(inst, magic_var(srr0), inst_rt); in kvm_check_ins()
557 kvm_patch_ins_std(inst, magic_var(srr1), inst_rt); in kvm_check_ins()
564 kvm_patch_ins_std(inst, magic_var(dar), inst_rt); in kvm_check_ins()
567 kvm_patch_ins_stw(inst, magic_var(dsisr), inst_rt); in kvm_check_ins()
572 kvm_patch_ins_stw(inst, magic_var(mas0), inst_rt); in kvm_check_ins()
576 kvm_patch_ins_stw(inst, magic_var(mas1), inst_rt); in kvm_check_ins()
580 kvm_patch_ins_std(inst, magic_var(mas2), inst_rt); in kvm_check_ins()
584 kvm_patch_ins_stw(inst, magic_var(mas7_3) + 4, inst_rt); in kvm_check_ins()
588 kvm_patch_ins_stw(inst, magic_var(mas4), inst_rt); in kvm_check_ins()
592 kvm_patch_ins_stw(inst, magic_var(mas6), inst_rt); in kvm_check_ins()
596 kvm_patch_ins_stw(inst, magic_var(mas7_3), inst_rt); in kvm_check_ins()
602 kvm_patch_ins_std(inst, magic_var(sprg4), inst_rt); in kvm_check_ins()
606 kvm_patch_ins_std(inst, magic_var(sprg5), inst_rt); in kvm_check_ins()
610 kvm_patch_ins_std(inst, magic_var(sprg6), inst_rt); in kvm_check_ins()
614 kvm_patch_ins_std(inst, magic_var(sprg7), inst_rt); in kvm_check_ins()
620 kvm_patch_ins_stw(inst, magic_var(esr), inst_rt); in kvm_check_ins()
626 kvm_patch_ins_nop(inst); in kvm_check_ins()
631 kvm_patch_ins_mtmsrd(inst, inst_rt); in kvm_check_ins()
635 kvm_patch_ins_mtmsr(inst, inst_rt); in kvm_check_ins()
639 kvm_patch_ins_wrtee(inst, inst_rt, 0); in kvm_check_ins()
649 kvm_patch_ins_mtsrin(inst, inst_rt, inst_rb); in kvm_check_ins()
658 kvm_patch_ins_wrteei_0(inst); in kvm_check_ins()
662 kvm_patch_ins_wrtee(inst, 0, 1); in kvm_check_ins()