aboutsummaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
Diffstat (limited to 'gas/config')
-rwxr-xr-xgas/config/bfin-aux.h1
-rw-r--r--gas/config/bfin-parse.y16
-rw-r--r--gas/config/tc-bfin.c10
3 files changed, 27 insertions, 0 deletions
diff --git a/gas/config/bfin-aux.h b/gas/config/bfin-aux.h
index 638df31..465a6af 100755
--- a/gas/config/bfin-aux.h
+++ b/gas/config/bfin-aux.h
@@ -63,5 +63,6 @@ INSTR_T bfin_gen_calla (Expr_Node *, int);
INSTR_T bfin_gen_linkage (int, int);
INSTR_T bfin_gen_pseudodbg (int, int, int);
INSTR_T bfin_gen_pseudodbg_assert (int, REG_T, int);
+INSTR_T bfin_gen_pseudochr (int);
bfd_boolean bfin_resource_conflict (INSTR_T, INSTR_T, INSTR_T);
INSTR_T bfin_gen_multi_instr (INSTR_T, INSTR_T, INSTR_T);
diff --git a/gas/config/bfin-parse.y b/gas/config/bfin-parse.y
index 747442c..f8bb744 100644
--- a/gas/config/bfin-parse.y
+++ b/gas/config/bfin-parse.y
@@ -212,6 +212,7 @@ extern int yylex (void);
#define uimm5(x) EXPR_VALUE (x)
#define imm6(x) EXPR_VALUE (x)
#define imm7(x) EXPR_VALUE (x)
+#define uimm8(x) EXPR_VALUE (x)
#define imm16(x) EXPR_VALUE (x)
#define uimm16s4(x) ((EXPR_VALUE (x)) >> 2)
#define uimm16(x) EXPR_VALUE (x)
@@ -3618,6 +3619,21 @@ asm_1:
$$ = bfin_gen_pseudodbg_assert (2, &$3, uimm16 ($5));
}
+ | OUTC expr
+ {
+ if (!IS_UIMM ($2, 8))
+ return yyerror ("Constant out of range");
+ notethat ("psedodbg_assert: OUTC uimm8\n");
+ $$ = bfin_gen_pseudochr (uimm8 ($2));
+ }
+
+ | OUTC REG
+ {
+ if (!IS_DREG ($2))
+ return yyerror ("Dregs expected");
+ notethat ("psedodbg_assert: OUTC dreg\n");
+ $$ = bfin_gen_pseudodbg (2, $2.regno & CODE_MASK, 0);
+ }
;
diff --git a/gas/config/tc-bfin.c b/gas/config/tc-bfin.c
index 5746904..ccd14cb 100644
--- a/gas/config/tc-bfin.c
+++ b/gas/config/tc-bfin.c
@@ -1820,6 +1820,16 @@ bfin_gen_pseudodbg_assert (int dbgop, REG_T regtest, int expected)
return GEN_OPCODE32 ();
}
+INSTR_T
+bfin_gen_pseudochr (int ch)
+{
+ INIT (PseudoChr);
+
+ ASSIGN (ch);
+
+ return GEN_OPCODE16 ();
+}
+
/* Multiple instruction generation. */
INSTR_T