aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/bfin-lex.l15
2 files changed, 14 insertions, 7 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index ef21345..9d1de5c 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2010-09-11 Steve Kilbane <steve.kilbane@analog.com>
+
+ * config/bfin-lex.l (FLAGS): New state.
+ (X, Z, S, M, T): Require FLAGS state.
+ ("(", ")"): Start/stop FLAGS state.
+
2010-09-11 David Gibson <david.gibson@analog.com>
* config/bfin-aux.h (bfin_loop_attempt_create_label): New prototype.
diff --git a/gas/config/bfin-lex.l b/gas/config/bfin-lex.l
index bdd02f5..9606006 100644
--- a/gas/config/bfin-lex.l
+++ b/gas/config/bfin-lex.l
@@ -39,6 +39,7 @@ int yylex (void);
and <INITIAL> would match some keyword rules only with
initial. */
%s KEYWORD
+%s FLAGS
%%
[sS][fF][tT][rR][eE][sS][eE][tT] _REG.regno = REG_sftreset; return REG;
@@ -47,8 +48,8 @@ int yylex (void);
[hH][wW][eE][rR][rR][cC][aA][uU][sS][eE] _REG.regno = REG_hwerrcause; return REG;
[eE][xX][cC][aA][uU][sS][eE] _REG.regno = REG_excause; return REG;
[eE][mM][uU][cC][aA][uU][sS][eE] _REG.regno = REG_emucause; return REG;
-[zZ] return Z;
-[xX] return X;
+<FLAGS>[zZ] return Z;
+<FLAGS>[xX] return X;
[wW]32 yylval.value = M_W32; return MMOD;
[wW] return W;
[vV][iI][tT]_[mM][aA][xX] return VIT_MAX;
@@ -58,8 +59,8 @@ int yylex (void);
[tT][hH] return TH;
[tT][fF][uU] yylval.value = M_TFU; return MMOD;
[tT][eE][sS][tT][sS][eE][tT] return TESTSET;
-[tT] yylval.value = M_T; return MMOD;
-[sS] return S;
+<FLAGS>[tT] yylval.value = M_T; return MMOD;
+<FLAGS>[sS] return S;
[sS][yY][sS][cC][fF][gG] _REG.regno = REG_SYSCFG; return REG;
[sS][tT][iI] return STI;
[sS][sS][yY][nN][cC] return SSYNC;
@@ -122,7 +123,7 @@ int yylex (void);
[mM][0-3]"."[lLhH] return parse_halfreg (&yylval.reg, T_REG_M, yytext);
[mM][0-3] return parse_reg (&yylval.reg, T_REG_M, yytext);
-[mM] return M;
+<FLAGS>[mM] return M;
[lL][tT] return LT;
[lL][sS][hH][iI][fF][tT] return LSHIFT;
[lL][sS][eE][tT][uU][pP] return LSETUP;
@@ -263,8 +264,8 @@ int yylex (void);
"<<=" return _LESS_LESS_ASSIGN;
"<<" return LESS_LESS;
"<" return LESS_THAN;
-"(" return LPAREN;
-")" return RPAREN;
+"(" BEGIN(FLAGS); return LPAREN;
+")" BEGIN(INITIAL); return RPAREN;
":" return COLON;
"/" return SLASH;
"-=" return _MINUS_ASSIGN;