Lines Matching refs:insn
60 union mips_instruction insn = (union mips_instruction)dec_insn.insn; in __mm_isBranchInstr() local
68 switch (insn.mm_i_format.opcode) { in __mm_isBranchInstr()
70 if ((insn.mm_i_format.simmediate & MM_POOL32A_MINOR_MASK) == in __mm_isBranchInstr()
72 switch (insn.mm_i_format.simmediate >> in __mm_isBranchInstr()
78 if (insn.mm_i_format.rt != 0) /* Not mm_jr */ in __mm_isBranchInstr()
79 regs->regs[insn.mm_i_format.rt] = in __mm_isBranchInstr()
83 *contpc = regs->regs[insn.mm_i_format.rs]; in __mm_isBranchInstr()
89 switch (insn.mm_i_format.rt) { in __mm_isBranchInstr()
97 if ((long)regs->regs[insn.mm_i_format.rs] < 0) in __mm_isBranchInstr()
100 (insn.mm_i_format.simmediate << 1); in __mm_isBranchInstr()
113 if ((long)regs->regs[insn.mm_i_format.rs] >= 0) in __mm_isBranchInstr()
116 (insn.mm_i_format.simmediate << 1); in __mm_isBranchInstr()
123 if ((long)regs->regs[insn.mm_i_format.rs] <= 0) in __mm_isBranchInstr()
126 (insn.mm_i_format.simmediate << 1); in __mm_isBranchInstr()
133 if ((long)regs->regs[insn.mm_i_format.rs] <= 0) in __mm_isBranchInstr()
136 (insn.mm_i_format.simmediate << 1); in __mm_isBranchInstr()
158 bit = (insn.mm_i_format.rs >> 2); in __mm_isBranchInstr()
164 (insn.mm_i_format.simmediate << 1); in __mm_isBranchInstr()
172 switch (insn.mm_i_format.rt) { in __mm_isBranchInstr()
179 *contpc = regs->regs[insn.mm_i_format.rs]; in __mm_isBranchInstr()
184 if ((long)regs->regs[reg16to32map[insn.mm_b1_format.rs]] == 0) in __mm_isBranchInstr()
187 (insn.mm_b1_format.simmediate << 1); in __mm_isBranchInstr()
193 if ((long)regs->regs[reg16to32map[insn.mm_b1_format.rs]] != 0) in __mm_isBranchInstr()
196 (insn.mm_b1_format.simmediate << 1); in __mm_isBranchInstr()
203 (insn.mm_b0_format.simmediate << 1); in __mm_isBranchInstr()
206 if (regs->regs[insn.mm_i_format.rs] == in __mm_isBranchInstr()
207 regs->regs[insn.mm_i_format.rt]) in __mm_isBranchInstr()
210 (insn.mm_i_format.simmediate << 1); in __mm_isBranchInstr()
217 if (regs->regs[insn.mm_i_format.rs] != in __mm_isBranchInstr()
218 regs->regs[insn.mm_i_format.rt]) in __mm_isBranchInstr()
221 (insn.mm_i_format.simmediate << 1); in __mm_isBranchInstr()
232 *contpc |= (insn.j_format.target << 2); in __mm_isBranchInstr()
243 *contpc |= (insn.j_format.target << 1); in __mm_isBranchInstr()
281 mminsn.insn = word; in __microMIPS_compute_return_epc()
417 union mips_instruction insn) in __compute_return_epc_for_insn() argument
423 switch (insn.i_format.opcode) { in __compute_return_epc_for_insn()
428 switch (insn.r_format.func) { in __compute_return_epc_for_insn()
430 regs->regs[insn.r_format.rd] = epc + 8; in __compute_return_epc_for_insn()
433 if (NO_R6EMU && insn.r_format.func == jr_op) in __compute_return_epc_for_insn()
435 regs->cp0_epc = regs->regs[insn.r_format.rs]; in __compute_return_epc_for_insn()
446 switch (insn.i_format.rt) { in __compute_return_epc_for_insn()
451 if ((long)regs->regs[insn.i_format.rs] < 0) { in __compute_return_epc_for_insn()
452 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
453 if (insn.i_format.rt == bltzl_op) in __compute_return_epc_for_insn()
464 if ((long)regs->regs[insn.i_format.rs] >= 0) { in __compute_return_epc_for_insn()
465 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
466 if (insn.i_format.rt == bgezl_op) in __compute_return_epc_for_insn()
475 if (NO_R6EMU && (insn.i_format.rs || in __compute_return_epc_for_insn()
476 insn.i_format.rt == bltzall_op)) { in __compute_return_epc_for_insn()
487 if (!insn.i_format.rs) { in __compute_return_epc_for_insn()
494 (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
498 if ((long)regs->regs[insn.i_format.rs] < 0) { in __compute_return_epc_for_insn()
499 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
500 if (insn.i_format.rt == bltzall_op) in __compute_return_epc_for_insn()
509 if (NO_R6EMU && (insn.i_format.rs || in __compute_return_epc_for_insn()
510 insn.i_format.rt == bgezall_op)) { in __compute_return_epc_for_insn()
521 if (!insn.i_format.rs) { in __compute_return_epc_for_insn()
528 (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
532 if ((long)regs->regs[insn.i_format.rs] >= 0) { in __compute_return_epc_for_insn()
533 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
534 if (insn.i_format.rt == bgezall_op) in __compute_return_epc_for_insn()
548 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
565 epc |= (insn.j_format.target << 2); in __compute_return_epc_for_insn()
567 if (insn.i_format.opcode == jalx_op) in __compute_return_epc_for_insn()
578 if (regs->regs[insn.i_format.rs] == in __compute_return_epc_for_insn()
579 regs->regs[insn.i_format.rt]) { in __compute_return_epc_for_insn()
580 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
581 if (insn.i_format.opcode == beql_op) in __compute_return_epc_for_insn()
592 if (regs->regs[insn.i_format.rs] != in __compute_return_epc_for_insn()
593 regs->regs[insn.i_format.rt]) { in __compute_return_epc_for_insn()
594 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
595 if (insn.i_format.opcode == bnel_op) in __compute_return_epc_for_insn()
603 if (!insn.i_format.rt && NO_R6EMU) in __compute_return_epc_for_insn()
619 if (cpu_has_mips_r6 && insn.i_format.rt) { in __compute_return_epc_for_insn()
620 if ((insn.i_format.opcode == blez_op) && in __compute_return_epc_for_insn()
621 ((!insn.i_format.rs && insn.i_format.rt) || in __compute_return_epc_for_insn()
622 (insn.i_format.rs == insn.i_format.rt))) in __compute_return_epc_for_insn()
628 if ((long)regs->regs[insn.i_format.rs] <= 0) { in __compute_return_epc_for_insn()
629 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
630 if (insn.i_format.opcode == blezl_op) in __compute_return_epc_for_insn()
638 if (!insn.i_format.rt && NO_R6EMU) in __compute_return_epc_for_insn()
654 if (cpu_has_mips_r6 && insn.i_format.rt) { in __compute_return_epc_for_insn()
655 if ((insn.i_format.opcode == blez_op) && in __compute_return_epc_for_insn()
656 ((!insn.i_format.rs && insn.i_format.rt) || in __compute_return_epc_for_insn()
657 (insn.i_format.rs == insn.i_format.rt))) in __compute_return_epc_for_insn()
664 if ((long)regs->regs[insn.i_format.rs] > 0) { in __compute_return_epc_for_insn()
665 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
666 if (insn.i_format.opcode == bgtzl_op) in __compute_return_epc_for_insn()
678 ((insn.i_format.rs == bc1eqz_op) || in __compute_return_epc_for_insn()
679 (insn.i_format.rs == bc1nez_op))) { in __compute_return_epc_for_insn()
690 reg = insn.i_format.rt; in __compute_return_epc_for_insn()
692 switch (insn.i_format.rs) { in __compute_return_epc_for_insn()
709 (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
724 bit = (insn.i_format.rt >> 2); in __compute_return_epc_for_insn()
727 switch (insn.i_format.rt & 3) { in __compute_return_epc_for_insn()
732 (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
733 if (insn.i_format.rt == 2) in __compute_return_epc_for_insn()
744 (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
745 if (insn.i_format.rt == 3) in __compute_return_epc_for_insn()
756 if ((regs->regs[insn.i_format.rs] & (1ull<<insn.i_format.rt)) in __compute_return_epc_for_insn()
758 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
764 if ((regs->regs[insn.i_format.rs] & in __compute_return_epc_for_insn()
765 (1ull<<(insn.i_format.rt+32))) == 0) in __compute_return_epc_for_insn()
766 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
772 if (regs->regs[insn.i_format.rs] & (1ull<<insn.i_format.rt)) in __compute_return_epc_for_insn()
773 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
779 if (regs->regs[insn.i_format.rs] & in __compute_return_epc_for_insn()
780 (1ull<<(insn.i_format.rt+32))) in __compute_return_epc_for_insn()
781 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
802 epc += 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
819 if (insn.i_format.rs) in __compute_return_epc_for_insn()
835 if (insn.i_format.rt && !insn.i_format.rs) in __compute_return_epc_for_insn()
859 union mips_instruction insn; in __compute_return_epc() local
869 if (__get_user(insn.word, addr)) { in __compute_return_epc()
874 return __compute_return_epc_for_insn(regs, insn); in __compute_return_epc()