Lines Matching refs:insn
62 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()
162 bit = (insn.mm_i_format.rs >> 2); in __mm_isBranchInstr()
168 (insn.mm_i_format.simmediate << 1); in __mm_isBranchInstr()
178 switch (insn.mm_i_format.rt) { in __mm_isBranchInstr()
185 *contpc = regs->regs[insn.mm_i_format.rs]; in __mm_isBranchInstr()
190 if ((long)regs->regs[reg16to32map[insn.mm_b1_format.rs]] == 0) in __mm_isBranchInstr()
193 (insn.mm_b1_format.simmediate << 1); in __mm_isBranchInstr()
199 if ((long)regs->regs[reg16to32map[insn.mm_b1_format.rs]] != 0) in __mm_isBranchInstr()
202 (insn.mm_b1_format.simmediate << 1); in __mm_isBranchInstr()
209 (insn.mm_b0_format.simmediate << 1); in __mm_isBranchInstr()
212 if (regs->regs[insn.mm_i_format.rs] == in __mm_isBranchInstr()
213 regs->regs[insn.mm_i_format.rt]) in __mm_isBranchInstr()
216 (insn.mm_i_format.simmediate << 1); in __mm_isBranchInstr()
223 if (regs->regs[insn.mm_i_format.rs] != in __mm_isBranchInstr()
224 regs->regs[insn.mm_i_format.rt]) in __mm_isBranchInstr()
227 (insn.mm_i_format.simmediate << 1); in __mm_isBranchInstr()
238 *contpc |= (insn.j_format.target << 2); in __mm_isBranchInstr()
249 *contpc |= (insn.j_format.target << 1); in __mm_isBranchInstr()
287 mminsn.insn = word; in __microMIPS_compute_return_epc()
423 union mips_instruction insn) in __compute_return_epc_for_insn() argument
429 switch (insn.i_format.opcode) { in __compute_return_epc_for_insn()
434 switch (insn.r_format.func) { in __compute_return_epc_for_insn()
436 regs->regs[insn.r_format.rd] = epc + 8; in __compute_return_epc_for_insn()
439 if (NO_R6EMU && insn.r_format.func == jr_op) in __compute_return_epc_for_insn()
441 regs->cp0_epc = regs->regs[insn.r_format.rs]; in __compute_return_epc_for_insn()
452 switch (insn.i_format.rt) { in __compute_return_epc_for_insn()
458 if ((long)regs->regs[insn.i_format.rs] < 0) { in __compute_return_epc_for_insn()
459 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
460 if (insn.i_format.rt == bltzl_op) in __compute_return_epc_for_insn()
472 if ((long)regs->regs[insn.i_format.rs] >= 0) { in __compute_return_epc_for_insn()
473 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
474 if (insn.i_format.rt == bgezl_op) in __compute_return_epc_for_insn()
483 if (NO_R6EMU && (insn.i_format.rs || in __compute_return_epc_for_insn()
484 insn.i_format.rt == bltzall_op)) in __compute_return_epc_for_insn()
493 if (!insn.i_format.rs) { in __compute_return_epc_for_insn()
500 (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
504 if ((long)regs->regs[insn.i_format.rs] < 0) { in __compute_return_epc_for_insn()
505 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
506 if (insn.i_format.rt == bltzall_op) in __compute_return_epc_for_insn()
515 if (NO_R6EMU && (insn.i_format.rs || in __compute_return_epc_for_insn()
516 insn.i_format.rt == bgezall_op)) in __compute_return_epc_for_insn()
525 if (!insn.i_format.rs) { in __compute_return_epc_for_insn()
532 (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
536 if ((long)regs->regs[insn.i_format.rs] >= 0) { in __compute_return_epc_for_insn()
537 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
538 if (insn.i_format.rt == bgezall_op) in __compute_return_epc_for_insn()
552 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
571 epc |= (insn.j_format.target << 2); in __compute_return_epc_for_insn()
573 if (insn.i_format.opcode == jalx_op) in __compute_return_epc_for_insn()
585 if (regs->regs[insn.i_format.rs] == in __compute_return_epc_for_insn()
586 regs->regs[insn.i_format.rt]) { in __compute_return_epc_for_insn()
587 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
588 if (insn.i_format.opcode == beql_op) in __compute_return_epc_for_insn()
600 if (regs->regs[insn.i_format.rs] != in __compute_return_epc_for_insn()
601 regs->regs[insn.i_format.rt]) { in __compute_return_epc_for_insn()
602 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
603 if (insn.i_format.opcode == bnel_op) in __compute_return_epc_for_insn()
611 if (!insn.i_format.rt && NO_R6EMU) in __compute_return_epc_for_insn()
628 if (cpu_has_mips_r6 && insn.i_format.rt) { in __compute_return_epc_for_insn()
629 if ((insn.i_format.opcode == blez_op) && in __compute_return_epc_for_insn()
630 ((!insn.i_format.rs && insn.i_format.rt) || in __compute_return_epc_for_insn()
631 (insn.i_format.rs == insn.i_format.rt))) in __compute_return_epc_for_insn()
637 if ((long)regs->regs[insn.i_format.rs] <= 0) { in __compute_return_epc_for_insn()
638 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
639 if (insn.i_format.opcode == blezl_op) in __compute_return_epc_for_insn()
647 if (!insn.i_format.rt && NO_R6EMU) in __compute_return_epc_for_insn()
664 if (cpu_has_mips_r6 && insn.i_format.rt) { in __compute_return_epc_for_insn()
665 if ((insn.i_format.opcode == blez_op) && in __compute_return_epc_for_insn()
666 ((!insn.i_format.rs && insn.i_format.rt) || in __compute_return_epc_for_insn()
667 (insn.i_format.rs == insn.i_format.rt))) in __compute_return_epc_for_insn()
674 if ((long)regs->regs[insn.i_format.rs] > 0) { in __compute_return_epc_for_insn()
675 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
676 if (insn.i_format.opcode == bgtzl_op) in __compute_return_epc_for_insn()
691 ((insn.i_format.rs == bc1eqz_op) || in __compute_return_epc_for_insn()
692 (insn.i_format.rs == bc1nez_op))) { in __compute_return_epc_for_insn()
695 reg = insn.i_format.rt; in __compute_return_epc_for_insn()
697 if (insn.i_format.rs == bc1eqz_op) in __compute_return_epc_for_insn()
702 (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
717 bit = (insn.i_format.rt >> 2); in __compute_return_epc_for_insn()
720 switch (insn.i_format.rt & 3) { in __compute_return_epc_for_insn()
725 (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
726 if (insn.i_format.rt == 2) in __compute_return_epc_for_insn()
737 (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
738 if (insn.i_format.rt == 3) in __compute_return_epc_for_insn()
752 if ((regs->regs[insn.i_format.rs] & (1ull<<insn.i_format.rt)) in __compute_return_epc_for_insn()
754 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
760 if ((regs->regs[insn.i_format.rs] & in __compute_return_epc_for_insn()
761 (1ull<<(insn.i_format.rt+32))) == 0) in __compute_return_epc_for_insn()
762 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
768 if (regs->regs[insn.i_format.rs] & (1ull<<insn.i_format.rt)) in __compute_return_epc_for_insn()
769 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
775 if (regs->regs[insn.i_format.rs] & in __compute_return_epc_for_insn()
776 (1ull<<(insn.i_format.rt+32))) in __compute_return_epc_for_insn()
777 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
794 epc += 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
807 if (!insn.i_format.rs) { in __compute_return_epc_for_insn()
823 if (insn.i_format.rt && !insn.i_format.rs) in __compute_return_epc_for_insn()
853 union mips_instruction insn; in __compute_return_epc() local
863 if (__get_user(insn.word, addr)) { in __compute_return_epc()
868 return __compute_return_epc_for_insn(regs, insn); in __compute_return_epc()
878 int __insn_is_compact_branch(union mips_instruction insn) in __insn_is_compact_branch() argument
883 switch (insn.i_format.opcode) { in __insn_is_compact_branch()
892 if (insn.i_format.rt) in __insn_is_compact_branch()