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()
485 if (!insn.i_format.rs) { in __compute_return_epc_for_insn()
492 (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
496 if ((long)regs->regs[insn.i_format.rs] < 0) { in __compute_return_epc_for_insn()
497 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
498 if (insn.i_format.rt == bltzall_op) in __compute_return_epc_for_insn()
507 if (NO_R6EMU && (insn.i_format.rs || in __compute_return_epc_for_insn()
508 insn.i_format.rt == bgezall_op)) in __compute_return_epc_for_insn()
517 if (!insn.i_format.rs) { in __compute_return_epc_for_insn()
524 (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
528 if ((long)regs->regs[insn.i_format.rs] >= 0) { in __compute_return_epc_for_insn()
529 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
530 if (insn.i_format.rt == bgezall_op) in __compute_return_epc_for_insn()
544 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
562 epc |= (insn.j_format.target << 2); in __compute_return_epc_for_insn()
564 if (insn.i_format.opcode == jalx_op) in __compute_return_epc_for_insn()
575 if (regs->regs[insn.i_format.rs] == in __compute_return_epc_for_insn()
576 regs->regs[insn.i_format.rt]) { in __compute_return_epc_for_insn()
577 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
578 if (insn.i_format.opcode == beql_op) in __compute_return_epc_for_insn()
589 if (regs->regs[insn.i_format.rs] != in __compute_return_epc_for_insn()
590 regs->regs[insn.i_format.rt]) { in __compute_return_epc_for_insn()
591 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
592 if (insn.i_format.opcode == bnel_op) in __compute_return_epc_for_insn()
600 if (!insn.i_format.rt && NO_R6EMU) in __compute_return_epc_for_insn()
616 if (cpu_has_mips_r6 && insn.i_format.rt) { in __compute_return_epc_for_insn()
617 if ((insn.i_format.opcode == blez_op) && in __compute_return_epc_for_insn()
618 ((!insn.i_format.rs && insn.i_format.rt) || in __compute_return_epc_for_insn()
619 (insn.i_format.rs == insn.i_format.rt))) in __compute_return_epc_for_insn()
625 if ((long)regs->regs[insn.i_format.rs] <= 0) { in __compute_return_epc_for_insn()
626 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
627 if (insn.i_format.opcode == blezl_op) in __compute_return_epc_for_insn()
635 if (!insn.i_format.rt && NO_R6EMU) in __compute_return_epc_for_insn()
651 if (cpu_has_mips_r6 && insn.i_format.rt) { in __compute_return_epc_for_insn()
652 if ((insn.i_format.opcode == blez_op) && in __compute_return_epc_for_insn()
653 ((!insn.i_format.rs && insn.i_format.rt) || in __compute_return_epc_for_insn()
654 (insn.i_format.rs == insn.i_format.rt))) in __compute_return_epc_for_insn()
661 if ((long)regs->regs[insn.i_format.rs] > 0) { in __compute_return_epc_for_insn()
662 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
663 if (insn.i_format.opcode == bgtzl_op) in __compute_return_epc_for_insn()
675 ((insn.i_format.rs == bc1eqz_op) || in __compute_return_epc_for_insn()
676 (insn.i_format.rs == bc1nez_op))) { in __compute_return_epc_for_insn()
687 reg = insn.i_format.rt; in __compute_return_epc_for_insn()
689 if (insn.i_format.rs == bc1eqz_op) in __compute_return_epc_for_insn()
694 (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
709 bit = (insn.i_format.rt >> 2); in __compute_return_epc_for_insn()
712 switch (insn.i_format.rt & 3) { in __compute_return_epc_for_insn()
717 (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
718 if (insn.i_format.rt == 2) in __compute_return_epc_for_insn()
729 (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
730 if (insn.i_format.rt == 3) in __compute_return_epc_for_insn()
741 if ((regs->regs[insn.i_format.rs] & (1ull<<insn.i_format.rt)) in __compute_return_epc_for_insn()
743 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
749 if ((regs->regs[insn.i_format.rs] & in __compute_return_epc_for_insn()
750 (1ull<<(insn.i_format.rt+32))) == 0) in __compute_return_epc_for_insn()
751 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
757 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))) in __compute_return_epc_for_insn()
766 epc = epc + 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
783 epc += 4 + (insn.i_format.simmediate << 2); in __compute_return_epc_for_insn()
796 if (!insn.i_format.rs) { in __compute_return_epc_for_insn()
812 if (insn.i_format.rt && !insn.i_format.rs) in __compute_return_epc_for_insn()
842 union mips_instruction insn; in __compute_return_epc() local
852 if (__get_user(insn.word, addr)) { in __compute_return_epc()
857 return __compute_return_epc_for_insn(regs, insn); in __compute_return_epc()
867 int __insn_is_compact_branch(union mips_instruction insn) in __insn_is_compact_branch() argument
872 switch (insn.i_format.opcode) { in __insn_is_compact_branch()
881 if (insn.i_format.rt) in __insn_is_compact_branch()