summaryrefslogtreecommitdiff
path: root/src/cmd/6l/span.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/6l/span.c')
-rw-r--r--src/cmd/6l/span.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/cmd/6l/span.c b/src/cmd/6l/span.c
index 5251f19bb..5d13ad44b 100644
--- a/src/cmd/6l/span.c
+++ b/src/cmd/6l/span.c
@@ -94,7 +94,7 @@ span1(Sym *s)
*bp++ = v;
*bp++ = v>>8;
*bp++ = v>>16;
- *bp++ = v>>24;
+ *bp = v>>24;
}
}
p->comefrom = P;
@@ -706,6 +706,7 @@ asmandsz(Adr *a, int r, int rex, int m64)
int t, scale;
Reloc rel;
+ USED(m64);
rex &= (0x40 | Rxr);
v = a->offset;
t = a->type;
@@ -732,7 +733,6 @@ asmandsz(Adr *a, int r, int rex, int m64)
*andptr++ = (0 << 6) | (4 << 0) | (r << 3);
asmidx(a->scale, a->index, t);
goto putrelv;
- return;
}
if(v == 0 && rel.siz == 0 && t != D_BP && t != D_R13) {
*andptr++ = (0 << 6) | (4 << 0) | (r << 3);
@@ -1166,6 +1166,12 @@ found:
*andptr++ = op;
break;
+ case Zlitm_r:
+ for(; op = o->op[z]; z++)
+ *andptr++ = op;
+ asmand(&p->from, &p->to);
+ break;
+
case Zmb_r:
bytereg(&p->from, &p->ft);
/* fall through */