Lines Matching refs:regs
63 static int __kprobes branch_taken(unsigned int instr, struct pt_regs *regs) in branch_taken() argument
70 --regs->ctr; in branch_taken()
71 if (((bo >> 1) & 1) ^ (regs->ctr == 0)) in branch_taken()
77 if (((regs->ccr >> (31 - bi)) & 1) != ((bo >> 3) & 1)) in branch_taken()
84 static long __kprobes address_ok(struct pt_regs *regs, unsigned long ea, int nb) in address_ok() argument
86 if (!user_mode(regs)) in address_ok()
94 static unsigned long __kprobes dform_ea(unsigned int instr, struct pt_regs *regs) in dform_ea() argument
102 ea += regs->gpr[ra]; in dform_ea()
104 return truncate_if_32bit(regs->msr, ea); in dform_ea()
111 static unsigned long __kprobes dsform_ea(unsigned int instr, struct pt_regs *regs) in dsform_ea() argument
119 ea += regs->gpr[ra]; in dsform_ea()
121 return truncate_if_32bit(regs->msr, ea); in dsform_ea()
129 struct pt_regs *regs) in xform_ea() argument
136 ea = regs->gpr[rb]; in xform_ea()
138 ea += regs->gpr[ra]; in xform_ea()
140 return truncate_if_32bit(regs->msr, ea); in xform_ea()
200 int nb, struct pt_regs *regs) in read_mem_unaligned() argument
251 struct pt_regs *regs) in read_mem() argument
253 if (!address_ok(regs, ea, nb)) in read_mem()
257 return read_mem_unaligned(dest, ea, nb, regs); in read_mem()
285 int nb, struct pt_regs *regs) in write_mem_unaligned() argument
328 struct pt_regs *regs) in write_mem() argument
330 if (!address_ok(regs, ea, nb)) in write_mem()
334 return write_mem_unaligned(val, ea, nb, regs); in write_mem()
344 struct pt_regs *regs) in do_fp_load() argument
363 if (!address_ok(regs, ea, nb)) in do_fp_load()
369 err = read_mem_unaligned(&data.ul[0], ea, nb, regs); in do_fp_load()
374 err = read_mem_unaligned(&data.ul[0], ea, 4, regs); in do_fp_load()
376 err = read_mem_unaligned(&data.ul[1], ea + 4, 4, regs); in do_fp_load()
385 struct pt_regs *regs) in do_fp_store() argument
404 if (!address_ok(regs, ea, nb)) in do_fp_store()
415 err = write_mem_unaligned(data.ul[0], ea, nb, regs); in do_fp_store()
421 err = write_mem_unaligned(data.ul[0], ea, 4, regs); in do_fp_store()
423 err = write_mem_unaligned(data.ul[1], ea + 4, 4, regs); in do_fp_store()
432 unsigned long ea, struct pt_regs *regs) in do_vec_load() argument
434 if (!address_ok(regs, ea & ~0xfUL, 16)) in do_vec_load()
440 unsigned long ea, struct pt_regs *regs) in do_vec_store() argument
442 if (!address_ok(regs, ea & ~0xfUL, 16)) in do_vec_store()
450 unsigned long ea, struct pt_regs *regs) in do_vsx_load() argument
455 if (!address_ok(regs, ea, 16)) in do_vsx_load()
459 err = read_mem_unaligned(&val[0], ea, 8, regs); in do_vsx_load()
461 err = read_mem_unaligned(&val[1], ea + 8, 8, regs); in do_vsx_load()
468 unsigned long ea, struct pt_regs *regs) in do_vsx_store() argument
473 if (!address_ok(regs, ea, 16)) in do_vsx_store()
480 err = write_mem_unaligned(val[0], ea, 8, regs); in do_vsx_store()
482 err = write_mem_unaligned(val[1], ea + 8, 8, regs); in do_vsx_store()
533 static void __kprobes set_cr0(struct pt_regs *regs, int rd) in set_cr0() argument
535 long val = regs->gpr[rd]; in set_cr0()
537 regs->ccr = (regs->ccr & 0x0fffffff) | ((regs->xer >> 3) & 0x10000000); in set_cr0()
539 if (!(regs->msr & MSR_64BIT)) in set_cr0()
543 regs->ccr |= 0x80000000; in set_cr0()
545 regs->ccr |= 0x40000000; in set_cr0()
547 regs->ccr |= 0x20000000; in set_cr0()
550 static void __kprobes add_with_carry(struct pt_regs *regs, int rd, in add_with_carry() argument
558 regs->gpr[rd] = val; in add_with_carry()
560 if (!(regs->msr & MSR_64BIT)) { in add_with_carry()
566 regs->xer |= XER_CA; in add_with_carry()
568 regs->xer &= ~XER_CA; in add_with_carry()
571 static void __kprobes do_cmp_signed(struct pt_regs *regs, long v1, long v2, in do_cmp_signed() argument
576 crval = (regs->xer >> 31) & 1; /* get SO bit */ in do_cmp_signed()
584 regs->ccr = (regs->ccr & ~(0xf << shift)) | (crval << shift); in do_cmp_signed()
587 static void __kprobes do_cmp_unsigned(struct pt_regs *regs, unsigned long v1, in do_cmp_unsigned() argument
592 crval = (regs->xer >> 31) & 1; /* get SO bit */ in do_cmp_unsigned()
600 regs->ccr = (regs->ccr & ~(0xf << shift)) | (crval << shift); in do_cmp_unsigned()
642 int __kprobes analyse_instr(struct instruction_op *op, struct pt_regs *regs, in analyse_instr() argument
659 imm += regs->nip; in analyse_instr()
660 regs->nip += 4; in analyse_instr()
661 regs->nip = truncate_if_32bit(regs->msr, regs->nip); in analyse_instr()
663 regs->link = regs->nip; in analyse_instr()
664 if (branch_taken(instr, regs)) in analyse_instr()
665 regs->nip = truncate_if_32bit(regs->msr, imm); in analyse_instr()
681 imm += regs->nip; in analyse_instr()
683 regs->link = truncate_if_32bit(regs->msr, regs->nip + 4); in analyse_instr()
684 imm = truncate_if_32bit(regs->msr, imm); in analyse_instr()
685 regs->nip = imm; in analyse_instr()
692 val = (regs->ccr >> ra) & 0xf; in analyse_instr()
693 regs->ccr = (regs->ccr & ~(0xfUL << rd)) | (val << rd); in analyse_instr()
699 imm = (instr & 0x400)? regs->ctr: regs->link; in analyse_instr()
700 regs->nip = truncate_if_32bit(regs->msr, regs->nip + 4); in analyse_instr()
701 imm = truncate_if_32bit(regs->msr, imm); in analyse_instr()
703 regs->link = regs->nip; in analyse_instr()
704 if (branch_taken(instr, regs)) in analyse_instr()
705 regs->nip = imm; in analyse_instr()
709 if (regs->msr & MSR_PR) in analyse_instr()
730 ra = (regs->ccr >> (31 - ra)) & 1; in analyse_instr()
731 rb = (regs->ccr >> (31 - rb)) & 1; in analyse_instr()
733 regs->ccr = (regs->ccr & ~(1UL << (31 - rd))) | in analyse_instr()
764 if (!FULL_REGS(regs)) in analyse_instr()
774 if (rd & trap_compare(regs->gpr[ra], (short) instr)) in analyse_instr()
779 if (rd & trap_compare((int)regs->gpr[ra], (short) instr)) in analyse_instr()
784 regs->gpr[rd] = regs->gpr[ra] * (short) instr; in analyse_instr()
789 add_with_carry(regs, rd, ~regs->gpr[ra], imm, 1); in analyse_instr()
794 val = regs->gpr[ra]; in analyse_instr()
799 do_cmp_unsigned(regs, val, imm, rd >> 2); in analyse_instr()
804 val = regs->gpr[ra]; in analyse_instr()
809 do_cmp_signed(regs, val, imm, rd >> 2); in analyse_instr()
814 add_with_carry(regs, rd, regs->gpr[ra], imm, 0); in analyse_instr()
819 add_with_carry(regs, rd, regs->gpr[ra], imm, 0); in analyse_instr()
820 set_cr0(regs, rd); in analyse_instr()
826 imm += regs->gpr[ra]; in analyse_instr()
827 regs->gpr[rd] = imm; in analyse_instr()
833 imm += regs->gpr[ra]; in analyse_instr()
834 regs->gpr[rd] = imm; in analyse_instr()
840 val = DATA32(regs->gpr[rd]); in analyse_instr()
842 regs->gpr[ra] = (regs->gpr[ra] & ~imm) | (ROTATE(val, rb) & imm); in analyse_instr()
848 val = DATA32(regs->gpr[rd]); in analyse_instr()
849 regs->gpr[ra] = ROTATE(val, rb) & MASK32(mb, me); in analyse_instr()
855 rb = regs->gpr[rb] & 0x1f; in analyse_instr()
856 val = DATA32(regs->gpr[rd]); in analyse_instr()
857 regs->gpr[ra] = ROTATE(val, rb) & MASK32(mb, me); in analyse_instr()
862 regs->gpr[ra] = regs->gpr[rd] | imm; in analyse_instr()
867 regs->gpr[ra] = regs->gpr[rd] | (imm << 16); in analyse_instr()
872 regs->gpr[ra] = regs->gpr[rd] ^ imm; in analyse_instr()
877 regs->gpr[ra] = regs->gpr[rd] ^ (imm << 16); in analyse_instr()
882 regs->gpr[ra] = regs->gpr[rd] & imm; in analyse_instr()
883 set_cr0(regs, ra); in analyse_instr()
888 regs->gpr[ra] = regs->gpr[rd] & (imm << 16); in analyse_instr()
889 set_cr0(regs, ra); in analyse_instr()
895 val = regs->gpr[rd]; in analyse_instr()
901 regs->gpr[ra] = val & MASK64_L(mb); in analyse_instr()
904 regs->gpr[ra] = val & MASK64_R(mb); in analyse_instr()
907 regs->gpr[ra] = val & MASK64(mb, 63 - sh); in analyse_instr()
911 regs->gpr[ra] = (regs->gpr[ra] & ~imm) | in analyse_instr()
916 sh = regs->gpr[rb] & 0x3f; in analyse_instr()
920 regs->gpr[ra] = val & MASK64_L(mb); in analyse_instr()
923 regs->gpr[ra] = val & MASK64_R(mb); in analyse_instr()
933 (rd & trap_compare((int)regs->gpr[ra], in analyse_instr()
934 (int)regs->gpr[rb]))) in analyse_instr()
939 if (rd & trap_compare(regs->gpr[ra], regs->gpr[rb])) in analyse_instr()
944 if (regs->msr & MSR_PR) in analyse_instr()
950 if (regs->msr & MSR_PR) in analyse_instr()
958 if (regs->msr & MSR_PR) in analyse_instr()
970 regs->gpr[rd] = regs->ccr; in analyse_instr()
971 regs->gpr[rd] &= 0xffffffffUL; in analyse_instr()
976 val = regs->gpr[rd]; in analyse_instr()
979 regs->ccr = (regs->ccr & ~imm) | in analyse_instr()
989 regs->gpr[rd] = regs->xer; in analyse_instr()
990 regs->gpr[rd] &= 0xffffffffUL; in analyse_instr()
993 regs->gpr[rd] = regs->link; in analyse_instr()
996 regs->gpr[rd] = regs->ctr; in analyse_instr()
1010 regs->xer = (regs->gpr[rd] & 0xffffffffUL); in analyse_instr()
1013 regs->link = regs->gpr[rd]; in analyse_instr()
1016 regs->ctr = regs->gpr[rd]; in analyse_instr()
1020 op->val = regs->gpr[rd]; in analyse_instr()
1030 val = regs->gpr[ra]; in analyse_instr()
1031 val2 = regs->gpr[rb]; in analyse_instr()
1039 do_cmp_signed(regs, val, val2, rd >> 2); in analyse_instr()
1043 val = regs->gpr[ra]; in analyse_instr()
1044 val2 = regs->gpr[rb]; in analyse_instr()
1052 do_cmp_unsigned(regs, val, val2, rd >> 2); in analyse_instr()
1059 add_with_carry(regs, rd, ~regs->gpr[ra], in analyse_instr()
1060 regs->gpr[rb], 1); in analyse_instr()
1064 asm("mulhdu %0,%1,%2" : "=r" (regs->gpr[rd]) : in analyse_instr()
1065 "r" (regs->gpr[ra]), "r" (regs->gpr[rb])); in analyse_instr()
1069 add_with_carry(regs, rd, regs->gpr[ra], in analyse_instr()
1070 regs->gpr[rb], 0); in analyse_instr()
1074 asm("mulhwu %0,%1,%2" : "=r" (regs->gpr[rd]) : in analyse_instr()
1075 "r" (regs->gpr[ra]), "r" (regs->gpr[rb])); in analyse_instr()
1079 regs->gpr[rd] = regs->gpr[rb] - regs->gpr[ra]; in analyse_instr()
1083 asm("mulhd %0,%1,%2" : "=r" (regs->gpr[rd]) : in analyse_instr()
1084 "r" (regs->gpr[ra]), "r" (regs->gpr[rb])); in analyse_instr()
1088 asm("mulhw %0,%1,%2" : "=r" (regs->gpr[rd]) : in analyse_instr()
1089 "r" (regs->gpr[ra]), "r" (regs->gpr[rb])); in analyse_instr()
1093 regs->gpr[rd] = -regs->gpr[ra]; in analyse_instr()
1097 add_with_carry(regs, rd, ~regs->gpr[ra], regs->gpr[rb], in analyse_instr()
1098 regs->xer & XER_CA); in analyse_instr()
1102 add_with_carry(regs, rd, regs->gpr[ra], regs->gpr[rb], in analyse_instr()
1103 regs->xer & XER_CA); in analyse_instr()
1107 add_with_carry(regs, rd, ~regs->gpr[ra], 0L, in analyse_instr()
1108 regs->xer & XER_CA); in analyse_instr()
1112 add_with_carry(regs, rd, regs->gpr[ra], 0L, in analyse_instr()
1113 regs->xer & XER_CA); in analyse_instr()
1117 add_with_carry(regs, rd, ~regs->gpr[ra], -1L, in analyse_instr()
1118 regs->xer & XER_CA); in analyse_instr()
1122 regs->gpr[rd] = regs->gpr[ra] * regs->gpr[rb]; in analyse_instr()
1126 add_with_carry(regs, rd, regs->gpr[ra], -1L, in analyse_instr()
1127 regs->xer & XER_CA); in analyse_instr()
1131 regs->gpr[rd] = (unsigned int) regs->gpr[ra] * in analyse_instr()
1132 (unsigned int) regs->gpr[rb]; in analyse_instr()
1136 regs->gpr[rd] = regs->gpr[ra] + regs->gpr[rb]; in analyse_instr()
1140 regs->gpr[rd] = regs->gpr[ra] / regs->gpr[rb]; in analyse_instr()
1144 regs->gpr[rd] = (unsigned int) regs->gpr[ra] / in analyse_instr()
1145 (unsigned int) regs->gpr[rb]; in analyse_instr()
1149 regs->gpr[rd] = (long int) regs->gpr[ra] / in analyse_instr()
1150 (long int) regs->gpr[rb]; in analyse_instr()
1154 regs->gpr[rd] = (int) regs->gpr[ra] / in analyse_instr()
1155 (int) regs->gpr[rb]; in analyse_instr()
1163 asm("cntlzw %0,%1" : "=r" (regs->gpr[ra]) : in analyse_instr()
1164 "r" (regs->gpr[rd])); in analyse_instr()
1168 asm("cntlzd %0,%1" : "=r" (regs->gpr[ra]) : in analyse_instr()
1169 "r" (regs->gpr[rd])); in analyse_instr()
1173 regs->gpr[ra] = regs->gpr[rd] & regs->gpr[rb]; in analyse_instr()
1177 regs->gpr[ra] = regs->gpr[rd] & ~regs->gpr[rb]; in analyse_instr()
1181 regs->gpr[ra] = ~(regs->gpr[rd] | regs->gpr[rb]); in analyse_instr()
1185 regs->gpr[ra] = ~(regs->gpr[rd] ^ regs->gpr[rb]); in analyse_instr()
1189 regs->gpr[ra] = regs->gpr[rd] ^ regs->gpr[rb]; in analyse_instr()
1193 regs->gpr[ra] = regs->gpr[rd] | ~regs->gpr[rb]; in analyse_instr()
1197 regs->gpr[ra] = regs->gpr[rd] | regs->gpr[rb]; in analyse_instr()
1201 regs->gpr[ra] = ~(regs->gpr[rd] & regs->gpr[rb]); in analyse_instr()
1205 regs->gpr[ra] = (signed short) regs->gpr[rd]; in analyse_instr()
1209 regs->gpr[ra] = (signed char) regs->gpr[rd]; in analyse_instr()
1213 regs->gpr[ra] = (signed int) regs->gpr[rd]; in analyse_instr()
1221 sh = regs->gpr[rb] & 0x3f; in analyse_instr()
1223 regs->gpr[ra] = (regs->gpr[rd] << sh) & 0xffffffffUL; in analyse_instr()
1225 regs->gpr[ra] = 0; in analyse_instr()
1229 sh = regs->gpr[rb] & 0x3f; in analyse_instr()
1231 regs->gpr[ra] = (regs->gpr[rd] & 0xffffffffUL) >> sh; in analyse_instr()
1233 regs->gpr[ra] = 0; in analyse_instr()
1237 sh = regs->gpr[rb] & 0x3f; in analyse_instr()
1238 ival = (signed int) regs->gpr[rd]; in analyse_instr()
1239 regs->gpr[ra] = ival >> (sh < 32 ? sh : 31); in analyse_instr()
1241 regs->xer |= XER_CA; in analyse_instr()
1243 regs->xer &= ~XER_CA; in analyse_instr()
1248 ival = (signed int) regs->gpr[rd]; in analyse_instr()
1249 regs->gpr[ra] = ival >> sh; in analyse_instr()
1251 regs->xer |= XER_CA; in analyse_instr()
1253 regs->xer &= ~XER_CA; in analyse_instr()
1258 sh = regs->gpr[rb] & 0x7f; in analyse_instr()
1260 regs->gpr[ra] = regs->gpr[rd] << sh; in analyse_instr()
1262 regs->gpr[ra] = 0; in analyse_instr()
1266 sh = regs->gpr[rb] & 0x7f; in analyse_instr()
1268 regs->gpr[ra] = regs->gpr[rd] >> sh; in analyse_instr()
1270 regs->gpr[ra] = 0; in analyse_instr()
1274 sh = regs->gpr[rb] & 0x7f; in analyse_instr()
1275 ival = (signed long int) regs->gpr[rd]; in analyse_instr()
1276 regs->gpr[ra] = ival >> (sh < 64 ? sh : 63); in analyse_instr()
1278 regs->xer |= XER_CA; in analyse_instr()
1280 regs->xer &= ~XER_CA; in analyse_instr()
1286 ival = (signed long int) regs->gpr[rd]; in analyse_instr()
1287 regs->gpr[ra] = ival >> sh; in analyse_instr()
1289 regs->xer |= XER_CA; in analyse_instr()
1291 regs->xer &= ~XER_CA; in analyse_instr()
1300 op->ea = xform_ea(instr, regs); in analyse_instr()
1305 op->ea = xform_ea(instr, regs); in analyse_instr()
1310 op->ea = xform_ea(instr, regs); in analyse_instr()
1316 op->ea = xform_ea(instr, regs); in analyse_instr()
1322 op->ea = xform_ea(instr, regs); in analyse_instr()
1334 op->val = regs->gpr[rd]; in analyse_instr()
1340 op->ea = xform_ea(instr, regs); in analyse_instr()
1378 if (!(regs->msr & MSR_VEC)) in analyse_instr()
1385 if (!(regs->msr & MSR_VEC)) in analyse_instr()
1437 op->type = MKOP(LOAD_MULTI, 0, regs->xer & 0x7f); in analyse_instr()
1450 op->ea = truncate_if_32bit(regs->msr, in analyse_instr()
1451 regs->gpr[ra]); in analyse_instr()
1457 if (!(regs->msr & MSR_FP)) in analyse_instr()
1464 if (!(regs->msr & MSR_FP)) in analyse_instr()
1471 if (!(regs->msr & MSR_FP)) in analyse_instr()
1478 if (!(regs->msr & MSR_FP)) in analyse_instr()
1487 op->val = byterev_8(regs->gpr[rd]); in analyse_instr()
1492 op->type = MKOP(STORE_MULTI, 0, regs->xer & 0x7f); in analyse_instr()
1497 op->val = byterev_4(regs->gpr[rd]); in analyse_instr()
1506 op->ea = truncate_if_32bit(regs->msr, in analyse_instr()
1507 regs->gpr[ra]); in analyse_instr()
1516 op->val = byterev_2(regs->gpr[rd]); in analyse_instr()
1522 if (!(regs->msr & MSR_VSX)) in analyse_instr()
1530 if (!(regs->msr & MSR_VSX)) in analyse_instr()
1543 op->ea = dform_ea(instr, regs); in analyse_instr()
1549 op->ea = dform_ea(instr, regs); in analyse_instr()
1555 op->ea = dform_ea(instr, regs); in analyse_instr()
1561 op->ea = dform_ea(instr, regs); in analyse_instr()
1567 op->ea = dform_ea(instr, regs); in analyse_instr()
1573 op->ea = dform_ea(instr, regs); in analyse_instr()
1579 op->ea = dform_ea(instr, regs); in analyse_instr()
1586 op->ea = dform_ea(instr, regs); in analyse_instr()
1591 op->ea = dform_ea(instr, regs); in analyse_instr()
1597 if (!(regs->msr & MSR_FP)) in analyse_instr()
1600 op->ea = dform_ea(instr, regs); in analyse_instr()
1605 if (!(regs->msr & MSR_FP)) in analyse_instr()
1608 op->ea = dform_ea(instr, regs); in analyse_instr()
1613 if (!(regs->msr & MSR_FP)) in analyse_instr()
1616 op->ea = dform_ea(instr, regs); in analyse_instr()
1621 if (!(regs->msr & MSR_FP)) in analyse_instr()
1624 op->ea = dform_ea(instr, regs); in analyse_instr()
1630 op->ea = dsform_ea(instr, regs); in analyse_instr()
1645 op->ea = dsform_ea(instr, regs); in analyse_instr()
1662 set_cr0(regs, ra); in analyse_instr()
1667 set_cr0(regs, rd); in analyse_instr()
1670 regs->nip = truncate_if_32bit(regs->msr, regs->nip + 4); in analyse_instr()
1711 static __kprobes int handle_stack_update(unsigned long ea, struct pt_regs *regs) in handle_stack_update() argument
1767 int __kprobes emulate_step(struct pt_regs *regs, unsigned int instr) in emulate_step() argument
1775 r = analyse_instr(&op, regs, instr); in emulate_step()
1783 if (!address_ok(regs, op.ea, 8)) in emulate_step()
1809 if (regs->msr & MSR_LE) in emulate_step()
1814 if (!address_ok(regs, op.ea, size)) in emulate_step()
1828 regs->gpr[op.reg] = val; in emulate_step()
1832 if (regs->msr & MSR_LE) in emulate_step()
1837 if (!address_ok(regs, op.ea, size)) in emulate_step()
1851 regs->ccr = (regs->ccr & 0x0fffffff) | in emulate_step()
1853 ((regs->xer >> 3) & 0x10000000); in emulate_step()
1857 if (regs->msr & MSR_LE) in emulate_step()
1859 err = read_mem(®s->gpr[op.reg], op.ea, size, regs); in emulate_step()
1862 do_signext(®s->gpr[op.reg], size); in emulate_step()
1864 do_byterev(®s->gpr[op.reg], size); in emulate_step()
1870 if (regs->msr & MSR_LE) in emulate_step()
1873 err = do_fp_load(op.reg, do_lfs, op.ea, size, regs); in emulate_step()
1875 err = do_fp_load(op.reg, do_lfd, op.ea, size, regs); in emulate_step()
1880 if (regs->msr & MSR_LE) in emulate_step()
1882 err = do_vec_load(op.reg, do_lvx, op.ea & ~0xfUL, regs); in emulate_step()
1887 if (regs->msr & MSR_LE) in emulate_step()
1889 err = do_vsx_load(op.reg, do_lxvd2x, op.ea, regs); in emulate_step()
1893 if (regs->msr & MSR_LE) in emulate_step()
1900 err = read_mem(®s->gpr[rd], op.ea, nb, regs); in emulate_step()
1904 regs->gpr[rd] <<= 32 - 8 * nb; in emulate_step()
1911 if (regs->msr & MSR_LE) in emulate_step()
1915 !(regs->msr & MSR_PR) && in emulate_step()
1916 op.ea >= regs->gpr[1] - STACK_INT_FRAME_SIZE) { in emulate_step()
1917 err = handle_stack_update(op.ea, regs); in emulate_step()
1920 err = write_mem(op.val, op.ea, size, regs); in emulate_step()
1925 if (regs->msr & MSR_LE) in emulate_step()
1928 err = do_fp_store(op.reg, do_stfs, op.ea, size, regs); in emulate_step()
1930 err = do_fp_store(op.reg, do_stfd, op.ea, size, regs); in emulate_step()
1935 if (regs->msr & MSR_LE) in emulate_step()
1937 err = do_vec_store(op.reg, do_stvx, op.ea & ~0xfUL, regs); in emulate_step()
1942 if (regs->msr & MSR_LE) in emulate_step()
1944 err = do_vsx_store(op.reg, do_stxvd2x, op.ea, regs); in emulate_step()
1948 if (regs->msr & MSR_LE) in emulate_step()
1952 val = regs->gpr[rd]; in emulate_step()
1958 err = write_mem(val, op.ea, nb, regs); in emulate_step()
1967 regs->gpr[op.reg] = regs->msr & MSR_MASK; in emulate_step()
1971 val = regs->gpr[op.reg]; in emulate_step()
1976 regs->msr = (regs->msr & ~op.val) | (val & op.val); in emulate_step()
1986 if (regs->gpr[0] == 0x1ebe && in emulate_step()
1988 regs->msr ^= MSR_LE; in emulate_step()
1991 regs->gpr[9] = regs->gpr[13]; in emulate_step()
1992 regs->gpr[10] = MSR_KERNEL; in emulate_step()
1993 regs->gpr[11] = regs->nip + 4; in emulate_step()
1994 regs->gpr[12] = regs->msr & MSR_MASK; in emulate_step()
1995 regs->gpr[13] = (unsigned long) get_paca(); in emulate_step()
1996 regs->nip = (unsigned long) &system_call_common; in emulate_step()
1997 regs->msr = MSR_KERNEL; in emulate_step()
2010 regs->gpr[op.update_reg] = op.ea; in emulate_step()
2013 regs->nip = truncate_if_32bit(regs->msr, regs->nip + 4); in emulate_step()