summaryrefslogtreecommitdiff
path: root/utils/qa/a.y
diff options
context:
space:
mode:
authorforsyth <forsyth@vitanuova.com>2010-04-27 12:51:13 +0100
committerforsyth <forsyth@vitanuova.com>2010-04-27 12:51:13 +0100
commitd67b7dad77bb8aa973dad1f7c3ab0c309b114278 (patch)
tree6794120fb327d6de19cf05eed53f80d877781a3e /utils/qa/a.y
parent09da2e137d5eb0c940df35d989e4c31ec0654fc4 (diff)
20100427-1251
Diffstat (limited to 'utils/qa/a.y')
-rw-r--r--utils/qa/a.y30
1 files changed, 27 insertions, 3 deletions
diff --git a/utils/qa/a.y b/utils/qa/a.y
index 3474ea0d..ee425949 100644
--- a/utils/qa/a.y
+++ b/utils/qa/a.y
@@ -20,9 +20,9 @@
%token <lval> LNOP LEND LRETT LWORD LTEXT LDATA LRETRN
%token <lval> LCONST LSP LSB LFP LPC LCREG LFLUSH
%token <lval> LREG LFREG LR LCR LF LFPSCR
-%token <lval> LLR LCTR LSPR LSPREG LSEG LMSR
+%token <lval> LLR LCTR LSPR LSPREG LSEG LMSR LDCR
%token <lval> LSCHED LXLD LXST LXOP LXMV
-%token <lval> LRLWM LMOVMW LMOVEM LMOVFL LMTFSB LMA
+%token <lval> LRLWM LMOVMW LMOVEM LMOVFL LMTFSB LMA LFMOVX
%token <dval> LFCONST
%token <sval> LSCONST
%token <sym> LNAME LLAB LVAR
@@ -95,7 +95,7 @@ inst:
outcode($1, &$2, NREG, &$4);
}
/*
- * load floats
+ * load and store floats
*/
| LFMOV addr ',' freg
{
@@ -122,6 +122,17 @@ inst:
outcode($1, &$2, NREG, &$4);
}
/*
+ * load and store floats, indexed only
+ */
+| LFMOVX regaddr ',' freg
+ {
+ outcode($1, &$2, NREG, &$4);
+ }
+| LFMOVX freg ',' regaddr
+ {
+ outcode($1, &$2, NREG, &$4);
+ }
+/*
* store ints and bytes
*/
| LMOVW rreg ',' addr
@@ -697,6 +708,19 @@ psr:
$$.type = $1;
$$.offset = $3;
}
+| LDCR '(' con ')'
+ {
+ $$ = nullgen;
+ $$.type = $1;
+ $$.offset = $3;
+ }
+| LDCR '(' sreg ')'
+ {
+ $$ = nullgen;
+ $$.type = $1;
+ $$.reg = $3;
+ $$.offset = 0;
+ }
| msr
seg: