diff options
Diffstat (limited to 'utils/5l')
| -rw-r--r-- | utils/5l/asm.c | 10 |
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) |
