* 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:
DJ Delorie 2005-10-26 14:59:12 +00:00
parent f1022c90ad
commit f75eb1c004
11 changed files with 1660 additions and 1547 deletions

View file

@ -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;