summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--utils/5l/asm.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/utils/5l/asm.c b/utils/5l/asm.c
index 415fcc41..66a7f0c6 100644
--- a/utils/5l/asm.c
+++ b/utils/5l/asm.c
@@ -747,7 +747,7 @@ if(debug['G']) print("%ulx: %s: arm %d %d %d %d\n", (ulong)(p->pc), p->from.sym-
r = p->reg;
if(p->to.type == D_NONE)
rt = 0;
- if(p->as == AMOVW)
+ if(p->as == AMOVW || p->as == AMVN)
r = 0;
else if(r == NREG)
r = rt;
@@ -762,7 +762,7 @@ if(debug['G']) print("%ulx: %s: arm %d %d %d %d\n", (ulong)(p->pc), p->from.sym-
r = p->reg;
if(p->to.type == D_NONE)
rt = 0;
- if(p->as == AMOVW)
+ if(p->as == AMOVW || p->as == AMVN)
r = 0;
else if(r == NREG)
r = rt;
@@ -778,7 +778,7 @@ if(debug['G']) print("%ulx: %s: arm %d %d %d %d\n", (ulong)(p->pc), p->from.sym-
r = p->reg;
if(p->to.type == D_NONE)
rt = 0;
- if(p->as == AMOVW)
+ if(p->as == AMOVW || p->as == AMVN)
r = 0;
else if(r == NREG)
r = rt;
@@ -891,7 +891,9 @@ if(debug['G']) print("%ulx: %s: arm %d %d %d %d\n", (ulong)(p->pc), p->from.sym-
o2 = oprrr(p->as, p->scond);
o2 |= REGTMP;
r = p->reg;
- if(r == NREG)
+ if(p->as == AMOVW || p->as == AMVN)
+ r = 0;
+ else if(r == NREG)
r = p->to.reg;
o2 |= r << 16;
if(p->to.type != D_NONE)