Lines Matching refs:inst
71 static void __init kvm_patch_ins(u32 *inst, u32 new_inst) in kvm_patch_ins() argument
73 *inst = new_inst; in kvm_patch_ins()
74 flush_icache_range((ulong)inst, (ulong)inst + 4); in kvm_patch_ins()
77 static void __init kvm_patch_ins_ll(u32 *inst, long addr, u32 rt) in kvm_patch_ins_ll() argument
80 kvm_patch_ins(inst, KVM_INST_LD | rt | (addr & 0x0000fffc)); in kvm_patch_ins_ll()
82 kvm_patch_ins(inst, KVM_INST_LWZ | rt | (addr & 0x0000fffc)); in kvm_patch_ins_ll()
86 static void __init kvm_patch_ins_ld(u32 *inst, long addr, u32 rt) in kvm_patch_ins_ld() argument
89 kvm_patch_ins(inst, KVM_INST_LD | rt | (addr & 0x0000fffc)); in kvm_patch_ins_ld()
91 kvm_patch_ins(inst, KVM_INST_LWZ | rt | ((addr + 4) & 0x0000fffc)); in kvm_patch_ins_ld()
95 static void __init kvm_patch_ins_lwz(u32 *inst, long addr, u32 rt) in kvm_patch_ins_lwz() argument
97 kvm_patch_ins(inst, KVM_INST_LWZ | rt | (addr & 0x0000ffff)); in kvm_patch_ins_lwz()
100 static void __init kvm_patch_ins_std(u32 *inst, long addr, u32 rt) in kvm_patch_ins_std() argument
103 kvm_patch_ins(inst, KVM_INST_STD | rt | (addr & 0x0000fffc)); in kvm_patch_ins_std()
105 kvm_patch_ins(inst, KVM_INST_STW | rt | ((addr + 4) & 0x0000fffc)); in kvm_patch_ins_std()
109 static void __init kvm_patch_ins_stw(u32 *inst, long addr, u32 rt) in kvm_patch_ins_stw() argument
111 kvm_patch_ins(inst, KVM_INST_STW | rt | (addr & 0x0000fffc)); in kvm_patch_ins_stw()
114 static void __init kvm_patch_ins_nop(u32 *inst) in kvm_patch_ins_nop() argument
116 kvm_patch_ins(inst, KVM_INST_NOP); in kvm_patch_ins_nop()
119 static void __init kvm_patch_ins_b(u32 *inst, int addr) in kvm_patch_ins_b() argument
125 if ((ulong)inst < (ulong)&__end_interrupts) in kvm_patch_ins_b()
129 kvm_patch_ins(inst, KVM_INST_B | (addr & KVM_INST_B_MASK)); in kvm_patch_ins_b()
155 static void __init kvm_patch_ins_mtmsrd(u32 *inst, u32 rt) in kvm_patch_ins_mtmsrd() argument
167 distance_start = (ulong)p - (ulong)inst; in kvm_patch_ins_mtmsrd()
168 next_inst = ((ulong)inst + 4); in kvm_patch_ins_mtmsrd()
194 p[kvm_emulate_mtmsrd_orig_ins_offs] = *inst; in kvm_patch_ins_mtmsrd()
198 kvm_patch_ins_b(inst, distance_start); in kvm_patch_ins_mtmsrd()
208 static void __init kvm_patch_ins_mtmsr(u32 *inst, u32 rt) in kvm_patch_ins_mtmsr() argument
220 distance_start = (ulong)p - (ulong)inst; in kvm_patch_ins_mtmsr()
221 next_inst = ((ulong)inst + 4); in kvm_patch_ins_mtmsr()
254 p[kvm_emulate_mtmsr_orig_ins_offs] = *inst; in kvm_patch_ins_mtmsr()
258 kvm_patch_ins_b(inst, distance_start); in kvm_patch_ins_mtmsr()
269 static void __init kvm_patch_ins_wrtee(u32 *inst, u32 rt, int imm_one) in kvm_patch_ins_wrtee() argument
281 distance_start = (ulong)p - (ulong)inst; in kvm_patch_ins_wrtee()
282 next_inst = ((ulong)inst + 4); in kvm_patch_ins_wrtee()
315 p[kvm_emulate_wrtee_orig_ins_offs] = *inst; in kvm_patch_ins_wrtee()
319 kvm_patch_ins_b(inst, distance_start); in kvm_patch_ins_wrtee()
326 static void __init kvm_patch_ins_wrteei_0(u32 *inst) in kvm_patch_ins_wrteei_0() argument
338 distance_start = (ulong)p - (ulong)inst; in kvm_patch_ins_wrteei_0()
339 next_inst = ((ulong)inst + 4); in kvm_patch_ins_wrteei_0()
353 kvm_patch_ins_b(inst, distance_start); in kvm_patch_ins_wrteei_0()
367 static void __init kvm_patch_ins_mtsrin(u32 *inst, u32 rt, u32 rb) in kvm_patch_ins_mtsrin() argument
379 distance_start = (ulong)p - (ulong)inst; in kvm_patch_ins_mtsrin()
380 next_inst = ((ulong)inst + 4); in kvm_patch_ins_mtsrin()
394 p[kvm_emulate_mtsrin_orig_ins_offs] = *inst; in kvm_patch_ins_mtsrin()
398 kvm_patch_ins_b(inst, distance_start); in kvm_patch_ins_mtsrin()
418 static void __init kvm_check_ins(u32 *inst, u32 features) in kvm_check_ins() argument
420 u32 _inst = *inst; in kvm_check_ins()
427 kvm_patch_ins_ld(inst, magic_var(msr), inst_rt); in kvm_check_ins()
430 kvm_patch_ins_ld(inst, magic_var(sprg0), inst_rt); in kvm_check_ins()
433 kvm_patch_ins_ld(inst, magic_var(sprg1), inst_rt); in kvm_check_ins()
436 kvm_patch_ins_ld(inst, magic_var(sprg2), inst_rt); in kvm_check_ins()
439 kvm_patch_ins_ld(inst, magic_var(sprg3), inst_rt); in kvm_check_ins()
442 kvm_patch_ins_ld(inst, magic_var(srr0), inst_rt); in kvm_check_ins()
445 kvm_patch_ins_ld(inst, magic_var(srr1), inst_rt); in kvm_check_ins()
452 kvm_patch_ins_ld(inst, magic_var(dar), inst_rt); in kvm_check_ins()
455 kvm_patch_ins_lwz(inst, magic_var(dsisr), inst_rt); in kvm_check_ins()
461 kvm_patch_ins_lwz(inst, magic_var(mas0), inst_rt); in kvm_check_ins()
465 kvm_patch_ins_lwz(inst, magic_var(mas1), inst_rt); in kvm_check_ins()
469 kvm_patch_ins_ld(inst, magic_var(mas2), inst_rt); in kvm_check_ins()
473 kvm_patch_ins_lwz(inst, magic_var(mas7_3) + 4, inst_rt); in kvm_check_ins()
477 kvm_patch_ins_lwz(inst, magic_var(mas4), inst_rt); in kvm_check_ins()
481 kvm_patch_ins_lwz(inst, magic_var(mas6), inst_rt); in kvm_check_ins()
485 kvm_patch_ins_lwz(inst, magic_var(mas7_3), inst_rt); in kvm_check_ins()
494 kvm_patch_ins_ld(inst, magic_var(sprg4), inst_rt); in kvm_check_ins()
501 kvm_patch_ins_ld(inst, magic_var(sprg5), inst_rt); in kvm_check_ins()
508 kvm_patch_ins_ld(inst, magic_var(sprg6), inst_rt); in kvm_check_ins()
515 kvm_patch_ins_ld(inst, magic_var(sprg7), inst_rt); in kvm_check_ins()
521 kvm_patch_ins_lwz(inst, magic_var(esr), inst_rt); in kvm_check_ins()
527 kvm_patch_ins_lwz(inst, magic_var(pir), inst_rt); in kvm_check_ins()
533 kvm_patch_ins_std(inst, magic_var(sprg0), inst_rt); in kvm_check_ins()
536 kvm_patch_ins_std(inst, magic_var(sprg1), inst_rt); in kvm_check_ins()
539 kvm_patch_ins_std(inst, magic_var(sprg2), inst_rt); in kvm_check_ins()
542 kvm_patch_ins_std(inst, magic_var(sprg3), inst_rt); in kvm_check_ins()
545 kvm_patch_ins_std(inst, magic_var(srr0), inst_rt); in kvm_check_ins()
548 kvm_patch_ins_std(inst, magic_var(srr1), inst_rt); in kvm_check_ins()
555 kvm_patch_ins_std(inst, magic_var(dar), inst_rt); in kvm_check_ins()
558 kvm_patch_ins_stw(inst, magic_var(dsisr), inst_rt); in kvm_check_ins()
563 kvm_patch_ins_stw(inst, magic_var(mas0), inst_rt); in kvm_check_ins()
567 kvm_patch_ins_stw(inst, magic_var(mas1), inst_rt); in kvm_check_ins()
571 kvm_patch_ins_std(inst, magic_var(mas2), inst_rt); in kvm_check_ins()
575 kvm_patch_ins_stw(inst, magic_var(mas7_3) + 4, inst_rt); in kvm_check_ins()
579 kvm_patch_ins_stw(inst, magic_var(mas4), inst_rt); in kvm_check_ins()
583 kvm_patch_ins_stw(inst, magic_var(mas6), inst_rt); in kvm_check_ins()
587 kvm_patch_ins_stw(inst, magic_var(mas7_3), inst_rt); in kvm_check_ins()
593 kvm_patch_ins_std(inst, magic_var(sprg4), inst_rt); in kvm_check_ins()
597 kvm_patch_ins_std(inst, magic_var(sprg5), inst_rt); in kvm_check_ins()
601 kvm_patch_ins_std(inst, magic_var(sprg6), inst_rt); in kvm_check_ins()
605 kvm_patch_ins_std(inst, magic_var(sprg7), inst_rt); in kvm_check_ins()
611 kvm_patch_ins_stw(inst, magic_var(esr), inst_rt); in kvm_check_ins()
617 kvm_patch_ins_nop(inst); in kvm_check_ins()
622 kvm_patch_ins_mtmsrd(inst, inst_rt); in kvm_check_ins()
626 kvm_patch_ins_mtmsr(inst, inst_rt); in kvm_check_ins()
630 kvm_patch_ins_wrtee(inst, inst_rt, 0); in kvm_check_ins()
640 kvm_patch_ins_mtsrin(inst, inst_rt, inst_rb); in kvm_check_ins()
649 kvm_patch_ins_wrteei_0(inst); in kvm_check_ins()
653 kvm_patch_ins_wrtee(inst, 0, 1); in kvm_check_ins()