* m32c.cpu (f-dsp-8-s24, Dsp-8-s24): New.
(mov-dspsp-dst-defn, mov-src-dspsp-defn, mov16-dspsp-dst-defn, mov16-src-dspsp-defn, mov32-dspsp-dst-defn, mov32-src-dspsp-defn): dsp8[sp] is signed. (mov.WL:S #imm,A0/A1): dsp24 is signed (i.e. -0x800000..0xffffff). (mov.BW:S r0,r1): Fix typo r1l->r1. (tst): Allow :G suffix. * m32c.opc (parse_signed24): New, for -0x800000..0xffffff. * m32c-asm.c: Regenerate. * m32c-desc.c: Regenerate. * m32c-desc.h: Regenerate. * m32c-dis.c: Regenerate. * m32c-ibld.c: Regenerate. * m32c-opc.c: Regenerate. * m32c-opc.h: Regenerate.
This commit is contained in:
parent
f1022c90ad
commit
f75eb1c004
11 changed files with 1660 additions and 1547 deletions
|
@ -407,6 +407,26 @@ parse_unsigned24 (CGEN_CPU_DESC cd, const char **strp,
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* This should only be used for #imm->reg. */
|
||||
static const char *
|
||||
parse_signed24 (CGEN_CPU_DESC cd, const char **strp,
|
||||
int opindex, signed long *valuep)
|
||||
{
|
||||
const char *errmsg = 0;
|
||||
signed long value;
|
||||
|
||||
PARSE_SIGNED;
|
||||
|
||||
if (value <= 0xffffff && value > 0x7fffff)
|
||||
value -= 0x1000000;
|
||||
|
||||
if (value > 0xffffff)
|
||||
return _("dsp:24 immediate is out of range");
|
||||
|
||||
*valuep = value;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const char *
|
||||
parse_signed32 (CGEN_CPU_DESC cd, const char **strp,
|
||||
int opindex, signed long *valuep)
|
||||
|
@ -1038,6 +1058,9 @@ m32c_cgen_parse_operand (CGEN_CPU_DESC cd,
|
|||
case M32C_OPERAND_DSP_48_U8 :
|
||||
errmsg = parse_unsigned8 (cd, strp, M32C_OPERAND_DSP_48_U8, (unsigned long *) (& fields->f_dsp_48_u8));
|
||||
break;
|
||||
case M32C_OPERAND_DSP_8_S24 :
|
||||
errmsg = parse_signed24 (cd, strp, M32C_OPERAND_DSP_8_S24, (long *) (& fields->f_dsp_8_s24));
|
||||
break;
|
||||
case M32C_OPERAND_DSP_8_S8 :
|
||||
errmsg = parse_signed8 (cd, strp, M32C_OPERAND_DSP_8_S8, (long *) (& fields->f_dsp_8_s8));
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue