aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>1998-01-15 21:51:12 +0000
committerRichard Henderson <rth@redhat.com>1998-01-15 21:51:12 +0000
commit2833e2512e1c241da35ff66e38ddf6a327055728 (patch)
tree8b7821489c244b70821200b2c9d104504a5c2456
parente71bd99cc6c3294bb0f4491d88334d5673acfd48 (diff)
downloadgdb-2833e2512e1c241da35ff66e38ddf6a327055728.zip
gdb-2833e2512e1c241da35ff66e38ddf6a327055728.tar.gz
gdb-2833e2512e1c241da35ff66e38ddf6a327055728.tar.bz2
* tc-h8500.c (parse_reg): Likewise.
-rw-r--r--gas/ChangeLog1
-rw-r--r--gas/config/tc-h8500.c53
2 files changed, 30 insertions, 24 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 84a9862..8a14cb9 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -2,6 +2,7 @@ Thu Jan 15 13:46:48 1998 Richard Henderson <rth@cygnus.com>
* tc-h8300.c (parse_reg): Take the length of the symbol into
account when attempting to match a register name.
+ * tc-h8500.c (parse_reg): Likewise.
start-sanitize-vr4111
Thu Jan 15 09:33:11 1998 Gavin Koch <gavin@cygnus.com>
diff --git a/gas/config/tc-h8500.c b/gas/config/tc-h8500.c
index 5a09e4a..e8d6c7b 100644
--- a/gas/config/tc-h8500.c
+++ b/gas/config/tc-h8500.c
@@ -186,68 +186,73 @@ parse_reg (src, mode, reg)
int *mode;
int *reg;
{
- if (src[0] == 'r')
+ char *end;
+ int len;
+
+ /* Cribbed from get_symbol_end(). */
+ if (!is_name_beginner (*src) || *src == '\001')
+ return 0;
+ end = src+1;
+ while (is_part_of_name (*end) || *end == '\001')
+ end++;
+ len = end - src;
+
+ if (len == 2 && src[0] == 'r')
{
if (src[1] >= '0' && src[1] <= '7')
{
*mode = RN;
*reg = (src[1] - '0');
- return 2;
+ return len;
}
}
-
- if (src[0] == 's' && src[1] == 'p')
+ if (len == 2 && src[0] == 's' && src[1] == 'p')
{
*mode = RN;
*reg = 7;
- return 2;
+ return len;
}
- if (src[0] == 'c' && src[1] == 'c' && src[2] == 'r')
+ if (len == 3 && src[0] == 'c' && src[1] == 'c' && src[2] == 'r')
{
*mode = CRB;
*reg = 1;
- return 3;
+ return len;
}
- if (src[0] == 's' && src[1] == 'r')
+ if (len == 2 && src[0] == 's' && src[1] == 'r')
{
*mode = CRW;
*reg = 0;
- return 2;
+ return len;
}
-
- if (src[0] == 'b' && src[1] == 'r')
+ if (len == 2 && src[0] == 'b' && src[1] == 'r')
{
*mode = CRB;
*reg = 3;
- return 2;
+ return len;
}
-
- if (src[0] == 'e' && src[1] == 'p')
+ if (len == 2 && src[0] == 'e' && src[1] == 'p')
{
*mode = CRB;
*reg = 4;
- return 2;
+ return len;
}
-
- if (src[0] == 'd' && src[1] == 'p')
+ if (len == 2 && src[0] == 'd' && src[1] == 'p')
{
*mode = CRB;
*reg = 5;
- return 2;
+ return len;
}
-
- if (src[0] == 't' && src[1] == 'p')
+ if (len == 2 && src[0] == 't' && src[1] == 'p')
{
*mode = CRB;
*reg = 7;
- return 2;
+ return len;
}
-
- if (src[0] == 'f' && src[1] == 'p')
+ if (len == 2 && src[0] == 'f' && src[1] == 'p')
{
*mode = RN;
*reg = 6;
- return 2;
+ return len;
}
return 0;
}