diff options
author | Richard Henderson <rth@redhat.com> | 1998-01-15 21:51:12 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 1998-01-15 21:51:12 +0000 |
commit | 2833e2512e1c241da35ff66e38ddf6a327055728 (patch) | |
tree | 8b7821489c244b70821200b2c9d104504a5c2456 | |
parent | e71bd99cc6c3294bb0f4491d88334d5673acfd48 (diff) | |
download | gdb-2833e2512e1c241da35ff66e38ddf6a327055728.zip gdb-2833e2512e1c241da35ff66e38ddf6a327055728.tar.gz gdb-2833e2512e1c241da35ff66e38ddf6a327055728.tar.bz2 |
* tc-h8500.c (parse_reg): Likewise.
-rw-r--r-- | gas/ChangeLog | 1 | ||||
-rw-r--r-- | gas/config/tc-h8500.c | 53 |
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; } |