Commit af0143ce authored by Russ Cox's avatar Russ Cox

make 8a, 8c, 8l build in go environment.

,s/int32/long/g in 8a, 8c, 8l.
delete dead code.
move enam.c, 8.out.h, mkenam from 8c to 8l.

R=r
DELTA=1850  (581 added, 983 deleted, 286 changed)
OCL=22119
CL=22129
parent d8c79805
# Copyright 2009 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
include ../../Make.conf
TARG=\
8a\
HFILES=\
a.h\
y.tab.h\
../8l/8.out.h\
compat.h\
OFILES=\
y.tab.$O\
lex.$O\
compat.$O\
../8l/enam.$O\
YFILES=\
a.y\
$(TARG): $(OFILES)
$(LD) -o $(TARG) -L$(GOROOT)/lib $(OFILES) -lbio -l9
$(OFILES): $(HFILES)
lex.$O: ../cc/macbody ../cc/lexbody
y.tab.h: $(YFILES)
bison -y $(YFLAGS) $(YFILES)
y.tab.c: y.tab.h
test -f y.tab.c && touch y.tab.c
clean:
rm -f $(OFILES) $(TARG) *.6 enam.c 6.out a.out y.tab.h y.tab.c
install: $(TARG)
cp $(TARG) $(BIN)/$(TARG)
...@@ -28,9 +28,11 @@ ...@@ -28,9 +28,11 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE. // THE SOFTWARE.
#include <lib9.h> #include <u.h>
#include <libc.h>
#include <bio.h> #include <bio.h>
#include "../8c/8.out.h" #include "../8l/8.out.h"
#include "compat.h"
#ifndef EXTERN #ifndef EXTERN
...@@ -63,7 +65,7 @@ struct Sym ...@@ -63,7 +65,7 @@ struct Sym
Sym* link; Sym* link;
Ref* ref; Ref* ref;
char* macro; char* macro;
long value; int32 value;
ushort type; ushort type;
char *name; char *name;
char sym; char sym;
...@@ -101,7 +103,7 @@ struct Gen ...@@ -101,7 +103,7 @@ struct Gen
{ {
double dval; double dval;
char sval[8]; char sval[8];
long offset; int32 offset;
Sym* sym; Sym* sym;
short type; short type;
short index; short index;
...@@ -117,8 +119,8 @@ struct Hist ...@@ -117,8 +119,8 @@ struct Hist
{ {
Hist* link; Hist* link;
char* name; char* name;
long line; int32 line;
long offset; int32 offset;
}; };
#define H ((Hist*)0) #define H ((Hist*)0)
...@@ -143,24 +145,24 @@ EXTERN char* include[NINCLUDE]; ...@@ -143,24 +145,24 @@ EXTERN char* include[NINCLUDE];
EXTERN Io* iofree; EXTERN Io* iofree;
EXTERN Io* ionext; EXTERN Io* ionext;
EXTERN Io* iostack; EXTERN Io* iostack;
EXTERN long lineno; EXTERN int32 lineno;
EXTERN int nerrors; EXTERN int nerrors;
EXTERN long nhunk; EXTERN int32 nhunk;
EXTERN int ninclude; EXTERN int ninclude;
EXTERN Gen nullgen; EXTERN Gen nullgen;
EXTERN char* outfile; EXTERN char* outfile;
EXTERN int pass; EXTERN int pass;
EXTERN char* pathname; EXTERN char* pathname;
EXTERN long pc; EXTERN int32 pc;
EXTERN int peekc; EXTERN int peekc;
EXTERN int sym; EXTERN int sym;
EXTERN char symb[NSYMB]; EXTERN char symb[NSYMB];
EXTERN int thechar; EXTERN int thechar;
EXTERN char* thestring; EXTERN char* thestring;
EXTERN long thunk; EXTERN int32 thunk;
EXTERN Biobuf obuf; EXTERN Biobuf obuf;
void* allocn(void*, long, long); void* allocn(void*, int32, int32);
void errorexit(void); void errorexit(void);
void pushio(void); void pushio(void);
void newio(void); void newio(void);
...@@ -168,7 +170,7 @@ void newfile(char*, int); ...@@ -168,7 +170,7 @@ void newfile(char*, int);
Sym* slookup(char*); Sym* slookup(char*);
Sym* lookup(void); Sym* lookup(void);
void syminit(Sym*); void syminit(Sym*);
long yylex(void); int32 yylex(void);
int getc(void); int getc(void);
int getnsc(void); int getnsc(void);
void unget(int); void unget(int);
...@@ -195,30 +197,10 @@ void maclin(void); ...@@ -195,30 +197,10 @@ void maclin(void);
void macif(int); void macif(int);
void macend(void); void macend(void);
void dodefine(char*); void dodefine(char*);
void prfile(long); void prfile(int32);
void linehist(char*, int); void linehist(char*, int);
void gethunk(void); void gethunk(void);
void yyerror(char*, ...); void yyerror(char*, ...);
int yyparse(void); int yyparse(void);
void setinclude(char*); void setinclude(char*);
int assemble(char*); int assemble(char*);
/*
* Posix.c/Inferno.c/Nt.c
*/
enum /* keep in synch with ../cc/cc.h */
{
Plan9 = 1<<0,
Unix = 1<<1,
Windows = 1<<2
};
int mywait(int*);
int mycreat(char*, int);
int systemtype(int);
int pathchar(void);
char* mygetwd(char*, int);
int myexec(char*, char*[]);
int mydup(int, int);
int myfork(void);
int mypipe(int*);
void* mysbrk(ulong);
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
%} %}
%union { %union {
Sym *sym; Sym *sym;
long lval; int32 lval;
double dval; double dval;
char sval[8]; char sval[8];
Gen gen; Gen gen;
......
...@@ -156,7 +156,7 @@ assemble(char *file) ...@@ -156,7 +156,7 @@ assemble(char *file)
} }
} }
of = mycreat(outfile, 0664); of = mycreate(outfile, 0664);
if(of < 0) { if(of < 0) {
yyerror("%ca: cannot create %s", thechar, outfile); yyerror("%ca: cannot create %s", thechar, outfile);
errorexit(); errorexit();
......
# Copyright 2009 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
include ../../Make.conf
TARG=\
8c\
HFILES=\
gc.h\
../8l/8.out.h\
../cc/cc.h\
OFILES=\
cgen.$O\
cgen64.$O\
div.$O\
list.$O\
machcap.$O\
mul.$O\
peep.$O\
reg.$O\
sgen.$O\
swt.$O\
txt.$O\
../8l/enam.$O\
LIB=\
../cc/cc.a$O
$(TARG): $(OFILES) $(LIB)
$(LD) -o $(TARG) -L$(GOROOT)/lib $(OFILES) $(LIB) -lbio -l9
$(OFILES): $(HFILES)
clean:
rm -f $(OFILES) $(TARG) *.8 8.out a.out
install: $(TARG)
cp $(TARG) $(BIN)/$(TARG)
...@@ -39,7 +39,7 @@ cgen(Node *n, Node *nn) ...@@ -39,7 +39,7 @@ cgen(Node *n, Node *nn)
Prog *p1; Prog *p1;
Node nod, nod1, nod2, nod3, nod4; Node nod, nod1, nod2, nod3, nod4;
int o, hardleft; int o, hardleft;
long v, curs; int32 v, curs;
vlong c; vlong c;
if(debug['g']) { if(debug['g']) {
...@@ -1031,7 +1031,7 @@ cgen(Node *n, Node *nn) ...@@ -1031,7 +1031,7 @@ cgen(Node *n, Node *nn)
diag(n, "DOT and no offset"); diag(n, "DOT and no offset");
break; break;
} }
nod.xoffset += (long)r->vconst; nod.xoffset += (int32)r->vconst;
nod.type = n->type; nod.type = n->type;
cgen(&nod, nn); cgen(&nod, nn);
break; break;
...@@ -1133,7 +1133,7 @@ void ...@@ -1133,7 +1133,7 @@ void
reglcgen(Node *t, Node *n, Node *nn) reglcgen(Node *t, Node *n, Node *nn)
{ {
Node *r; Node *r;
long v; int32 v;
regialloc(t, n, nn); regialloc(t, n, nn);
if(n->op == OIND) { if(n->op == OIND) {
...@@ -1217,7 +1217,7 @@ boolgen(Node *n, int true, Node *nn) ...@@ -1217,7 +1217,7 @@ boolgen(Node *n, int true, Node *nn)
int o; int o;
Prog *p1, *p2; Prog *p1, *p2;
Node *l, *r, nod, nod1; Node *l, *r, nod, nod1;
long curs; int32 curs;
if(debug['g']) { if(debug['g']) {
prtree(nn, "boolgen lhs"); prtree(nn, "boolgen lhs");
...@@ -1429,7 +1429,7 @@ boolgen(Node *n, int true, Node *nn) ...@@ -1429,7 +1429,7 @@ boolgen(Node *n, int true, Node *nn)
} }
void void
sugen(Node *n, Node *nn, long w) sugen(Node *n, Node *nn, int32 w)
{ {
Prog *p1; Prog *p1;
Node nod0, nod1, nod2, nod3, nod4, *h, *l, *r; Node nod0, nod1, nod2, nod3, nod4, *h, *l, *r;
...@@ -1500,7 +1500,7 @@ sugen(Node *n, Node *nn, long w) ...@@ -1500,7 +1500,7 @@ sugen(Node *n, Node *nn, long w)
diag(n, "DOT and no offset"); diag(n, "DOT and no offset");
break; break;
} }
nod1.xoffset += (long)r->vconst; nod1.xoffset += (int32)r->vconst;
nod1.type = n->type; nod1.type = n->type;
sugen(&nod1, nn, w); sugen(&nod1, nn, w);
break; break;
......
...@@ -54,22 +54,22 @@ vaddr(Node *n, int a) ...@@ -54,22 +54,22 @@ vaddr(Node *n, int a)
return 0; return 0;
} }
long int32
hi64v(Node *n) hi64v(Node *n)
{ {
if(align(0, types[TCHAR], Aarg1)) /* isbigendian */ if(align(0, types[TCHAR], Aarg1)) /* isbigendian */
return (long)(n->vconst) & ~0L; return (int32)(n->vconst) & ~0L;
else else
return (long)((uvlong)n->vconst>>32) & ~0L; return (int32)((uvlong)n->vconst>>32) & ~0L;
} }
long int32
lo64v(Node *n) lo64v(Node *n)
{ {
if(align(0, types[TCHAR], Aarg1)) /* isbigendian */ if(align(0, types[TCHAR], Aarg1)) /* isbigendian */
return (long)((uvlong)n->vconst>>32) & ~0L; return (int32)((uvlong)n->vconst>>32) & ~0L;
else else
return (long)(n->vconst) & ~0L; return (int32)(n->vconst) & ~0L;
} }
Node * Node *
...@@ -218,70 +218,6 @@ storepair(Node *n, Node *nn, int f) ...@@ -218,70 +218,6 @@ storepair(Node *n, Node *nn, int f)
freepair(n); freepair(n);
} }
/* generate a cast t from n to tt */
static void
cast(Node *n, Type *t, Node *nn)
{
Node *r;
r = new(OCAST, n, Z);
r->type = t;
sugen(r, nn, 8);
}
static void
swapregs(Node *a, Node *b)
{
int t;
t = a->reg;
a->reg = b->reg;
b->reg = t;
}
static void
swappairs(Node *a, Node *b)
{
swapregs(a->left, b->left);
swapregs(a->right, b->right);
}
static int
saveme(Node *n)
{
int r;
r = n->reg;
return r >= D_AX && r <= D_DI;
}
static void
saveit(Node *n, Node *t, Node *r)
{
Node nod;
if(saveme(n)) {
t->reg = n->reg;
gins(AMOVL, t, r);
r->xoffset += SZ_LONG;
if(n->reg == D_AX) {
regalloc(&nod, n, Z);
regfree(n);
n->reg = nod.reg;
}
}
}
static void
restoreit(Node *n, Node *t, Node *r)
{
if(saveme(n)) {
t->reg = n->reg;
gins(AMOVL, r, t);
r->xoffset += SZ_LONG;
}
}
enum enum
{ {
/* 4 only, see WW */ /* 4 only, see WW */
...@@ -349,26 +285,6 @@ vfunc(Node *n, Node *nn) ...@@ -349,26 +285,6 @@ vfunc(Node *n, Node *nn)
return t; return t;
} }
static int
forcereg(Node *d, int r, int o, Node *t)
{
int a;
if(d->reg != D_NONE)
diag(Z, "force alloc");
d->reg = r;
a = 0;
if(reg[r]) {
reg[o]++;
regalloc(t, d, Z);
a = 1;
gins(AMOVL, d, t);
reg[o]--;
}
reg[r]++;
return a;
}
/* try to steal a reg */ /* try to steal a reg */
static int static int
getreg(Node **np, Node *t, int r) getreg(Node **np, Node *t, int r)
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
#define T32 TN(32) #define T32 TN(32)
int int
multiplier(ulong d, int p, uvlong *mp) multiplier(uint32 d, int p, uvlong *mp)
{ {
int l; int l;
uvlong mlo, mhi, tlo, thi; uvlong mlo, mhi, tlo, thi;
...@@ -67,7 +67,7 @@ multiplier(ulong d, int p, uvlong *mp) ...@@ -67,7 +67,7 @@ multiplier(ulong d, int p, uvlong *mp)
} }
int int
sdiv(ulong d, ulong *mp, int *sp) sdiv(uint32 d, uint32 *mp, int *sp)
{ {
int s; int s;
uvlong m; uvlong m;
...@@ -82,7 +82,7 @@ sdiv(ulong d, ulong *mp, int *sp) ...@@ -82,7 +82,7 @@ sdiv(ulong d, ulong *mp, int *sp)
} }
int int
udiv(ulong d, ulong *mp, int *sp, int *pp) udiv(uint32 d, uint32 *mp, int *sp, int *pp)
{ {
int p, s; int p, s;
uvlong m; uvlong m;
...@@ -113,14 +113,14 @@ void ...@@ -113,14 +113,14 @@ void
sdivgen(Node *l, Node *r, Node *ax, Node *dx) sdivgen(Node *l, Node *r, Node *ax, Node *dx)
{ {
int a, s; int a, s;
ulong m; uint32 m;
vlong c; vlong c;
c = r->vconst; c = r->vconst;
if(c < 0) if(c < 0)
c = -c; c = -c;
a = sdiv(c, &m, &s); a = sdiv(c, &m, &s);
//print("a=%d i=%ld s=%d m=%lux\n", a, (long)r->vconst, s, m); //print("a=%d i=%ld s=%d m=%lux\n", a, (int32)r->vconst, s, m);
gins(AMOVL, nodconst(m), ax); gins(AMOVL, nodconst(m), ax);
gins(AIMULL, l, Z); gins(AIMULL, l, Z);
gins(AMOVL, l, ax); gins(AMOVL, l, ax);
...@@ -137,11 +137,11 @@ void ...@@ -137,11 +137,11 @@ void
udivgen(Node *l, Node *r, Node *ax, Node *dx) udivgen(Node *l, Node *r, Node *ax, Node *dx)
{ {
int a, s, t; int a, s, t;
ulong m; uint32 m;
Node nod; Node nod;
a = udiv(r->vconst, &m, &s, &t); a = udiv(r->vconst, &m, &s, &t);
//print("a=%ud i=%ld p=%d s=%d m=%lux\n", a, (long)r->vconst, t, s, m); //print("a=%ud i=%ld p=%d s=%d m=%lux\n", a, (int32)r->vconst, t, s, m);
if(t != 0) { if(t != 0) {
gins(AMOVL, l, ax); gins(AMOVL, l, ax);
gins(ASHRL, nodconst(t), ax); gins(ASHRL, nodconst(t), ax);
...@@ -184,7 +184,7 @@ sext(Node *d, Node *s, Node *l) ...@@ -184,7 +184,7 @@ sext(Node *d, Node *s, Node *l)
} }
void void
sdiv2(long c, int v, Node *l, Node *n) sdiv2(int32 c, int v, Node *l, Node *n)
{ {
Node nod; Node nod;
...@@ -206,7 +206,7 @@ sdiv2(long c, int v, Node *l, Node *n) ...@@ -206,7 +206,7 @@ sdiv2(long c, int v, Node *l, Node *n)
} }
void void
smod2(long c, int v, Node *l, Node *n) smod2(int32 c, int v, Node *l, Node *n)
{ {
Node nod; Node nod;
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
// THE SOFTWARE. // THE SOFTWARE.
#include "../cc/cc.h" #include "../cc/cc.h"
#include "../8c/8.out.h" #include "../8l/8.out.h"
/* /*
* 8c/386 * 8c/386
...@@ -65,7 +65,7 @@ EXTERN struct ...@@ -65,7 +65,7 @@ EXTERN struct
struct Adr struct Adr
{ {
long offset; int32 offset;
double dval; double dval;
char sval[NSNAME]; char sval[NSNAME];
...@@ -83,7 +83,7 @@ struct Prog ...@@ -83,7 +83,7 @@ struct Prog
Adr from; Adr from;
Adr to; Adr to;
Prog* link; Prog* link;
long lineno; int32 lineno;
short as; short as;
}; };
#define P ((Prog*)0) #define P ((Prog*)0)
...@@ -91,21 +91,21 @@ struct Prog ...@@ -91,21 +91,21 @@ struct Prog
struct Case struct Case
{ {
Case* link; Case* link;
long val; int32 val;
long label; int32 label;
char def; char def;
}; };
#define C ((Case*)0) #define C ((Case*)0)
struct C1 struct C1
{ {
long val; int32 val;
long label; int32 label;
}; };
struct Var struct Var
{ {
long offset; int32 offset;
Sym* sym; Sym* sym;
char name; char name;
char etype; char etype;
...@@ -113,8 +113,8 @@ struct Var ...@@ -113,8 +113,8 @@ struct Var
struct Reg struct Reg
{ {
long pc; int32 pc;
long rpo; /* reverse post ordering */ int32 rpo; /* reverse post ordering */
Bits set; Bits set;
Bits use1; Bits use1;
...@@ -127,11 +127,11 @@ struct Reg ...@@ -127,11 +127,11 @@ struct Reg
Bits regdiff; Bits regdiff;
Bits act; Bits act;
long regu; int32 regu;
long loop; /* could be shorter */ int32 loop; /* could be shorter */
Reg* log5; Reg* log5;
long active; int32 active;
Reg* p1; Reg* p1;
Reg* p2; Reg* p2;
...@@ -160,25 +160,25 @@ struct Rgn ...@@ -160,25 +160,25 @@ struct Rgn
short regno; short regno;
}; };
EXTERN long breakpc; EXTERN int32 breakpc;
EXTERN Case* cases; EXTERN Case* cases;
EXTERN Node constnode; EXTERN Node constnode;
EXTERN Node fconstnode; EXTERN Node fconstnode;
EXTERN long continpc; EXTERN int32 continpc;
EXTERN long curarg; EXTERN int32 curarg;
EXTERN long cursafe; EXTERN int32 cursafe;
EXTERN Prog* firstp; EXTERN Prog* firstp;
EXTERN Prog* lastp; EXTERN Prog* lastp;
EXTERN long maxargsafe; EXTERN int32 maxargsafe;
EXTERN int mnstring; EXTERN int mnstring;
EXTERN int retok; EXTERN int retok;
EXTERN Node* nodrat; EXTERN Node* nodrat;
EXTERN Node* nodret; EXTERN Node* nodret;
EXTERN Node* nodsafe; EXTERN Node* nodsafe;
EXTERN long nrathole; EXTERN int32 nrathole;
EXTERN long nstring; EXTERN int32 nstring;
EXTERN Prog* p; EXTERN Prog* p;
EXTERN long pc; EXTERN int32 pc;
EXTERN Node regnode; EXTERN Node regnode;
EXTERN Node fregnode0; EXTERN Node fregnode0;
EXTERN Node fregnode1; EXTERN Node fregnode1;
...@@ -187,8 +187,8 @@ EXTERN Sym* symrathole; ...@@ -187,8 +187,8 @@ EXTERN Sym* symrathole;
EXTERN Node znode; EXTERN Node znode;
EXTERN Prog zprog; EXTERN Prog zprog;
EXTERN int reg[D_NONE]; EXTERN int reg[D_NONE];
EXTERN long exregoffset; EXTERN int32 exregoffset;
EXTERN long exfregoffset; EXTERN int32 exfregoffset;
#define BLOAD(r) band(bnot(r->refbehind), r->refahead) #define BLOAD(r) band(bnot(r->refbehind), r->refahead)
#define BSTORE(r) band(bnot(r->calbehind), r->calahead) #define BSTORE(r) band(bnot(r->calbehind), r->calahead)
...@@ -212,8 +212,8 @@ EXTERN Bits params; ...@@ -212,8 +212,8 @@ EXTERN Bits params;
EXTERN Bits consts; EXTERN Bits consts;
EXTERN Bits addrs; EXTERN Bits addrs;
EXTERN long regbits; EXTERN int32 regbits;
EXTERN long exregbits; EXTERN int32 exregbits;
EXTERN int change; EXTERN int change;
EXTERN int suppress; EXTERN int suppress;
...@@ -223,9 +223,9 @@ EXTERN Reg* lastr; ...@@ -223,9 +223,9 @@ EXTERN Reg* lastr;
EXTERN Reg zreg; EXTERN Reg zreg;
EXTERN Reg* freer; EXTERN Reg* freer;
EXTERN Var var[NVAR]; EXTERN Var var[NVAR];
EXTERN long* idom; EXTERN int32* idom;
EXTERN Reg** rpo2r; EXTERN Reg** rpo2r;
EXTERN long maxnr; EXTERN int32 maxnr;
extern char* anames[]; extern char* anames[];
...@@ -249,7 +249,7 @@ void reglcgen(Node*, Node*, Node*); ...@@ -249,7 +249,7 @@ void reglcgen(Node*, Node*, Node*);
void lcgen(Node*, Node*); void lcgen(Node*, Node*);
void bcgen(Node*, int); void bcgen(Node*, int);
void boolgen(Node*, int, Node*); void boolgen(Node*, int, Node*);
void sugen(Node*, Node*, long); void sugen(Node*, Node*, int32);
int needreg(Node*, int); int needreg(Node*, int);
/* /*
...@@ -268,7 +268,7 @@ void gclean(void); ...@@ -268,7 +268,7 @@ void gclean(void);
void nextpc(void); void nextpc(void);
void gargs(Node*, Node*, Node*); void gargs(Node*, Node*, Node*);
void garg1(Node*, Node*, Node*, int, Node**); void garg1(Node*, Node*, Node*, int, Node**);
Node* nodconst(long); Node* nodconst(int32);
Node* nodfconst(double); Node* nodfconst(double);
int nodreg(Node*, Node*, int); int nodreg(Node*, Node*, int);
int isreg(Node*, int); int isreg(Node*, int);
...@@ -288,7 +288,7 @@ void fgopcode(int, Node*, Node*, int, int); ...@@ -288,7 +288,7 @@ void fgopcode(int, Node*, Node*, int, int);
void gopcode(int, Type*, Node*, Node*); void gopcode(int, Type*, Node*, Node*);
int samaddr(Node*, Node*); int samaddr(Node*, Node*);
void gbranch(int); void gbranch(int);
void patch(Prog*, long); void patch(Prog*, int32);
int sconst(Node*); int sconst(Node*);
void gpseudo(int, Sym*, Node*); void gpseudo(int, Sym*, Node*);
...@@ -297,14 +297,14 @@ void gpseudo(int, Sym*, Node*); ...@@ -297,14 +297,14 @@ void gpseudo(int, Sym*, Node*);
*/ */
int swcmp(const void*, const void*); int swcmp(const void*, const void*);
void doswit(Node*); void doswit(Node*);
void swit1(C1*, int, long, Node*); void swit1(C1*, int, int32, Node*);
void cas(void); void cas(void);
void bitload(Node*, Node*, Node*, Node*, Node*); void bitload(Node*, Node*, Node*, Node*, Node*);
void bitstore(Node*, Node*, Node*, Node*, Node*); void bitstore(Node*, Node*, Node*, Node*, Node*);
long outstring(char*, long); int32 outstring(char*, int32);
void nullwarn(Node*, Node*); void nullwarn(Node*, Node*);
void sextern(Sym*, Node*, long, long); void sextern(Sym*, Node*, int32, int32);
void gextern(Sym*, Node*, long, long); void gextern(Sym*, Node*, int32, int32);
void outcode(void); void outcode(void);
void ieeedtod(Ieee*, double); void ieeedtod(Ieee*, double);
...@@ -329,12 +329,12 @@ void regopt(Prog*); ...@@ -329,12 +329,12 @@ void regopt(Prog*);
void addmove(Reg*, int, int, int); void addmove(Reg*, int, int, int);
Bits mkvar(Reg*, Adr*); Bits mkvar(Reg*, Adr*);
void prop(Reg*, Bits, Bits); void prop(Reg*, Bits, Bits);
void loopit(Reg*, long); void loopit(Reg*, int32);
void synch(Reg*, Bits); void synch(Reg*, Bits);
ulong allreg(ulong, Rgn*); uint32 allreg(uint32, Rgn*);
void paint1(Reg*, int); void paint1(Reg*, int);
ulong paint2(Reg*, int); uint32 paint2(Reg*, int);
void paint3(Reg*, int, long, int); void paint3(Reg*, int, int32, int);
void addreg(Adr*, int); void addreg(Adr*, int);
/* /*
...@@ -356,10 +356,10 @@ int copyau(Adr*, Adr*); ...@@ -356,10 +356,10 @@ int copyau(Adr*, Adr*);
int copysub(Adr*, Adr*, Adr*, int); int copysub(Adr*, Adr*, Adr*, int);
int copysub1(Prog*, Adr*, Adr*, int); int copysub1(Prog*, Adr*, Adr*, int);
long RtoB(int); int32 RtoB(int);
long FtoB(int); int32 FtoB(int);
int BtoR(long); int BtoR(int32);
int BtoF(long); int BtoF(int32);
#define D_HI D_NONE #define D_HI D_NONE
#define D_LO D_NONE #define D_LO D_NONE
...@@ -376,8 +376,8 @@ int cond(int); ...@@ -376,8 +376,8 @@ int cond(int);
int com64(Node*); int com64(Node*);
void com64init(void); void com64init(void);
void bool64(Node*); void bool64(Node*);
long lo64v(Node*); int32 lo64v(Node*);
long hi64v(Node*); int32 hi64v(Node*);
Node* lo64(Node*); Node* lo64(Node*);
Node* hi64(Node*); Node* hi64(Node*);
...@@ -386,8 +386,8 @@ Node* hi64(Node*); ...@@ -386,8 +386,8 @@ Node* hi64(Node*);
*/ */
void sdivgen(Node*, Node*, Node*, Node*); void sdivgen(Node*, Node*, Node*, Node*);
void udivgen(Node*, Node*, Node*, Node*); void udivgen(Node*, Node*, Node*, Node*);
void sdiv2(long, int, Node*, Node*); void sdiv2(int32, int, Node*, Node*);
void smod2(long, int, Node*, Node*); void smod2(int32, int, Node*, Node*);
void mulgen(Type*, Node*, Node*); void mulgen(Type*, Node*, Node*);
void genmuladd(Node*, Node*, int, Node*); void genmuladd(Node*, Node*, int, Node*);
void shiftit(Type*, Node*, Node*); void shiftit(Type*, Node*, Node*);
......
...@@ -40,7 +40,7 @@ struct Malg ...@@ -40,7 +40,7 @@ struct Malg
struct Mparam struct Mparam
{ {
ulong value; uint32 value;
char alg; char alg;
char neg; char neg;
char shift; char shift;
...@@ -64,10 +64,10 @@ static Malg malgs[] = ...@@ -64,10 +64,10 @@ static Malg malgs[] =
* return position of lowest 1 * return position of lowest 1
*/ */
int int
lowbit(ulong v) lowbit(uint32 v)
{ {
int s, i; int s, i;
ulong m; uint32 m;
s = 0; s = 0;
m = 0xFFFFFFFFUL; m = 0xFFFFFFFFUL;
...@@ -97,13 +97,13 @@ genmuladd(Node *d, Node *s, int m, Node *a) ...@@ -97,13 +97,13 @@ genmuladd(Node *d, Node *s, int m, Node *a)
} }
void void
mulparam(ulong m, Mparam *mp) mulparam(uint32 m, Mparam *mp)
{ {
int c, i, j, n, o, q, s; int c, i, j, n, o, q, s;
int bc, bi, bn, bo, bq, bs, bt; int bc, bi, bn, bo, bq, bs, bt;
char *p; char *p;
long u; int32 u;
ulong t; uint32 t;
bc = bq = 10; bc = bq = 10;
bi = bn = bo = bs = bt = 0; bi = bn = bo = bs = bt = 0;
...@@ -122,7 +122,7 @@ mulparam(ulong m, Mparam *mp) ...@@ -122,7 +122,7 @@ mulparam(ulong m, Mparam *mp)
u = -u; u = -u;
} }
n = lowbit(u); n = lowbit(u);
t = (ulong)u >> n; t = (uint32)u >> n;
switch(i) { switch(i) {
case 0: case 0:
if(t == 1) { if(t == 1) {
...@@ -321,9 +321,9 @@ m2(int a) ...@@ -321,9 +321,9 @@ m2(int a)
void void
shiftit(Type *t, Node *s, Node *d) shiftit(Type *t, Node *s, Node *d)
{ {
long c; int32 c;
c = (long)s->vconst & 31; c = (int32)s->vconst & 31;
switch(c) { switch(c) {
case 0: case 0:
break; break;
...@@ -336,7 +336,7 @@ shiftit(Type *t, Node *s, Node *d) ...@@ -336,7 +336,7 @@ shiftit(Type *t, Node *s, Node *d)
} }
static int static int
mulgen1(ulong v, Node *n) mulgen1(uint32 v, Node *n)
{ {
int i, o; int i, o;
Mparam *p; Mparam *p;
......
...@@ -66,13 +66,13 @@ regopt(Prog *p) ...@@ -66,13 +66,13 @@ regopt(Prog *p)
Reg *r, *r1, *r2; Reg *r, *r1, *r2;
Prog *p1; Prog *p1;
int i, z; int i, z;
long initpc, val, npc; int32 initpc, val, npc;
ulong vreg; uint32 vreg;
Bits bit; Bits bit;
struct struct
{ {
long m; int32 m;
long c; int32 c;
Reg* p; Reg* p;
} log5[6], *lp; } log5[6], *lp;
...@@ -647,10 +647,10 @@ addmove(Reg *r, int bn, int rn, int f) ...@@ -647,10 +647,10 @@ addmove(Reg *r, int bn, int rn, int f)
print("%P\t.a%P\n", p, p1); print("%P\t.a%P\n", p, p1);
} }
ulong uint32
doregbits(int r) doregbits(int r)
{ {
ulong b; uint32 b;
b = 0; b = 0;
if(r >= D_INDIR) if(r >= D_INDIR)
...@@ -671,7 +671,7 @@ mkvar(Reg *r, Adr *a) ...@@ -671,7 +671,7 @@ mkvar(Reg *r, Adr *a)
{ {
Var *v; Var *v;
int i, t, n, et, z; int i, t, n, et, z;
long o; int32 o;
Bits bit; Bits bit;
Sym *s; Sym *s;
...@@ -817,8 +817,8 @@ prop(Reg *r, Bits ref, Bits cal) ...@@ -817,8 +817,8 @@ prop(Reg *r, Bits ref, Bits cal)
* such a node is a loop head. * such a node is a loop head.
* recursively, all preds with a greater rpo number are in the loop * recursively, all preds with a greater rpo number are in the loop
*/ */
long int32
postorder(Reg *r, Reg **rpo2r, long n) postorder(Reg *r, Reg **rpo2r, int32 n)
{ {
Reg *r1; Reg *r1;
...@@ -834,10 +834,10 @@ postorder(Reg *r, Reg **rpo2r, long n) ...@@ -834,10 +834,10 @@ postorder(Reg *r, Reg **rpo2r, long n)
return n; return n;
} }
long int32
rpolca(long *idom, long rpo1, long rpo2) rpolca(int32 *idom, int32 rpo1, int32 rpo2)
{ {
long t; int32 t;
if(rpo1 == -1) if(rpo1 == -1)
return rpo2; return rpo2;
...@@ -858,7 +858,7 @@ rpolca(long *idom, long rpo1, long rpo2) ...@@ -858,7 +858,7 @@ rpolca(long *idom, long rpo1, long rpo2)
} }
int int
doms(long *idom, long r, long s) doms(int32 *idom, int32 r, int32 s)
{ {
while(s > r) while(s > r)
s = idom[s]; s = idom[s];
...@@ -866,9 +866,9 @@ doms(long *idom, long r, long s) ...@@ -866,9 +866,9 @@ doms(long *idom, long r, long s)
} }
int int
loophead(long *idom, Reg *r) loophead(int32 *idom, Reg *r)
{ {
long src; int32 src;
src = r->rpo; src = r->rpo;
if(r->p1 != R && doms(idom, src, r->p1->rpo)) if(r->p1 != R && doms(idom, src, r->p1->rpo))
...@@ -880,7 +880,7 @@ loophead(long *idom, Reg *r) ...@@ -880,7 +880,7 @@ loophead(long *idom, Reg *r)
} }
void void
loopmark(Reg **rpo2r, long head, Reg *r) loopmark(Reg **rpo2r, int32 head, Reg *r)
{ {
if(r->rpo < head || r->active == head) if(r->rpo < head || r->active == head)
return; return;
...@@ -893,14 +893,14 @@ loopmark(Reg **rpo2r, long head, Reg *r) ...@@ -893,14 +893,14 @@ loopmark(Reg **rpo2r, long head, Reg *r)
} }
void void
loopit(Reg *r, long nr) loopit(Reg *r, int32 nr)
{ {
Reg *r1; Reg *r1;
long i, d, me; int32 i, d, me;
if(nr > maxnr) { if(nr > maxnr) {
rpo2r = alloc(nr * sizeof(Reg*)); rpo2r = alloc(nr * sizeof(Reg*));
idom = alloc(nr * sizeof(long)); idom = alloc(nr * sizeof(int32));
maxnr = nr; maxnr = nr;
} }
...@@ -963,8 +963,8 @@ synch(Reg *r, Bits dif) ...@@ -963,8 +963,8 @@ synch(Reg *r, Bits dif)
} }
} }
ulong uint32
allreg(ulong b, Rgn *r) allreg(uint32 b, Rgn *r)
{ {
Var *v; Var *v;
int i; int i;
...@@ -1007,7 +1007,7 @@ paint1(Reg *r, int bn) ...@@ -1007,7 +1007,7 @@ paint1(Reg *r, int bn)
Reg *r1; Reg *r1;
Prog *p; Prog *p;
int z; int z;
ulong bb; uint32 bb;
z = bn/32; z = bn/32;
bb = 1L<<(bn%32); bb = 1L<<(bn%32);
...@@ -1087,10 +1087,10 @@ paint1(Reg *r, int bn) ...@@ -1087,10 +1087,10 @@ paint1(Reg *r, int bn)
} }
} }
ulong uint32
regset(Reg *r, ulong bb) regset(Reg *r, uint32 bb)
{ {
ulong b, set; uint32 b, set;
Adr v; Adr v;
int c; int c;
...@@ -1106,10 +1106,10 @@ regset(Reg *r, ulong bb) ...@@ -1106,10 +1106,10 @@ regset(Reg *r, ulong bb)
return set; return set;
} }
ulong uint32
reguse(Reg *r, ulong bb) reguse(Reg *r, uint32 bb)
{ {
ulong b, set; uint32 b, set;
Adr v; Adr v;
int c; int c;
...@@ -1125,12 +1125,12 @@ reguse(Reg *r, ulong bb) ...@@ -1125,12 +1125,12 @@ reguse(Reg *r, ulong bb)
return set; return set;
} }
ulong uint32
paint2(Reg *r, int bn) paint2(Reg *r, int bn)
{ {
Reg *r1; Reg *r1;
int z; int z;
ulong bb, vreg, x; uint32 bb, vreg, x;
z = bn/32; z = bn/32;
bb = 1L << (bn%32); bb = 1L << (bn%32);
...@@ -1186,12 +1186,12 @@ paint2(Reg *r, int bn) ...@@ -1186,12 +1186,12 @@ paint2(Reg *r, int bn)
} }
void void
paint3(Reg *r, int bn, long rb, int rn) paint3(Reg *r, int bn, int32 rb, int rn)
{ {
Reg *r1; Reg *r1;
Prog *p; Prog *p;
int z; int z;
ulong bb; uint32 bb;
z = bn/32; z = bn/32;
bb = 1L << (bn%32); bb = 1L << (bn%32);
...@@ -1265,7 +1265,7 @@ addreg(Adr *a, int rn) ...@@ -1265,7 +1265,7 @@ addreg(Adr *a, int rn)
a->type = rn; a->type = rn;
} }
long int32
RtoB(int r) RtoB(int r)
{ {
...@@ -1275,7 +1275,7 @@ RtoB(int r) ...@@ -1275,7 +1275,7 @@ RtoB(int r)
} }
int int
BtoR(long b) BtoR(int32 b)
{ {
b &= 0xffL; b &= 0xffL;
......
...@@ -93,7 +93,7 @@ codgen(Node *n, Node *nn) ...@@ -93,7 +93,7 @@ codgen(Node *n, Node *nn)
void void
supgen(Node *n) supgen(Node *n)
{ {
long spc; int32 spc;
Prog *sp; Prog *sp;
if(n == Z) if(n == Z)
...@@ -114,7 +114,7 @@ gen(Node *n) ...@@ -114,7 +114,7 @@ gen(Node *n)
Node *l, nod; Node *l, nod;
Prog *sp, *spc, *spb; Prog *sp, *spc, *spb;
Case *cn; Case *cn;
long sbc, scc; int32 sbc, scc;
int f, o; int f, o;
loop: loop:
......
...@@ -47,7 +47,7 @@ doswit(Node *n) ...@@ -47,7 +47,7 @@ doswit(Node *n)
{ {
Case *c; Case *c;
C1 *q, *iq; C1 *q, *iq;
long def, nc, i; int32 def, nc, i;
def = 0; def = 0;
nc = 0; nc = 0;
...@@ -83,7 +83,7 @@ doswit(Node *n) ...@@ -83,7 +83,7 @@ doswit(Node *n)
} }
void void
swit1(C1 *q, int nc, long def, Node *n) swit1(C1 *q, int nc, int32 def, Node *n)
{ {
C1 *r; C1 *r;
int i; int i;
...@@ -132,7 +132,7 @@ void ...@@ -132,7 +132,7 @@ void
bitload(Node *b, Node *n1, Node *n2, Node *n3, Node *nn) bitload(Node *b, Node *n1, Node *n2, Node *n3, Node *nn)
{ {
int sh; int sh;
long v; int32 v;
Node *l; Node *l;
/* /*
...@@ -170,7 +170,7 @@ bitload(Node *b, Node *n1, Node *n2, Node *n3, Node *nn) ...@@ -170,7 +170,7 @@ bitload(Node *b, Node *n1, Node *n2, Node *n3, Node *nn)
void void
bitstore(Node *b, Node *n1, Node *n2, Node *n3, Node *nn) bitstore(Node *b, Node *n1, Node *n2, Node *n3, Node *nn)
{ {
long v; int32 v;
Node nod; Node nod;
int sh; int sh;
...@@ -194,10 +194,10 @@ bitstore(Node *b, Node *n1, Node *n2, Node *n3, Node *nn) ...@@ -194,10 +194,10 @@ bitstore(Node *b, Node *n1, Node *n2, Node *n3, Node *nn)
regfree(n3); regfree(n3);
} }
long int32
outstring(char *s, long n) outstring(char *s, int32 n)
{ {
long r; int32 r;
if(suppress) if(suppress)
return nstring; return nstring;
...@@ -219,12 +219,12 @@ outstring(char *s, long n) ...@@ -219,12 +219,12 @@ outstring(char *s, long n)
return r; return r;
} }
long int32
outlstring(ushort *s, long n) outlstring(ushort *s, int32 n)
{ {
char buf[2]; char buf[2];
int c; int c;
long r; int32 r;
if(suppress) if(suppress)
return nstring; return nstring;
...@@ -257,9 +257,9 @@ nullwarn(Node *l, Node *r) ...@@ -257,9 +257,9 @@ nullwarn(Node *l, Node *r)
} }
void void
sextern(Sym *s, Node *a, long o, long w) sextern(Sym *s, Node *a, int32 o, int32 w)
{ {
long e, lw; int32 e, lw;
for(e=0; e<w; e+=NSNAME) { for(e=0; e<w; e+=NSNAME) {
lw = NSNAME; lw = NSNAME;
...@@ -274,7 +274,7 @@ sextern(Sym *s, Node *a, long o, long w) ...@@ -274,7 +274,7 @@ sextern(Sym *s, Node *a, long o, long w)
} }
void void
gextern(Sym *s, Node *a, long o, long w) gextern(Sym *s, Node *a, int32 o, int32 w)
{ {
if(a->op == OCONST && typev[a->type->etype]) { if(a->op == OCONST && typev[a->type->etype]) {
gpseudo(ADATA, s, lo64(a)); gpseudo(ADATA, s, lo64(a));
...@@ -477,7 +477,7 @@ void ...@@ -477,7 +477,7 @@ void
zname(Biobuf *b, Sym *s, int t) zname(Biobuf *b, Sym *s, int t)
{ {
char *n; char *n;
ulong sig; uint32 sig;
if(debug['T'] && t == D_EXTERN && s->sig != SIGDONE && s->type != types[TENUM] && s != symrathole){ if(debug['T'] && t == D_EXTERN && s->sig != SIGDONE && s->type != types[TENUM] && s != symrathole){
sig = sign(s); sig = sign(s);
...@@ -506,7 +506,7 @@ zname(Biobuf *b, Sym *s, int t) ...@@ -506,7 +506,7 @@ zname(Biobuf *b, Sym *s, int t)
void void
zaddr(Biobuf *b, Adr *a, int s) zaddr(Biobuf *b, Adr *a, int s)
{ {
long l; int32 l;
int i, t; int i, t;
char *n; char *n;
Ieee e; Ieee e;
...@@ -598,13 +598,13 @@ ieeedtod(Ieee *ieee, double native) ...@@ -598,13 +598,13 @@ ieeedtod(Ieee *ieee, double native)
fr = modf(fr*f, &ho); fr = modf(fr*f, &ho);
ieee->l = ho; ieee->l = ho;
ieee->l <<= 16; ieee->l <<= 16;
ieee->l |= (long)(fr*f); ieee->l |= (int32)(fr*f);
} }
long int32
align(long i, Type *t, int op) align(int32 i, Type *t, int op)
{ {
long o; int32 o;
Type *v; Type *v;
int w; int w;
...@@ -661,17 +661,17 @@ align(long i, Type *t, int op) ...@@ -661,17 +661,17 @@ align(long i, Type *t, int op)
o = align(o, t, Ael2); o = align(o, t, Ael2);
break; break;
} }
o = round(o, w); o = xround(o, w);
if(debug['A']) if(debug['A'])
print("align %s %ld %T = %ld\n", bnames[op], i, t, o); print("align %s %ld %T = %ld\n", bnames[op], i, t, o);
return o; return o;
} }
long int32
maxround(long max, long v) maxround(int32 max, int32 v)
{ {
v += SZ_LONG-1; v += SZ_LONG-1;
if(v > max) if(v > max)
max = round(v, SZ_LONG); max = xround(v, SZ_LONG);
return max; return max;
} }
...@@ -173,7 +173,7 @@ nextpc(void) ...@@ -173,7 +173,7 @@ nextpc(void)
void void
gargs(Node *n, Node *tn1, Node *tn2) gargs(Node *n, Node *tn1, Node *tn2)
{ {
long regs; int32 regs;
Node fnxargs[20], *fnxp; Node fnxargs[20], *fnxp;
regs = cursafe; regs = cursafe;
...@@ -259,7 +259,7 @@ garg1(Node *n, Node *tn1, Node *tn2, int f, Node **fnxp) ...@@ -259,7 +259,7 @@ garg1(Node *n, Node *tn1, Node *tn2, int f, Node **fnxp)
} }
Node* Node*
nodconst(long v) nodconst(int32 v)
{ {
constnode.vconst = v; constnode.vconst = v;
return &constnode; return &constnode;
...@@ -433,7 +433,7 @@ regind(Node *n, Node *nn) ...@@ -433,7 +433,7 @@ regind(Node *n, Node *nn)
void void
naddr(Node *n, Adr *a) naddr(Node *n, Adr *a)
{ {
long v; int32 v;
a->type = D_NONE; a->type = D_NONE;
if(n == Z) if(n == Z)
...@@ -938,7 +938,7 @@ void ...@@ -938,7 +938,7 @@ void
doindex(Node *n) doindex(Node *n)
{ {
Node nod, nod1; Node nod, nod1;
long v; int32 v;
if(debug['Y']) if(debug['Y'])
prtree(n, "index"); prtree(n, "index");
...@@ -1348,7 +1348,7 @@ gbranch(int o) ...@@ -1348,7 +1348,7 @@ gbranch(int o)
} }
void void
patch(Prog *op, long pc) patch(Prog *op, int32 pc)
{ {
op->to.offset = pc; op->to.offset = pc;
...@@ -1374,7 +1374,7 @@ gpseudo(int a, Sym *s, Node *n) ...@@ -1374,7 +1374,7 @@ gpseudo(int a, Sym *s, Node *n)
int int
sconst(Node *n) sconst(Node *n)
{ {
long v; int32 v;
if(n->op == OCONST && !typefd[n->type->etype]) { if(n->op == OCONST && !typefd[n->type->etype]) {
v = n->vconst; v = n->vconst;
...@@ -1384,7 +1384,7 @@ sconst(Node *n) ...@@ -1384,7 +1384,7 @@ sconst(Node *n)
return 0; return 0;
} }
long int32
exreg(Type *t) exreg(Type *t)
{ {
...@@ -1415,7 +1415,7 @@ schar ewidth[NTYPE] = ...@@ -1415,7 +1415,7 @@ schar ewidth[NTYPE] =
-1, /*[TUNION]*/ -1, /*[TUNION]*/
SZ_INT, /*[TENUM]*/ SZ_INT, /*[TENUM]*/
}; };
long ncast[NTYPE] = int32 ncast[NTYPE] =
{ {
0, /*[TXXX]*/ 0, /*[TXXX]*/
BCHAR|BUCHAR, /*[TCHAR]*/ BCHAR|BUCHAR, /*[TCHAR]*/
......
...@@ -468,8 +468,8 @@ enum ...@@ -468,8 +468,8 @@ enum
typedef struct ieee Ieee; typedef struct ieee Ieee;
struct ieee struct ieee
{ {
long l; /* contains ls-man 0xffffffff */ int32 l; /* contains ls-man 0xffffffff */
long h; /* contains sign 0x80000000 int32 h; /* contains sign 0x80000000
exp 0x7ff00000 exp 0x7ff00000
ms-man 0x000fffff */ ms-man 0x000fffff */
}; };
# Copyright 2009 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
include ../../Make.conf
TARG=\
8l\
OFILES=\
asm.$O\
compat.$O\
enam.$O\
list.$O\
obj.$O\
optab.$O\
pass.$O\
span.$O\
HFILES=\
l.h\
../8l/8.out.h\
$(TARG): $(OFILES)
$(LD) -o $(TARG) -L$(GOROOT)/lib $(OFILES) -lbio -l9
$(OFILES): $(HFILES)
enam.c: 8.out.h
sh mkenam
clean:
rm -f $(OFILES) $(TARG) *.8 enam.c 8.out a.out
install: $(TARG)
cp $(TARG) $(BIN)/$(TARG)
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
#define Dbufslop 100 #define Dbufslop 100
long int32
entryvalue(void) entryvalue(void)
{ {
char *a; char *a;
...@@ -74,7 +74,7 @@ void ...@@ -74,7 +74,7 @@ void
asmb(void) asmb(void)
{ {
Prog *p; Prog *p;
long v, magic; int32 v, magic;
int a; int a;
uchar *op1; uchar *op1;
...@@ -335,7 +335,7 @@ asmb(void) ...@@ -335,7 +335,7 @@ asmb(void)
} }
void void
lput(long l) lput(int32 l)
{ {
cput(l>>24); cput(l>>24);
cput(l>>16); cput(l>>16);
...@@ -344,7 +344,7 @@ lput(long l) ...@@ -344,7 +344,7 @@ lput(long l)
} }
void void
lputl(long l) lputl(int32 l)
{ {
cput(l); cput(l);
cput(l>>8); cput(l>>8);
...@@ -376,11 +376,11 @@ cflush(void) ...@@ -376,11 +376,11 @@ cflush(void)
} }
void void
datblk(long s, long n) datblk(int32 s, int32 n)
{ {
Prog *p; Prog *p;
char *cast; char *cast;
long l, fl, j; int32 l, fl, j;
int i, c; int i, c;
memset(buf.dbuf, 0, n+Dbufslop); memset(buf.dbuf, 0, n+Dbufslop);
...@@ -516,10 +516,10 @@ datblk(long s, long n) ...@@ -516,10 +516,10 @@ datblk(long s, long n)
write(cout, buf.dbuf, n); write(cout, buf.dbuf, n);
} }
long int32
rnd(long v, long r) rnd(int32 v, int32 r)
{ {
long c; int32 c;
if(r <= 0) if(r <= 0)
return v; return v;
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#include <lib9.h> #include <lib9.h>
#include <bio.h> #include <bio.h>
#include "../8c/8.out.h" #include "../8l/8.out.h"
#ifndef EXTERN #ifndef EXTERN
#define EXTERN extern #define EXTERN extern
...@@ -54,7 +54,7 @@ struct Adr ...@@ -54,7 +54,7 @@ struct Adr
{ {
union union
{ {
long u0offset; int32 u0offset;
char u0scon[8]; char u0scon[8];
Prog *u0cond; /* not used, but should be D_BRANCH */ Prog *u0cond; /* not used, but should be D_BRANCH */
Ieee u0ieee; Ieee u0ieee;
...@@ -65,7 +65,7 @@ struct Adr ...@@ -65,7 +65,7 @@ struct Adr
Sym* u1sym; Sym* u1sym;
} u1; } u1;
short type; short type;
char index; uchar index;
char scale; char scale;
}; };
...@@ -84,8 +84,8 @@ struct Prog ...@@ -84,8 +84,8 @@ struct Prog
Prog *forwd; Prog *forwd;
Prog* link; Prog* link;
Prog* pcond; /* work on this */ Prog* pcond; /* work on this */
long pc; int32 pc;
long line; int32 line;
uchar mark; /* work on these */ uchar mark; /* work on these */
uchar back; uchar back;
...@@ -96,7 +96,7 @@ struct Auto ...@@ -96,7 +96,7 @@ struct Auto
{ {
Sym* asym; Sym* asym;
Auto* link; Auto* link;
long aoffset; int32 aoffset;
short type; short type;
}; };
struct Sym struct Sym
...@@ -108,8 +108,8 @@ struct Sym ...@@ -108,8 +108,8 @@ struct Sym
short frame; short frame;
uchar subtype; uchar subtype;
ushort file; ushort file;
long value; int32 value;
long sig; int32 sig;
Sym* link; Sym* link;
}; };
struct Optab struct Optab
...@@ -232,15 +232,15 @@ EXTERN union ...@@ -232,15 +232,15 @@ EXTERN union
#pragma varargck type "R" int #pragma varargck type "R" int
#pragma varargck type "S" char* #pragma varargck type "S" char*
EXTERN long HEADR; EXTERN int32 HEADR;
EXTERN long HEADTYPE; EXTERN int32 HEADTYPE;
EXTERN long INITDAT; EXTERN int32 INITDAT;
EXTERN long INITRND; EXTERN int32 INITRND;
EXTERN long INITTEXT; EXTERN int32 INITTEXT;
EXTERN char* INITENTRY; /* entry point */ EXTERN char* INITENTRY; /* entry point */
EXTERN Biobuf bso; EXTERN Biobuf bso;
EXTERN long bsssize; EXTERN int32 bsssize;
EXTERN long casepc; EXTERN int32 casepc;
EXTERN int cbc; EXTERN int cbc;
EXTERN char* cbp; EXTERN char* cbp;
EXTERN char* pcstr; EXTERN char* pcstr;
...@@ -251,13 +251,13 @@ EXTERN Prog* curp; ...@@ -251,13 +251,13 @@ EXTERN Prog* curp;
EXTERN Prog* curtext; EXTERN Prog* curtext;
EXTERN Prog* datap; EXTERN Prog* datap;
EXTERN Prog* edatap; EXTERN Prog* edatap;
EXTERN long datsize; EXTERN int32 datsize;
EXTERN char debug[128]; EXTERN char debug[128];
EXTERN char literal[32]; EXTERN char literal[32];
EXTERN Prog* etextp; EXTERN Prog* etextp;
EXTERN Prog* firstp; EXTERN Prog* firstp;
EXTERN char fnuxi8[8]; EXTERN uchar fnuxi8[8];
EXTERN char fnuxi4[4]; EXTERN uchar fnuxi4[4];
EXTERN Sym* hash[NHASH]; EXTERN Sym* hash[NHASH];
EXTERN Sym* histfrog[MAXHIST]; EXTERN Sym* histfrog[MAXHIST];
EXTERN int histfrogp; EXTERN int histfrogp;
...@@ -266,29 +266,27 @@ EXTERN char* library[50]; ...@@ -266,29 +266,27 @@ EXTERN char* library[50];
EXTERN char* libraryobj[50]; EXTERN char* libraryobj[50];
EXTERN int libraryp; EXTERN int libraryp;
EXTERN int xrefresolv; EXTERN int xrefresolv;
EXTERN char* hunk; EXTERN uchar inuxi1[1];
EXTERN char inuxi1[1]; EXTERN uchar inuxi2[2];
EXTERN char inuxi2[2]; EXTERN uchar inuxi4[4];
EXTERN char inuxi4[4]; EXTERN uchar ycover[Ymax*Ymax];
EXTERN char ycover[Ymax*Ymax];
EXTERN uchar* andptr; EXTERN uchar* andptr;
EXTERN uchar and[30]; EXTERN uchar and[30];
EXTERN char reg[D_NONE]; EXTERN char reg[D_NONE];
EXTERN Prog* lastp; EXTERN Prog* lastp;
EXTERN long lcsize; EXTERN int32 lcsize;
EXTERN int maxop; EXTERN int maxop;
EXTERN int nerrors; EXTERN int nerrors;
EXTERN long nhunk; EXTERN int32 nsymbol;
EXTERN long nsymbol;
EXTERN char* noname; EXTERN char* noname;
EXTERN char* outfile; EXTERN char* outfile;
EXTERN long pc; EXTERN int32 pc;
EXTERN long spsize; EXTERN int32 spsize;
EXTERN Sym* symlist; EXTERN Sym* symlist;
EXTERN long symsize; EXTERN int32 symsize;
EXTERN Prog* textp; EXTERN Prog* textp;
EXTERN long textsize; EXTERN int32 textsize;
EXTERN long thunk; EXTERN int32 thunk;
EXTERN int version; EXTERN int version;
EXTERN Prog zprg; EXTERN Prog zprg;
EXTERN int dtype; EXTERN int dtype;
...@@ -310,7 +308,7 @@ int Dconv(Fmt*); ...@@ -310,7 +308,7 @@ int Dconv(Fmt*);
int Pconv(Fmt*); int Pconv(Fmt*);
int Rconv(Fmt*); int Rconv(Fmt*);
int Sconv(Fmt*); int Sconv(Fmt*);
void addhist(long, int); void addhist(int32, int);
Prog* appendp(Prog*); Prog* appendp(Prog*);
void asmb(void); void asmb(void);
void asmdyn(void); void asmdyn(void);
...@@ -318,41 +316,41 @@ void asmins(Prog*); ...@@ -318,41 +316,41 @@ void asmins(Prog*);
void asmlc(void); void asmlc(void);
void asmsp(void); void asmsp(void);
void asmsym(void); void asmsym(void);
long atolwhex(char*); int32 atolwhex(char*);
Prog* brchain(Prog*); Prog* brchain(Prog*);
Prog* brloop(Prog*); Prog* brloop(Prog*);
void cflush(void); void cflush(void);
void ckoff(Sym*, long); void ckoff(Sym*, int32);
Prog* copyp(Prog*); Prog* copyp(Prog*);
double cputime(void); double cputime(void);
void datblk(long, long); void datblk(int32, int32);
void diag(char*, ...); void diag(char*, ...);
void dodata(void); void dodata(void);
void doinit(void); void doinit(void);
void doprof1(void); void doprof1(void);
void doprof2(void); void doprof2(void);
void dostkoff(void); void dostkoff(void);
void dynreloc(Sym*, ulong, int); void dynreloc(Sym*, uint32, int);
long entryvalue(void); int32 entryvalue(void);
void errorexit(void); void errorexit(void);
void export(void); void export(void);
int find1(long, int); int find1(int32, int);
int find2(long, int); int find2(int32, int);
void follow(void); void follow(void);
void gethunk(void); void gethunk(void);
void histtoauto(void); void histtoauto(void);
double ieeedtod(Ieee*); double ieeedtod(Ieee*);
long ieeedtof(Ieee*); int32 ieeedtof(Ieee*);
void import(void); void import(void);
void ldobj(int, long, char*); void ldobj(int, int32, char*);
void loadlib(void); void loadlib(void);
void listinit(void); void listinit(void);
Sym* lookup(char*, int); Sym* lookup(char*, int);
void lput(long); void lput(int32);
void lputl(long); void lputl(int32);
void main(int, char*[]); void main(int, char*[]);
void mkfwd(void); void mkfwd(void);
void* mysbrk(ulong); void* mal(uint32);
void nuxiinit(void); void nuxiinit(void);
void objfile(char*); void objfile(char*);
int opsize(Prog*); int opsize(Prog*);
...@@ -360,15 +358,15 @@ void patch(void); ...@@ -360,15 +358,15 @@ void patch(void);
Prog* prg(void); Prog* prg(void);
void readundefs(char*, int); void readundefs(char*, int);
int relinv(int); int relinv(int);
long reuse(Prog*, Sym*); int32 reuse(Prog*, Sym*);
long rnd(long, long); int32 rnd(int32, int32);
void s8put(char*); void s8put(char*);
void span(void); void span(void);
void undef(void); void undef(void);
void undefsym(Sym*); void undefsym(Sym*);
long vaddr(Adr*); int32 vaddr(Adr*);
void wputb(ushort); void wputb(ushort);
void xdefine(char*, int, long); void xdefine(char*, int, int32);
void xfol(Prog*); void xfol(Prog*);
int zaddr(uchar*, Adr*, Sym*[]); int zaddr(uchar*, Adr*, Sym*[]);
void zerosig(char*); void zerosig(char*);
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE. # THE SOFTWARE.
ed - ../8c/8.out.h <<'!' ed - ../8l/8.out.h <<'!'
v/^ A/d v/^ A/d
,s/^ A/ "/ ,s/^ A/ "/
g/ .*$/s/// g/ .*$/s///
......
...@@ -354,7 +354,7 @@ void ...@@ -354,7 +354,7 @@ void
loadlib(void) loadlib(void)
{ {
int i; int i;
long h; int32 h;
Sym *s; Sym *s;
loop: loop:
...@@ -386,7 +386,7 @@ errorexit(void) ...@@ -386,7 +386,7 @@ errorexit(void)
void void
objfile(char *file) objfile(char *file)
{ {
long off, esym, cnt, l; int32 off, esym, cnt, l;
int f, work; int f, work;
Sym *s; Sym *s;
char magbuf[SARMAG]; char magbuf[SARMAG];
...@@ -494,7 +494,7 @@ int ...@@ -494,7 +494,7 @@ int
zaddr(uchar *p, Adr *a, Sym *h[]) zaddr(uchar *p, Adr *a, Sym *h[])
{ {
int c, t, i; int c, t, i;
long l; int32 l;
Sym *s; Sym *s;
Auto *u; Auto *u;
...@@ -553,12 +553,7 @@ zaddr(uchar *p, Adr *a, Sym *h[]) ...@@ -553,12 +553,7 @@ zaddr(uchar *p, Adr *a, Sym *h[])
} }
} }
while(nhunk < sizeof(Auto)) u = mal(sizeof(Auto));
gethunk();
u = (Auto*)hunk;
nhunk -= sizeof(Auto);
hunk += sizeof(Auto);
u->link = curauto; u->link = curauto;
curauto = u; curauto = u;
u->asym = s; u->asym = s;
...@@ -636,7 +631,7 @@ addlib(char *obj) ...@@ -636,7 +631,7 @@ addlib(char *obj)
} }
void void
addhist(long line, int type) addhist(int32 line, int type)
{ {
Auto *u; Auto *u;
Sym *s; Sym *s;
...@@ -737,14 +732,14 @@ readsome(int f, uchar *buf, uchar *good, uchar *stop, int max) ...@@ -737,14 +732,14 @@ readsome(int f, uchar *buf, uchar *good, uchar *stop, int max)
} }
void void
ldobj(int f, long c, char *pn) ldobj(int f, int32 c, char *pn)
{ {
long ipc; int32 ipc;
Prog *p, *t; Prog *p, *t;
uchar *bloc, *bsize, *stop; uchar *bloc, *bsize, *stop;
int v, o, r, skip; int v, o, r, skip;
Sym *h[NSYM], *s, *di; Sym *h[NSYM], *s, *di;
ulong sig; uint32 sig;
static int files; static int files;
static char **filen; static char **filen;
char **nfilen; char **nfilen;
...@@ -848,12 +843,7 @@ loop: ...@@ -848,12 +843,7 @@ loop:
goto loop; goto loop;
} }
while(nhunk < sizeof(Prog)) p = mal(sizeof(*p));
gethunk();
p = (Prog*)hunk;
nhunk -= sizeof(Prog);
hunk += sizeof(Prog);
p->as = o; p->as = o;
p->line = bloc[2] | (bloc[3] << 8) | (bloc[4] << 16) | (bloc[5] << 24); p->line = bloc[2] | (bloc[3] << 8) | (bloc[4] << 16) | (bloc[5] << 24);
p->back = 2; p->back = 2;
...@@ -1096,7 +1086,7 @@ lookup(char *symb, int v) ...@@ -1096,7 +1086,7 @@ lookup(char *symb, int v)
{ {
Sym *s; Sym *s;
char *p; char *p;
long h; int32 h;
int l, c; int l, c;
h = v; h = v;
...@@ -1111,12 +1101,7 @@ lookup(char *symb, int v) ...@@ -1111,12 +1101,7 @@ lookup(char *symb, int v)
if(memcmp(s->name, symb, l) == 0) if(memcmp(s->name, symb, l) == 0)
return s; return s;
while(nhunk < sizeof(Sym)) s = mal(sizeof(Sym));
gethunk();
s = (Sym*)hunk;
nhunk -= sizeof(Sym);
hunk += sizeof(Sym);
s->name = malloc(l + 1); s->name = malloc(l + 1);
memmove(s->name, symb, l); memmove(s->name, symb, l);
...@@ -1135,12 +1120,7 @@ prg(void) ...@@ -1135,12 +1120,7 @@ prg(void)
{ {
Prog *p; Prog *p;
while(nhunk < sizeof(Prog)) p = mal(sizeof(Prog));
gethunk();
p = (Prog*)hunk;
nhunk -= sizeof(Prog);
hunk += sizeof(Prog);
*p = zprg; *p = zprg;
return p; return p;
} }
...@@ -1167,33 +1147,11 @@ appendp(Prog *q) ...@@ -1167,33 +1147,11 @@ appendp(Prog *q)
return p; return p;
} }
void
gethunk(void)
{
char *h;
long nh;
nh = NHUNK;
if(thunk >= 5L*NHUNK) {
nh = 5L*NHUNK;
if(thunk >= 25L*NHUNK)
nh = 25L*NHUNK;
}
h = mysbrk(nh);
if(h == (char*)-1) {
diag("out of memory");
errorexit();
}
hunk = h;
nhunk = nh;
thunk += nh;
}
void void
doprof1(void) doprof1(void)
{ {
Sym *s; Sym *s;
long n; int32 n;
Prog *p, *q; Prog *p, *q;
if(debug['v']) if(debug['v'])
...@@ -1377,7 +1335,7 @@ nuxiinit(void) ...@@ -1377,7 +1335,7 @@ nuxiinit(void)
} }
int int
find1(long l, int c) find1(int32 l, int c)
{ {
char *p; char *p;
int i; int i;
...@@ -1390,7 +1348,7 @@ find1(long l, int c) ...@@ -1390,7 +1348,7 @@ find1(long l, int c)
} }
int int
find2(long l, int c) find2(int32 l, int c)
{ {
short *p; short *p;
int i; int i;
...@@ -1405,11 +1363,11 @@ find2(long l, int c) ...@@ -1405,11 +1363,11 @@ find2(long l, int c)
return 0; return 0;
} }
long int32
ieeedtof(Ieee *e) ieeedtof(Ieee *e)
{ {
int exp; int exp;
long v; int32 v;
if(e->h == 0) if(e->h == 0)
return 0; return 0;
......
...@@ -36,7 +36,7 @@ dodata(void) ...@@ -36,7 +36,7 @@ dodata(void)
int i; int i;
Sym *s; Sym *s;
Prog *p; Prog *p;
long t, u; int32 t, u;
if(debug['v']) if(debug['v'])
Bprint(&bso, "%5.2f dodata\n", cputime()); Bprint(&bso, "%5.2f dodata\n", cputime());
...@@ -314,10 +314,10 @@ doinit(void) ...@@ -314,10 +314,10 @@ doinit(void)
void void
patch(void) patch(void)
{ {
long c; int32 c;
Prog *p, *q; Prog *p, *q;
Sym *s; Sym *s;
long vexit; int32 vexit;
if(debug['v']) if(debug['v'])
Bprint(&bso, "%5.2f mkfwd\n", cputime()); Bprint(&bso, "%5.2f mkfwd\n", cputime());
...@@ -392,7 +392,7 @@ mkfwd(void) ...@@ -392,7 +392,7 @@ mkfwd(void)
{ {
Prog *p; Prog *p;
int i; int i;
long dwn[LOG], cnt[LOG]; int32 dwn[LOG], cnt[LOG];
Prog *lst[LOG]; Prog *lst[LOG];
for(i=0; i<LOG; i++) { for(i=0; i<LOG; i++) {
...@@ -441,7 +441,7 @@ void ...@@ -441,7 +441,7 @@ void
dostkoff(void) dostkoff(void)
{ {
Prog *p, *q; Prog *p, *q;
long autoffset, deltasp; int32 autoffset, deltasp;
int a, f, curframe, curbecome, maxbecome; int a, f, curframe, curbecome, maxbecome;
curframe = 0; curframe = 0;
...@@ -595,10 +595,10 @@ dostkoff(void) ...@@ -595,10 +595,10 @@ dostkoff(void)
} }
} }
long int32
atolwhex(char *s) atolwhex(char *s)
{ {
long n; int32 n;
int f; int f;
n = 0; n = 0;
...@@ -666,7 +666,7 @@ import(void) ...@@ -666,7 +666,7 @@ import(void)
} }
void void
ckoff(Sym *s, long v) ckoff(Sym *s, int32 v)
{ {
if(v < 0 || v >= 1<<Roffset) if(v < 0 || v >= 1<<Roffset)
diag("relocation offset %ld for %s out of range", v, s->name); diag("relocation offset %ld for %s out of range", v, s->name);
...@@ -738,13 +738,13 @@ export(void) ...@@ -738,13 +738,13 @@ export(void)
/* Bprint(&bso, "EXPORT: %s sig=%lux t=%d\n", s->name, s->sig, s->type); */ /* Bprint(&bso, "EXPORT: %s sig=%lux t=%d\n", s->name, s->sig, s->type); */
/* signature */ /* signature */
p = newdata(et, off, sizeof(long), D_EXTERN); p = newdata(et, off, sizeof(int32), D_EXTERN);
off += sizeof(long); off += sizeof(int32);
p->to.offset = s->sig; p->to.offset = s->sig;
/* address */ /* address */
p = newdata(et, off, sizeof(long), D_EXTERN); p = newdata(et, off, sizeof(int32), D_EXTERN);
off += sizeof(long); off += sizeof(int32);
p->to.type = D_ADDR; p->to.type = D_ADDR;
p->to.index = D_EXTERN; p->to.index = D_EXTERN;
p->to.sym = s; p->to.sym = s;
...@@ -766,8 +766,8 @@ export(void) ...@@ -766,8 +766,8 @@ export(void)
} }
/* name */ /* name */
p = newdata(et, off, sizeof(long), D_EXTERN); p = newdata(et, off, sizeof(int32), D_EXTERN);
off += sizeof(long); off += sizeof(int32);
p->to.type = D_ADDR; p->to.type = D_ADDR;
p->to.index = D_STATIC; p->to.index = D_STATIC;
p->to.sym = str; p->to.sym = str;
...@@ -781,8 +781,8 @@ export(void) ...@@ -781,8 +781,8 @@ export(void)
} }
for(i = 0; i < 3; i++){ for(i = 0; i < 3; i++){
newdata(et, off, sizeof(long), D_EXTERN); newdata(et, off, sizeof(int32), D_EXTERN);
off += sizeof(long); off += sizeof(int32);
} }
et->value = off; et->value = off;
if(sv == 0) if(sv == 0)
......
...@@ -34,7 +34,7 @@ void ...@@ -34,7 +34,7 @@ void
span(void) span(void)
{ {
Prog *p, *q; Prog *p, *q;
long v, c, idat; int32 v, c, idat;
int m, n, again; int m, n, again;
xdefine("etext", STEXT, 0L); xdefine("etext", STEXT, 0L);
...@@ -132,7 +132,7 @@ loop: ...@@ -132,7 +132,7 @@ loop:
} }
void void
xdefine(char *p, int t, long v) xdefine(char *p, int t, int32 v)
{ {
Sym *s; Sym *s;
...@@ -146,7 +146,7 @@ xdefine(char *p, int t, long v) ...@@ -146,7 +146,7 @@ xdefine(char *p, int t, long v)
} }
void void
putsymb(char *s, int t, long v, int ver) putsymb(char *s, int t, int32 v, int ver)
{ {
int i, f; int i, f;
...@@ -256,9 +256,9 @@ asmsym(void) ...@@ -256,9 +256,9 @@ asmsym(void)
void void
asmlc(void) asmlc(void)
{ {
long oldpc, oldlc; int32 oldpc, oldlc;
Prog *p; Prog *p;
long v, s; int32 v, s;
oldpc = INITTEXT; oldpc = INITTEXT;
oldlc = 0; oldlc = 0;
...@@ -336,7 +336,7 @@ asmlc(void) ...@@ -336,7 +336,7 @@ asmlc(void)
int int
oclass(Adr *a) oclass(Adr *a)
{ {
long v; int32 v;
if(a->type >= D_INDIR || a->index != D_NONE) { if(a->type >= D_INDIR || a->index != D_NONE) {
if(a->index != D_NONE && a->scale == 0) { if(a->index != D_NONE && a->scale == 0) {
...@@ -530,7 +530,7 @@ bad: ...@@ -530,7 +530,7 @@ bad:
} }
static void static void
put4(long v) put4(int32 v)
{ {
if(dlm && curp != P && reloca != nil){ if(dlm && curp != P && reloca != nil){
dynreloc(reloca->sym, curp->pc + andptr - &and[0], 1); dynreloc(reloca->sym, curp->pc + andptr - &and[0], 1);
...@@ -543,11 +543,11 @@ put4(long v) ...@@ -543,11 +543,11 @@ put4(long v)
andptr += 4; andptr += 4;
} }
long int32
vaddr(Adr *a) vaddr(Adr *a)
{ {
int t; int t;
long v; int32 v;
Sym *s; Sym *s;
t = a->type; t = a->type;
...@@ -579,7 +579,7 @@ vaddr(Adr *a) ...@@ -579,7 +579,7 @@ vaddr(Adr *a)
void void
asmand(Adr *a, int r) asmand(Adr *a, int r)
{ {
long v; int32 v;
int t; int t;
Adr aa; Adr aa;
...@@ -851,7 +851,7 @@ doasm(Prog *p) ...@@ -851,7 +851,7 @@ doasm(Prog *p)
Prog *q, pp; Prog *q, pp;
uchar *t; uchar *t;
int z, op, ft, tt; int z, op, ft, tt;
long v; int32 v;
o = &optab[p->as]; o = &optab[p->as];
ft = oclass(&p->from) * Ymax; ft = oclass(&p->from) * Ymax;
...@@ -1279,7 +1279,7 @@ struct Reloc ...@@ -1279,7 +1279,7 @@ struct Reloc
int n; int n;
int t; int t;
uchar *m; uchar *m;
ulong *a; uint32 *a;
}; };
Reloc rels; Reloc rels;
...@@ -1289,26 +1289,26 @@ grow(Reloc *r) ...@@ -1289,26 +1289,26 @@ grow(Reloc *r)
{ {
int t; int t;
uchar *m, *nm; uchar *m, *nm;
ulong *a, *na; uint32 *a, *na;
t = r->t; t = r->t;
r->t += 64; r->t += 64;
m = r->m; m = r->m;
a = r->a; a = r->a;
r->m = nm = malloc(r->t*sizeof(uchar)); r->m = nm = malloc(r->t*sizeof(uchar));
r->a = na = malloc(r->t*sizeof(ulong)); r->a = na = malloc(r->t*sizeof(uint32));
memmove(nm, m, t*sizeof(uchar)); memmove(nm, m, t*sizeof(uchar));
memmove(na, a, t*sizeof(ulong)); memmove(na, a, t*sizeof(uint32));
free(m); free(m);
free(a); free(a);
} }
void void
dynreloc(Sym *s, ulong v, int abs) dynreloc(Sym *s, uint32 v, int abs)
{ {
int i, k, n; int i, k, n;
uchar *m; uchar *m;
ulong *a; uint32 *a;
Reloc *r; Reloc *r;
if(s->type == SUNDEF) if(s->type == SUNDEF)
...@@ -1353,7 +1353,7 @@ asmdyn() ...@@ -1353,7 +1353,7 @@ asmdyn()
{ {
int i, n, t, c; int i, n, t, c;
Sym *s; Sym *s;
ulong la, ra, *a; uint32 la, ra, *a;
vlong off; vlong off;
uchar *m; uchar *m;
Reloc *r; Reloc *r;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment