m = o->size;
// must check literal pool here in case p generates many instructions
if(ctxt->blitrl){
- if(checkpool(ctxt, op, p->as == ACASE ? casesz(ctxt, p) : m))
- c = p->pc = scan(ctxt, op, p, c);
+ if(checkpool(ctxt, op, p->as == ACASE ? casesz(ctxt, p) : m)) {
+ p->pc = scan(ctxt, op, p, c);
+ c = p->pc;
+ }
}
if(m == 0 && (p->as != AFUNCDATA && p->as != APCDATA)) {
ctxt->diag("zero-width instruction\n%P", p);
cursym->size = c;
} while(bflag);
- c += c&4;
-
/*
* lay out the code. all the pc-relative code references,
* even cross-function, are resolved now;
if(ctxt->blitrl) {
if(skip){
- if(0 && skip==1)print("note: flush literal pool at %ux: len=%ud ref=%ux\n", p->pc+4, pool.size, pool.start);
+ if(0 && skip==1)print("note: flush literal pool at %llux: len=%ud ref=%ux\n", p->pc+4, pool.size, pool.start);
q = ctxt->arch->prg();
q->as = AB;
q->to.type = D_BRANCH;
}
}
-void
+static void
asmout(Link *ctxt, Prog *p, Optab *o, int32 *out, LSym *gmsym)
{
int32 o1, o2, o3, o4, o5, o6, v;
#endif
}
-int32
+static int32
oprrr(Link *ctxt, int a, int sc)
{
int32 o;
return 0;
}
-int32
+static int32
opbra(Link *ctxt, int a, int sc)
{
return 0;
}
-int32
+static int32
olr(Link *ctxt, int32 v, int b, int r, int sc)
{
int32 o;
return o;
}
-int32
+static int32
olhr(Link *ctxt, int32 v, int b, int r, int sc)
{
int32 o;
return o;
}
-int32
+static int32
osr(Link *ctxt, int a, int r, int32 v, int b, int sc)
{
int32 o;
return o;
}
-int32
+static int32
oshr(Link *ctxt, int r, int32 v, int b, int sc)
{
int32 o;
}
-int32
+static int32
osrr(Link *ctxt, int r, int i, int b, int sc)
{
return olr(ctxt, i, b, r, sc) ^ ((1<<25) | (1<<20));
}
-int32
+static int32
oshrr(Link *ctxt, int r, int i, int b, int sc)
{
return olhr(ctxt, i, b, r, sc) ^ ((1<<22) | (1<<20));
}
-int32
+static int32
olrr(Link *ctxt, int i, int b, int r, int sc)
{
return olr(ctxt, i, b, r, sc) ^ (1<<25);
}
-int32
+static int32
olhrr(Link *ctxt, int i, int b, int r, int sc)
{
return olhr(ctxt, i, b, r, sc) ^ (1<<22);
}
-int32
+static int32
ofsr(Link *ctxt, int a, int r, int32 v, int b, int sc, Prog *p)
{
int32 o;
return o;
}
-int32
+static int32
omvl(Link *ctxt, Prog *p, Addr *a, int dr)
{
int32 v, o1;
s->size = c;
if(0 /* debug['a'] > 1 */) {
- print("span1 %s %d (%d tries)\n %.6ux", s->name, s->size, n, 0);
+ print("span1 %s %lld (%d tries)\n %.6ux", s->name, s->size, n, 0);
for(i=0; i<s->np; i++) {
print(" %.2ux", s->p[i]);
if(i%16 == 15)
Reloc *r;
r = &s->r[i];
- print(" rel %#.4ux/%d %s%+d\n", r->off, r->siz, r->sym->name, r->add);
+ print(" rel %#.4ux/%d %s%+lld\n", r->off, r->siz, r->sym->name, r->add);
}
}
}