summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2013-08-11 09:43:55 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2013-08-11 09:43:55 +0000
commitef39a0181b4265f3886e74960b6dcae81f4b4fb5 (patch)
tree2617ef451096d7a6c393d06202ab050f88facfa7 /gnu
parent1ed5e17a88e6b332d48445e5c11f0932cdda80ea (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.c55
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;
}