Lines Matching +full:rx +full:- +full:eq
24 #include "disas/dis-asm.h"
73 only use ten bits). An optional two-operand form of break/sdbbp
165 but 0x8-0xf don't select bytes. */
167 #define OP_MASK_VECALIGN 0x7 /* Vector byte-align (alni.ob) op. */
355 "+E" 5 bit dinsu/dextu position, which becomes LSB-32 (OP_*_SHAMT).
357 "+F" 5 bit "dinsm/dinsu" size, which becomes MSB-32 (OP_*_INSMSB).
360 "+G" 5 bit "dextm" size, which becomes MSBD-32 (OP_*_EXTMSBD).
381 "P" 5 bit performance-monitor register (OP_*_PERFREG)
386 for pretty-printing in disassembly only.
426 "+T" 5 bit coprocessor 0 destination register (OP_*_RT) - disassembly only
429 "+1" UDI immediate bits 6-10
430 "+2" UDI immediate bits 6-15
431 "+3" UDI immediate bits 6-20
432 "+4" UDI immediate bits 6-25
443 "[]" brackets around index for vector-op scalar operand specifier (vr5400)
562 /* Masks used for MIPS-defined ASEs. */
570 /* MIPS-3D ASE */
585 /* Broadcom SB-1 instruction. */
670 (((insn)->membership & isa) != 0 \
671 || (cpu == CPU_R4650 && ((insn)->membership & INSN_4650) != 0) \
672 || (cpu == CPU_RM7000 && ((insn)->membership & INSN_4650) != 0) \
673 || (cpu == CPU_RM9000 && ((insn)->membership & INSN_4650) != 0) \
674 || (cpu == CPU_R4010 && ((insn)->membership & INSN_4010) != 0) \
675 || (cpu == CPU_VR4100 && ((insn)->membership & INSN_4100) != 0) \
676 || (cpu == CPU_R3900 && ((insn)->membership & INSN_3900) != 0) \
678 && ((insn)->membership & INSN_10000) != 0) \
679 || (cpu == CPU_SB1 && ((insn)->membership & INSN_SB1) != 0) \
680 || (cpu == CPU_R4111 && ((insn)->membership & INSN_4111) != 0) \
681 || (cpu == CPU_VR4120 && ((insn)->membership & INSN_4120) != 0) \
682 || (cpu == CPU_VR5400 && ((insn)->membership & INSN_5400) != 0) \
683 || (cpu == CPU_VR5500 && ((insn)->membership & INSN_5500) != 0) \
952 The RI format uses RX and IMM8.
954 The RR format uses RX, and RY.
956 The RRI format uses RX, RY, and IMM5.
958 The RRR format uses RX, RY, and RZ.
960 The RRI_A format uses RX, RY, and IMM4.
962 The SHIFT format uses RX, RY, and SHAMT.
1171 /* MIPS64 MIPS-3D ASE support. */
1177 /* MIPS64 MIPS-3D ASE support. */
1209 1. MIPS DSP ASE includes 4 accumulators ($ac0 - $ac3). $ac0 is the pair
1217 but destroy HI+LO as side-effect, we add WR_HILO to their attributes.
1367 {"cmp.eq.s", "D,S,T", 0x46800002, 0xffe0003f, RD_S|RD_T|WR_D|FP_S, 0, I32R6},
1389 {"cmp.eq.d", "D,S,T", 0x46a00002, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, I32R6},
2099 {"c.eq.d", "S,T", 0x46200032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 },
2100 {"c.eq.d", "M,S,T", 0x46200032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 },
2101 {"c.eq.s", "S,T", 0x46000032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 },
2102 {"c.eq.s", "M,S,T", 0x46000032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 },
2103 {"c.eq.ob", "Y,Q", 0x78000001, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, 0, MX|SB1 },
2104 {"c.eq.ob", "S,T", 0x4ac00001, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 },
2105 {"c.eq.ob", "S,T[e]", 0x48000001, 0xfe2007ff, WR_CC|RD_S|RD_T, 0, N54 },
2106 {"c.eq.ob", "S,k", 0x4bc00001, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 },
2107 {"c.eq.ps", "S,T", 0x46c00032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 },
2108 {"c.eq.ps", "M,S,T", 0x46c00032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 },
2109 {"c.eq.qh", "Y,Q", 0x78200001, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, 0, MX },
2198 {"cabs.eq.d", "M,S,T", 0x46200072, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D },
2199 {"cabs.eq.ps", "M,S,T", 0x46c00072, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D },
2200 {"cabs.eq.s", "M,S,T", 0x46000072, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D },
3180 /* No hazard protection on coprocessor instructions--they shouldn't
3217 {"cmp.eq.ph", "s,t", 0x7c000211, 0xfc00ffff, RD_s|RD_t, 0, D32 },
3218 {"cmp.eq.pw", "s,t", 0x7c000415, 0xfc00ffff, RD_s|RD_t, 0, D64 },
3219 {"cmp.eq.qh", "s,t", 0x7c000215, 0xfc00ffff, RD_s|RD_t, 0, D64 },
3220 {"cmpgu.eq.ob", "d,s,t", 0x7c000115, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 },
3221 {"cmpgu.eq.qb", "d,s,t", 0x7c000111, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 },
3232 {"cmpu.eq.ob", "s,t", 0x7c000015, 0xfc00ffff, RD_s|RD_t, 0, D64 },
3233 {"cmpu.eq.qb", "s,t", 0x7c000011, 0xfc00ffff, RD_s|RD_t, 0, D32 },
3440 {"cmpgdu.eq.qb", "d,s,t", 0x7c000611, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 },
3484 /* ST Microelectronics Loongson-2E and -2F. */
3516 * built-in instruction set. */
3771 /* SB-1: MIPS64 (mips_cp0_names_mips3264) with minor mods. */
3937 /* For stock MIPS32, disassemble all applicable MIPS-specified ASEs.
3938 Note that MIPS-3D and MDMX are not applicable to MIPS32. (See
3955 /* For stock MIPS64, disassemble all applicable MIPS-specified ASEs. */
4036 && hint_arch_choice->bfd_mach == hint_bfd_mach) in choose_arch_by_number()
4057 /* Defaults: mipsIII/r3000 (?!), (o)32-style ("oldabi") GPR names, in set_default_mips_dis_options()
4071 if (info->flavour == bfd_target_elf_flavour && info->section != NULL) in set_default_mips_dis_options()
4075 header = elf_elfheader (info->section->owner); in set_default_mips_dis_options()
4088 chosen_arch = choose_arch_by_number (info->mach); in set_default_mips_dis_options()
4091 mips_processor = chosen_arch->processor; in set_default_mips_dis_options()
4092 mips_isa = chosen_arch->isa; in set_default_mips_dis_options()
4093 mips_cp0_names = chosen_arch->cp0_names; in set_default_mips_dis_options()
4094 mips_cp0sel_names = chosen_arch->cp0sel_names; in set_default_mips_dis_options()
4095 mips_cp0sel_names_len = chosen_arch->cp0sel_names_len; in set_default_mips_dis_options()
4096 mips_hwr_names = chosen_arch->hwr_names; in set_default_mips_dis_options()
4119 if (i == (len - 1)) /* Invalid option: no value after '='. */ in parse_mips_dis_option()
4124 vallen = len - (optionlen + 1); in parse_mips_dis_option()
4126 if (strncmp("gpr-names", option, optionlen) == 0 in parse_mips_dis_option()
4127 && strlen("gpr-names") == optionlen) in parse_mips_dis_option()
4131 mips_gpr_names = chosen_abi->gpr_names; in parse_mips_dis_option()
4135 if (strncmp("fpr-names", option, optionlen) == 0 in parse_mips_dis_option()
4136 && strlen("fpr-names") == optionlen) in parse_mips_dis_option()
4140 mips_fpr_names = chosen_abi->fpr_names; in parse_mips_dis_option()
4144 if (strncmp("cp0-names", option, optionlen) == 0 in parse_mips_dis_option()
4145 && strlen("cp0-names") == optionlen) in parse_mips_dis_option()
4150 mips_cp0_names = chosen_arch->cp0_names; in parse_mips_dis_option()
4151 mips_cp0sel_names = chosen_arch->cp0sel_names; in parse_mips_dis_option()
4152 mips_cp0sel_names_len = chosen_arch->cp0sel_names_len; in parse_mips_dis_option()
4157 if (strncmp("hwr-names", option, optionlen) == 0 in parse_mips_dis_option()
4158 && strlen("hwr-names") == optionlen) in parse_mips_dis_option()
4162 mips_hwr_names = chosen_arch->hwr_names; in parse_mips_dis_option()
4166 if (strncmp("reg-names", option, optionlen) == 0 in parse_mips_dis_option()
4167 && strlen("reg-names") == optionlen) in parse_mips_dis_option()
4176 mips_gpr_names = chosen_abi->gpr_names; in parse_mips_dis_option()
4177 mips_fpr_names = chosen_abi->fpr_names; in parse_mips_dis_option()
4182 mips_cp0_names = chosen_arch->cp0_names; in parse_mips_dis_option()
4183 mips_cp0sel_names = chosen_arch->cp0sel_names; in parse_mips_dis_option()
4184 mips_cp0sel_names_len = chosen_arch->cp0sel_names_len; in parse_mips_dis_option()
4185 mips_hwr_names = chosen_arch->hwr_names; in parse_mips_dis_option()
4215 parse_mips_dis_option (options, option_end - options); in parse_mips_dis_options()
4237 /* Print insn arguments for 32/64-bit code. */
4260 (*info->fprintf_func) (info->stream, "%c", *d); in print_insn_args()
4269 /* xgettext:c-format */ in print_insn_args()
4270 (*info->fprintf_func) (info->stream, in print_insn_args()
4276 (*info->fprintf_func) (info->stream, "0x%x", lsb); in print_insn_args()
4281 (*info->fprintf_func) (info->stream, "0x%x", msb - lsb + 1); in print_insn_args()
4285 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4290 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4295 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4300 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4304 case '5': /* 5-bit signed immediate in bit 16 */ in print_insn_args()
4309 (*info->fprintf_func) (info->stream, "%d", delta); in print_insn_args()
4313 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4318 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4323 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4328 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4333 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4337 case '!': /* 10-bit pc-relative target in bit 11 */ in print_insn_args()
4342 info->target = (delta << 2) + pc + INSNLEN; in print_insn_args()
4343 (*info->print_address_func) (info->target, info); in print_insn_args()
4347 (*info->fprintf_func) (info->stream, "0"); in print_insn_args()
4351 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4355 case '^': /* 10-bit signed immediate << 0 in bit 16 */ in print_insn_args()
4360 (*info->fprintf_func) (info->stream, "%d", delta); in print_insn_args()
4363 case '#': /* 10-bit signed immediate << 1 in bit 16 */ in print_insn_args()
4368 (*info->fprintf_func) (info->stream, "%d", delta << 1); in print_insn_args()
4371 case '$': /* 10-bit signed immediate << 2 in bit 16 */ in print_insn_args()
4376 (*info->fprintf_func) (info->stream, "%d", delta << 2); in print_insn_args()
4379 case '%': /* 10-bit signed immediate << 3 in bit 16 */ in print_insn_args()
4384 (*info->fprintf_func) (info->stream, "%d", delta << 3); in print_insn_args()
4390 (*info->fprintf_func) (info->stream, "0x%x", msbd + 1); in print_insn_args()
4409 (*info->fprintf_func) (info->stream, "%s", n->name); in print_insn_args()
4411 (*info->fprintf_func) (info->stream, "$%d,%d", cp0reg, sel); in print_insn_args()
4417 (*info->fprintf_func) (info->stream, "0x%x", lsb); in print_insn_args()
4422 (*info->fprintf_func) (info->stream, "0x%x", msb - lsb + 1); in print_insn_args()
4427 (*info->fprintf_func) (info->stream, "0x%x", msbd + 1); in print_insn_args()
4434 delta = l & ((1 << 18) - 1); in print_insn_args()
4441 delta = l & ((1 << 19) - 1); in print_insn_args()
4453 (*info->fprintf_func) (info->stream, "%d", delta); in print_insn_args()
4462 info->target = (delta << 2) + pc + INSNLEN; in print_insn_args()
4463 (*info->print_address_func) (info->target, info); in print_insn_args()
4469 info->target = (delta << 2) + pc + INSNLEN; in print_insn_args()
4470 (*info->print_address_func) (info->target, info); in print_insn_args()
4474 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4495 (*info->fprintf_func) (info->stream, "%s", n->name); in print_insn_args()
4497 (*info->fprintf_func) (info->stream, "$%d,%d", cp0reg, sel); in print_insn_args()
4502 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4507 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4512 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4517 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4523 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4529 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4534 /* xgettext:c-format */ in print_insn_args()
4535 (*info->fprintf_func) (info->stream, in print_insn_args()
4543 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4548 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4553 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4558 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4563 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4568 (*info->fprintf_func) (info->stream, "$ac%ld", in print_insn_args()
4573 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4578 (*info->fprintf_func) (info->stream, "$ac%ld", in print_insn_args()
4582 case '0': /* dsp 6-bit signed immediate in bit 20 */ in print_insn_args()
4586 (*info->fprintf_func) (info->stream, "%d", delta); in print_insn_args()
4589 case ':': /* dsp 7-bit signed immediate in bit 19 */ in print_insn_args()
4593 (*info->fprintf_func) (info->stream, "%d", delta); in print_insn_args()
4597 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4601 case '@': /* dsp 10-bit signed immediate in bit 16 */ in print_insn_args()
4605 (*info->fprintf_func) (info->stream, "%d", delta); in print_insn_args()
4609 (*info->fprintf_func) (info->stream, "%ld", in print_insn_args()
4614 (*info->fprintf_func) (info->stream, "%ld", in print_insn_args()
4619 (*info->fprintf_func) (info->stream, "$ac%ld", in print_insn_args()
4624 (*info->fprintf_func) (info->stream, "$ac%ld", in print_insn_args()
4630 (*info->fprintf_func) (info->stream, "$%ld", in print_insn_args()
4638 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4644 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4650 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4654 case 'j': /* Same as i, but sign-extended. */ in print_insn_args()
4660 (*info->fprintf_func) (info->stream, "%d", in print_insn_args()
4665 (*info->fprintf_func) (info->stream, "0x%x", in print_insn_args()
4671 (*info->fprintf_func) (info->stream, "0x%x", in print_insn_args()
4677 info->target = (((pc + 4) & ~(bfd_vma) 0x0fffffff) in print_insn_args()
4680 if (info->flavour == bfd_target_unknown_flavour in print_insn_args()
4681 && strcmp (opp->name, "jalx") == 0) in print_insn_args()
4682 info->target |= 1; in print_insn_args()
4683 (*info->print_address_func) (info->target, info); in print_insn_args()
4691 info->target = (delta << 2) + pc + INSNLEN; in print_insn_args()
4692 (*info->print_address_func) (info->target, info); in print_insn_args()
4696 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4705 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4711 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4714 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4717 (*info->fprintf_func) (info->stream, "%s or %s", in print_insn_args()
4725 (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[0]); in print_insn_args()
4729 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4734 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4739 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4744 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4749 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4755 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4761 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4767 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4772 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4777 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4789 (*info->fprintf_func) (info->stream, "$%ld", in print_insn_args()
4800 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4803 (*info->fprintf_func) (info->stream, "$%ld", in print_insn_args()
4808 (*info->fprintf_func) (info->stream, "%s", in print_insn_args()
4813 (*info->fprintf_func) (info->stream, in print_insn_args()
4814 ((opp->pinfo & (FP_D | FP_S)) != 0 in print_insn_args()
4820 (*info->fprintf_func) (info->stream, "$fcc%ld", in print_insn_args()
4825 (*info->fprintf_func) (info->stream, "%ld", in print_insn_args()
4830 (*info->fprintf_func) (info->stream, "%ld", in print_insn_args()
4835 (*info->fprintf_func) (info->stream, "%ld", in print_insn_args()
4840 (*info->fprintf_func) (info->stream, "%ld", in print_insn_args()
4845 (*info->fprintf_func) (info->stream, "%ld", in print_insn_args()
4861 (*info->fprintf_func) (info->stream, "$v%ld[%d]", in print_insn_args()
4867 (*info->fprintf_func) (info->stream, "$v%ld", in print_insn_args()
4872 (*info->fprintf_func) (info->stream, "0x%lx", in print_insn_args()
4879 (*info->fprintf_func) (info->stream, "$v%ld", in print_insn_args()
4884 (*info->fprintf_func) (info->stream, "$v%ld", in print_insn_args()
4889 (*info->fprintf_func) (info->stream, "$v%ld", in print_insn_args()
4894 /* xgettext:c-format */ in print_insn_args()
4895 (*info->fprintf_func) (info->stream, in print_insn_args()
4909 /* There are no old-style ABIs which use 64-bit ELF. */
4910 if (header->e_ident[EI_CLASS] == ELFCLASS64)
4913 /* If a 32-bit ELF file, n32 is a new-style ABI. */
4914 if ((header->e_flags & EF_MIPS_ABI2) != 0)
4923 always INSNLEN. BIGENDIAN must be 1 if this is big-endian code, 0 if
4924 this is little-endian code. */
4944 if (op->pinfo == INSN_MACRO in print_insn_mips()
4945 || (no_aliases && (op->pinfo2 & INSN2_ALIAS))) in print_insn_mips()
4947 if (i == ((op->match >> OP_SH_OP) & OP_MASK_OP)) in print_insn_mips()
4958 info->bytes_per_chunk = INSNLEN; in print_insn_mips()
4959 info->display_endian = info->endian; in print_insn_mips()
4960 info->insn_info_valid = 1; in print_insn_mips()
4961 info->branch_delay_insns = 0; in print_insn_mips()
4962 info->data_size = 0; in print_insn_mips()
4963 info->insn_type = dis_nonbranch; in print_insn_mips()
4964 info->target = 0; in print_insn_mips()
4965 info->target2 = 0; in print_insn_mips()
4972 if (op->pinfo != INSN_MACRO in print_insn_mips()
4973 && !(no_aliases && (op->pinfo2 & INSN2_ALIAS)) in print_insn_mips()
4974 && (word & op->mask) == op->match) in print_insn_mips()
4980 && strcmp (op->name, "jalx")) in print_insn_mips()
4983 if (strcmp(op->name, "bovc") == 0 in print_insn_mips()
4984 || strcmp(op->name, "bnvc") == 0) { in print_insn_mips()
4990 if (strcmp(op->name, "bgezc") == 0 in print_insn_mips()
4991 || strcmp(op->name, "bltzc") == 0 in print_insn_mips()
4992 || strcmp(op->name, "bgezalc") == 0 in print_insn_mips()
4993 || strcmp(op->name, "bltzalc") == 0) { in print_insn_mips()
5001 if ((op->pinfo & INSN_UNCOND_BRANCH_DELAY) != 0) in print_insn_mips()
5003 if ((info->insn_type & INSN_WRITE_GPR_31) != 0) in print_insn_mips()
5004 info->insn_type = dis_jsr; in print_insn_mips()
5006 info->insn_type = dis_branch; in print_insn_mips()
5007 info->branch_delay_insns = 1; in print_insn_mips()
5009 else if ((op->pinfo & (INSN_COND_BRANCH_DELAY in print_insn_mips()
5012 if ((info->insn_type & INSN_WRITE_GPR_31) != 0) in print_insn_mips()
5013 info->insn_type = dis_condjsr; in print_insn_mips()
5015 info->insn_type = dis_condbranch; in print_insn_mips()
5016 info->branch_delay_insns = 1; in print_insn_mips()
5018 else if ((op->pinfo & (INSN_STORE_MEMORY in print_insn_mips()
5020 info->insn_type = dis_dref; in print_insn_mips()
5022 (*info->fprintf_func) (info->stream, "%s", op->name); in print_insn_mips()
5024 d = op->args; in print_insn_mips()
5027 (*info->fprintf_func) (info->stream, "\t"); in print_insn_mips()
5037 info->insn_type = dis_noninsn; in print_insn_mips()
5038 (*info->fprintf_func) (info->stream, "0x%lx", word); in print_insn_mips()
5057 parse_mips_dis_options (info->disassembler_options); in _print_insn_mips()
5068 if (info->mach == bfd_mach_mips16 in _print_insn_mips()
5069 || (info->flavour == bfd_target_elf_flavour in _print_insn_mips()
5070 && info->symbols != NULL in _print_insn_mips()
5071 && ((*(elf_symbol_type **) info->symbols)->internal_elf_sym.st_other in _print_insn_mips()
5077 status = (*info->read_memory_func) (memaddr, buffer, INSNLEN, info); in _print_insn_mips()
5091 (*info->memory_error_func) (status, memaddr, info); in _print_insn_mips()
5092 return -1; in _print_insn_mips()
5121 info->bytes_per_chunk = 2;
5122 info->display_endian = info->endian;
5123 info->insn_info_valid = 1;
5124 info->branch_delay_insns = 0;
5125 info->data_size = 0;
5126 info->insn_type = dis_nonbranch;
5127 info->target = 0;
5128 info->target2 = 0;
5130 status = (*info->read_memory_func) (memaddr, buffer, 2, info);
5133 (*info->memory_error_func) (status, memaddr, info);
5134 return -1;
5139 if (info->endian == BFD_ENDIAN_BIG)
5153 status = (*info->read_memory_func) (memaddr, buffer, 2, info);
5156 (*info->fprintf_func) (info->stream, "extend 0x%x",
5158 (*info->memory_error_func) (status, memaddr, info);
5159 return -1;
5162 if (info->endian == BFD_ENDIAN_BIG)
5170 (*info->fprintf_func) (info->stream, "extend 0x%x",
5172 info->insn_type = dis_noninsn;
5184 if (op->pinfo != INSN_MACRO
5185 && !(no_aliases && (op->pinfo2 & INSN2_ALIAS))
5186 && (insn & op->mask) == op->match)
5190 if (strchr (op->args, 'a') != NULL)
5194 (*info->fprintf_func) (info->stream, "extend 0x%x",
5196 info->insn_type = dis_noninsn;
5197 return length - 2;
5204 status = (*info->read_memory_func) (memaddr, buffer, 2,
5209 if (info->endian == BFD_ENDIAN_BIG)
5217 (*info->fprintf_func) (info->stream, "%s", op->name);
5218 if (op->args[0] != '\0')
5219 (*info->fprintf_func) (info->stream, "\t");
5221 for (s = op->args; *s != '\0'; s++)
5245 if ((op->pinfo & INSN_UNCOND_BRANCH_DELAY) != 0)
5247 info->branch_delay_insns = 1;
5248 if (info->insn_type != dis_jsr)
5249 info->insn_type = dis_branch;
5257 (*info->fprintf_func) (info->stream, "0x%x", extend | 0xf000);
5258 (*info->fprintf_func) (info->stream, "0x%x", insn);
5259 info->insn_type = dis_noninsn;
5280 (*info->fprintf_func) (info->stream, "%c", type);
5285 (*info->fprintf_func) (info->stream, "%s",
5292 (*info->fprintf_func) (info->stream, "%s",
5298 (*info->fprintf_func) (info->stream, "%s",
5304 (*info->fprintf_func) (info->stream, "%s",
5310 (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[0]);
5314 (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[29]);
5318 (*info->fprintf_func) (info->stream, "$pc");
5322 (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[31]);
5326 (*info->fprintf_func) (info->stream, "%s",
5332 (*info->fprintf_func) (info->stream, "%s",
5402 info->insn_type = dis_dref;
5403 info->data_size = 1;
5409 info->insn_type = dis_dref;
5410 info->data_size = 2;
5416 if ((op->pinfo & MIPS16_INSN_READ_PC) == 0
5417 && (op->pinfo & MIPS16_INSN_READ_SP) == 0)
5419 info->insn_type = dis_dref;
5420 info->data_size = 4;
5427 info->insn_type = dis_dref;
5428 info->data_size = 8;
5449 info->insn_type = dis_dref;
5450 info->data_size = 4;
5456 info->insn_type = dis_dref;
5457 info->data_size = 8;
5481 info->insn_type = dis_condbranch;
5489 info->insn_type = dis_branch;
5497 info->insn_type = dis_dref;
5498 info->data_size = 4;
5505 info->insn_type = dis_dref;
5506 info->data_size = 8;
5520 if (signedp && immed >= (1 << (nbits - 1)))
5521 immed -= 1 << nbits;
5535 immed &= (1 << extbits) - 1;
5536 if (! extu && immed >= (1 << (extbits - 1)))
5537 immed -= 1 << extbits;
5541 (*info->fprintf_func) (info->stream, "%d", immed);
5552 baseaddr = memaddr - 2;
5567 status = (*info->read_memory_func) (memaddr - 4, buffer, 2,
5570 && (((info->endian == BFD_ENDIAN_BIG
5574 baseaddr = memaddr - 4;
5577 status = (*info->read_memory_func) (memaddr - 2, buffer,
5580 && (((info->endian == BFD_ENDIAN_BIG
5584 baseaddr = memaddr - 2;
5587 info->target = (baseaddr & ~((1 << shift) - 1)) + immed;
5589 && info->flavour == bfd_target_unknown_flavour)
5591 info->target |= 1;
5592 (*info->print_address_func) (info->target, info);
5604 if (!jalx && info->flavour == bfd_target_unknown_flavour)
5608 info->target = ((memaddr + 4) & ~(bfd_vma) 0x0fffffff) | l;
5609 (*info->print_address_func) (info->target, info);
5610 info->insn_type = dis_jsr;
5611 info->branch_delay_insns = 1;
5627 (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[4]);
5629 (*info->fprintf_func) (info->stream, "-%s",
5637 (*info->fprintf_func) (info->stream, "%s??",
5643 (*info->fprintf_func) (info->stream, "%s%s",
5647 (*info->fprintf_func) (info->stream, "-%s",
5654 (*info->fprintf_func) (info->stream, "%s%s",
5662 (*info->fprintf_func) (info->stream, "%s$f0",
5665 (*info->fprintf_func) (info->stream, "-$f1");
5702 (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[4]);
5704 (*info->fprintf_func) (info->stream, "-%s",
5705 mips_gpr_names[4 + args - 1]);
5713 (*info->fprintf_func) (info->stream, "%s%d",
5718 (*info->fprintf_func) (info->stream, ",%s", mips_gpr_names[31]);
5726 if (nsreg > 0) /* $s2-$s8 */
5727 smask |= ((1 << nsreg) - 1) << 2;
5734 (*info->fprintf_func) (info->stream, ",%s",
5740 (*info->fprintf_func) (info->stream, "-%s",
5746 /* Statics $ax - $a3. */
5748 (*info->fprintf_func) (info->stream, ",%s", mips_gpr_names[7]);
5750 (*info->fprintf_func) (info->stream, ",%s-%s",
5751 mips_gpr_names[7 - statics + 1],
5757 /* xgettext:c-format */
5758 (*info->fprintf_func)
5759 (info->stream,
5773 with the -M switch (multiple options should be separated by commas):\n");
5776 gpr-names=ABI Print GPR names according to specified ABI.\n\
5780 fpr-names=ABI Print FPR names according to specified ABI.\n\
5784 cp0-names=ARCH Print CP0 register names according to\n\
5789 hwr-names=ARCH Print HWR names according to specified\n\
5794 reg-names=ABI Print GPR and FPR names according to\n\
5798 reg-names=ARCH Print CP0 register and HWR names according to\n\