diff options
Diffstat (limited to 'gas/config/tc-xtensa.c')
-rw-r--r-- | gas/config/tc-xtensa.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c index ee75c13..14a5a2a 100644 --- a/gas/config/tc-xtensa.c +++ b/gas/config/tc-xtensa.c @@ -35,6 +35,10 @@ #define XSHAL_ABI 0 #endif +#ifndef XTENSA_MARCH_EARLIEST +#define XTENSA_MARCH_EARLIEST 0 +#endif + #ifndef uint32 #define uint32 unsigned int #endif @@ -74,6 +78,8 @@ const char FLT_CHARS[] = "rRsSfFdDxXpP"; bfd_boolean density_supported; bfd_boolean absolute_literals_supported; +static unsigned microarch_earliest; + static vliw_insn cur_vinsn; unsigned xtensa_num_pipe_stages; @@ -2502,6 +2508,18 @@ xg_translate_idioms (char **popname, int *pnum_args, char **arg_strings) return 0; } + /* Without an operand, this is given a default immediate operand of 0. */ + if ((strcmp (opname, "simcall") == 0 && microarch_earliest >= 280000)) + { + if (*pnum_args == 0) + { + arg_strings[0] = (char *) xmalloc (2); + strcpy (arg_strings[0], "0"); + *pnum_args = 1; + } + return 0; + } + if (strcmp (opname, "bbsi.l") == 0) { if (xg_check_num_args (pnum_args, 3, opname, arg_strings)) @@ -5236,6 +5254,8 @@ xg_init_global_config (void) directive_state[directive_density] = XCHAL_HAVE_DENSITY; directive_state[directive_absolute_literals] = XSHAL_USE_ABSOLUTE_LITERALS; + + microarch_earliest = XTENSA_MARCH_EARLIEST; } void |