From 2b804145796e948fa4c025c07eb201e700281e6b Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 5 Oct 2016 16:52:24 +1030 Subject: -Wimplicit-fallthrough error fixes Well, not all are errors, but a little more substantive than just fiddling with comments. bfd/ * coffcode.h (coff_slurp_symbol_table): Revert accidental commit made 2015-01-08. * elf32-nds32.c (nds32_elf_grok_psinfo): Add missing break. * reloc.c (bfd_default_reloc_type_lookup): Add missing breaks. opcodes/ * arc-ext.c (create_map): Add missing break. * msp430-decode.opc (encode_as): Likewise. * msp430-decode.c: Regenerate. binutils/ * coffdump.c (dump_coff_where): Add missing break. * stabs.c (stab_xcoff_builtin_type): Likewise. gas/ * config/tc-arc.c (find_opcode_match): Add missing break. * config/tc-i960.c (get_cdisp): Likewise. * config/tc-metag.c (parse_swap, md_apply_fix): Likewise. * config/tc-mt.c (md_parse_option): Likewise. * config/tc-nds32.c (nds32_apply_fix): Likewise. * config/tc-hppa.c (pa_ip): Assert rather than testing last condition of multiple if statements. * config/tc-s390.c (s390_exp_compare): Return 0 on error. * config/tc-tic4x.c (tic4x_operand_parse): Add as_bad and break out of case rather than falling into next case. Formatting. ld/ * plugin.c (asymbol_from_plugin_symbol): Avoid compiler warning by adding return. --- bfd/ChangeLog | 7 ++ bfd/coffcode.h | 4 +- bfd/elf32-nds32.c | 1 + bfd/reloc.c | 2 + binutils/ChangeLog | 5 ++ binutils/coffdump.c | 1 + binutils/stabs.c | 1 + gas/ChangeLog | 13 +++ gas/config/tc-arc.c | 1 + gas/config/tc-hppa.c | 3 +- gas/config/tc-i960.c | 1 + gas/config/tc-metag.c | 2 + gas/config/tc-mt.c | 1 + gas/config/tc-nds32.c | 1 + gas/config/tc-s390.c | 1 + gas/config/tc-tic4x.c | 15 ++-- ld/ChangeLog | 5 ++ ld/plugin.c | 2 + opcodes/ChangeLog | 6 ++ opcodes/arc-ext.c | 1 + opcodes/msp430-decode.c | 199 +++++++++++++++++++++++----------------------- opcodes/msp430-decode.opc | 1 + 22 files changed, 162 insertions(+), 111 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 7ba9597..11381ea 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,12 @@ 2016-10-06 Alan Modra + * coffcode.h (coff_slurp_symbol_table): Revert accidental commit + made 2015-01-08. + * elf32-nds32.c (nds32_elf_grok_psinfo): Add missing break. + * reloc.c (bfd_default_reloc_type_lookup): Add missing breaks. + +2016-10-06 Alan Modra + * elf32-epiphany.c (epiphany_final_link_relocate): Use bitwise OR in arithmetic expression, not boolean OR. diff --git a/bfd/coffcode.h b/bfd/coffcode.h index 20829fc..31050ec 100644 --- a/bfd/coffcode.h +++ b/bfd/coffcode.h @@ -5055,14 +5055,14 @@ coff_slurp_symbol_table (bfd * abfd) #if defined(TIC80COFF) || defined(TICOFF) case C_UEXT: /* Tentative external definition. */ #endif + case C_EXTLAB: /* External load time label. */ + case C_HIDDEN: /* Ext symbol in dmert public lib. */ default: _bfd_error_handler (_("%B: Unrecognized storage class %d for %s symbol `%s'"), abfd, src->u.syment.n_sclass, dst->symbol.section->name, dst->symbol.name); ret = FALSE; - case C_EXTLAB: /* External load time label. */ - case C_HIDDEN: /* Ext symbol in dmert public lib. */ dst->symbol.flags = BSF_DEBUGGING; dst->symbol.value = (src->u.syment.n_value); break; diff --git a/bfd/elf32-nds32.c b/bfd/elf32-nds32.c index fc47c7f..0f2d6da 100644 --- a/bfd/elf32-nds32.c +++ b/bfd/elf32-nds32.c @@ -3046,6 +3046,7 @@ nds32_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note) _bfd_elfcore_strndup (abfd, note->descdata + 28, 16); elf_tdata (abfd)->core->command = _bfd_elfcore_strndup (abfd, note->descdata + 44, 80); + break; default: return FALSE; diff --git a/bfd/reloc.c b/bfd/reloc.c index dbaa6a9..58cffdf 100644 --- a/bfd/reloc.c +++ b/bfd/reloc.c @@ -7770,10 +7770,12 @@ bfd_default_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code) { case 64: BFD_FAIL (); + break; case 32: return &bfd_howto_32; case 16: BFD_FAIL (); + break; default: BFD_FAIL (); } diff --git a/binutils/ChangeLog b/binutils/ChangeLog index c40ceda..bef5ec0 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2016-10-06 Alan Modra + + * coffdump.c (dump_coff_where): Add missing break. + * stabs.c (stab_xcoff_builtin_type): Likewise. + 2016-09-29 Alan Modra * readelf.c (process_arch_specific): Call process_power_specific diff --git a/binutils/coffdump.c b/binutils/coffdump.c index e9aa76f..6404458 100644 --- a/binutils/coffdump.c +++ b/binutils/coffdump.c @@ -267,6 +267,7 @@ dump_coff_where (struct coff_where *p) break; case coff_where_strtag: printf ("STRTAG"); + break; case coff_where_entag: printf ("ENTAG"); break; diff --git a/binutils/stabs.c b/binutils/stabs.c index aebde7a..d209094 100644 --- a/binutils/stabs.c +++ b/binutils/stabs.c @@ -3432,6 +3432,7 @@ stab_xcoff_builtin_type (void *dhandle, struct stab_handle *info, case 9: name = "unsigned"; rettype = debug_make_int_type (dhandle, 4, TRUE); + break; case 10: name = "unsigned long"; rettype = debug_make_int_type (dhandle, 4, TRUE); diff --git a/gas/ChangeLog b/gas/ChangeLog index 22a948d..80ab144 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,18 @@ 2016-10-06 Alan Modra + * config/tc-arc.c (find_opcode_match): Add missing break. + * config/tc-i960.c (get_cdisp): Likewise. + * config/tc-metag.c (parse_swap, md_apply_fix): Likewise. + * config/tc-mt.c (md_parse_option): Likewise. + * config/tc-nds32.c (nds32_apply_fix): Likewise. + * config/tc-hppa.c (pa_ip): Assert rather than testing last + condition of multiple if statements. + * config/tc-s390.c (s390_exp_compare): Return 0 on error. + * config/tc-tic4x.c (tic4x_operand_parse): Add as_bad and break + out of case rather than falling into next case. Formatting. + +2016-10-06 Alan Modra + * config/rl78-parse.y: Don't use deprecated %name-prefix. * config/rx-parse.y: Likewise. diff --git a/gas/config/tc-arc.c b/gas/config/tc-arc.c index 58adf0b..d480bf1 100644 --- a/gas/config/tc-arc.c +++ b/gas/config/tc-arc.c @@ -1929,6 +1929,7 @@ find_opcode_match (const struct arc_opcode_hash_entry *entry, case O_absent: if (!generic_reloc_p (operand->default_reloc)) goto match_failed; + break; default: break; } diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c index aea78dc..f5cdc2c 100644 --- a/gas/config/tc-hppa.c +++ b/gas/config/tc-hppa.c @@ -3505,8 +3505,9 @@ pa_ip (char *str) /* M bit is explicit in the major opcode. */ INSERT_FIELD_AND_CONTINUE (opcode, a, 2); } - else if (*args == 'e') + else { + gas_assert (*args == 'e'); /* Stash the ma/mb flag temporarily in the instruction. We will use (and remove it) later when handling 'J', 'K', '<' & '>'. */ diff --git a/gas/config/tc-i960.c b/gas/config/tc-i960.c index 59ef760..5afbb6f 100644 --- a/gas/config/tc-i960.c +++ b/gas/config/tc-i960.c @@ -577,6 +577,7 @@ get_cdisp (const char *dispP, /* Displacement as specified in source instruction { case O_illegal: as_bad (_("expression syntax error")); + break; case O_symbol: if (S_GET_SEGMENT (e.X_add_symbol) == now_seg diff --git a/gas/config/tc-metag.c b/gas/config/tc-metag.c index bbc34f7..e9f8687 100644 --- a/gas/config/tc-metag.c +++ b/gas/config/tc-metag.c @@ -2040,6 +2040,7 @@ parse_swap (const char *line, metag_insn *insn, as_bad (_("PC, CT, TR and TT are treated as if they are a single unit but operands must be in different units")); return NULL; } + break; default: /* Registers must be in different units. */ @@ -7109,6 +7110,7 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) break; case BFD_RELOC_64: md_number_to_chars (buf, value, 8); + break; case BFD_RELOC_METAG_RELBRANCH: if (!value) diff --git a/gas/config/tc-mt.c b/gas/config/tc-mt.c index bbcd87e..1ae271e 100644 --- a/gas/config/tc-mt.c +++ b/gas/config/tc-mt.c @@ -133,6 +133,7 @@ md_parse_option (int c ATTRIBUTE_UNUSED, const char * arg) mt_mach_bitmask = 1 << MACH_MS2; mt_arch = ms2; } + break; case OPTION_NO_SCHED_REST: no_scheduling_restrictions = 1; break; diff --git a/gas/config/tc-nds32.c b/gas/config/tc-nds32.c index f8a9277..de59f46 100644 --- a/gas/config/tc-nds32.c +++ b/gas/config/tc-nds32.c @@ -6605,6 +6605,7 @@ nds32_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) break; case BFD_RELOC_64: md_number_to_chars (where, value, 8); + break; default: as_bad_where (fixP->fx_file, fixP->fx_line, _("Internal error: Unknown fixup type %d (`%s')"), diff --git a/gas/config/tc-s390.c b/gas/config/tc-s390.c index 356bbb0..bc318ee 100644 --- a/gas/config/tc-s390.c +++ b/gas/config/tc-s390.c @@ -929,6 +929,7 @@ s390_exp_compare (expressionS *exp1, expressionS *exp2) case O_big: as_bad (_("Can't handle O_big in s390_exp_compare")); + return 0; case O_symbol: /* X_add_symbol & X_add_number must be equal. */ case O_symbol_rva: diff --git a/gas/config/tc-tic4x.c b/gas/config/tc-tic4x.c index 407fe17..84c9ece 100644 --- a/gas/config/tc-tic4x.c +++ b/gas/config/tc-tic4x.c @@ -1553,10 +1553,10 @@ tic4x_operand_parse (char *s, tic4x_operand_t *operand) /* Allow ori ^foo, ar0 to be equivalent to ldi .hi.foo, ar0 */ /* WARNING : The TI C40 assembler cannot do this. */ else if (exp->X_op == O_symbol) - { - operand->mode = M_HI; - break; - } + operand->mode = M_HI; + else + as_bad (_("Expecting a constant value")); + break; case '#': input_line_pointer = tic4x_expression (++input_line_pointer, exp); @@ -1576,14 +1576,11 @@ tic4x_operand_parse (char *s, tic4x_operand_t *operand) /* Allow ori foo, ar0 to be equivalent to ldi .lo.foo, ar0 */ /* WARNING : The TI C40 assembler cannot do this. */ else if (exp->X_op == O_symbol) - { - operand->mode = M_IMMED; - break; - } - + operand->mode = M_IMMED; else as_bad (_("Expecting a constant value")); break; + case '\\': #endif case '@': diff --git a/ld/ChangeLog b/ld/ChangeLog index dd20229..3660d87 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2016-10-06 Alan Modra + + * plugin.c (asymbol_from_plugin_symbol): Avoid compiler warning + by adding return. + 2016-10-04 Alan Modra * ld.texinfo (Expression Section): Update result of arithmetic diff --git a/ld/plugin.c b/ld/plugin.c index 36094dd..80d22e2 100644 --- a/ld/plugin.c +++ b/ld/plugin.c @@ -430,6 +430,8 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym, default: einfo (_("%P%F: unknown ELF symbol visibility: %d!\n"), ldsym->visibility); + return LDPS_ERR; + case LDPV_DEFAULT: visibility = STV_DEFAULT; break; diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 83f435c..6602768 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,5 +1,11 @@ 2016-10-06 Alan Modra + * arc-ext.c (create_map): Add missing break. + * msp430-decode.opc (encode_as): Likewise. + * msp430-decode.c: Regenerate. + +2016-10-06 Alan Modra + * cr16-dis.c (print_insn_cr16): Don't use boolean OR in arithmetic. * crx-dis.c (print_insn_crx): Likewise. diff --git a/opcodes/arc-ext.c b/opcodes/arc-ext.c index c12cabe..3cf3e2f 100644 --- a/opcodes/arc-ext.c +++ b/opcodes/arc-ext.c @@ -170,6 +170,7 @@ create_map (unsigned char *block, arc_extension_map. coreRegisters[number - FIRST_EXTENSION_CORE_REGISTER].name = xstrdup (name); + break; } case EXT_COND_CODE: diff --git a/opcodes/msp430-decode.c b/opcodes/msp430-decode.c index c8cfc9a..137205f 100644 --- a/opcodes/msp430-decode.c +++ b/opcodes/msp430-decode.c @@ -238,6 +238,7 @@ encode_as (int reg, int as, LocalData *ld, int ext) break; case MSR_None: SA (0); + break; default: SM (reg, 0); break; @@ -358,9 +359,9 @@ msp430_decode_opcode (unsigned long pc, op_semantics_1: { /** 0000 srcr 0000 dstr MOVA @%1, %0 */ -#line 438 "msp430-decode.opc" +#line 439 "msp430-decode.opc" int srcr AU = op[0] & 0x0f; -#line 438 "msp430-decode.opc" +#line 439 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -371,7 +372,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("MOVA @%1, %0"); -#line 438 "msp430-decode.opc" +#line 439 "msp430-decode.opc" ID (MSO_mov); SM (srcr, 0); DR (dstr); msp430->size = 20; msp430->ofs_430x = 1; @@ -382,9 +383,9 @@ msp430_decode_opcode (unsigned long pc, op_semantics_2: { /** 0000 srcr 0001 dstr MOVA @%1+, %0 */ -#line 443 "msp430-decode.opc" +#line 444 "msp430-decode.opc" int srcr AU = op[0] & 0x0f; -#line 443 "msp430-decode.opc" +#line 444 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -395,7 +396,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("MOVA @%1+, %0"); -#line 443 "msp430-decode.opc" +#line 444 "msp430-decode.opc" ID (MSO_mov); SI (srcr); DR (dstr); msp430->size = 20; msp430->ofs_430x = 1; @@ -406,9 +407,9 @@ msp430_decode_opcode (unsigned long pc, op_semantics_3: { /** 0000 srcr 0010 dstr MOVA &%1, %0 */ -#line 448 "msp430-decode.opc" +#line 449 "msp430-decode.opc" int srcr AU = op[0] & 0x0f; -#line 448 "msp430-decode.opc" +#line 449 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -419,7 +420,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("MOVA &%1, %0"); -#line 448 "msp430-decode.opc" +#line 449 "msp430-decode.opc" ID (MSO_mov); SA ((srcr << 16) + IMMU(2)); DR (dstr); msp430->size = 20; msp430->ofs_430x = 1; @@ -430,9 +431,9 @@ msp430_decode_opcode (unsigned long pc, op_semantics_4: { /** 0000 srcr 0011 dstr MOVA %1, %0 */ -#line 453 "msp430-decode.opc" +#line 454 "msp430-decode.opc" int srcr AU = op[0] & 0x0f; -#line 453 "msp430-decode.opc" +#line 454 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -443,7 +444,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("MOVA %1, %0"); -#line 453 "msp430-decode.opc" +#line 454 "msp430-decode.opc" ID (MSO_mov); SM (srcr, IMMS(2)); DR (dstr); msp430->size = 20; msp430->ofs_430x = 1; @@ -455,11 +456,11 @@ msp430_decode_opcode (unsigned long pc, op_semantics_5: { /** 0000 bt00 010w dstr RRCM.A %c, %0 */ -#line 520 "msp430-decode.opc" +#line 521 "msp430-decode.opc" int bt AU = (op[0] >> 2) & 0x03; -#line 520 "msp430-decode.opc" +#line 521 "msp430-decode.opc" int w AU = (op[1] >> 4) & 0x01; -#line 520 "msp430-decode.opc" +#line 521 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -471,7 +472,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("RRCM.A %c, %0"); -#line 520 "msp430-decode.opc" +#line 521 "msp430-decode.opc" ID (MSO_rrc); DR (dstr); SR (dstr); msp430->repeats = bt; msp430->size = w ? 16 : 20; @@ -484,9 +485,9 @@ msp430_decode_opcode (unsigned long pc, op_semantics_6: { /** 0000 srcr 0110 dstr MOVA %1, &%0 */ -#line 458 "msp430-decode.opc" +#line 459 "msp430-decode.opc" int srcr AU = op[0] & 0x0f; -#line 458 "msp430-decode.opc" +#line 459 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -497,7 +498,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("MOVA %1, &%0"); -#line 458 "msp430-decode.opc" +#line 459 "msp430-decode.opc" ID (MSO_mov); SR (srcr); DA ((dstr << 16) + IMMU(2)); msp430->size = 20; msp430->ofs_430x = 1; @@ -508,9 +509,9 @@ msp430_decode_opcode (unsigned long pc, op_semantics_7: { /** 0000 srcr 0111 dstr MOVA %1, &%0 */ -#line 463 "msp430-decode.opc" +#line 464 "msp430-decode.opc" int srcr AU = op[0] & 0x0f; -#line 463 "msp430-decode.opc" +#line 464 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -521,7 +522,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("MOVA %1, &%0"); -#line 463 "msp430-decode.opc" +#line 464 "msp430-decode.opc" ID (MSO_mov); SR (srcr); DM (dstr, IMMS(2)); msp430->size = 20; msp430->ofs_430x = 1; @@ -532,9 +533,9 @@ msp430_decode_opcode (unsigned long pc, op_semantics_8: { /** 0000 srcr 1000 dstr MOVA %1, %0 */ -#line 468 "msp430-decode.opc" +#line 469 "msp430-decode.opc" int srcr AU = op[0] & 0x0f; -#line 468 "msp430-decode.opc" +#line 469 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -545,7 +546,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("MOVA %1, %0"); -#line 468 "msp430-decode.opc" +#line 469 "msp430-decode.opc" ID (MSO_mov); SC ((srcr << 16) + IMMU(2)); DR (dstr); msp430->size = 20; msp430->ofs_430x = 1; @@ -556,9 +557,9 @@ msp430_decode_opcode (unsigned long pc, op_semantics_9: { /** 0000 srcr 1001 dstr CMPA %1, %0 */ -#line 473 "msp430-decode.opc" +#line 474 "msp430-decode.opc" int srcr AU = op[0] & 0x0f; -#line 473 "msp430-decode.opc" +#line 474 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -569,7 +570,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("CMPA %1, %0"); -#line 473 "msp430-decode.opc" +#line 474 "msp430-decode.opc" ID (MSO_cmp); SC ((srcr << 16) + IMMU(2)); DR (dstr); msp430->size = 20; msp430->ofs_430x = 1; @@ -581,9 +582,9 @@ msp430_decode_opcode (unsigned long pc, op_semantics_10: { /** 0000 srcr 1010 dstr ADDA %1, %0 */ -#line 479 "msp430-decode.opc" +#line 480 "msp430-decode.opc" int srcr AU = op[0] & 0x0f; -#line 479 "msp430-decode.opc" +#line 480 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -594,7 +595,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("ADDA %1, %0"); -#line 479 "msp430-decode.opc" +#line 480 "msp430-decode.opc" ID (MSO_add); SC ((srcr << 16) + IMMU(2)); DR (dstr); msp430->size = 20; msp430->ofs_430x = 1; @@ -606,9 +607,9 @@ msp430_decode_opcode (unsigned long pc, op_semantics_11: { /** 0000 srcr 1011 dstr SUBA %1, %0 */ -#line 485 "msp430-decode.opc" +#line 486 "msp430-decode.opc" int srcr AU = op[0] & 0x0f; -#line 485 "msp430-decode.opc" +#line 486 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -619,7 +620,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("SUBA %1, %0"); -#line 485 "msp430-decode.opc" +#line 486 "msp430-decode.opc" ID (MSO_sub); SC ((srcr << 16) + IMMU(2)); DR (dstr); msp430->size = 20; msp430->ofs_430x = 1; @@ -631,9 +632,9 @@ msp430_decode_opcode (unsigned long pc, op_semantics_12: { /** 0000 srcr 1100 dstr MOVA %1, %0 */ -#line 497 "msp430-decode.opc" +#line 498 "msp430-decode.opc" int srcr AU = op[0] & 0x0f; -#line 497 "msp430-decode.opc" +#line 498 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -644,7 +645,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("MOVA %1, %0"); -#line 497 "msp430-decode.opc" +#line 498 "msp430-decode.opc" ID (MSO_mov); SR (srcr); DR (dstr); msp430->size = 20; msp430->ofs_430x = 1; @@ -655,9 +656,9 @@ msp430_decode_opcode (unsigned long pc, op_semantics_13: { /** 0000 srcr 1101 dstr CMPA %1, %0 */ -#line 502 "msp430-decode.opc" +#line 503 "msp430-decode.opc" int srcr AU = op[0] & 0x0f; -#line 502 "msp430-decode.opc" +#line 503 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -668,7 +669,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("CMPA %1, %0"); -#line 502 "msp430-decode.opc" +#line 503 "msp430-decode.opc" ID (MSO_cmp); SR (srcr); DR (dstr); msp430->size = 20; msp430->ofs_430x = 1; @@ -680,9 +681,9 @@ msp430_decode_opcode (unsigned long pc, op_semantics_14: { /** 0000 srcr 1110 dstr ADDA %1, %0 */ -#line 508 "msp430-decode.opc" +#line 509 "msp430-decode.opc" int srcr AU = op[0] & 0x0f; -#line 508 "msp430-decode.opc" +#line 509 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -693,7 +694,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("ADDA %1, %0"); -#line 508 "msp430-decode.opc" +#line 509 "msp430-decode.opc" ID (MSO_add); SR (srcr); DR (dstr); msp430->size = 20; msp430->ofs_430x = 1; @@ -705,9 +706,9 @@ msp430_decode_opcode (unsigned long pc, op_semantics_15: { /** 0000 srcr 1111 dstr SUBA %1, %0 */ -#line 514 "msp430-decode.opc" +#line 515 "msp430-decode.opc" int srcr AU = op[0] & 0x0f; -#line 514 "msp430-decode.opc" +#line 515 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -718,7 +719,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("SUBA %1, %0"); -#line 514 "msp430-decode.opc" +#line 515 "msp430-decode.opc" ID (MSO_sub); SR (srcr); DR (dstr); msp430->size = 20; msp430->ofs_430x = 1; @@ -749,11 +750,11 @@ msp430_decode_opcode (unsigned long pc, op_semantics_16: { /** 0000 bt01 010w dstr RRAM.A %c, %0 */ -#line 527 "msp430-decode.opc" +#line 528 "msp430-decode.opc" int bt AU = (op[0] >> 2) & 0x03; -#line 527 "msp430-decode.opc" +#line 528 "msp430-decode.opc" int w AU = (op[1] >> 4) & 0x01; -#line 527 "msp430-decode.opc" +#line 528 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -765,7 +766,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("RRAM.A %c, %0"); -#line 527 "msp430-decode.opc" +#line 528 "msp430-decode.opc" ID (MSO_rra); DR (dstr); SR (dstr); msp430->repeats = bt; msp430->size = w ? 16 : 20; @@ -827,11 +828,11 @@ msp430_decode_opcode (unsigned long pc, op_semantics_17: { /** 0000 bt10 010w dstr RLAM.A %c, %0 */ -#line 534 "msp430-decode.opc" +#line 535 "msp430-decode.opc" int bt AU = (op[0] >> 2) & 0x03; -#line 534 "msp430-decode.opc" +#line 535 "msp430-decode.opc" int w AU = (op[1] >> 4) & 0x01; -#line 534 "msp430-decode.opc" +#line 535 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -843,7 +844,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("RLAM.A %c, %0"); -#line 534 "msp430-decode.opc" +#line 535 "msp430-decode.opc" ID (MSO_add); DR (dstr); SR (dstr); msp430->repeats = bt; msp430->size = w ? 16 : 20; @@ -905,11 +906,11 @@ msp430_decode_opcode (unsigned long pc, op_semantics_18: { /** 0000 bt11 010w dstr RRUM.A %c, %0 */ -#line 541 "msp430-decode.opc" +#line 542 "msp430-decode.opc" int bt AU = (op[0] >> 2) & 0x03; -#line 541 "msp430-decode.opc" +#line 542 "msp430-decode.opc" int w AU = (op[1] >> 4) & 0x01; -#line 541 "msp430-decode.opc" +#line 542 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -921,7 +922,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("RRUM.A %c, %0"); -#line 541 "msp430-decode.opc" +#line 542 "msp430-decode.opc" ID (MSO_rru); DR (dstr); SR (dstr); msp430->repeats = bt; msp430->size = w ? 16 : 20; @@ -1594,15 +1595,15 @@ msp430_decode_opcode (unsigned long pc, op_semantics_19: { /** 0001 00so c b ad dreg %S%b %1 */ -#line 394 "msp430-decode.opc" +#line 395 "msp430-decode.opc" int so AU = op[0] & 0x03; -#line 394 "msp430-decode.opc" +#line 395 "msp430-decode.opc" int c AU = (op[1] >> 7) & 0x01; -#line 394 "msp430-decode.opc" +#line 395 "msp430-decode.opc" int b AU = (op[1] >> 6) & 0x01; -#line 394 "msp430-decode.opc" +#line 395 "msp430-decode.opc" int ad AU = (op[1] >> 4) & 0x03; -#line 394 "msp430-decode.opc" +#line 395 "msp430-decode.opc" int dreg AU = op[1] & 0x0f; if (trace) { @@ -1616,7 +1617,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dreg = 0x%x\n", dreg); } SYNTAX("%S%b %1"); -#line 394 "msp430-decode.opc" +#line 395 "msp430-decode.opc" ID (sopc_to_id (so,c)); ASX (dreg, ad, srxt_bits); ABW (al_bit, b); @@ -1682,7 +1683,7 @@ msp430_decode_opcode (unsigned long pc, op[0], op[1]); } SYNTAX("RETI"); -#line 548 "msp430-decode.opc" +#line 549 "msp430-decode.opc" ID (MSO_reti); msp430->size = 20; msp430->ofs_430x = 1; @@ -1900,9 +1901,9 @@ msp430_decode_opcode (unsigned long pc, case 0x7f: { /** 0001 0011 01as dstr CALLA %0 */ -#line 553 "msp430-decode.opc" +#line 554 "msp430-decode.opc" int as AU = (op[1] >> 4) & 0x03; -#line 553 "msp430-decode.opc" +#line 554 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -1913,7 +1914,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("CALLA %0"); -#line 553 "msp430-decode.opc" +#line 554 "msp430-decode.opc" ID (MSO_call); AS (dstr, as); msp430->size = 20; msp430->ofs_430x = 1; @@ -1938,7 +1939,7 @@ msp430_decode_opcode (unsigned long pc, case 0x8f: { /** 0001 0011 1000 extb CALLA %0 */ -#line 558 "msp430-decode.opc" +#line 559 "msp430-decode.opc" int extb AU = op[1] & 0x0f; if (trace) { @@ -1948,7 +1949,7 @@ msp430_decode_opcode (unsigned long pc, printf (" extb = 0x%x\n", extb); } SYNTAX("CALLA %0"); -#line 558 "msp430-decode.opc" +#line 559 "msp430-decode.opc" ID (MSO_call); SA (IMMU(2) | (extb << 16)); msp430->size = 20; msp430->ofs_430x = 1; @@ -1973,7 +1974,7 @@ msp430_decode_opcode (unsigned long pc, case 0x9f: { /** 0001 0011 1001 extb CALLA %0 */ -#line 563 "msp430-decode.opc" +#line 564 "msp430-decode.opc" int extb AU = op[1] & 0x0f; if (trace) { @@ -1983,7 +1984,7 @@ msp430_decode_opcode (unsigned long pc, printf (" extb = 0x%x\n", extb); } SYNTAX("CALLA %0"); -#line 563 "msp430-decode.opc" +#line 564 "msp430-decode.opc" raddr = IMMU(2) | (extb << 16); if (raddr & 0x80000) raddr -= 0x100000; @@ -2011,7 +2012,7 @@ msp430_decode_opcode (unsigned long pc, case 0xbf: { /** 0001 0011 1011 extb CALLA %0 */ -#line 571 "msp430-decode.opc" +#line 572 "msp430-decode.opc" int extb AU = op[1] & 0x0f; if (trace) { @@ -2021,7 +2022,7 @@ msp430_decode_opcode (unsigned long pc, printf (" extb = 0x%x\n", extb); } SYNTAX("CALLA %0"); -#line 571 "msp430-decode.opc" +#line 572 "msp430-decode.opc" ID (MSO_call); SC (IMMU(2) | (extb << 16)); msp430->size = 20; msp430->ofs_430x = 1; @@ -2038,11 +2039,11 @@ msp430_decode_opcode (unsigned long pc, op_semantics_20: { /** 0001 010w bits srcr PUSHM.A %0 */ -#line 576 "msp430-decode.opc" +#line 577 "msp430-decode.opc" int w AU = op[0] & 0x01; -#line 576 "msp430-decode.opc" +#line 577 "msp430-decode.opc" int bits AU = (op[1] >> 4) & 0x0f; -#line 576 "msp430-decode.opc" +#line 577 "msp430-decode.opc" int srcr AU = op[1] & 0x0f; if (trace) { @@ -2054,7 +2055,7 @@ msp430_decode_opcode (unsigned long pc, printf (" srcr = 0x%x\n", srcr); } SYNTAX("PUSHM.A %0"); -#line 576 "msp430-decode.opc" +#line 577 "msp430-decode.opc" ID (MSO_push); SR (srcr); msp430->size = w ? 16 : 20; msp430->repeats = bits; @@ -2081,11 +2082,11 @@ msp430_decode_opcode (unsigned long pc, op_semantics_21: { /** 0001 011w bits dstr POPM.A %0 */ -#line 582 "msp430-decode.opc" +#line 583 "msp430-decode.opc" int w AU = op[0] & 0x01; -#line 582 "msp430-decode.opc" +#line 583 "msp430-decode.opc" int bits AU = (op[1] >> 4) & 0x0f; -#line 582 "msp430-decode.opc" +#line 583 "msp430-decode.opc" int dstr AU = op[1] & 0x0f; if (trace) { @@ -2097,7 +2098,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dstr = 0x%x\n", dstr); } SYNTAX("POPM.A %0"); -#line 582 "msp430-decode.opc" +#line 583 "msp430-decode.opc" ID (MSO_pop); DR (dstr); msp430->size = w ? 16 : 20; msp430->repeats = bits; @@ -2124,13 +2125,13 @@ msp430_decode_opcode (unsigned long pc, op_semantics_22: { /** 0001 1srx t l 00 dsxt 430x */ -#line 350 "msp430-decode.opc" +#line 351 "msp430-decode.opc" int srx AU = op[0] & 0x07; -#line 350 "msp430-decode.opc" +#line 351 "msp430-decode.opc" int t AU = (op[1] >> 7) & 0x01; -#line 350 "msp430-decode.opc" +#line 351 "msp430-decode.opc" int l AU = (op[1] >> 6) & 0x01; -#line 350 "msp430-decode.opc" +#line 351 "msp430-decode.opc" int dsxt AU = op[1] & 0x0f; if (trace) { @@ -2143,7 +2144,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dsxt = 0x%x\n", dsxt); } SYNTAX("430x"); -#line 350 "msp430-decode.opc" +#line 351 "msp430-decode.opc" al_bit = l; srxt_bits = srx * 2 + t; @@ -2246,11 +2247,11 @@ msp430_decode_opcode (unsigned long pc, op_semantics_23: { /** 001jmp aa addrlsbs %J %1 */ -#line 424 "msp430-decode.opc" +#line 425 "msp430-decode.opc" int jmp AU = (op[0] >> 2) & 0x07; -#line 424 "msp430-decode.opc" +#line 425 "msp430-decode.opc" int aa AU = op[0] & 0x03; -#line 424 "msp430-decode.opc" +#line 425 "msp430-decode.opc" int addrlsbs AU = op[1]; if (trace) { @@ -2262,7 +2263,7 @@ msp430_decode_opcode (unsigned long pc, printf (" addrlsbs = 0x%x\n", addrlsbs); } SYNTAX("%J %1"); -#line 424 "msp430-decode.opc" +#line 425 "msp430-decode.opc" raddr = (aa << 9) | (addrlsbs << 1); if (raddr & 0x400) @@ -2567,17 +2568,17 @@ msp430_decode_opcode (unsigned long pc, op_semantics_24: { /** dopc sreg a b as dreg %D%b %1,%0 */ -#line 371 "msp430-decode.opc" +#line 372 "msp430-decode.opc" int dopc AU = (op[0] >> 4) & 0x0f; -#line 371 "msp430-decode.opc" +#line 372 "msp430-decode.opc" int sreg AU = op[0] & 0x0f; -#line 371 "msp430-decode.opc" +#line 372 "msp430-decode.opc" int a AU = (op[1] >> 7) & 0x01; -#line 371 "msp430-decode.opc" +#line 372 "msp430-decode.opc" int b AU = (op[1] >> 6) & 0x01; -#line 371 "msp430-decode.opc" +#line 372 "msp430-decode.opc" int as AU = (op[1] >> 4) & 0x03; -#line 371 "msp430-decode.opc" +#line 372 "msp430-decode.opc" int dreg AU = op[1] & 0x0f; if (trace) { @@ -2592,7 +2593,7 @@ msp430_decode_opcode (unsigned long pc, printf (" dreg = 0x%x\n", dreg); } SYNTAX("%D%b %1,%0"); -#line 371 "msp430-decode.opc" +#line 372 "msp430-decode.opc" ID (dopc_to_id (dopc)); ASX (sreg, as, srxt_bits); ADX (dreg, a, dsxt_bits); ABW (al_bit, b); if (a == 0 && as == 0) @@ -4339,7 +4340,7 @@ msp430_decode_opcode (unsigned long pc, } break; } -#line 588 "msp430-decode.opc" +#line 589 "msp430-decode.opc" return msp430->n_bytes; } diff --git a/opcodes/msp430-decode.opc b/opcodes/msp430-decode.opc index 084a6a5..9428467 100644 --- a/opcodes/msp430-decode.opc +++ b/opcodes/msp430-decode.opc @@ -237,6 +237,7 @@ encode_as (int reg, int as, LocalData *ld, int ext) break; case MSR_None: SA (0); + break; default: SM (reg, 0); break; -- cgit v1.1