diff --git a/gas/ChangeLog b/gas/ChangeLog index 05ddfb41043..6accdbb3555 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,6 +1,8 @@ 2000-07-17 Kazu Hirata * config/tc-w65.c: Fix formatting. + * config/tc-mn10200.c: Fix formatting. + * config/tc-mn10300.c: Likewise. 2000-07-17 Frank Ch. Eigler diff --git a/gas/config/tc-mn10200.c b/gas/config/tc-mn10200.c index 264f7bf001f..5d4bb604586 100644 --- a/gas/config/tc-mn10200.c +++ b/gas/config/tc-mn10200.c @@ -21,7 +21,7 @@ #include #include #include "as.h" -#include "subsegs.h" +#include "subsegs.h" #include "opcode/mn10200.h" /* Structure to hold information about predefined registers. */ @@ -31,46 +31,47 @@ struct reg_name int value; }; -/* Generic assembler global variables which must be defined by all targets. */ +/* Generic assembler global variables which must be defined by all + targets. */ -/* Characters which always start a comment. */ +/* Characters which always start a comment. */ const char comment_chars[] = "#"; /* Characters which start a comment at the beginning of a line. */ const char line_comment_chars[] = ";#"; -/* Characters which may be used to separate multiple commands on a +/* Characters which may be used to separate multiple commands on a single line. */ const char line_separator_chars[] = ";"; -/* Characters which are used to indicate an exponent in a floating +/* Characters which are used to indicate an exponent in a floating point number. */ const char EXP_CHARS[] = "eE"; -/* Characters which mean that a number is a floating point constant, +/* Characters which mean that a number is a floating point constant, as in 0d1.0. */ const char FLT_CHARS[] = "dD"; - const relax_typeS md_relax_table[] = { - /* bCC relaxing */ + /* bCC relaxing */ {0x81, -0x7e, 2, 1}, {0x8004, -0x7ffb, 5, 2}, {0x800006, -0x7ffff9, 7, 0}, - /* bCCx relaxing */ + /* bCCx relaxing */ {0x81, -0x7e, 3, 4}, {0x8004, -0x7ffb, 6, 5}, {0x800006, -0x7ffff9, 8, 0}, - /* jsr relaxing */ + /* jsr relaxing */ {0x8004, -0x7ffb, 3, 7}, {0x800006, -0x7ffff9, 5, 0}, - /* jmp relaxing */ + /* jmp relaxing */ {0x81, -0x7e, 2, 9}, {0x8004, -0x7ffb, 3, 10}, {0x800006, -0x7ffff9, 5, 0}, }; -/* local functions */ + +/* Local functions. */ static void mn10200_insert_operand PARAMS ((unsigned long *, unsigned long *, const struct mn10200_operand *, offsetT, char *, unsigned, @@ -83,8 +84,7 @@ static boolean data_register_name PARAMS ((expressionS *expressionP)); static boolean address_register_name PARAMS ((expressionS *expressionP)); static boolean other_register_name PARAMS ((expressionS *expressionP)); - -/* fixups */ +/* Fixups. */ #define MAX_INSN_FIXUPS (5) struct mn10200_fixup { @@ -99,7 +99,7 @@ const char *md_shortopts = ""; struct option md_longopts[] = { {NULL, no_argument, NULL, 0} }; -size_t md_longopts_size = sizeof(md_longopts); +size_t md_longopts_size = sizeof (md_longopts); /* The target specific pseudo-ops which we support. */ const pseudo_typeS md_pseudo_table[] = @@ -110,7 +110,7 @@ const pseudo_typeS md_pseudo_table[] = /* Opcode hash table. */ static struct hash_control *mn10200_hash; -/* This table is sorted. Suitable for searching by a binary search. */ +/* This table is sorted. Suitable for searching by a binary search. */ static const struct reg_name data_registers[] = { { "d0", 0 }, @@ -118,7 +118,8 @@ static const struct reg_name data_registers[] = { "d2", 2 }, { "d3", 3 }, }; -#define DATA_REG_NAME_CNT (sizeof(data_registers) / sizeof(struct reg_name)) +#define DATA_REG_NAME_CNT \ + (sizeof (data_registers) / sizeof (struct reg_name)) static const struct reg_name address_registers[] = { @@ -127,18 +128,20 @@ static const struct reg_name address_registers[] = { "a2", 2 }, { "a3", 3 }, }; -#define ADDRESS_REG_NAME_CNT (sizeof(address_registers) / sizeof(struct reg_name)) +#define ADDRESS_REG_NAME_CNT \ + (sizeof (address_registers) / sizeof (struct reg_name)) static const struct reg_name other_registers[] = { { "mdr", 0 }, { "psw", 0 }, }; -#define OTHER_REG_NAME_CNT (sizeof(other_registers) / sizeof(struct reg_name)) +#define OTHER_REG_NAME_CNT \ + (sizeof (other_registers) / sizeof (struct reg_name)) /* reg_name_search does a binary search of the given register table to see if "name" is a valid regiter name. Returns the register - number from the array on success, or -1 on failure. */ + number from the array on success, or -1 on failure. */ static int reg_name_search (regs, regcount, name) @@ -160,14 +163,13 @@ reg_name_search (regs, regcount, name) high = middle - 1; else if (cmp > 0) low = middle + 1; - else - return regs[middle].value; + else + return regs[middle].value; } while (low <= high); return -1; } - /* Summary of register_name(). * * in: Input_line_pointer points to 1st char of operand. @@ -178,6 +180,7 @@ reg_name_search (regs, regcount, name) * Input_line_pointer->(next non-blank) char after operand, or is in * its original state. */ + static boolean data_register_name (expressionP) expressionS *expressionP; @@ -187,29 +190,34 @@ data_register_name (expressionP) char *start; char c; - /* Find the spelling of the operand */ + /* Find the spelling of the operand. */ start = name = input_line_pointer; c = get_symbol_end (); reg_number = reg_name_search (data_registers, DATA_REG_NAME_CNT, name); - /* look to see if it's in the register table */ - if (reg_number >= 0) + /* Look to see if it's in the register table. */ + if (reg_number >= 0) { expressionP->X_op = O_register; expressionP->X_add_number = reg_number; - /* make the rest nice */ + /* Make the rest nice. */ expressionP->X_add_symbol = NULL; expressionP->X_op_symbol = NULL; - *input_line_pointer = c; /* put back the delimiting char */ + + /* Put back the delimiting char. */ + *input_line_pointer = c; return true; } else { - /* reset the line as if we had not done anything */ - *input_line_pointer = c; /* put back the delimiting char */ - input_line_pointer = start; /* reset input_line pointer */ + /* Reset the line as if we had not done anything. */ + /* Put back the delimiting char. */ + *input_line_pointer = c; + + /* Reset input_line pointer. */ + input_line_pointer = start; return false; } } @@ -224,6 +232,7 @@ data_register_name (expressionP) * Input_line_pointer->(next non-blank) char after operand, or is in * its original state. */ + static boolean address_register_name (expressionP) expressionS *expressionP; @@ -233,29 +242,34 @@ address_register_name (expressionP) char *start; char c; - /* Find the spelling of the operand */ + /* Find the spelling of the operand. */ start = name = input_line_pointer; c = get_symbol_end (); reg_number = reg_name_search (address_registers, ADDRESS_REG_NAME_CNT, name); - /* look to see if it's in the register table */ - if (reg_number >= 0) + /* Look to see if it's in the register table. */ + if (reg_number >= 0) { expressionP->X_op = O_register; expressionP->X_add_number = reg_number; - /* make the rest nice */ + /* Make the rest nice. */ expressionP->X_add_symbol = NULL; expressionP->X_op_symbol = NULL; - *input_line_pointer = c; /* put back the delimiting char */ + + /* Put back the delimiting char. */ + *input_line_pointer = c; return true; } else { - /* reset the line as if we had not done anything */ - *input_line_pointer = c; /* put back the delimiting char */ - input_line_pointer = start; /* reset input_line pointer */ + /* Reset the line as if we had not done anything. */ + /* Put back the delimiting char. */ + *input_line_pointer = c; + + /* Reset input_line pointer. */ + input_line_pointer = start; return false; } } @@ -270,6 +284,7 @@ address_register_name (expressionP) * Input_line_pointer->(next non-blank) char after operand, or is in * its original state. */ + static boolean other_register_name (expressionP) expressionS *expressionP; @@ -279,40 +294,45 @@ other_register_name (expressionP) char *start; char c; - /* Find the spelling of the operand */ + /* Find the spelling of the operand. */ start = name = input_line_pointer; c = get_symbol_end (); reg_number = reg_name_search (other_registers, OTHER_REG_NAME_CNT, name); - /* look to see if it's in the register table */ - if (reg_number >= 0) + /* Look to see if it's in the register table. */ + if (reg_number >= 0) { expressionP->X_op = O_register; expressionP->X_add_number = reg_number; - /* make the rest nice */ + /* Make the rest nice. */ expressionP->X_add_symbol = NULL; expressionP->X_op_symbol = NULL; - *input_line_pointer = c; /* put back the delimiting char */ + + /* Put back the delimiting char. */ + *input_line_pointer = c; return true; } else { - /* reset the line as if we had not done anything */ - *input_line_pointer = c; /* put back the delimiting char */ - input_line_pointer = start; /* reset input_line pointer */ + /* Reset the line as if we had not done anything. */ + /* Put back the delimiting char. */ + *input_line_pointer = c; + + /* Reset input_line pointer. */ + input_line_pointer = start; return false; } } void md_show_usage (stream) - FILE *stream; + FILE *stream; { - fprintf(stream, _("MN10200 options:\n\ + fprintf (stream, _("MN10200 options:\n\ none yet\n")); -} +} int md_parse_option (c, arg) @@ -324,16 +344,16 @@ md_parse_option (c, arg) symbolS * md_undefined_symbol (name) - char *name; + char *name; { return 0; } char * md_atof (type, litp, sizep) - int type; - char *litp; - int *sizep; + int type; + char *litp; + int *sizep; { int prec; LITTLENUM_TYPE words[4]; @@ -354,7 +374,7 @@ md_atof (type, litp, sizep) *sizep = 0; return _("bad call to md_atof"); } - + t = atof_ieee (input_line_pointer, type, words); if (t) input_line_pointer = t; @@ -370,12 +390,11 @@ md_atof (type, litp, sizep) return NULL; } - void md_convert_frag (abfd, sec, fragP) - bfd *abfd; - asection *sec; - fragS *fragP; + bfd *abfd; + asection *sec; + fragS *fragP; { static unsigned long label_count = 0; char buf[40]; @@ -737,7 +756,7 @@ md_begin () char *prev_name = ""; register const struct mn10200_opcode *op; - mn10200_hash = hash_new(); + mn10200_hash = hash_new (); /* Insert unique names into hash table. The MN10200 instruction set has many identical opcode names that have different opcodes based @@ -747,7 +766,7 @@ md_begin () op = mn10200_opcodes; while (op->name) { - if (strcmp (prev_name, op->name)) + if (strcmp (prev_name, op->name)) { prev_name = (char *) op->name; hash_insert (mn10200_hash, op->name, (char *) op); @@ -762,7 +781,7 @@ md_begin () } void -md_assemble (str) +md_assemble (str) char *str; { char *s; @@ -776,13 +795,13 @@ md_assemble (str) int match; /* Get the opcode. */ - for (s = str; *s != '\0' && ! isspace (*s); s++) + for (s = str; *s != '\0' && !isspace (*s); s++) ; if (*s != '\0') *s++ = '\0'; - /* find the first opcode with the proper name */ - opcode = (struct mn10200_opcode *)hash_find (mn10200_hash, str); + /* Find the first opcode with the proper name. */ + opcode = (struct mn10200_opcode *) hash_find (mn10200_hash, str); if (opcode == NULL) { as_bad (_("Unrecognized opcode: `%s'"), str); @@ -795,7 +814,7 @@ md_assemble (str) input_line_pointer = str; - for(;;) + for (;;) { const char *errmsg = NULL; int op_idx; @@ -833,7 +852,7 @@ md_assemble (str) if (operand->flags & MN10200_OPERAND_RELAX) relaxable = 1; - /* Gather the operand. */ + /* Gather the operand. */ hold = input_line_pointer; input_line_pointer = str; @@ -926,7 +945,7 @@ md_assemble (str) expression (&ex); } - switch (ex.X_op) + switch (ex.X_op) { case O_illegal: errmsg = _("illegal operand"); @@ -936,13 +955,13 @@ md_assemble (str) goto error; case O_register: if ((operand->flags - & (MN10200_OPERAND_DREG | MN10200_OPERAND_AREG)) == 0) + & (MN10200_OPERAND_DREG | MN10200_OPERAND_AREG)) == 0) { input_line_pointer = hold; str = hold; goto error; } - + if (opcode->format == FMT_2 || opcode->format == FMT_5) extra_shift = 8; else if (opcode->format == FMT_3 || opcode->format == FMT_6 @@ -950,7 +969,7 @@ md_assemble (str) extra_shift = 16; else extra_shift = 0; - + mn10200_insert_operand (&insn, &extension, operand, ex.X_add_number, (char *) NULL, 0, extra_shift); @@ -963,7 +982,7 @@ md_assemble (str) then promote it (ie this opcode does not match). */ if (operand->flags & (MN10200_OPERAND_PROMOTE | MN10200_OPERAND_RELAX) - && ! check_operand (insn, operand, ex.X_add_number)) + && !check_operand (insn, operand, ex.X_add_number)) { input_line_pointer = hold; str = hold; @@ -1010,20 +1029,20 @@ keep_going: error: if (match == 0) - { + { next_opcode = opcode + 1; - if (!strcmp(next_opcode->name, opcode->name)) + if (!strcmp (next_opcode->name, opcode->name)) { opcode = next_opcode; continue; } - + as_bad ("%s", errmsg); return; - } + } break; } - + while (isspace (*str)) ++str; @@ -1044,14 +1063,14 @@ keep_going: size = 5; else abort (); - + /* Write out the instruction. */ if (relaxable && fc > 0) { int type; - /* bCC */ + /* bCC */ if (size == 2 && opcode->opcode != 0xfc0000) { /* Handle bra specially. Basically treat it like jmp so @@ -1061,18 +1080,18 @@ keep_going: It is also important to not treat it like other bCC instructions since the long forms of bra is different from other bCC instructions. */ - if (opcode->opcode == 0xea00) - type = 8; + if (opcode->opcode == 0xea00) + type = 8; else type = 0; } - /* jsr */ + /* jsr */ else if (size == 3 && opcode->opcode == 0xfd0000) type = 6; - /* jmp */ + /* jmp */ else if (size == 3 && opcode->opcode == 0xfc0000) type = 8; - /* bCCx */ + /* bCCx */ else type = 3; @@ -1130,25 +1149,27 @@ keep_going: int offset; fixS *fixP; - reloc_howto = bfd_reloc_type_lookup (stdoutput, fixups[i].reloc); + reloc_howto = bfd_reloc_type_lookup (stdoutput, + fixups[i].reloc); if (!reloc_howto) - abort(); - + abort (); + size = bfd_get_reloc_size (reloc_howto); if (size < 1 || size > 4) - abort(); + abort (); offset = 4 - size; fixP = fix_new_exp (frag_now, f - frag_now->fr_literal + offset, size, - &fixups[i].exp, + &fixups[i].exp, reloc_howto->pc_relative, fixups[i].reloc); - /* PC-relative offsets are from the first byte of the next - instruction, not from the start of the current instruction. */ + /* PC-relative offsets are from the first byte of the + next instruction, not from the start of the current + instruction. */ if (reloc_howto->pc_relative) fixP->fx_offset += size; } @@ -1167,7 +1188,6 @@ keep_going: /* Is the reloc pc-relative? */ pcrel = (operand->flags & MN10200_OPERAND_PCREL) != 0; - /* Choose a proper BFD relocation type. */ if (pcrel) { @@ -1192,7 +1212,8 @@ keep_going: abort (); } - /* Convert the size of the reloc into what fix_new_exp wants. */ + /* Convert the size of the reloc into what fix_new_exp + wants. */ reloc_size = reloc_size / 8; if (reloc_size == 8) reloc_size = 0; @@ -1205,8 +1226,9 @@ keep_going: reloc_size, &fixups[i].exp, pcrel, ((bfd_reloc_code_real_type) reloc)); - /* PC-relative offsets are from the first byte of the next - instruction, not from the start of the current instruction. */ + /* PC-relative offsets are from the first byte of the + next instruction, not from the start of the current + instruction. */ if (pcrel) fixP->fx_offset += size; } @@ -1214,10 +1236,9 @@ keep_going: } } +/* If while processing a fixup, a reloc really needs to be created + Then it is done here. */ -/* if while processing a fixup, a reloc really needs to be created */ -/* then it is done here */ - arelent * tc_gen_reloc (seg, fixp) asection *seg; @@ -1230,8 +1251,8 @@ tc_gen_reloc (seg, fixp) if (reloc->howto == (reloc_howto_type *) NULL) { as_bad_where (fixp->fx_file, fixp->fx_line, - _("reloc %d not supported by object file format"), - (int)fixp->fx_r_type); + _("reloc %d not supported by object file format"), + (int) fixp->fx_r_type); return NULL; } reloc->address = fixp->fx_frag->fr_address + fixp->fx_where; @@ -1249,7 +1270,7 @@ tc_gen_reloc (seg, fixp) reloc->addend = (S_GET_VALUE (fixp->fx_addsy) - S_GET_VALUE (fixp->fx_subsy) + fixp->fx_offset); } - else + else { reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); @@ -1286,7 +1307,7 @@ md_estimate_size_before_relax (fragp, seg) } return 2; } -} +} long md_pcrel_from (fixp) @@ -1294,7 +1315,7 @@ md_pcrel_from (fixp) { return fixp->fx_frag->fr_address; #if 0 - if (fixp->fx_addsy != (symbolS *) NULL && ! S_IS_DEFINED (fixp->fx_addsy)) + if (fixp->fx_addsy != (symbolS *) NULL && !S_IS_DEFINED (fixp->fx_addsy)) { /* The symbol is undefined. Let the linker figure it out. */ return 0; @@ -1340,14 +1361,13 @@ mn10200_insert_operand (insnp, extensionp, operand, val, file, line, shift) min = - (1 << (operand->bits - 1)); } else - { - max = (1 << operand->bits) - 1; - min = 0; - } + { + max = (1 << operand->bits) - 1; + min = 0; + } test = val; - if (test < (offsetT) min || test > (offsetT) max) { const char *err = @@ -1397,14 +1417,13 @@ check_operand (insn, operand, val) min = - (1 << (operand->bits - 1)); } else - { - max = (1 << operand->bits) - 1; - min = 0; - } + { + max = (1 << operand->bits) - 1; + min = 0; + } test = val; - if (test < (offsetT) min || test > (offsetT) max) return 0; else diff --git a/gas/config/tc-mn10300.c b/gas/config/tc-mn10300.c index 9cbaf19b082..b701634b554 100644 --- a/gas/config/tc-mn10300.c +++ b/gas/config/tc-mn10300.c @@ -21,7 +21,7 @@ #include #include #include "as.h" -#include "subsegs.h" +#include "subsegs.h" #include "opcode/mn10300.h" #include "dwarf2dbg.h" @@ -34,54 +34,54 @@ struct reg_name struct dwarf2_line_info debug_line; -/* Generic assembler global variables which must be defined by all targets. */ +/* Generic assembler global variables which must be defined by all + targets. */ -/* Characters which always start a comment. */ +/* Characters which always start a comment. */ const char comment_chars[] = "#"; /* Characters which start a comment at the beginning of a line. */ const char line_comment_chars[] = ";#"; -/* Characters which may be used to separate multiple commands on a +/* Characters which may be used to separate multiple commands on a single line. */ const char line_separator_chars[] = ";"; -/* Characters which are used to indicate an exponent in a floating +/* Characters which are used to indicate an exponent in a floating point number. */ const char EXP_CHARS[] = "eE"; -/* Characters which mean that a number is a floating point constant, +/* Characters which mean that a number is a floating point constant, as in 0d1.0. */ const char FLT_CHARS[] = "dD"; - const relax_typeS md_relax_table[] = { - /* bCC relaxing */ + /* bCC relaxing */ {0x7f, -0x80, 2, 1}, {0x7fff, -0x8000, 5, 2}, {0x7fffffff, -0x80000000, 7, 0}, - /* bCC relaxing (uncommon cases) */ + /* bCC relaxing (uncommon cases) */ {0x7f, -0x80, 3, 4}, {0x7fff, -0x8000, 6, 5}, {0x7fffffff, -0x80000000, 8, 0}, - /* call relaxing */ + /* call relaxing */ {0x7fff, -0x8000, 5, 7}, {0x7fffffff, -0x80000000, 7, 0}, - /* calls relaxing */ + /* calls relaxing */ {0x7fff, -0x8000, 4, 9}, {0x7fffffff, -0x80000000, 6, 0}, - /* jmp relaxing */ + /* jmp relaxing */ {0x7f, -0x80, 2, 11}, {0x7fff, -0x8000, 3, 12}, {0x7fffffff, -0x80000000, 5, 0}, }; -/* local functions */ +/* Local functions. */ static void mn10300_insert_operand PARAMS ((unsigned long *, unsigned long *, const struct mn10300_operand *, offsetT, char *, unsigned, @@ -97,7 +97,7 @@ static void set_arch_mach PARAMS ((int)); static int current_machine; -/* fixups */ +/* Fixups. */ #define MAX_INSN_FIXUPS (5) struct mn10300_fixup { @@ -116,7 +116,7 @@ const char *md_shortopts = ""; struct option md_longopts[] = { {NULL, no_argument, NULL, 0} }; -size_t md_longopts_size = sizeof(md_longopts); +size_t md_longopts_size = sizeof (md_longopts); /* The target specific pseudo-ops which we support. */ const pseudo_typeS md_pseudo_table[] = @@ -135,7 +135,7 @@ const pseudo_typeS md_pseudo_table[] = /* Opcode hash table. */ static struct hash_control *mn10300_hash; -/* This table is sorted. Suitable for searching by a binary search. */ +/* This table is sorted. Suitable for searching by a binary search. */ static const struct reg_name data_registers[] = { { "d0", 0 }, @@ -143,7 +143,8 @@ static const struct reg_name data_registers[] = { "d2", 2 }, { "d3", 3 }, }; -#define DATA_REG_NAME_CNT (sizeof(data_registers) / sizeof(struct reg_name)) +#define DATA_REG_NAME_CNT \ + (sizeof (data_registers) / sizeof (struct reg_name)) static const struct reg_name address_registers[] = { @@ -152,7 +153,9 @@ static const struct reg_name address_registers[] = { "a2", 2 }, { "a3", 3 }, }; -#define ADDRESS_REG_NAME_CNT (sizeof(address_registers) / sizeof(struct reg_name)) + +#define ADDRESS_REG_NAME_CNT \ + (sizeof (address_registers) / sizeof (struct reg_name)) static const struct reg_name r_registers[] = { @@ -197,7 +200,9 @@ static const struct reg_name r_registers[] = { "r8", 8 }, { "r9", 9 }, }; -#define R_REG_NAME_CNT (sizeof(r_registers) / sizeof(struct reg_name)) + +#define R_REG_NAME_CNT \ + (sizeof (r_registers) / sizeof (struct reg_name)) static const struct reg_name xr_registers[] = { @@ -223,8 +228,9 @@ static const struct reg_name xr_registers[] = { "xr8", 8 }, { "xr9", 9 }, }; -#define XR_REG_NAME_CNT (sizeof(xr_registers) / sizeof(struct reg_name)) +#define XR_REG_NAME_CNT \ + (sizeof (xr_registers) / sizeof (struct reg_name)) static const struct reg_name other_registers[] = { @@ -232,11 +238,13 @@ static const struct reg_name other_registers[] = { "psw", 0 }, { "sp", 0 }, }; -#define OTHER_REG_NAME_CNT (sizeof(other_registers) / sizeof(struct reg_name)) + +#define OTHER_REG_NAME_CNT \ + (sizeof (other_registers) / sizeof (struct reg_name)) /* reg_name_search does a binary search of the given register table to see if "name" is a valid regiter name. Returns the register - number from the array on success, or -1 on failure. */ + number from the array on success, or -1 on failure. */ static int reg_name_search (regs, regcount, name) @@ -258,14 +266,13 @@ reg_name_search (regs, regcount, name) high = middle - 1; else if (cmp > 0) low = middle + 1; - else - return regs[middle].value; + else + return regs[middle].value; } while (low <= high); return -1; } - /* Summary of register_name(). * * in: Input_line_pointer points to 1st char of operand. @@ -276,6 +283,7 @@ reg_name_search (regs, regcount, name) * Input_line_pointer->(next non-blank) char after operand, or is in * its original state. */ + static boolean r_register_name (expressionP) expressionS *expressionP; @@ -285,29 +293,34 @@ r_register_name (expressionP) char *start; char c; - /* Find the spelling of the operand */ + /* Find the spelling of the operand. */ start = name = input_line_pointer; c = get_symbol_end (); reg_number = reg_name_search (r_registers, R_REG_NAME_CNT, name); - /* look to see if it's in the register table */ - if (reg_number >= 0) + /* Look to see if it's in the register table. */ + if (reg_number >= 0) { expressionP->X_op = O_register; expressionP->X_add_number = reg_number; - /* make the rest nice */ + /* Make the rest nice. */ expressionP->X_add_symbol = NULL; expressionP->X_op_symbol = NULL; - *input_line_pointer = c; /* put back the delimiting char */ + + /* Put back the delimiting char. */ + *input_line_pointer = c; return true; } else { - /* reset the line as if we had not done anything */ - *input_line_pointer = c; /* put back the delimiting char */ - input_line_pointer = start; /* reset input_line pointer */ + /* Reset the line as if we had not done anything. */ + /* Put back the delimiting char. */ + *input_line_pointer = c; + + /* Reset input_line pointer. */ + input_line_pointer = start; return false; } } @@ -322,6 +335,7 @@ r_register_name (expressionP) * Input_line_pointer->(next non-blank) char after operand, or is in * its original state. */ + static boolean xr_register_name (expressionP) expressionS *expressionP; @@ -331,29 +345,34 @@ xr_register_name (expressionP) char *start; char c; - /* Find the spelling of the operand */ + /* Find the spelling of the operand. */ start = name = input_line_pointer; c = get_symbol_end (); reg_number = reg_name_search (xr_registers, XR_REG_NAME_CNT, name); - /* look to see if it's in the register table */ - if (reg_number >= 0) + /* Look to see if it's in the register table. */ + if (reg_number >= 0) { expressionP->X_op = O_register; expressionP->X_add_number = reg_number; - /* make the rest nice */ + /* Make the rest nice. */ expressionP->X_add_symbol = NULL; expressionP->X_op_symbol = NULL; - *input_line_pointer = c; /* put back the delimiting char */ + + /* Put back the delimiting char. */ + *input_line_pointer = c; return true; } else { - /* reset the line as if we had not done anything */ - *input_line_pointer = c; /* put back the delimiting char */ - input_line_pointer = start; /* reset input_line pointer */ + /* Reset the line as if we had not done anything. */ + /* Put back the delimiting char. */ + *input_line_pointer = c; + + /* Reset input_line pointer. */ + input_line_pointer = start; return false; } } @@ -368,6 +387,7 @@ xr_register_name (expressionP) * Input_line_pointer->(next non-blank) char after operand, or is in * its original state. */ + static boolean data_register_name (expressionP) expressionS *expressionP; @@ -377,29 +397,34 @@ data_register_name (expressionP) char *start; char c; - /* Find the spelling of the operand */ + /* Find the spelling of the operand. */ start = name = input_line_pointer; c = get_symbol_end (); reg_number = reg_name_search (data_registers, DATA_REG_NAME_CNT, name); - /* look to see if it's in the register table */ - if (reg_number >= 0) + /* Look to see if it's in the register table. */ + if (reg_number >= 0) { expressionP->X_op = O_register; expressionP->X_add_number = reg_number; - /* make the rest nice */ + /* Make the rest nice. */ expressionP->X_add_symbol = NULL; expressionP->X_op_symbol = NULL; - *input_line_pointer = c; /* put back the delimiting char */ + + /* Put back the delimiting char. */ + *input_line_pointer = c; return true; } else { - /* reset the line as if we had not done anything */ - *input_line_pointer = c; /* put back the delimiting char */ - input_line_pointer = start; /* reset input_line pointer */ + /* Reset the line as if we had not done anything. */ + /* Put back the delimiting char. */ + *input_line_pointer = c; + + /* Reset input_line pointer. */ + input_line_pointer = start; return false; } } @@ -414,6 +439,7 @@ data_register_name (expressionP) * Input_line_pointer->(next non-blank) char after operand, or is in * its original state. */ + static boolean address_register_name (expressionP) expressionS *expressionP; @@ -423,29 +449,35 @@ address_register_name (expressionP) char *start; char c; - /* Find the spelling of the operand */ + /* Find the spelling of the operand. */ start = name = input_line_pointer; c = get_symbol_end (); reg_number = reg_name_search (address_registers, ADDRESS_REG_NAME_CNT, name); - /* look to see if it's in the register table */ - if (reg_number >= 0) + /* Look to see if it's in the register table. */ + if (reg_number >= 0) { expressionP->X_op = O_register; expressionP->X_add_number = reg_number; - /* make the rest nice */ + /* Make the rest nice. */ expressionP->X_add_symbol = NULL; expressionP->X_op_symbol = NULL; - *input_line_pointer = c; /* put back the delimiting char */ + + /* Put back the delimiting char. */ + *input_line_pointer = c; return true; } else { - /* reset the line as if we had not done anything */ - *input_line_pointer = c; /* put back the delimiting char */ - input_line_pointer = start; /* reset input_line pointer */ + /* Reset the line as if we had not done anything. */ + /* Put back the delimiting char. */ + *input_line_pointer = c; + + /* Reset input_line pointer. */ + input_line_pointer = start; + return false; } } @@ -460,6 +492,7 @@ address_register_name (expressionP) * Input_line_pointer->(next non-blank) char after operand, or is in * its original state. */ + static boolean other_register_name (expressionP) expressionS *expressionP; @@ -469,40 +502,45 @@ other_register_name (expressionP) char *start; char c; - /* Find the spelling of the operand */ + /* Find the spelling of the operand. */ start = name = input_line_pointer; c = get_symbol_end (); reg_number = reg_name_search (other_registers, OTHER_REG_NAME_CNT, name); - /* look to see if it's in the register table */ - if (reg_number >= 0) + /* Look to see if it's in the register table. */ + if (reg_number >= 0) { expressionP->X_op = O_register; expressionP->X_add_number = reg_number; - /* make the rest nice */ + /* Make the rest nice. */ expressionP->X_add_symbol = NULL; expressionP->X_op_symbol = NULL; - *input_line_pointer = c; /* put back the delimiting char */ + + /* Put back the delimiting char. */ + *input_line_pointer = c; return true; } else { - /* reset the line as if we had not done anything */ - *input_line_pointer = c; /* put back the delimiting char */ - input_line_pointer = start; /* reset input_line pointer */ + /* Reset the line as if we had not done anything. */ + /* Put back the delimiting char. */ + *input_line_pointer = c; + + /* Reset input_line pointer. */ + input_line_pointer = start; return false; } } void md_show_usage (stream) - FILE *stream; + FILE *stream; { - fprintf(stream, _("MN10300 options:\n\ + fprintf (stream, _("MN10300 options:\n\ none yet\n")); -} +} int md_parse_option (c, arg) @@ -514,16 +552,16 @@ md_parse_option (c, arg) symbolS * md_undefined_symbol (name) - char *name; + char *name; { return 0; } char * md_atof (type, litp, sizep) - int type; - char *litp; - int *sizep; + int type; + char *litp; + int *sizep; { int prec; LITTLENUM_TYPE words[4]; @@ -544,7 +582,7 @@ md_atof (type, litp, sizep) *sizep = 0; return "bad call to md_atof"; } - + t = atof_ieee (input_line_pointer, type, words); if (t) input_line_pointer = t; @@ -560,12 +598,11 @@ md_atof (type, litp, sizep) return NULL; } - void md_convert_frag (abfd, sec, fragP) - bfd *abfd; - asection *sec; - fragS *fragP; + bfd *abfd; + asection *sec; + fragS *fragP; { static unsigned long label_count = 0; char buf[40]; @@ -863,7 +900,7 @@ md_begin () char *prev_name = ""; register const struct mn10300_opcode *op; - mn10300_hash = hash_new(); + mn10300_hash = hash_new (); /* Insert unique names into hash table. The MN10300 instruction set has many identical opcode names that have different opcodes based @@ -873,7 +910,7 @@ md_begin () op = mn10300_opcodes; while (op->name) { - if (strcmp (prev_name, op->name)) + if (strcmp (prev_name, op->name)) { prev_name = (char *) op->name; hash_insert (mn10300_hash, op->name, (char *) op); @@ -894,7 +931,7 @@ md_begin () } void -md_assemble (str) +md_assemble (str) char *str; { char *s; @@ -908,13 +945,13 @@ md_assemble (str) int match; /* Get the opcode. */ - for (s = str; *s != '\0' && ! isspace (*s); s++) + for (s = str; *s != '\0' && !isspace (*s); s++) ; if (*s != '\0') *s++ = '\0'; - /* find the first opcode with the proper name */ - opcode = (struct mn10300_opcode *)hash_find (mn10300_hash, str); + /* Find the first opcode with the proper name. */ + opcode = (struct mn10300_opcode *) hash_find (mn10300_hash, str); if (opcode == NULL) { as_bad (_("Unrecognized opcode: `%s'"), str); @@ -927,14 +964,13 @@ md_assemble (str) input_line_pointer = str; - for(;;) + for (;;) { const char *errmsg; int op_idx; char *hold; int extra_shift = 0; - errmsg = _("Invalid opcode/operands"); /* Reset the array of register operands. */ @@ -977,7 +1013,7 @@ md_assemble (str) if (operand->flags & MN10300_OPERAND_RELAX) relaxable = 1; - /* Gather the operand. */ + /* Gather the operand. */ hold = input_line_pointer; input_line_pointer = str; @@ -1172,10 +1208,10 @@ md_assemble (str) /* Eat the '['. */ input_line_pointer++; - + /* We used to reject a null register list here; however, - we accept it now so the compiler can emit "call" instructions - for all calls to named functions. + we accept it now so the compiler can emit "call" + instructions for all calls to named functions. The linker can then fill in the appropriate bits for the register list and stack size or change the instruction @@ -1294,7 +1330,7 @@ md_assemble (str) expression (&ex); } - switch (ex.X_op) + switch (ex.X_op) { case O_illegal: errmsg = _("illegal operand"); @@ -1315,7 +1351,7 @@ md_assemble (str) str = hold; goto error; } - + if (opcode->format == FMT_D1 || opcode->format == FMT_S1) extra_shift = 8; else if (opcode->format == FMT_D2 @@ -1331,12 +1367,11 @@ md_assemble (str) extra_shift = 8; else extra_shift = 0; - + mn10300_insert_operand (&insn, &extension, operand, ex.X_add_number, (char *) NULL, 0, extra_shift); - /* And note the register number in the register array. */ mn10300_reg_operands[op_idx - 1] = ex.X_add_number; break; @@ -1348,7 +1383,7 @@ md_assemble (str) then promote it (ie this opcode does not match). */ if (operand->flags & (MN10300_OPERAND_PROMOTE | MN10300_OPERAND_RELAX) - && ! check_operand (insn, operand, ex.X_add_number)) + && !check_operand (insn, operand, ex.X_add_number)) { input_line_pointer = hold; str = hold; @@ -1424,20 +1459,20 @@ keep_going: error: if (match == 0) - { + { next_opcode = opcode + 1; - if (!strcmp(next_opcode->name, opcode->name)) + if (!strcmp (next_opcode->name, opcode->name)) { opcode = next_opcode; continue; } - + as_bad ("%s", errmsg); return; - } + } break; } - + while (isspace (*str)) ++str; @@ -1486,7 +1521,7 @@ keep_going: { int type; - /* bCC */ + /* bCC */ if (size == 2) { /* Handle bra specially. Basically treat it like jmp so @@ -1501,16 +1536,16 @@ keep_going: else type = 0; } - /* call */ + /* call */ else if (size == 5) - type = 6; - /* calls */ + type = 6; + /* calls */ else if (size == 4) type = 8; - /* jmp */ + /* jmp */ else if (size == 3 && opcode->opcode == 0xcc0000) type = 10; - /* bCC (uncommon cases) */ + /* bCC (uncommon cases) */ else type = 3; @@ -1518,7 +1553,7 @@ keep_going: fixups[0].exp.X_add_symbol, fixups[0].exp.X_add_number, (char *)fixups[0].opindex); - + /* This is pretty hokey. We basically just care about the opcode, so we have to write out the first word big endian. @@ -1619,29 +1654,33 @@ keep_going: else if (opcode->format == FMT_D4) { unsigned long temp = ((insn & 0xffff) << 16) | (extension & 0xffff); + number_to_chars_bigendian (f, (insn >> 16) & 0xffff, 2); number_to_chars_littleendian (f + 2, temp, 4); } else if (opcode->format == FMT_D5) { - unsigned long temp = ((insn & 0xffff) << 16) - | ((extension >> 8) & 0xffff); + unsigned long temp = (((insn & 0xffff) << 16) + | ((extension >> 8) & 0xffff)); + number_to_chars_bigendian (f, (insn >> 16) & 0xffff, 2); number_to_chars_littleendian (f + 2, temp, 4); number_to_chars_bigendian (f + 6, extension & 0xff, 1); } else if (opcode->format == FMT_D8) { - unsigned long temp = ((insn & 0xff) << 16) | (extension & 0xffff); - number_to_chars_bigendian (f, (insn >> 8) & 0xffffff, 3); - number_to_chars_bigendian (f + 3, (temp & 0xff), 1); - number_to_chars_littleendian (f + 4, temp >> 8, 2); + unsigned long temp = ((insn & 0xff) << 16) | (extension & 0xffff); + + number_to_chars_bigendian (f, (insn >> 8) & 0xffffff, 3); + number_to_chars_bigendian (f + 3, (temp & 0xff), 1); + number_to_chars_littleendian (f + 4, temp >> 8, 2); } else if (opcode->format == FMT_D9) { - unsigned long temp = ((insn & 0xff) << 24) | (extension & 0xffffff); - number_to_chars_bigendian (f, (insn >> 8) & 0xffffff, 3); - number_to_chars_littleendian (f + 3, temp, 4); + unsigned long temp = ((insn & 0xff) << 24) | (extension & 0xffffff); + + number_to_chars_bigendian (f, (insn >> 8) & 0xffffff, 3); + number_to_chars_littleendian (f + 3, temp, 4); } /* Create any fixups. */ @@ -1657,15 +1696,16 @@ keep_going: int offset; fixS *fixP; - reloc_howto = bfd_reloc_type_lookup (stdoutput, fixups[i].reloc); + reloc_howto = bfd_reloc_type_lookup (stdoutput, + fixups[i].reloc); if (!reloc_howto) - abort(); - + abort (); + size = bfd_get_reloc_size (reloc_howto); if (size < 1 || size > 4) - abort(); + abort (); offset = 4 - size; fixP = fix_new_exp (frag_now, f - frag_now->fr_literal + offset, @@ -1692,7 +1732,7 @@ keep_going: pcrel = (operand->flags & MN10300_OPERAND_PCREL) != 0; /* Gross. This disgusting hack is to make sure we - get the right offset for the 16/32 bit reloc in + get the right offset for the 16/32 bit reloc in "call" instructions. Basically they're a pain because the reloc isn't at the end of the instruction. */ if ((size == 5 || size == 7) @@ -1707,7 +1747,7 @@ keep_going: || ((insn >> 16) & 0xffff) == 0xfe01 || ((insn >> 16) & 0xffff) == 0xfe02)) size -= 1; - + offset = size - reloc_size / 8; /* Choose a proper BFD relocation type. */ @@ -1769,10 +1809,9 @@ keep_going: } } +/* If while processing a fixup, a reloc really needs to be created + then it is done here. */ -/* if while processing a fixup, a reloc really needs to be created */ -/* then it is done here */ - arelent * tc_gen_reloc (seg, fixp) asection *seg; @@ -1785,15 +1824,15 @@ tc_gen_reloc (seg, fixp) if (reloc->howto == (reloc_howto_type *) NULL) { as_bad_where (fixp->fx_file, fixp->fx_line, - _("reloc %d not supported by object file format"), - (int)fixp->fx_r_type); + _("reloc %d not supported by object file format"), + (int) fixp->fx_r_type); return NULL; } reloc->address = fixp->fx_frag->fr_address + fixp->fx_where; if (fixp->fx_addsy && fixp->fx_subsy) { - + if ((S_GET_SEGMENT (fixp->fx_addsy) != S_GET_SEGMENT (fixp->fx_subsy)) || S_GET_SEGMENT (fixp->fx_addsy) == undefined_section) { @@ -1806,9 +1845,9 @@ tc_gen_reloc (seg, fixp) reloc->addend = (S_GET_VALUE (fixp->fx_addsy) - S_GET_VALUE (fixp->fx_subsy) + fixp->fx_offset); } - else + else { - reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof( asymbol *)); + reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); reloc->addend = fixp->fx_offset; } @@ -1857,7 +1896,7 @@ md_estimate_size_before_relax (fragp, seg) else return 2; } -} +} long md_pcrel_from (fixp) @@ -1865,7 +1904,7 @@ md_pcrel_from (fixp) { return fixp->fx_frag->fr_address; #if 0 - if (fixp->fx_addsy != (symbolS *) NULL && ! S_IS_DEFINED (fixp->fx_addsy)) + if (fixp->fx_addsy != (symbolS *) NULL && !S_IS_DEFINED (fixp->fx_addsy)) { /* The symbol is undefined. Let the linker figure it out. */ return 0; @@ -1917,26 +1956,25 @@ mn10300_insert_operand (insnp, extensionp, operand, val, file, line, shift) min = - (1 << (bits - 1)); } else - { - max = (1 << bits) - 1; - min = 0; - } + { + max = (1 << bits) - 1; + min = 0; + } test = val; - if (test < (offsetT) min || test > (offsetT) max) - { - const char *err = - _("operand out of range (%s not between %ld and %ld)"); - char buf[100]; + { + const char *err = + _("operand out of range (%s not between %ld and %ld)"); + char buf[100]; - sprint_value (buf, test); - if (file == (char *) NULL) - as_warn (err, buf, min, max); - else - as_warn_where (file, line, err, buf, min, max); - } + sprint_value (buf, test); + if (file == (char *) NULL) + as_warn (err, buf, min, max); + else + as_warn_where (file, line, err, buf, min, max); + } } if ((operand->flags & MN10300_OPERAND_SPLIT) != 0) @@ -1996,14 +2034,13 @@ check_operand (insn, operand, val) min = - (1 << (bits - 1)); } else - { - max = (1 << bits) - 1; - min = 0; - } + { + max = (1 << bits) - 1; + min = 0; + } test = val; - if (test < (offsetT) min || test > (offsetT) max) return 0; else