aboutsummaryrefslogtreecommitdiff
path: root/gas/config/bfin-parse.y
diff options
context:
space:
mode:
Diffstat (limited to 'gas/config/bfin-parse.y')
-rw-r--r--gas/config/bfin-parse.y10
1 files changed, 10 insertions, 0 deletions
diff --git a/gas/config/bfin-parse.y b/gas/config/bfin-parse.y
index 7751b68..f5f1022 100644
--- a/gas/config/bfin-parse.y
+++ b/gas/config/bfin-parse.y
@@ -1189,8 +1189,14 @@ asm_1:
| HALF_REG ASSIGN expr
{
notethat ("LDIMMhalf: pregs_half = imm16\n");
+
+ if (!IS_DREG ($1) && !IS_PREG ($1) && !IS_IREG ($1)
+ && !IS_MREG ($1) && !IS_BREG ($1) && !IS_LREG ($1))
+ return yyerror ("Wrong register for load immediate");
+
if (!IS_IMM ($3, 16) && !IS_UIMM ($3, 16))
return yyerror ("Constant out of range");
+
$$ = LDIMMHALF_R (&$1, IS_H ($1), 0, 0, $3);
}
@@ -1206,6 +1212,10 @@ asm_1:
| REG ASSIGN expr xpmod1
{
+ if (!IS_DREG ($1) && !IS_PREG ($1) && !IS_IREG ($1)
+ && !IS_MREG ($1) && !IS_BREG ($1) && !IS_LREG ($1))
+ return yyerror ("Wrong register for load immediate");
+
if ($4.r0 == 0)
{
/* 7 bit immediate value if possible.