Modify AArch64 Assembly and disassembly functions to be able to fail and report why.
[deliverable/binutils-gdb.git] / opcodes / aarch64-asm-2.c
index 7987384a2ceb2825db742dd57a7791b496ad7340..01bc0e1363ed77d850f7864e25e74adc33407f3a 100644 (file)
@@ -579,10 +579,11 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode)
   return aarch64_opcode_table + value;
 }
 
-const char*
+bfd_boolean
 aarch64_insert_operand (const aarch64_operand *self,
                           const aarch64_opnd_info *info,
-                          aarch64_insn *code, const aarch64_inst *inst)
+                          aarch64_insn *code, const aarch64_inst *inst,
+                          aarch64_operand_error *errors)
 {
   /* Use the index as the key.  */
   int key = self - aarch64_operands;
@@ -634,26 +635,26 @@ aarch64_insert_operand (const aarch64_operand *self,
     case 182:
     case 186:
     case 189:
-      return aarch64_ins_regno (self, info, code, inst);
+      return aarch64_ins_regno (self, info, code, inst, errors);
     case 13:
-      return aarch64_ins_reg_extended (self, info, code, inst);
+      return aarch64_ins_reg_extended (self, info, code, inst, errors);
     case 14:
-      return aarch64_ins_reg_shifted (self, info, code, inst);
+      return aarch64_ins_reg_shifted (self, info, code, inst, errors);
     case 19:
-      return aarch64_ins_ft (self, info, code, inst);
+      return aarch64_ins_ft (self, info, code, inst, errors);
     case 30:
     case 31:
     case 32:
     case 191:
-      return aarch64_ins_reglane (self, info, code, inst);
+      return aarch64_ins_reglane (self, info, code, inst, errors);
     case 33:
-      return aarch64_ins_reglist (self, info, code, inst);
+      return aarch64_ins_reglist (self, info, code, inst, errors);
     case 34:
-      return aarch64_ins_ldst_reglist (self, info, code, inst);
+      return aarch64_ins_ldst_reglist (self, info, code, inst, errors);
     case 35:
-      return aarch64_ins_ldst_reglist_r (self, info, code, inst);
+      return aarch64_ins_ldst_reglist_r (self, info, code, inst, errors);
     case 36:
-      return aarch64_ins_ldst_elemlist (self, info, code, inst);
+      return aarch64_ins_ldst_elemlist (self, info, code, inst, errors);
     case 37:
     case 38:
     case 39:
@@ -686,85 +687,85 @@ aarch64_insert_operand (const aarch64_operand *self,
     case 171:
     case 172:
     case 173:
-      return aarch64_ins_imm (self, info, code, inst);
+      return aarch64_ins_imm (self, info, code, inst, errors);
     case 41:
     case 42:
-      return aarch64_ins_advsimd_imm_shift (self, info, code, inst);
+      return aarch64_ins_advsimd_imm_shift (self, info, code, inst, errors);
     case 43:
     case 44:
     case 45:
-      return aarch64_ins_advsimd_imm_modified (self, info, code, inst);
+      return aarch64_ins_advsimd_imm_modified (self, info, code, inst, errors);
     case 49:
     case 140:
-      return aarch64_ins_fpimm (self, info, code, inst);
+      return aarch64_ins_fpimm (self, info, code, inst, errors);
     case 64:
     case 147:
-      return aarch64_ins_limm (self, info, code, inst);
+      return aarch64_ins_limm (self, info, code, inst, errors);
     case 65:
-      return aarch64_ins_aimm (self, info, code, inst);
+      return aarch64_ins_aimm (self, info, code, inst, errors);
     case 66:
-      return aarch64_ins_imm_half (self, info, code, inst);
+      return aarch64_ins_imm_half (self, info, code, inst, errors);
     case 67:
-      return aarch64_ins_fbits (self, info, code, inst);
+      return aarch64_ins_fbits (self, info, code, inst, errors);
     case 69:
     case 70:
     case 145:
-      return aarch64_ins_imm_rotate2 (self, info, code, inst);
+      return aarch64_ins_imm_rotate2 (self, info, code, inst, errors);
     case 71:
     case 144:
-      return aarch64_ins_imm_rotate1 (self, info, code, inst);
+      return aarch64_ins_imm_rotate1 (self, info, code, inst, errors);
     case 72:
     case 73:
-      return aarch64_ins_cond (self, info, code, inst);
+      return aarch64_ins_cond (self, info, code, inst, errors);
     case 79:
     case 86:
-      return aarch64_ins_addr_simple (self, info, code, inst);
+      return aarch64_ins_addr_simple (self, info, code, inst, errors);
     case 80:
-      return aarch64_ins_addr_regoff (self, info, code, inst);
+      return aarch64_ins_addr_regoff (self, info, code, inst, errors);
     case 81:
     case 82:
     case 83:
-      return aarch64_ins_addr_simm (self, info, code, inst);
+      return aarch64_ins_addr_simm (self, info, code, inst, errors);
     case 84:
-      return aarch64_ins_addr_simm10 (self, info, code, inst);
+      return aarch64_ins_addr_simm10 (self, info, code, inst, errors);
     case 85:
-      return aarch64_ins_addr_uimm12 (self, info, code, inst);
+      return aarch64_ins_addr_uimm12 (self, info, code, inst, errors);
     case 87:
-      return aarch64_ins_addr_offset (self, info, code, inst);
+      return aarch64_ins_addr_offset (self, info, code, inst, errors);
     case 88:
-      return aarch64_ins_simd_addr_post (self, info, code, inst);
+      return aarch64_ins_simd_addr_post (self, info, code, inst, errors);
     case 89:
-      return aarch64_ins_sysreg (self, info, code, inst);
+      return aarch64_ins_sysreg (self, info, code, inst, errors);
     case 90:
-      return aarch64_ins_pstatefield (self, info, code, inst);
+      return aarch64_ins_pstatefield (self, info, code, inst, errors);
     case 91:
     case 92:
     case 93:
     case 94:
-      return aarch64_ins_sysins_op (self, info, code, inst);
+      return aarch64_ins_sysins_op (self, info, code, inst, errors);
     case 95:
     case 96:
-      return aarch64_ins_barrier (self, info, code, inst);
+      return aarch64_ins_barrier (self, info, code, inst, errors);
     case 97:
-      return aarch64_ins_prfop (self, info, code, inst);
+      return aarch64_ins_prfop (self, info, code, inst, errors);
     case 98:
-      return aarch64_ins_hint (self, info, code, inst);
+      return aarch64_ins_hint (self, info, code, inst, errors);
     case 99:
-      return aarch64_ins_sve_addr_ri_s4 (self, info, code, inst);
+      return aarch64_ins_sve_addr_ri_s4 (self, info, code, inst, errors);
     case 100:
     case 101:
     case 102:
     case 103:
-      return aarch64_ins_sve_addr_ri_s4xvl (self, info, code, inst);
+      return aarch64_ins_sve_addr_ri_s4xvl (self, info, code, inst, errors);
     case 104:
-      return aarch64_ins_sve_addr_ri_s6xvl (self, info, code, inst);
+      return aarch64_ins_sve_addr_ri_s6xvl (self, info, code, inst, errors);
     case 105:
-      return aarch64_ins_sve_addr_ri_s9xvl (self, info, code, inst);
+      return aarch64_ins_sve_addr_ri_s9xvl (self, info, code, inst, errors);
     case 106:
     case 107:
     case 108:
     case 109:
-      return aarch64_ins_sve_addr_ri_u6 (self, info, code, inst);
+      return aarch64_ins_sve_addr_ri_u6 (self, info, code, inst, errors);
     case 110:
     case 111:
     case 112:
@@ -778,7 +779,7 @@ aarch64_insert_operand (const aarch64_operand *self,
     case 120:
     case 121:
     case 122:
-      return aarch64_ins_sve_addr_rr_lsl (self, info, code, inst);
+      return aarch64_ins_sve_addr_rr_lsl (self, info, code, inst, errors);
     case 123:
     case 124:
     case 125:
@@ -787,49 +788,49 @@ aarch64_insert_operand (const aarch64_operand *self,
     case 128:
     case 129:
     case 130:
-      return aarch64_ins_sve_addr_rz_xtw (self, info, code, inst);
+      return aarch64_ins_sve_addr_rz_xtw (self, info, code, inst, errors);
     case 131:
     case 132:
     case 133:
     case 134:
-      return aarch64_ins_sve_addr_zi_u5 (self, info, code, inst);
+      return aarch64_ins_sve_addr_zi_u5 (self, info, code, inst, errors);
     case 135:
-      return aarch64_ins_sve_addr_zz_lsl (self, info, code, inst);
+      return aarch64_ins_sve_addr_zz_lsl (self, info, code, inst, errors);
     case 136:
-      return aarch64_ins_sve_addr_zz_sxtw (self, info, code, inst);
+      return aarch64_ins_sve_addr_zz_sxtw (self, info, code, inst, errors);
     case 137:
-      return aarch64_ins_sve_addr_zz_uxtw (self, info, code, inst);
+      return aarch64_ins_sve_addr_zz_uxtw (self, info, code, inst, errors);
     case 138:
-      return aarch64_ins_sve_aimm (self, info, code, inst);
+      return aarch64_ins_sve_aimm (self, info, code, inst, errors);
     case 139:
-      return aarch64_ins_sve_asimm (self, info, code, inst);
+      return aarch64_ins_sve_asimm (self, info, code, inst, errors);
     case 141:
-      return aarch64_ins_sve_float_half_one (self, info, code, inst);
+      return aarch64_ins_sve_float_half_one (self, info, code, inst, errors);
     case 142:
-      return aarch64_ins_sve_float_half_two (self, info, code, inst);
+      return aarch64_ins_sve_float_half_two (self, info, code, inst, errors);
     case 143:
-      return aarch64_ins_sve_float_zero_one (self, info, code, inst);
+      return aarch64_ins_sve_float_zero_one (self, info, code, inst, errors);
     case 146:
-      return aarch64_ins_inv_limm (self, info, code, inst);
+      return aarch64_ins_inv_limm (self, info, code, inst, errors);
     case 148:
-      return aarch64_ins_sve_limm_mov (self, info, code, inst);
+      return aarch64_ins_sve_limm_mov (self, info, code, inst, errors);
     case 150:
-      return aarch64_ins_sve_scale (self, info, code, inst);
+      return aarch64_ins_sve_scale (self, info, code, inst, errors);
     case 162:
     case 163:
-      return aarch64_ins_sve_shlimm (self, info, code, inst);
+      return aarch64_ins_sve_shlimm (self, info, code, inst, errors);
     case 164:
     case 165:
-      return aarch64_ins_sve_shrimm (self, info, code, inst);
+      return aarch64_ins_sve_shrimm (self, info, code, inst, errors);
     case 183:
     case 184:
     case 185:
-      return aarch64_ins_sve_quad_index (self, info, code, inst);
+      return aarch64_ins_sve_quad_index (self, info, code, inst, errors);
     case 187:
-      return aarch64_ins_sve_index (self, info, code, inst);
+      return aarch64_ins_sve_index (self, info, code, inst, errors);
     case 188:
     case 190:
-      return aarch64_ins_sve_reglist (self, info, code, inst);
+      return aarch64_ins_sve_reglist (self, info, code, inst, errors);
     default: assert (0); abort ();
     }
 }
This page took 0.027461 seconds and 4 git commands to generate.