diff options
Diffstat (limited to 'gas/config/tc-crx.c')
-rw-r--r-- | gas/config/tc-crx.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/gas/config/tc-crx.c b/gas/config/tc-crx.c index fd93f41..b347d8b 100644 --- a/gas/config/tc-crx.c +++ b/gas/config/tc-crx.c @@ -1,5 +1,6 @@ /* tc-crx.c -- Assembler code for the CRX CPU core. - Copyright 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Contributed by Tomer Levi, NSC, Israel. Originally written for GAS 2.12 by Tomer Levi, NSC, Israel. @@ -147,9 +148,9 @@ static int get_opbits (operand_type); static int get_opflags (operand_type); static int get_number_of_operands (void); static void parse_operand (char *, ins *); -static int gettrap (char *); -static void handle_LoadStor (char *); -static int get_cinv_parameters (char *); +static int gettrap (const char *); +static void handle_LoadStor (const char *); +static int get_cinv_parameters (const char *); static long getconstant (long, int); static op_err check_range (long *, int, unsigned int, int); static int getreg_image (reg); @@ -986,7 +987,7 @@ parse_operands (ins * crx_ins, char *operands) This routine is used by assembling the 'excp' instruction. */ static int -gettrap (char *s) +gettrap (const char *s) { const trap_entry *trap; @@ -1006,7 +1007,7 @@ gettrap (char *s) Otherwise, the insn will be mistakenly identified as of type LD_STOR_INS. */ static void -handle_LoadStor (char *operands) +handle_LoadStor (const char *operands) { /* Post-Increment instructions precede Store-Immediate instructions in CRX instruction table, hence they are handled before. @@ -1071,9 +1072,9 @@ parse_insn (ins *insn, char *operands) /* Cinv instruction requires special handling. */ static int -get_cinv_parameters (char * operand) +get_cinv_parameters (const char *operand) { - char *p = operand; + const char *p = operand; int d_used = 0, i_used = 0, u_used = 0, b_used = 0; while (*++p != ']') @@ -1118,7 +1119,7 @@ getreg_image (reg r) if (r < MAX_REG) rreg = &crx_regtab[r]; /* Check whether the register is in coprocessor registers table. */ - else if (r < MAX_COPREG) + else if (r < (int) MAX_COPREG) rreg = &crx_copregtab[r-MAX_REG]; /* Register not found. */ else @@ -1986,6 +1987,7 @@ md_assemble (char *op) if (instruction == NULL) { as_bad (_("Unknown opcode: `%s'"), op); + param[-1] = c; return; } @@ -1997,8 +1999,12 @@ md_assemble (char *op) /* Assemble the instruction - return upon failure. */ if (assemble_insn (op, &crx_ins) == 0) - return; + { + param[-1] = c; + return; + } /* Print the instruction. */ + param[-1] = c; print_insn (&crx_ins); } |