aboutsummaryrefslogtreecommitdiff
path: root/opcodes/m32r-asm.c
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>1999-10-05 00:05:52 +0000
committerDoug Evans <dje@google.com>1999-10-05 00:05:52 +0000
commit1fa60b5dde8d6e82e4c8589c1b76b4b8a8730f22 (patch)
tree471599c575886f9e3aa0f8a62b0b23473f4fcb13 /opcodes/m32r-asm.c
parent103f02d372fd3f4960fb51cc3b83bbb98dc64ec1 (diff)
downloadgdb-1fa60b5dde8d6e82e4c8589c1b76b4b8a8730f22.zip
gdb-1fa60b5dde8d6e82e4c8589c1b76b4b8a8730f22.tar.gz
gdb-1fa60b5dde8d6e82e4c8589c1b76b4b8a8730f22.tar.bz2
* fr30-asm.c,fr30-desc.h: Rebuild.
* m32r-asm.c,m32r-desc.c,m32r-desc.h: Rebuild. Add m32rx support. * m32r-dis.c,m32r-ibld.c,m32r-opc.c,m32r-opc.h,m32r-opinst.c: Ditto.
Diffstat (limited to 'opcodes/m32r-asm.c')
-rw-r--r--opcodes/m32r-asm.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/opcodes/m32r-asm.c b/opcodes/m32r-asm.c
index 0d67c92..2d3bd96 100644
--- a/opcodes/m32r-asm.c
+++ b/opcodes/m32r-asm.c
@@ -222,6 +222,15 @@ m32r_cgen_parse_operand (cd, opindex, strp, fields)
switch (opindex)
{
+ case M32R_OPERAND_ACC :
+ errmsg = cgen_parse_keyword (cd, strp, & m32r_cgen_opval_h_accums, & fields->f_acc);
+ break;
+ case M32R_OPERAND_ACCD :
+ errmsg = cgen_parse_keyword (cd, strp, & m32r_cgen_opval_h_accums, & fields->f_accd);
+ break;
+ case M32R_OPERAND_ACCS :
+ errmsg = cgen_parse_keyword (cd, strp, & m32r_cgen_opval_h_accums, & fields->f_accs);
+ break;
case M32R_OPERAND_DCR :
errmsg = cgen_parse_keyword (cd, strp, & m32r_cgen_opval_cr_names, & fields->f_r1);
break;
@@ -255,6 +264,9 @@ m32r_cgen_parse_operand (cd, opindex, strp, fields)
case M32R_OPERAND_HI16 :
errmsg = parse_hi16 (cd, strp, M32R_OPERAND_HI16, &fields->f_hi16);
break;
+ case M32R_OPERAND_IMM1 :
+ errmsg = cgen_parse_unsigned_integer (cd, strp, M32R_OPERAND_IMM1, &fields->f_imm1);
+ break;
case M32R_OPERAND_SCR :
errmsg = cgen_parse_keyword (cd, strp, & m32r_cgen_opval_cr_names, & fields->f_r2);
break;
@@ -360,9 +372,14 @@ parse_insn_normal (cd, insn, strp, fields)
p = CGEN_INSN_MNEMONIC (insn);
while (*p && tolower (*p) == tolower (*str))
++p, ++str;
-
- if (* p || (* str && !isspace (* str)))
+
+ if (* p)
+ return _("unrecognized instruction");
+
+#ifndef CGEN_MNEMONIC_OPERANDS
+ if (* str && !isspace (* str))
return _("unrecognized instruction");
+#endif
CGEN_INIT_PARSE (cd);
cgen_init_parse_operand (cd);
@@ -385,6 +402,10 @@ parse_insn_normal (cd, insn, strp, fields)
/* Non operand chars must match exactly. */
if (CGEN_SYNTAX_CHAR_P (* syn))
{
+ /* FIXME: While we allow for non-GAS callers above, we assume the
+ first char after the mnemonic part is a space. */
+ /* FIXME: We also take inappropriate advantage of the fact that
+ GAS's input scrubber will remove extraneous blanks. */
if (*str == CGEN_SYNTAX_CHAR (* syn))
{
#ifdef CGEN_MNEMONIC_OPERANDS