diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2013-08-11 09:43:55 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2013-08-11 09:43:55 +0000 |
commit | ef39a0181b4265f3886e74960b6dcae81f4b4fb5 (patch) | |
tree | 2617ef451096d7a6c393d06202ab050f88facfa7 /gnu | |
parent | 1ed5e17a88e6b332d48445e5c11f0932cdda80ea (diff) |
A few fixes from Tim Mcintosh:
- provide 88110 syntactic sugar for the control register names
- correctly handle -m options
- and a minor fix to allow the register prefix to correctly be recognized in
front of the condition codes (only needed for SVR4)
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/usr.bin/binutils/gas/config/tc-m88k.c | 55 |
1 files changed, 49 insertions, 6 deletions
diff --git a/gnu/usr.bin/binutils/gas/config/tc-m88k.c b/gnu/usr.bin/binutils/gas/config/tc-m88k.c index 4f54f7d1407..63a83ec7285 100644 --- a/gnu/usr.bin/binutils/gas/config/tc-m88k.c +++ b/gnu/usr.bin/binutils/gas/config/tc-m88k.c @@ -46,7 +46,7 @@ struct field_val_assoc unsigned val; }; -struct field_val_assoc cr_regs[] = +struct field_val_assoc m88100_cr_regs[] = { {"PID", 0}, {"PSR", 1}, @@ -73,6 +73,47 @@ struct field_val_assoc cr_regs[] = {NULL, 0}, }; +struct field_val_assoc m88110_cr_regs[] = +{ + {"PID", 0}, + {"PSR", 1}, + {"EPSR", 2}, + {"EXIP", 4}, + {"ENIP", 5}, + {"VBR", 7}, + {"SRX", 16}, + {"SR0", 17}, + {"SR1", 18}, + {"SR2", 19}, + {"SR3", 20}, + {"ICMD", 25}, + {"ICTL", 26}, + {"ISAR", 27}, + {"ISAP", 28}, + {"IUAP", 29}, + {"IIR", 30}, + {"IBP", 31}, + {"IPPU", 32}, + {"IPPL", 33}, + {"ISR", 34}, + {"ILAR", 35}, + {"IPAR", 36}, + {"DCMD", 40}, + {"DCTL", 41}, + {"DSAR", 42}, + {"DSAP", 43}, + {"DUAP", 44}, + {"DIR", 45}, + {"DBP", 46}, + {"DPPU", 47}, + {"DPPL", 48}, + {"DSR", 49}, + {"DLAR", 50}, + {"DPAR", 51}, + + {NULL, 0}, +}; + struct field_val_assoc fcr_regs[] = { {"FPECR", 0}, @@ -257,7 +298,7 @@ md_begin () #endif } -const char *md_shortopts = ""; +const char *md_shortopts = "m:"; struct option md_longopts[] = { {NULL, no_argument, NULL, 0} }; @@ -779,7 +820,7 @@ get_cmp (param, valp) #ifdef REGISTER_PREFIX /* SVR4 compiler prefixes condition codes with the register prefix */ - if (param == REGISTER_PREFIX) + if (*param == REGISTER_PREFIX) param++; #endif param = match_name (param, cmpslot, valp); @@ -827,7 +868,7 @@ get_cnd (param, valp) { #ifdef REGISTER_PREFIX /* SVR4 compiler prefixes condition codes with the register prefix */ - if (param == REGISTER_PREFIX) + if (*param == REGISTER_PREFIX) param++; #endif @@ -878,7 +919,7 @@ get_bf_offset_expression (param, offsetp) #ifdef REGISTER_PREFIX /* SVR4 compiler prefixes condition codes with the register prefix */ - if (param == REGISTER_PREFIX && ISALPHA (param[1])) + if (*param == REGISTER_PREFIX && ISALPHA (param[1])) param++; #endif @@ -989,7 +1030,9 @@ get_cr (param, regnop) return NULL; } - param = match_name (param, cr_regs, regnop); + param = match_name (param, + current_cpu == 88110 ? m88110_cr_regs : m88100_cr_regs, + regnop); return param; } |