opcodes/gas: blackfin: handle more ASTAT flags
authorMike Frysinger <vapier@gentoo.org>
Wed, 22 Sep 2010 21:05:03 +0000 (21:05 +0000)
committerMike Frysinger <vapier@gentoo.org>
Wed, 22 Sep 2010 21:05:03 +0000 (21:05 +0000)
Support a few more ASTAT bits with the standard insns that operate on
ASTAT bits directly.

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
gas/ChangeLog
gas/config/bfin-defs.h
gas/config/bfin-lex.l
opcodes/ChangeLog
opcodes/bfin-dis.c

index 039c338bdc5ebbadd1d951addee39483a28e1f89..3269418d665c76ad098fb3f75e4a72be4790c7f5 100644 (file)
@@ -1,3 +1,8 @@
+2010-09-22  Robin Getz  <robin.getz@analog.com>
+
+       * config/bfin-defs.h (statusflags): Add AC0_COPY, V_COPY, and RND_MOD.
+       * config/bfin-lex.l: Tokenize AC0_COPY, V_COPY, and RND_MOD.
+
 2010-09-22  Mike Frysinger  <vapier@gentoo.org>
 
        * config/bfin-aux.h (bfin_gen_pseudochr): New prototype.
index adcfda4f6098b9665982b33c4374d1883446b8d9..7dd9796b9043787f47353a8ffc8eadb8b5e199fe 100644 (file)
@@ -1,5 +1,5 @@
 /* bfin-defs.h ADI Blackfin gas header file
-   Copyright 2005, 2006, 2007, 2009
+   Copyright 2005, 2006, 2007, 2009, 2010
    Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
@@ -120,7 +120,10 @@ enum statusflags
 {
   S_AZ = 0,
   S_AN,
+  S_AC0_COPY,
+  S_V_COPY,
   S_AQ = 6,
+  S_RND_MOD = 8,
   S_AC0 = 12,
   S_AC1,
   S_AV0 = 16,
index aa0569221f3ee4e18778a58d326a9d61ff729602..bc7957ad83705d3341a6acbf8cf97edb2363e684 100644 (file)
@@ -208,6 +208,8 @@ int yylex (void);
 [bB]                                    return B;
 [aA][zZ]  _REG.regno = S_AZ;   return STATUS_REG;
 [aA][nN]  _REG.regno = S_AN;   return STATUS_REG;
+[aA][cC]0_[cC][oO][pP][yY]  _REG.regno = S_AC0_COPY; return STATUS_REG;
+[vV]_[cC][oO][pP][yY]       _REG.regno = S_V_COPY;   return STATUS_REG;
 [aA][qQ]  _REG.regno = S_AQ;   return STATUS_REG;
 [aA][cC]0 _REG.regno = S_AC0;  return STATUS_REG;
 [aA][cC]1 _REG.regno = S_AC1;  return STATUS_REG;
@@ -216,6 +218,7 @@ int yylex (void);
 [aA][vV]1 _REG.regno = S_AV1;  return STATUS_REG;
 [aA][vV]1[sS] _REG.regno = S_AV1S; return STATUS_REG;
 [vV][sS]  _REG.regno = S_VS;   return STATUS_REG;
+[rR][nN][dD]_[mM][oO][dD]  _REG.regno = S_RND_MOD; return STATUS_REG;
 
 
 [aA][sS][tT][aA][tT]   _REG.regno = REG_ASTAT; return REG;
index fcf9b57ddab5f3f69fb26e05281c58d04d4848ef..171d5e65d78b97afc07a608d8e81ad156cac8ba2 100644 (file)
@@ -1,3 +1,9 @@
+2010-09-22  Robin Getz  <robin.getz@analog.com>
+
+       * bfin-dis.c (machine_registers): Add AC0_COPY, V_COPY, and RND_MOD.
+       (reg_names): Likewise.
+       (decode_statbits): Likewise; while reformatting to make manageable.
+
 2010-09-22  Mike Frysinger  <vapier@gentoo.org>
 
        * bfin-dis.c (decode_pseudoDEBUG_0): Add space after OUTC.
index 19b19259b0b24139d84ba4a952ef4af7819c6ebb..042db202d09b125b2d807a28e43d5ec49e9e1654 100644 (file)
@@ -242,6 +242,7 @@ enum machine_registers
   REG_BL0, REG_BL1, REG_BL2, REG_BL3, REG_LL0, REG_LL1, REG_LL2, REG_LL3,
   REG_IH0, REG_IH1, REG_IH2, REG_IH3, REG_MH0, REG_MH1, REG_MH2, REG_MH3,
   REG_BH0, REG_BH1, REG_BH2, REG_BH3, REG_LH0, REG_LH1, REG_LH2, REG_LH3,
+  REG_AC0_COPY, REG_V_COPY, REG_RND_MOD,
   REG_LASTREG,
 };
 
@@ -277,6 +278,7 @@ static const char *reg_names[] =
   "B0.L", "B1.L", "B2.L", "B3.L", "L0.L", "L1.L", "L2.L", "L3.L",
   "I0.H", "I1.H", "I2.H", "I3.H", "M0.H", "M1.H", "M2.H", "M3.H",
   "B0.H", "B1.H", "B2.H", "B3.H", "L0.H", "L1.H", "L2.H", "L3.H",
+  "AC0_COPY", "V_COPY", "RND_MOD",
   "LASTREG",
   0
 };
@@ -398,10 +400,14 @@ static enum machine_registers decode_regs_hi[] =
 
 static enum machine_registers decode_statbits[] =
 {
-  REG_AZ, REG_AN, REG_LASTREG, REG_LASTREG, REG_LASTREG, REG_LASTREG, REG_AQ, REG_LASTREG,
-  REG_LASTREG, REG_LASTREG, REG_LASTREG, REG_LASTREG, REG_AC0, REG_AC1, REG_LASTREG, REG_LASTREG,
-  REG_AV0, REG_AV0S, REG_AV1, REG_AV1S, REG_LASTREG, REG_LASTREG, REG_LASTREG, REG_LASTREG,
-  REG_V, REG_VS, REG_LASTREG, REG_LASTREG, REG_LASTREG, REG_LASTREG, REG_LASTREG, REG_LASTREG,
+  REG_AZ,        REG_AN,        REG_AC0_COPY,    REG_V_COPY,
+  REG_LASTREG,   REG_LASTREG,   REG_AQ,          REG_LASTREG,
+  REG_RND_MOD,   REG_LASTREG,   REG_LASTREG,     REG_LASTREG,
+  REG_AC0,       REG_AC1,       REG_LASTREG,     REG_LASTREG,
+  REG_AV0,       REG_AV0S,      REG_AV1,         REG_AV1S,
+  REG_LASTREG,   REG_LASTREG,   REG_LASTREG,     REG_LASTREG,
+  REG_V,         REG_VS,        REG_LASTREG,     REG_LASTREG,
+  REG_LASTREG,   REG_LASTREG,   REG_LASTREG,     REG_LASTREG,
 };
 
 #define statbits(x) REGNAME (decode_statbits[(x) & 31])