Lines Matching refs:rd

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()
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()
645 unsigned int opcode, ra, rb, rd, spr, u; in analyse_instr() local
690 rd = (instr >> 21) & 0x1c; in analyse_instr()
693 regs->ccr = (regs->ccr & ~(0xfUL << rd)) | (val << rd); in analyse_instr()
729 rd = (instr >> 21) & 0x1f; in analyse_instr()
733 regs->ccr = (regs->ccr & ~(1UL << (31 - rd))) | in analyse_instr()
734 (val << (31 - rd)); in analyse_instr()
767 rd = (instr >> 21) & 0x1f; 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()
796 if ((rd & 1) == 0) in analyse_instr()
799 do_cmp_unsigned(regs, val, imm, rd >> 2); in analyse_instr()
806 if ((rd & 1) == 0) 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()
827 regs->gpr[rd] = imm; in analyse_instr()
834 regs->gpr[rd] = imm; in analyse_instr()
840 val = DATA32(regs->gpr[rd]); in analyse_instr()
848 val = DATA32(regs->gpr[rd]); in analyse_instr()
856 val = DATA32(regs->gpr[rd]); 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()
888 regs->gpr[ra] = regs->gpr[rd] & (imm << 16); in analyse_instr()
895 val = regs->gpr[rd]; in analyse_instr()
932 if (rd == 0x1f || in analyse_instr()
933 (rd & trap_compare((int)regs->gpr[ra], in analyse_instr()
939 if (rd & trap_compare(regs->gpr[ra], regs->gpr[rb])) in analyse_instr()
947 op->reg = rd; in analyse_instr()
953 op->reg = rd; in analyse_instr()
961 op->reg = rd; 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()
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()
1000 op->reg = rd; 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()
1033 if ((rd & 1) == 0) { in analyse_instr()
1039 do_cmp_signed(regs, val, val2, rd >> 2); in analyse_instr()
1046 if ((rd & 1) == 0) { 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()
1064 asm("mulhdu %0,%1,%2" : "=r" (regs->gpr[rd]) : in analyse_instr()
1069 add_with_carry(regs, rd, regs->gpr[ra], in analyse_instr()
1074 asm("mulhwu %0,%1,%2" : "=r" (regs->gpr[rd]) : 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()
1088 asm("mulhw %0,%1,%2" : "=r" (regs->gpr[rd]) : 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()
1102 add_with_carry(regs, rd, regs->gpr[ra], regs->gpr[rb], in analyse_instr()
1107 add_with_carry(regs, rd, ~regs->gpr[ra], 0L, in analyse_instr()
1112 add_with_carry(regs, rd, regs->gpr[ra], 0L, in analyse_instr()
1117 add_with_carry(regs, rd, ~regs->gpr[ra], -1L, 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()
1131 regs->gpr[rd] = (unsigned int) regs->gpr[ra] * 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()
1149 regs->gpr[rd] = (long int) regs->gpr[ra] / in analyse_instr()
1154 regs->gpr[rd] = (int) regs->gpr[ra] / in analyse_instr()
1164 "r" (regs->gpr[rd])); 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()
1223 regs->gpr[ra] = (regs->gpr[rd] << sh) & 0xffffffffUL; in analyse_instr()
1231 regs->gpr[ra] = (regs->gpr[rd] & 0xffffffffUL) >> sh; in analyse_instr()
1238 ival = (signed int) regs->gpr[rd]; in analyse_instr()
1248 ival = (signed int) regs->gpr[rd]; in analyse_instr()
1260 regs->gpr[ra] = regs->gpr[rd] << sh; in analyse_instr()
1268 regs->gpr[ra] = regs->gpr[rd] >> sh; in analyse_instr()
1275 ival = (signed long int) regs->gpr[rd]; in analyse_instr()
1286 ival = (signed long int) regs->gpr[rd]; in analyse_instr()
1311 op->reg = rd; in analyse_instr()
1317 op->reg = rd; in analyse_instr()
1333 op->reg = rd; in analyse_instr()
1334 op->val = regs->gpr[rd]; in analyse_instr()
1487 op->val = byterev_8(regs->gpr[rd]); in analyse_instr()
1497 op->val = byterev_4(regs->gpr[rd]); in analyse_instr()
1516 op->val = byterev_2(regs->gpr[rd]); in analyse_instr()
1524 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
1532 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
1583 if (ra >= rd) in analyse_instr()
1585 op->type = MKOP(LOAD_MULTI, 0, 4 * (32 - rd)); in analyse_instr()
1590 op->type = MKOP(STORE_MULTI, 0, 4 * (32 - rd)); in analyse_instr()
1667 set_cr0(regs, rd); in analyse_instr()
1773 int i, rd, nb; in emulate_step() local
1895 rd = op.reg; in emulate_step()
1900 err = read_mem(&regs->gpr[rd], op.ea, nb, regs); in emulate_step()
1904 regs->gpr[rd] <<= 32 - 8 * nb; in emulate_step()
1906 ++rd; in emulate_step()
1950 rd = op.reg; in emulate_step()
1952 val = regs->gpr[rd]; in emulate_step()
1962 ++rd; in emulate_step()