2000-02-23 Andrew Haley <aph@cygnus.com>

* m32r-asm.c, m32r-desc.c, m32r-desc.h, m32r-dis.c,
        m32r-ibld.c,m32r-opc.h: Rebuild.
This commit is contained in:
Andrew Haley
2000-02-24 16:19:36 +00:00
parent 36bf8ab9fb
commit cfcdbe9790
7 changed files with 54 additions and 24 deletions

View File

@ -1,3 +1,8 @@
2000-02-23 Andrew Haley <aph@cygnus.com>
* m32r-asm.c, m32r-desc.c, m32r-desc.h, m32r-dis.c,
m32r-ibld.c,m32r-opc.h: Rebuild.
2000-02-23 Linas Vepstas <linas@linas.org> 2000-02-23 Linas Vepstas <linas@linas.org>
* i370-dis.c, i370-opc.c: New. * i370-dis.c, i370-opc.c: New.

View File

@ -486,6 +486,7 @@ m32r_cgen_assemble_insn (cd, str, fields, buf, errmsg)
{ {
const char *start; const char *start;
CGEN_INSN_LIST *ilist; CGEN_INSN_LIST *ilist;
const char *tmp_errmsg;
/* Skip leading white space. */ /* Skip leading white space. */
while (isspace (* str)) while (isspace (* str))
@ -502,7 +503,8 @@ m32r_cgen_assemble_insn (cd, str, fields, buf, errmsg)
{ {
const CGEN_INSN *insn = ilist->insn; const CGEN_INSN *insn = ilist->insn;
#if 0 /* not needed as unsupported opcodes shouldn't be in the hash lists */ #ifdef CGEN_VALIDATE_INSN_SUPPORTED
/* not usually needed as unsupported opcodes shouldn't be in the hash lists */
/* Is this insn supported by the selected cpu? */ /* Is this insn supported by the selected cpu? */
if (! m32r_cgen_insn_supported (cd, insn)) if (! m32r_cgen_insn_supported (cd, insn))
continue; continue;
@ -519,7 +521,7 @@ m32r_cgen_assemble_insn (cd, str, fields, buf, errmsg)
/* Allow parse/insert handlers to obtain length of insn. */ /* Allow parse/insert handlers to obtain length of insn. */
CGEN_FIELDS_BITSIZE (fields) = CGEN_INSN_BITSIZE (insn); CGEN_FIELDS_BITSIZE (fields) = CGEN_INSN_BITSIZE (insn);
if (! CGEN_PARSE_FN (cd, insn) (cd, insn, & str, fields)) if (!(tmp_errmsg = CGEN_PARSE_FN (cd, insn) (cd, insn, & str, fields)))
{ {
/* ??? 0 is passed for `pc' */ /* ??? 0 is passed for `pc' */
if (CGEN_INSERT_FN (cd, insn) (cd, insn, fields, buf, (bfd_vma) 0) if (CGEN_INSERT_FN (cd, insn) (cd, insn, fields, buf, (bfd_vma) 0)
@ -533,16 +535,25 @@ m32r_cgen_assemble_insn (cd, str, fields, buf, errmsg)
/* Try the next entry. */ /* Try the next entry. */
} }
/* FIXME: We can return a better error message than this.
Need to track why it failed and pick the right one. */
{ {
static char errbuf[100]; static char errbuf[150];
#ifdef CGEN_VERBOSE_ASSEMBLER_ERRORS
/* if verbose error messages, use errmsg from CGEN_PARSE_FN */
if (strlen (start) > 50)
/* xgettext:c-format */
sprintf (errbuf, "%s `%.50s...'", tmp_errmsg, start);
else
/* xgettext:c-format */
sprintf (errbuf, "%s `%.50s'", tmp_errmsg, start);
#else
if (strlen (start) > 50) if (strlen (start) > 50)
/* xgettext:c-format */ /* xgettext:c-format */
sprintf (errbuf, _("bad instruction `%.50s...'"), start); sprintf (errbuf, _("bad instruction `%.50s...'"), start);
else else
/* xgettext:c-format */ /* xgettext:c-format */
sprintf (errbuf, _("bad instruction `%.50s'"), start); sprintf (errbuf, _("bad instruction `%.50s'"), start);
#endif
*errmsg = errbuf; *errmsg = errbuf;
return NULL; return NULL;

View File

@ -252,6 +252,7 @@ const CGEN_HW_ENTRY m32r_cgen_hw_table[] =
const CGEN_IFLD m32r_cgen_ifld_table[] = const CGEN_IFLD m32r_cgen_ifld_table[] =
{ {
{ M32R_F_NIL, "f-nil", 0, 0, 0, 0, { 0, { (1<<MACH_BASE) } } }, { M32R_F_NIL, "f-nil", 0, 0, 0, 0, { 0, { (1<<MACH_BASE) } } },
{ M32R_F_ANYOF, "f-anyof", 0, 0, 0, 0, { 0, { (1<<MACH_BASE) } } },
{ M32R_F_OP1, "f-op1", 0, 32, 0, 4, { 0, { (1<<MACH_BASE) } } }, { M32R_F_OP1, "f-op1", 0, 32, 0, 4, { 0, { (1<<MACH_BASE) } } },
{ M32R_F_OP2, "f-op2", 0, 32, 8, 4, { 0, { (1<<MACH_BASE) } } }, { M32R_F_OP2, "f-op2", 0, 32, 8, 4, { 0, { (1<<MACH_BASE) } } },
{ M32R_F_COND, "f-cond", 0, 32, 4, 4, { 0, { (1<<MACH_BASE) } } }, { M32R_F_COND, "f-cond", 0, 32, 4, 4, { 0, { (1<<MACH_BASE) } } },
@ -1015,7 +1016,7 @@ static const CGEN_IBASE m32r_cgen_insn_table[MAX_INSNS] =
/* pcmpbz $src2 */ /* pcmpbz $src2 */
{ {
M32R_INSN_PCMPBZ, "pcmpbz", "pcmpbz", 16, M32R_INSN_PCMPBZ, "pcmpbz", "pcmpbz", 16,
{ 0, { (1<<MACH_M32RX), PIPE_OS } } { 0|A(SPECIAL), { (1<<MACH_M32RX), PIPE_OS } }
}, },
/* sadd */ /* sadd */
{ {
@ -1337,6 +1338,9 @@ m32r_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...)
cd->rebuild_tables = m32r_cgen_rebuild_tables; cd->rebuild_tables = m32r_cgen_rebuild_tables;
m32r_cgen_rebuild_tables (cd); m32r_cgen_rebuild_tables (cd);
/* Initialise flags. */
cd->flags = 0;
return (CGEN_CPU_DESC) cd; return (CGEN_CPU_DESC) cd;
} }

View File

@ -133,13 +133,13 @@ typedef enum cgen_ifld_attr {
/* Enum declaration for m32r ifield types. */ /* Enum declaration for m32r ifield types. */
typedef enum ifield_type { typedef enum ifield_type {
M32R_F_NIL, M32R_F_OP1, M32R_F_OP2, M32R_F_COND M32R_F_NIL, M32R_F_ANYOF, M32R_F_OP1, M32R_F_OP2
, M32R_F_R1, M32R_F_R2, M32R_F_SIMM8, M32R_F_SIMM16 , M32R_F_COND, M32R_F_R1, M32R_F_R2, M32R_F_SIMM8
, M32R_F_SHIFT_OP2, M32R_F_UIMM4, M32R_F_UIMM5, M32R_F_UIMM16 , M32R_F_SIMM16, M32R_F_SHIFT_OP2, M32R_F_UIMM4, M32R_F_UIMM5
, M32R_F_UIMM24, M32R_F_HI16, M32R_F_DISP8, M32R_F_DISP16 , M32R_F_UIMM16, M32R_F_UIMM24, M32R_F_HI16, M32R_F_DISP8
, M32R_F_DISP24, M32R_F_OP23, M32R_F_OP3, M32R_F_ACC , M32R_F_DISP16, M32R_F_DISP24, M32R_F_OP23, M32R_F_OP3
, M32R_F_ACCS, M32R_F_ACCD, M32R_F_BITS67, M32R_F_BIT14 , M32R_F_ACC, M32R_F_ACCS, M32R_F_ACCD, M32R_F_BITS67
, M32R_F_IMM1, M32R_F_MAX , M32R_F_BIT14, M32R_F_IMM1, M32R_F_MAX
} IFIELD_TYPE; } IFIELD_TYPE;
#define MAX_IFLD ((int) M32R_F_MAX) #define MAX_IFLD ((int) M32R_F_MAX)

View File

@ -421,10 +421,14 @@ print_insn (cd, pc, info, buf, buflen)
CGEN_FIELDS fields; CGEN_FIELDS fields;
int length; int length;
#if 0 /* not needed as insn shouldn't be in hash lists if not supported */ #ifdef CGEN_VALIDATE_INSN_SUPPORTED
/* not needed as insn shouldn't be in hash lists if not supported */
/* Supported by this cpu? */ /* Supported by this cpu? */
if (! m32r_cgen_insn_supported (cd, insn)) if (! m32r_cgen_insn_supported (cd, insn))
{
insn_list = CGEN_DIS_NEXT_INSN (insn_list);
continue; continue;
}
#endif #endif
/* Basic bit mask must be correct. */ /* Basic bit mask must be correct. */

View File

@ -3,7 +3,7 @@
THIS FILE IS MACHINE GENERATED WITH CGEN: Cpu tools GENerator. THIS FILE IS MACHINE GENERATED WITH CGEN: Cpu tools GENerator.
- the resultant file is machine generated, cgen-ibld.in isn't - the resultant file is machine generated, cgen-ibld.in isn't
Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU Binutils and GDB, the GNU debugger. This file is part of the GNU Binutils and GDB, the GNU debugger.
@ -203,6 +203,7 @@ insert_normal (cd, value, attrs, word_offset, start, length, word_length,
if (! CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGNED)) if (! CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGNED))
{ {
unsigned long maxval = mask; unsigned long maxval = mask;
if ((unsigned long) value > maxval) if ((unsigned long) value > maxval)
{ {
/* xgettext:c-format */ /* xgettext:c-format */
@ -213,9 +214,12 @@ insert_normal (cd, value, attrs, word_offset, start, length, word_length,
} }
} }
else else
{
if (! cgen_signed_overflow_ok_p (cd))
{ {
long minval = - (1L << (length - 1)); long minval = - (1L << (length - 1));
long maxval = (1L << (length - 1)) - 1; long maxval = (1L << (length - 1)) - 1;
if (value < minval || value > maxval) if (value < minval || value > maxval)
{ {
sprintf sprintf
@ -225,6 +229,7 @@ insert_normal (cd, value, attrs, word_offset, start, length, word_length,
return errbuf; return errbuf;
} }
} }
}
#if CGEN_INT_INSN_P #if CGEN_INT_INSN_P

View File

@ -88,6 +88,7 @@ struct cgen_fields
{ {
int length; int length;
long f_nil; long f_nil;
long f_anyof;
long f_op1; long f_op1;
long f_op2; long f_op2;
long f_cond; long f_cond;