This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] opcodes/gas: blackfin: handle more ASTAT flags


From: Robin Getz <robin.getz@analog.com>

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>

opcodes/:
2010-09-21  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.

gas/:
2010-09-21  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.
---
 gas/config/bfin-defs.h |    3 +++
 gas/config/bfin-lex.l  |    3 +++
 opcodes/bfin-dis.c     |   14 ++++++++++----
 3 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/gas/config/bfin-defs.h b/gas/config/bfin-defs.h
index adcfda4..4013fea 100644
--- a/gas/config/bfin-defs.h
+++ b/gas/config/bfin-defs.h
@@ -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,
diff --git a/gas/config/bfin-lex.l b/gas/config/bfin-lex.l
index aa05692..bc7957a 100644
--- a/gas/config/bfin-lex.l
+++ b/gas/config/bfin-lex.l
@@ -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;
diff --git a/opcodes/bfin-dis.c b/opcodes/bfin-dis.c
index 19b1925..042db20 100644
--- a/opcodes/bfin-dis.c
+++ b/opcodes/bfin-dis.c
@@ -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])
-- 
1.7.2


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]