From 22215ae09b35cffb17d23cb159e603227caa9957 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 22 Sep 2010 21:05:03 +0000 Subject: opcodes/gas: blackfin: handle more ASTAT flags Support a few more ASTAT bits with the standard insns that operate on ASTAT bits directly. Signed-off-by: Robin Getz Signed-off-by: Mike Frysinger --- gas/ChangeLog | 5 +++++ gas/config/bfin-defs.h | 5 ++++- gas/config/bfin-lex.l | 3 +++ opcodes/ChangeLog | 6 ++++++ opcodes/bfin-dis.c | 14 ++++++++++---- 5 files changed, 28 insertions(+), 5 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 039c338..3269418 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2010-09-22 Robin Getz + + * 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 * config/bfin-aux.h (bfin_gen_pseudochr): New prototype. diff --git a/gas/config/bfin-defs.h b/gas/config/bfin-defs.h index adcfda4..7dd9796 100644 --- a/gas/config/bfin-defs.h +++ b/gas/config/bfin-defs.h @@ -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, 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/ChangeLog b/opcodes/ChangeLog index fcf9b57..171d5e6 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,9 @@ +2010-09-22 Robin Getz + + * 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 * bfin-dis.c (decode_pseudoDEBUG_0): Add space after OUTC. 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]) -- cgit v1.1