Lines Matching +full:vsel +full:- +full:state +full:- +full:high
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. */
264 /* Values in the 'VSEL' field. */
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.
421 "$" 1 bit load high flag (OP_*_MT_H)
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) \
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.
3180 /* No hazard protection on coprocessor instructions--they shouldn't
3181 change the state of the processor and if they do it's up to the
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()
4851 unsigned int vsel = (l >> OP_SH_VSEL) & OP_MASK_VSEL; in print_insn_args() local
4853 if ((vsel & 0x10) == 0) in print_insn_args()
4857 vsel &= 0x0f; in print_insn_args()
4858 for (fmt = 0; fmt < 3; fmt++, vsel >>= 1) in print_insn_args()
4859 if ((vsel & 1) == 0) in print_insn_args()
4861 (*info->fprintf_func) (info->stream, "$v%ld[%d]", in print_insn_args()
4863 vsel >> 1); in print_insn_args()
4865 else if ((vsel & 0x08) == 0) 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\