xref: /plan9/sys/src/cmd/5l/l.h (revision 8153b942127462338e00e239914941524d579a3b)
17dd7cddfSDavid du Colombier #include	<u.h>
27dd7cddfSDavid du Colombier #include	<libc.h>
37dd7cddfSDavid du Colombier #include	<bio.h>
47dd7cddfSDavid du Colombier #include	"../5c/5.out.h"
5*8153b942SDavid du Colombier #include	"../8l/elf.h"
67dd7cddfSDavid du Colombier 
77dd7cddfSDavid du Colombier #ifndef	EXTERN
87dd7cddfSDavid du Colombier #define	EXTERN	extern
97dd7cddfSDavid du Colombier #endif
107dd7cddfSDavid du Colombier 
11b87cd620SDavid du Colombier #define	LIBNAMELEN	300
12b87cd620SDavid du Colombier 
13b87cd620SDavid du Colombier void	addlibpath(char*);
14b87cd620SDavid du Colombier int	fileexists(char*);
15b87cd620SDavid du Colombier char*	findlib(char*);
167dd7cddfSDavid du Colombier 
177dd7cddfSDavid du Colombier typedef	struct	Adr	Adr;
187dd7cddfSDavid du Colombier typedef	struct	Sym	Sym;
197dd7cddfSDavid du Colombier typedef	struct	Autom	Auto;
207dd7cddfSDavid du Colombier typedef	struct	Prog	Prog;
217dd7cddfSDavid du Colombier typedef	struct	Optab	Optab;
227dd7cddfSDavid du Colombier typedef	struct	Oprang	Oprang;
237dd7cddfSDavid du Colombier typedef	uchar	Opcross[32][2][32];
247dd7cddfSDavid du Colombier typedef	struct	Count	Count;
257dd7cddfSDavid du Colombier 
267dd7cddfSDavid du Colombier #define	P		((Prog*)0)
277dd7cddfSDavid du Colombier #define	S		((Sym*)0)
287dd7cddfSDavid du Colombier #define	TNAME		(curtext&&curtext->from.sym?curtext->from.sym->name:noname)
297dd7cddfSDavid du Colombier 
307dd7cddfSDavid du Colombier struct	Adr
317dd7cddfSDavid du Colombier {
327dd7cddfSDavid du Colombier 	union
337dd7cddfSDavid du Colombier 	{
347dd7cddfSDavid du Colombier 		long	u0offset;
357dd7cddfSDavid du Colombier 		char*	u0sval;
367dd7cddfSDavid du Colombier 		Ieee*	u0ieee;
377dd7cddfSDavid du Colombier 	} u0;
387dd7cddfSDavid du Colombier 	union
397dd7cddfSDavid du Colombier 	{
407dd7cddfSDavid du Colombier 		Auto*	u1autom;
417dd7cddfSDavid du Colombier 		Sym*	u1sym;
427dd7cddfSDavid du Colombier 	} u1;
437dd7cddfSDavid du Colombier 	char	type;
447dd7cddfSDavid du Colombier 	char	reg;
457dd7cddfSDavid du Colombier 	char	name;
467dd7cddfSDavid du Colombier 	char	class;
477dd7cddfSDavid du Colombier };
487dd7cddfSDavid du Colombier 
497dd7cddfSDavid du Colombier #define	offset	u0.u0offset
507dd7cddfSDavid du Colombier #define	sval	u0.u0sval
517dd7cddfSDavid du Colombier #define	ieee	u0.u0ieee
527dd7cddfSDavid du Colombier 
537dd7cddfSDavid du Colombier #define	autom	u1.u1autom
547dd7cddfSDavid du Colombier #define	sym	u1.u1sym
557dd7cddfSDavid du Colombier 
567dd7cddfSDavid du Colombier struct	Prog
577dd7cddfSDavid du Colombier {
587dd7cddfSDavid du Colombier 	Adr	from;
597dd7cddfSDavid du Colombier 	Adr	to;
607dd7cddfSDavid du Colombier 	union
617dd7cddfSDavid du Colombier 	{
627dd7cddfSDavid du Colombier 		long	u0regused;
637dd7cddfSDavid du Colombier 		Prog*	u0forwd;
647dd7cddfSDavid du Colombier 	} u0;
657dd7cddfSDavid du Colombier 	Prog*	cond;
667dd7cddfSDavid du Colombier 	Prog*	link;
677dd7cddfSDavid du Colombier 	long	pc;
687dd7cddfSDavid du Colombier 	long	line;
697dd7cddfSDavid du Colombier 	uchar	mark;
707dd7cddfSDavid du Colombier 	uchar	optab;
717dd7cddfSDavid du Colombier 	uchar	as;
727dd7cddfSDavid du Colombier 	uchar	scond;
737dd7cddfSDavid du Colombier 	uchar	reg;
747dd7cddfSDavid du Colombier };
757dd7cddfSDavid du Colombier #define	regused	u0.u0regused
767dd7cddfSDavid du Colombier #define	forwd	u0.u0forwd
777dd7cddfSDavid du Colombier 
787dd7cddfSDavid du Colombier struct	Sym
797dd7cddfSDavid du Colombier {
807dd7cddfSDavid du Colombier 	char	*name;
817dd7cddfSDavid du Colombier 	short	type;
827dd7cddfSDavid du Colombier 	short	version;
837dd7cddfSDavid du Colombier 	short	become;
847dd7cddfSDavid du Colombier 	short	frame;
85375daca8SDavid du Colombier 	uchar	subtype;
86375daca8SDavid du Colombier 	ushort	file;
877dd7cddfSDavid du Colombier 	long	value;
88375daca8SDavid du Colombier 	long	sig;
897dd7cddfSDavid du Colombier 	Sym*	link;
907dd7cddfSDavid du Colombier };
91375daca8SDavid du Colombier 
92375daca8SDavid du Colombier #define SIGNINTERN	(1729*325*1729)
93375daca8SDavid du Colombier 
947dd7cddfSDavid du Colombier struct	Autom
957dd7cddfSDavid du Colombier {
967dd7cddfSDavid du Colombier 	Sym*	asym;
977dd7cddfSDavid du Colombier 	Auto*	link;
987dd7cddfSDavid du Colombier 	long	aoffset;
997dd7cddfSDavid du Colombier 	short	type;
1007dd7cddfSDavid du Colombier };
1017dd7cddfSDavid du Colombier struct	Optab
1027dd7cddfSDavid du Colombier {
1037dd7cddfSDavid du Colombier 	char	as;
1047dd7cddfSDavid du Colombier 	char	a1;
1057dd7cddfSDavid du Colombier 	char	a2;
1067dd7cddfSDavid du Colombier 	char	a3;
1077dd7cddfSDavid du Colombier 	char	type;
1087dd7cddfSDavid du Colombier 	char	size;
1097dd7cddfSDavid du Colombier 	char	param;
11059cc4ca5SDavid du Colombier 	char	flag;
1117dd7cddfSDavid du Colombier };
1127dd7cddfSDavid du Colombier struct	Oprang
1137dd7cddfSDavid du Colombier {
1147dd7cddfSDavid du Colombier 	Optab*	start;
1157dd7cddfSDavid du Colombier 	Optab*	stop;
1167dd7cddfSDavid du Colombier };
1177dd7cddfSDavid du Colombier struct	Count
1187dd7cddfSDavid du Colombier {
1197dd7cddfSDavid du Colombier 	long	count;
1207dd7cddfSDavid du Colombier 	long	outof;
1217dd7cddfSDavid du Colombier };
1227dd7cddfSDavid du Colombier 
1237dd7cddfSDavid du Colombier enum
1247dd7cddfSDavid du Colombier {
1257dd7cddfSDavid du Colombier 	STEXT		= 1,
1267dd7cddfSDavid du Colombier 	SDATA,
1277dd7cddfSDavid du Colombier 	SBSS,
1287dd7cddfSDavid du Colombier 	SDATA1,
1297dd7cddfSDavid du Colombier 	SXREF,
1307dd7cddfSDavid du Colombier 	SLEAF,
1317dd7cddfSDavid du Colombier 	SFILE,
1327dd7cddfSDavid du Colombier 	SCONST,
1339a747e4fSDavid du Colombier 	SSTRING,
134375daca8SDavid du Colombier 	SUNDEF,
135375daca8SDavid du Colombier 
136375daca8SDavid du Colombier 	SIMPORT,
137375daca8SDavid du Colombier 	SEXPORT,
1387dd7cddfSDavid du Colombier 
13959cc4ca5SDavid du Colombier 	LFROM		= 1<<0,
14059cc4ca5SDavid du Colombier 	LTO		= 1<<1,
14159cc4ca5SDavid du Colombier 	LPOOL		= 1<<2,
14259cc4ca5SDavid du Colombier 	V4		= 1<<3,	/* arm v4 arch */
1439b7bf7dfSDavid du Colombier 	VFP		= 1<<4,	/* arm vfpv3 floating point */
1447dd7cddfSDavid du Colombier 
1457dd7cddfSDavid du Colombier 	C_NONE		= 0,
1467dd7cddfSDavid du Colombier 	C_REG,
14759cc4ca5SDavid du Colombier 	C_REGREG,
1487dd7cddfSDavid du Colombier 	C_SHIFT,
1497dd7cddfSDavid du Colombier 	C_FREG,
1507dd7cddfSDavid du Colombier 	C_PSR,
1517dd7cddfSDavid du Colombier 	C_FCR,
1527dd7cddfSDavid du Colombier 
1537dd7cddfSDavid du Colombier 	C_RCON,		/* 0xff rotated */
1547dd7cddfSDavid du Colombier 	C_NCON,		/* ~RCON */
1557dd7cddfSDavid du Colombier 	C_SCON,		/* 0xffff */
1567dd7cddfSDavid du Colombier 	C_LCON,
1577dd7cddfSDavid du Colombier 	C_FCON,
1587dd7cddfSDavid du Colombier 
1597dd7cddfSDavid du Colombier 	C_RACON,
1607dd7cddfSDavid du Colombier 	C_LACON,
1617dd7cddfSDavid du Colombier 
1627dd7cddfSDavid du Colombier 	C_RECON,
1637dd7cddfSDavid du Colombier 	C_LECON,
1647dd7cddfSDavid du Colombier 
1657dd7cddfSDavid du Colombier 	C_SBRA,
1667dd7cddfSDavid du Colombier 	C_LBRA,
1677dd7cddfSDavid du Colombier 
16859cc4ca5SDavid du Colombier 	C_HAUTO,	/* halfword insn offset (-0xff to 0xff) */
16959cc4ca5SDavid du Colombier 	C_FAUTO,	/* float insn offset (0 to 0x3fc, word aligned) */
17059cc4ca5SDavid du Colombier 	C_HFAUTO,	/* both H and F */
17159cc4ca5SDavid du Colombier 	C_SAUTO,	/* -0xfff to 0xfff */
1727dd7cddfSDavid du Colombier 	C_LAUTO,
1737dd7cddfSDavid du Colombier 
17459cc4ca5SDavid du Colombier 	C_HEXT,
1757dd7cddfSDavid du Colombier 	C_FEXT,
17659cc4ca5SDavid du Colombier 	C_HFEXT,
1777dd7cddfSDavid du Colombier 	C_SEXT,
1787dd7cddfSDavid du Colombier 	C_LEXT,
1797dd7cddfSDavid du Colombier 
18059cc4ca5SDavid du Colombier 	C_HOREG,
1817dd7cddfSDavid du Colombier 	C_FOREG,
18259cc4ca5SDavid du Colombier 	C_HFOREG,
1837dd7cddfSDavid du Colombier 	C_SOREG,
18459cc4ca5SDavid du Colombier 	C_ROREG,
18559cc4ca5SDavid du Colombier 	C_SROREG,	/* both S and R */
1867dd7cddfSDavid du Colombier 	C_LOREG,
1877dd7cddfSDavid du Colombier 
1889a747e4fSDavid du Colombier 	C_ADDR,		/* relocatable address */
1899a747e4fSDavid du Colombier 
1907dd7cddfSDavid du Colombier 	C_GOK,
1917dd7cddfSDavid du Colombier 
1927dd7cddfSDavid du Colombier /* mark flags */
1937dd7cddfSDavid du Colombier 	FOLL		= 1<<0,
1947dd7cddfSDavid du Colombier 	LABEL		= 1<<1,
1957dd7cddfSDavid du Colombier 	LEAF		= 1<<2,
1967dd7cddfSDavid du Colombier 
1977dd7cddfSDavid du Colombier 	BIG		= (1<<12)-4,
1987dd7cddfSDavid du Colombier 	STRINGSZ	= 200,
1997dd7cddfSDavid du Colombier 	NHASH		= 10007,
2007dd7cddfSDavid du Colombier 	NHUNK		= 100000,
2017dd7cddfSDavid du Colombier 	MINSIZ		= 64,
2027dd7cddfSDavid du Colombier 	NENT		= 100,
2037dd7cddfSDavid du Colombier 	MAXIO		= 8192,
2047dd7cddfSDavid du Colombier 	MAXHIST		= 20,	/* limit of path elements for history symbols */
205375daca8SDavid du Colombier 
206375daca8SDavid du Colombier 	Roffset	= 22,		/* no. bits for offset in relocation address */
207375daca8SDavid du Colombier 	Rindex	= 10,		/* no. bits for index in relocation address */
2087dd7cddfSDavid du Colombier };
2097dd7cddfSDavid du Colombier 
2107dd7cddfSDavid du Colombier EXTERN union
2117dd7cddfSDavid du Colombier {
2127dd7cddfSDavid du Colombier 	struct
2137dd7cddfSDavid du Colombier 	{
2147dd7cddfSDavid du Colombier 		uchar	obuf[MAXIO];			/* output buffer */
2157dd7cddfSDavid du Colombier 		uchar	ibuf[MAXIO];			/* input buffer */
2167dd7cddfSDavid du Colombier 	} u;
2177dd7cddfSDavid du Colombier 	char	dbuf[1];
2187dd7cddfSDavid du Colombier } buf;
2197dd7cddfSDavid du Colombier 
2207dd7cddfSDavid du Colombier #define	cbuf	u.obuf
2217dd7cddfSDavid du Colombier #define	xbuf	u.ibuf
2227dd7cddfSDavid du Colombier 
2237dd7cddfSDavid du Colombier EXTERN	long	HEADR;			/* length of header */
2247dd7cddfSDavid du Colombier EXTERN	int	HEADTYPE;		/* type of header */
2257dd7cddfSDavid du Colombier EXTERN	long	INITDAT;		/* data location */
2267dd7cddfSDavid du Colombier EXTERN	long	INITRND;		/* data round above text location */
2277dd7cddfSDavid du Colombier EXTERN	long	INITTEXT;		/* text location */
228*8153b942SDavid du Colombier EXTERN	long	INITTEXTP;		/* text location (physical) */
2297dd7cddfSDavid du Colombier EXTERN	char*	INITENTRY;		/* entry point */
2307dd7cddfSDavid du Colombier EXTERN	long	autosize;
2317dd7cddfSDavid du Colombier EXTERN	Biobuf	bso;
2327dd7cddfSDavid du Colombier EXTERN	long	bsssize;
2337dd7cddfSDavid du Colombier EXTERN	int	cbc;
2347dd7cddfSDavid du Colombier EXTERN	uchar*	cbp;
2357dd7cddfSDavid du Colombier EXTERN	int	cout;
2367dd7cddfSDavid du Colombier EXTERN	Auto*	curauto;
2377dd7cddfSDavid du Colombier EXTERN	Auto*	curhist;
2387dd7cddfSDavid du Colombier EXTERN	Prog*	curp;
2397dd7cddfSDavid du Colombier EXTERN	Prog*	curtext;
2407dd7cddfSDavid du Colombier EXTERN	Prog*	datap;
2417dd7cddfSDavid du Colombier EXTERN	long	datsize;
2427dd7cddfSDavid du Colombier EXTERN	char	debug[128];
2437dd7cddfSDavid du Colombier EXTERN	Prog*	etextp;
2447dd7cddfSDavid du Colombier EXTERN	Prog*	firstp;
2457dd7cddfSDavid du Colombier EXTERN	char	fnuxi4[4];
2467dd7cddfSDavid du Colombier EXTERN	char	fnuxi8[8];
2477dd7cddfSDavid du Colombier EXTERN	char*	noname;
2487dd7cddfSDavid du Colombier EXTERN	Sym*	hash[NHASH];
2497dd7cddfSDavid du Colombier EXTERN	Sym*	histfrog[MAXHIST];
2507dd7cddfSDavid du Colombier EXTERN	int	histfrogp;
2517dd7cddfSDavid du Colombier EXTERN	int	histgen;
2527dd7cddfSDavid du Colombier EXTERN	char*	library[50];
25380ee5cbfSDavid du Colombier EXTERN	char*	libraryobj[50];
2547dd7cddfSDavid du Colombier EXTERN	int	libraryp;
25559cc4ca5SDavid du Colombier EXTERN	int	xrefresolv;
2567dd7cddfSDavid du Colombier EXTERN	char*	hunk;
2577dd7cddfSDavid du Colombier EXTERN	char	inuxi1[1];
2587dd7cddfSDavid du Colombier EXTERN	char	inuxi2[2];
2597dd7cddfSDavid du Colombier EXTERN	char	inuxi4[4];
2607dd7cddfSDavid du Colombier EXTERN	Prog*	lastp;
2617dd7cddfSDavid du Colombier EXTERN	long	lcsize;
2627dd7cddfSDavid du Colombier EXTERN	char	literal[32];
2637dd7cddfSDavid du Colombier EXTERN	int	nerrors;
2647dd7cddfSDavid du Colombier EXTERN	long	nhunk;
2657dd7cddfSDavid du Colombier EXTERN	long	instoffset;
2667dd7cddfSDavid du Colombier EXTERN	Opcross	opcross[8];
2677dd7cddfSDavid du Colombier EXTERN	Oprang	oprange[ALAST];
2687dd7cddfSDavid du Colombier EXTERN	char*	outfile;
2697dd7cddfSDavid du Colombier EXTERN	long	pc;
2707dd7cddfSDavid du Colombier EXTERN	uchar	repop[ALAST];
2717dd7cddfSDavid du Colombier EXTERN	long	symsize;
2727dd7cddfSDavid du Colombier EXTERN	Prog*	textp;
2737dd7cddfSDavid du Colombier EXTERN	long	textsize;
2747dd7cddfSDavid du Colombier EXTERN	long	thunk;
2757dd7cddfSDavid du Colombier EXTERN	int	version;
27659cc4ca5SDavid du Colombier EXTERN	char	xcmp[C_GOK+1][C_GOK+1];
2777dd7cddfSDavid du Colombier EXTERN	Prog	zprg;
2787dd7cddfSDavid du Colombier EXTERN	int	dtype;
27959cc4ca5SDavid du Colombier EXTERN	int	armv4;
2809b7bf7dfSDavid du Colombier EXTERN	int vfp;
2817dd7cddfSDavid du Colombier 
282375daca8SDavid du Colombier EXTERN	int	doexp, dlm;
283375daca8SDavid du Colombier EXTERN	int	imports, nimports;
284375daca8SDavid du Colombier EXTERN	int	exports, nexports;
285375daca8SDavid du Colombier EXTERN	char*	EXPTAB;
2869a747e4fSDavid du Colombier EXTERN	Prog	undefp;
2879a747e4fSDavid du Colombier 
2889a747e4fSDavid du Colombier #define	UP	(&undefp)
2899a747e4fSDavid du Colombier 
2907dd7cddfSDavid du Colombier extern	char*	anames[];
2917dd7cddfSDavid du Colombier extern	Optab	optab[];
2927dd7cddfSDavid du Colombier 
2937dd7cddfSDavid du Colombier void	addpool(Prog*, Adr*);
2947dd7cddfSDavid du Colombier EXTERN	Prog*	blitrl;
2957dd7cddfSDavid du Colombier EXTERN	Prog*	elitrl;
2967dd7cddfSDavid du Colombier 
2977dd7cddfSDavid du Colombier void	initdiv(void);
2987dd7cddfSDavid du Colombier EXTERN	Prog*	prog_div;
2997dd7cddfSDavid du Colombier EXTERN	Prog*	prog_divu;
3007dd7cddfSDavid du Colombier EXTERN	Prog*	prog_mod;
3017dd7cddfSDavid du Colombier EXTERN	Prog*	prog_modu;
3027dd7cddfSDavid du Colombier 
3037dd7cddfSDavid du Colombier #pragma	varargck	type	"A"	int
304406758d9SDavid du Colombier #pragma	varargck	type	"A"	uint
3057dd7cddfSDavid du Colombier #pragma	varargck	type	"C"	int
3067dd7cddfSDavid du Colombier #pragma	varargck	type	"D"	Adr*
3077dd7cddfSDavid du Colombier #pragma	varargck	type	"N"	Adr*
30859cc4ca5SDavid du Colombier #pragma	varargck	type	"P"	Prog*
3097dd7cddfSDavid du Colombier #pragma	varargck	type	"S"	char*
3107dd7cddfSDavid du Colombier 
311406758d9SDavid du Colombier #pragma	varargck	argpos	diag 1
312406758d9SDavid du Colombier 
3139a747e4fSDavid du Colombier int	Aconv(Fmt*);
3149a747e4fSDavid du Colombier int	Cconv(Fmt*);
3159a747e4fSDavid du Colombier int	Dconv(Fmt*);
3169a747e4fSDavid du Colombier int	Nconv(Fmt*);
3179a747e4fSDavid du Colombier int	Pconv(Fmt*);
3189a747e4fSDavid du Colombier int	Sconv(Fmt*);
3197dd7cddfSDavid du Colombier int	aclass(Adr*);
3207dd7cddfSDavid du Colombier void	addhist(long, int);
321b87cd620SDavid du Colombier void	addlibpath(char*);
3227dd7cddfSDavid du Colombier void	append(Prog*, Prog*);
3237dd7cddfSDavid du Colombier void	asmb(void);
324375daca8SDavid du Colombier void	asmdyn(void);
3257dd7cddfSDavid du Colombier void	asmlc(void);
3267dd7cddfSDavid du Colombier void	asmout(Prog*, Optab*);
3277dd7cddfSDavid du Colombier void	asmsym(void);
3287dd7cddfSDavid du Colombier long	atolwhex(char*);
3297dd7cddfSDavid du Colombier Prog*	brloop(Prog*);
3307dd7cddfSDavid du Colombier void	buildop(void);
3317dd7cddfSDavid du Colombier void	buildrep(int, int);
3327dd7cddfSDavid du Colombier void	cflush(void);
333375daca8SDavid du Colombier void	ckoff(Sym*, long);
3347dd7cddfSDavid du Colombier int	chipfloat(Ieee*);
3357dd7cddfSDavid du Colombier int	cmp(int, int);
3367dd7cddfSDavid du Colombier int	compound(Prog*);
3377dd7cddfSDavid du Colombier double	cputime(void);
3389a747e4fSDavid du Colombier void	datblk(long, long, int);
3397dd7cddfSDavid du Colombier void	diag(char*, ...);
340375daca8SDavid du Colombier void	divsig(void);
3417dd7cddfSDavid du Colombier void	dodata(void);
3427dd7cddfSDavid du Colombier void	doprof1(void);
3437dd7cddfSDavid du Colombier void	doprof2(void);
344375daca8SDavid du Colombier void	dynreloc(Sym*, long, int);
3457dd7cddfSDavid du Colombier long	entryvalue(void);
3467dd7cddfSDavid du Colombier void	errorexit(void);
3477dd7cddfSDavid du Colombier void	exchange(Prog*);
348375daca8SDavid du Colombier void	export(void);
349b87cd620SDavid du Colombier int	fileexists(char*);
3507dd7cddfSDavid du Colombier int	find1(long, int);
351b87cd620SDavid du Colombier char*	findlib(char*);
3527dd7cddfSDavid du Colombier void	follow(void);
3537dd7cddfSDavid du Colombier void	gethunk(void);
3547dd7cddfSDavid du Colombier void	histtoauto(void);
3557dd7cddfSDavid du Colombier double	ieeedtod(Ieee*);
3567dd7cddfSDavid du Colombier long	ieeedtof(Ieee*);
357375daca8SDavid du Colombier void	import(void);
3587dd7cddfSDavid du Colombier int	isnop(Prog*);
3597dd7cddfSDavid du Colombier void	ldobj(int, long, char*);
36059cc4ca5SDavid du Colombier void	loadlib(void);
3617dd7cddfSDavid du Colombier void	listinit(void);
3627dd7cddfSDavid du Colombier Sym*	lookup(char*, int);
36359cc4ca5SDavid du Colombier void	cput(int);
364*8153b942SDavid du Colombier void	llput(vlong);
365*8153b942SDavid du Colombier void	llputl(vlong);
3667dd7cddfSDavid du Colombier void	lput(long);
3677dd7cddfSDavid du Colombier void	lputl(long);
3687dd7cddfSDavid du Colombier void	mkfwd(void);
3697dd7cddfSDavid du Colombier void*	mysbrk(ulong);
3707dd7cddfSDavid du Colombier void	names(void);
3717dd7cddfSDavid du Colombier void	nocache(Prog*);
3727dd7cddfSDavid du Colombier void	nuxiinit(void);
3737dd7cddfSDavid du Colombier void	objfile(char*);
3747dd7cddfSDavid du Colombier int	ocmp(const void*, const void*);
3757dd7cddfSDavid du Colombier long	opirr(int);
3767dd7cddfSDavid du Colombier Optab*	oplook(Prog*);
3777dd7cddfSDavid du Colombier long	oprrr(int, int);
3789b7bf7dfSDavid du Colombier long	opvfprrr(int, int);
3797dd7cddfSDavid du Colombier long	olr(long, int, int, int);
38059cc4ca5SDavid du Colombier long	olhr(long, int, int, int);
3817dd7cddfSDavid du Colombier long	olrr(int, int, int, int);
38259cc4ca5SDavid du Colombier long	olhrr(int, int, int, int);
3837dd7cddfSDavid du Colombier long	osr(int, int, long, int, int);
38459cc4ca5SDavid du Colombier long	oshr(int, long, int, int);
38559cc4ca5SDavid du Colombier long	ofsr(int, int, long, int, int, Prog*);
3867dd7cddfSDavid du Colombier long	osrr(int, int, int, int);
3877dd7cddfSDavid du Colombier long	oshrr(int, int, int, int);
38859cc4ca5SDavid du Colombier long	omvl(Prog*, Adr*, int);
3897dd7cddfSDavid du Colombier void	patch(void);
3907dd7cddfSDavid du Colombier void	prasm(Prog*);
3917dd7cddfSDavid du Colombier void	prepend(Prog*, Prog*);
3927dd7cddfSDavid du Colombier Prog*	prg(void);
3937dd7cddfSDavid du Colombier int	pseudo(Prog*);
3947dd7cddfSDavid du Colombier void	putsymb(char*, int, long, int);
395375daca8SDavid du Colombier void	readundefs(char*, int);
3967dd7cddfSDavid du Colombier long	regoff(Adr*);
3977dd7cddfSDavid du Colombier int	relinv(int);
3987dd7cddfSDavid du Colombier long	rnd(long, long);
3997dd7cddfSDavid du Colombier void	span(void);
4007dd7cddfSDavid du Colombier void	strnput(char*, int);
4017dd7cddfSDavid du Colombier void	undef(void);
4029a747e4fSDavid du Colombier void	undefsym(Sym*);
403375daca8SDavid du Colombier void	wput(long);
404*8153b942SDavid du Colombier void	wputl(long);
4057dd7cddfSDavid du Colombier void	xdefine(char*, int, long);
4067dd7cddfSDavid du Colombier void	xfol(Prog*);
407375daca8SDavid du Colombier void	zerosig(char*);
4087dd7cddfSDavid du Colombier void	noops(void);
4097dd7cddfSDavid du Colombier long	immrot(ulong);
4107dd7cddfSDavid du Colombier long	immaddr(long);
4117dd7cddfSDavid du Colombier long	opbra(int, int);
412