Lines Matching refs:instr

63 static int __kprobes branch_taken(unsigned int instr, struct pt_regs *regs)  in branch_taken()  argument
65 unsigned int bo = (instr >> 21) & 0x1f; in branch_taken()
76 bi = (instr >> 16) & 0x1f; in branch_taken()
94 static unsigned long __kprobes dform_ea(unsigned int instr, struct pt_regs *regs) in dform_ea() argument
99 ra = (instr >> 16) & 0x1f; in dform_ea()
100 ea = (signed short) instr; /* sign-extend */ in dform_ea()
111 static unsigned long __kprobes dsform_ea(unsigned int instr, struct pt_regs *regs) in dsform_ea() argument
116 ra = (instr >> 16) & 0x1f; in dsform_ea()
117 ea = (signed short) (instr & ~3); /* sign-extend */ in dsform_ea()
128 static unsigned long __kprobes xform_ea(unsigned int instr, in xform_ea() argument
134 ra = (instr >> 16) & 0x1f; in xform_ea()
135 rb = (instr >> 11) & 0x1f; in xform_ea()
643 unsigned int instr) in analyse_instr() argument
653 opcode = instr >> 26; in analyse_instr()
657 imm = (signed short)(instr & 0xfffc); in analyse_instr()
658 if ((instr & 2) == 0) in analyse_instr()
662 if (instr & 1) in analyse_instr()
664 if (branch_taken(instr, regs)) in analyse_instr()
669 if ((instr & 0xfe2) == 2) in analyse_instr()
677 imm = instr & 0x03fffffc; in analyse_instr()
680 if ((instr & 2) == 0) in analyse_instr()
682 if (instr & 1) in analyse_instr()
688 switch ((instr >> 1) & 0x3ff) { in analyse_instr()
690 rd = (instr >> 21) & 0x1c; in analyse_instr()
691 ra = (instr >> 16) & 0x1c; in analyse_instr()
699 imm = (instr & 0x400)? regs->ctr: regs->link; in analyse_instr()
702 if (instr & 1) in analyse_instr()
704 if (branch_taken(instr, regs)) in analyse_instr()
727 ra = (instr >> 16) & 0x1f; in analyse_instr()
728 rb = (instr >> 11) & 0x1f; in analyse_instr()
729 rd = (instr >> 21) & 0x1f; in analyse_instr()
732 val = (instr >> (6 + ra * 2 + rb)) & 1; in analyse_instr()
739 switch ((instr >> 1) & 0x3ff) { in analyse_instr()
743 switch ((instr >> 21) & 3) { in analyse_instr()
767 rd = (instr >> 21) & 0x1f; in analyse_instr()
768 ra = (instr >> 16) & 0x1f; in analyse_instr()
769 rb = (instr >> 11) & 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()
788 imm = (short) instr; in analyse_instr()
793 imm = (unsigned short) instr; in analyse_instr()
803 imm = (short) instr; in analyse_instr()
813 imm = (short) instr; in analyse_instr()
818 imm = (short) instr; in analyse_instr()
824 imm = (short) instr; in analyse_instr()
831 imm = ((short) instr) << 16; in analyse_instr()
838 mb = (instr >> 6) & 0x1f; in analyse_instr()
839 me = (instr >> 1) & 0x1f; in analyse_instr()
846 mb = (instr >> 6) & 0x1f; in analyse_instr()
847 me = (instr >> 1) & 0x1f; in analyse_instr()
853 mb = (instr >> 6) & 0x1f; in analyse_instr()
854 me = (instr >> 1) & 0x1f; in analyse_instr()
861 imm = (unsigned short) instr; in analyse_instr()
866 imm = (unsigned short) instr; in analyse_instr()
871 imm = (unsigned short) instr; in analyse_instr()
876 imm = (unsigned short) instr; in analyse_instr()
881 imm = (unsigned short) instr; in analyse_instr()
887 imm = (unsigned short) instr; in analyse_instr()
894 mb = ((instr >> 6) & 0x1f) | (instr & 0x20); in analyse_instr()
896 if ((instr & 0x10) == 0) { in analyse_instr()
897 sh = rb | ((instr & 2) << 4); in analyse_instr()
899 switch ((instr >> 2) & 3) { in analyse_instr()
918 switch ((instr >> 1) & 7) { in analyse_instr()
930 switch ((instr >> 1) & 0x3ff) { in analyse_instr()
964 imm = (instr & 0x10000)? 0x8002: 0xefffffffffffeffeUL; in analyse_instr()
978 if (instr & (0x80000 >> sh)) in analyse_instr()
986 spr = ((instr >> 16) & 0x1f) | ((instr >> 6) & 0x3e0); in analyse_instr()
1007 spr = ((instr >> 16) & 0x1f) | ((instr >> 6) & 0x3e0); in analyse_instr()
1285 sh = rb | ((instr & 2) << 4); 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()
1335 u = (instr >> 20) & UPDATE; in analyse_instr()
1339 u = instr & UPDATE; in analyse_instr()
1340 op->ea = xform_ea(instr, regs); in analyse_instr()
1341 switch ((instr >> 1) & 0x3ff) { in analyse_instr()
1524 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
1532 op->reg = rd | ((instr & 1) << 5); 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()
1600 op->ea = dform_ea(instr, regs); in analyse_instr()
1608 op->ea = dform_ea(instr, regs); in analyse_instr()
1616 op->ea = dform_ea(instr, regs); in analyse_instr()
1624 op->ea = dform_ea(instr, regs); in analyse_instr()
1630 op->ea = dsform_ea(instr, regs); in analyse_instr()
1631 switch (instr & 3) { in analyse_instr()
1645 op->ea = dsform_ea(instr, regs); in analyse_instr()
1646 switch (instr & 3) { in analyse_instr()
1661 if (instr & 1) in analyse_instr()
1666 if (instr & 1) in analyse_instr()
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()