diff options
author | Alan Modra <amodra@gmail.com> | 2002-12-12 21:52:06 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2002-12-12 21:52:06 +0000 |
commit | 0e073f4ce8c5907ba76b3d7aeb5b373a308b25d4 (patch) | |
tree | 228d8971410cdf4d30f178d9f112b2983e53205c /gas/config/tc-pj.c | |
parent | a798260029f9c36a51ffe2abe41a6dd77914e266 (diff) | |
download | gdb-0e073f4ce8c5907ba76b3d7aeb5b373a308b25d4.zip gdb-0e073f4ce8c5907ba76b3d7aeb5b373a308b25d4.tar.gz gdb-0e073f4ce8c5907ba76b3d7aeb5b373a308b25d4.tar.bz2 |
* pj.h (pj_opc_info_t): Add union.
* pj-dis.c (print_insn_pj): Adjust for pj_opc_info_t change.
* config/tc-pj.c (little, big, parse_exp_save_ilp): Prototype.
(c_to_r, ipush_code, fake_opcode, alias): Likewise.
(fake_opcode): Adjust for pj_opc_int_t change.
(md_begin): Likewise.
(md_assemble): Likewise.
(ipush_code): Correct parse_exp_save_ilp call. Test pending_reloc
instead of non-existent third arg of parse_exp_save_ilp.
(md_parse_option): Correct "little" and "big" calls.
Diffstat (limited to 'gas/config/tc-pj.c')
-rw-r--r-- | gas/config/tc-pj.c | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/gas/config/tc-pj.c b/gas/config/tc-pj.c index a16971d..e27dae0 100644 --- a/gas/config/tc-pj.c +++ b/gas/config/tc-pj.c @@ -34,6 +34,21 @@ const char line_comment_chars[] = "/!#"; static int pending_reloc; static struct hash_control *opcode_hash_control; +static void little + PARAMS ((int)); +static void big + PARAMS ((int)); +static char *parse_exp_save_ilp + PARAMS ((char *, expressionS *)); +static int c_to_r + PARAMS ((char)); +static void ipush_code + PARAMS ((pj_opc_info_t *, char *)); +static void fake_opcode + PARAMS ((const char *, void (*) (struct pj_opc_info_t *, char *))); +static void alias + PARAMS ((const char *, const char *)); + static void little (ignore) int ignore ATTRIBUTE_UNUSED; @@ -155,15 +170,17 @@ ipush_code (opcode, str) pj_opc_info_t *opcode ATTRIBUTE_UNUSED; char *str; { - int mod = 0; char *b = frag_more (6); expressionS arg; b[0] = 0x11; b[3] = 0xed; - parse_exp_save_ilp (str + 1, &arg, &mod); - if (mod) - as_bad (_("can't have relocation for ipush")); + parse_exp_save_ilp (str + 1, &arg); + if (pending_reloc) + { + as_bad (_("can't have relocation for ipush")); + pending_reloc = 0; + } fix_new_exp (frag_now, b - frag_now->fr_literal + 1, 2, &arg, 0, BFD_RELOC_PJ_CODE_DIR16); @@ -177,13 +194,13 @@ ipush_code (opcode, str) static void fake_opcode (name, func) const char *name; - void (*func) (); + void (*func) PARAMS ((struct pj_opc_info_t *, char *)); { pj_opc_info_t *fake = (pj_opc_info_t *) xmalloc (sizeof (pj_opc_info_t)); fake->opcode = -1; fake->opcode_next = -1; - fake->name = (const char *) func; + fake->u.func = func; hash_insert (opcode_hash_control, name, (char *) fake); } @@ -210,8 +227,8 @@ md_begin () opcode_hash_control = hash_new (); /* Insert names into hash table. */ - for (opcode = pj_opc_info; opcode->name; opcode++) - hash_insert (opcode_hash_control, opcode->name, (char *) opcode); + for (opcode = pj_opc_info; opcode->u.name; opcode++) + hash_insert (opcode_hash_control, opcode->u.name, (char *) opcode); /* Insert the only fake opcode. */ fake_opcode ("ipush", ipush_code); @@ -278,7 +295,7 @@ md_assemble (str) { /* It's a fake opcode. Dig out the args and pretend that was what we were passed. */ - ((void (*) ()) opcode->name) (opcode, op_end); + (*opcode->u.func) (opcode, op_end); } else { @@ -404,10 +421,10 @@ md_parse_option (c, arg) switch (c) { case OPTION_LITTLE: - little (); + little (0); break; case OPTION_BIG: - big (); + big (0); break; default: return 0; |