xref: /plan9-contrib/sys/src/cmd/kc/k.out.h (revision 375daca8932d0755549a5f8e4d068a24a49927d4)
13e12c5d1SDavid du Colombier #define	NSNAME	8
23e12c5d1SDavid du Colombier #define	NSYM	50
33e12c5d1SDavid du Colombier #define	NREG	32
4219b2ee8SDavid du Colombier #define NOPROF	(1<<0)
5219b2ee8SDavid du Colombier #define DUPOK	(1<<1)
63e12c5d1SDavid du Colombier 
73e12c5d1SDavid du Colombier enum
83e12c5d1SDavid du Colombier {
93e12c5d1SDavid du Colombier 	REGZERO		= 0,	/* always zero */
103e12c5d1SDavid du Colombier 	REGSP		= 1,	/* stack pointer */
113e12c5d1SDavid du Colombier 	REGSB		= 2,	/* static pointer */
123e12c5d1SDavid du Colombier 	REGSB1		= 3,	/* (possible) second static pointer */
133e12c5d1SDavid du Colombier 	REGEXT		= 6,	/* first external register, grows-- */
143e12c5d1SDavid du Colombier 	REGRET		= 7,	/* return register and first temp, grows++ */
153e12c5d1SDavid du Colombier 	REGTMP		= 14,	/* used by the loader */
163e12c5d1SDavid du Colombier 	REGLINK		= 15,	/* subroutine linkage */
173e12c5d1SDavid du Colombier 	REGARG		= 7,	/* first arg passed in */
183e12c5d1SDavid du Colombier 
193e12c5d1SDavid du Colombier 	FREGRET		= 0,
203e12c5d1SDavid du Colombier 	FREGEXT		= 22,	/* first external register */
213e12c5d1SDavid du Colombier 	FREGZERO	= 24,	/* both float and double */
223e12c5d1SDavid du Colombier 	FREGHALF	= 26,	/* double */
233e12c5d1SDavid du Colombier 	FREGONE		= 28,	/* double */
24*375daca8SDavid du Colombier 	FREGTWO		= 30	/* double */
253e12c5d1SDavid du Colombier /*
263e12c5d1SDavid du Colombier  * GENERAL:
273e12c5d1SDavid du Colombier  *
283e12c5d1SDavid du Colombier  * compiler allocates R7 up as temps
293e12c5d1SDavid du Colombier  * compiler allocates external registers R6 down
303e12c5d1SDavid du Colombier  * compiler allocates register variables F4-F22
313e12c5d1SDavid du Colombier  * compiler allocates external registers F22 down
323e12c5d1SDavid du Colombier  */
333e12c5d1SDavid du Colombier };
343e12c5d1SDavid du Colombier 
353e12c5d1SDavid du Colombier enum	as
363e12c5d1SDavid du Colombier {
373e12c5d1SDavid du Colombier 	AXXX	= 0,
383e12c5d1SDavid du Colombier 	AADD,
393e12c5d1SDavid du Colombier 	AADDCC,
403e12c5d1SDavid du Colombier 	AADDX,
413e12c5d1SDavid du Colombier 	AADDXCC,
423e12c5d1SDavid du Colombier 	AAND,
433e12c5d1SDavid du Colombier 	AANDCC,
443e12c5d1SDavid du Colombier 	AANDN,
453e12c5d1SDavid du Colombier 	AANDNCC,
463e12c5d1SDavid du Colombier 	ABA,
473e12c5d1SDavid du Colombier 	ABCC,
483e12c5d1SDavid du Colombier 	ABCS,
493e12c5d1SDavid du Colombier 	ABE,
503e12c5d1SDavid du Colombier 	ABG,
513e12c5d1SDavid du Colombier 	ABGE,
523e12c5d1SDavid du Colombier 	ABGU,
533e12c5d1SDavid du Colombier 	ABL,
543e12c5d1SDavid du Colombier 	ABLE,
553e12c5d1SDavid du Colombier 	ABLEU,
563e12c5d1SDavid du Colombier 	ABN,
573e12c5d1SDavid du Colombier 	ABNE,
583e12c5d1SDavid du Colombier 	ABNEG,
593e12c5d1SDavid du Colombier 	ABPOS,
603e12c5d1SDavid du Colombier 	ABVC,
613e12c5d1SDavid du Colombier 	ABVS,
623e12c5d1SDavid du Colombier 	ACB0,
633e12c5d1SDavid du Colombier 	ACB01,
643e12c5d1SDavid du Colombier 	ACB012,
653e12c5d1SDavid du Colombier 	ACB013,
663e12c5d1SDavid du Colombier 	ACB02,
673e12c5d1SDavid du Colombier 	ACB023,
683e12c5d1SDavid du Colombier 	ACB03,
693e12c5d1SDavid du Colombier 	ACB1,
703e12c5d1SDavid du Colombier 	ACB12,
713e12c5d1SDavid du Colombier 	ACB123,
723e12c5d1SDavid du Colombier 	ACB13,
733e12c5d1SDavid du Colombier 	ACB2,
743e12c5d1SDavid du Colombier 	ACB23,
753e12c5d1SDavid du Colombier 	ACB3,
763e12c5d1SDavid du Colombier 	ACBA,
773e12c5d1SDavid du Colombier 	ACBN,
783e12c5d1SDavid du Colombier 	ACMP,		/* pseudo op */
793e12c5d1SDavid du Colombier 	ACPOP1,
803e12c5d1SDavid du Colombier 	ACPOP2,
813e12c5d1SDavid du Colombier 	ADATA,
823e12c5d1SDavid du Colombier 	ADIV,
833e12c5d1SDavid du Colombier 	ADIVL,
843e12c5d1SDavid du Colombier 	AFABSD,		/* pseudo op */
853e12c5d1SDavid du Colombier 	AFABSF,
863e12c5d1SDavid du Colombier 	AFABSX,		/* pseudo op */
873e12c5d1SDavid du Colombier 	AFADDD,
883e12c5d1SDavid du Colombier 	AFADDF,
893e12c5d1SDavid du Colombier 	AFADDX,
903e12c5d1SDavid du Colombier 	AFBA,
913e12c5d1SDavid du Colombier 	AFBE,
923e12c5d1SDavid du Colombier 	AFBG,
933e12c5d1SDavid du Colombier 	AFBGE,
943e12c5d1SDavid du Colombier 	AFBL,
953e12c5d1SDavid du Colombier 	AFBLE,
963e12c5d1SDavid du Colombier 	AFBLG,
973e12c5d1SDavid du Colombier 	AFBN,
983e12c5d1SDavid du Colombier 	AFBNE,
993e12c5d1SDavid du Colombier 	AFBO,
1003e12c5d1SDavid du Colombier 	AFBU,
1013e12c5d1SDavid du Colombier 	AFBUE,
1023e12c5d1SDavid du Colombier 	AFBUG,
1033e12c5d1SDavid du Colombier 	AFBUGE,
1043e12c5d1SDavid du Colombier 	AFBUL,
1053e12c5d1SDavid du Colombier 	AFBULE,
1063e12c5d1SDavid du Colombier 	AFCMPD,
1073e12c5d1SDavid du Colombier 	AFCMPED,
1083e12c5d1SDavid du Colombier 	AFCMPEF,
1093e12c5d1SDavid du Colombier 	AFCMPEX,
1103e12c5d1SDavid du Colombier 	AFCMPF,
1113e12c5d1SDavid du Colombier 	AFCMPX,
1123e12c5d1SDavid du Colombier 	AFDIVD,
1133e12c5d1SDavid du Colombier 	AFDIVF,
1143e12c5d1SDavid du Colombier 	AFDIVX,
1153e12c5d1SDavid du Colombier 	AFMOVD,		/* pseudo op */
1163e12c5d1SDavid du Colombier 	AFMOVDF,
1173e12c5d1SDavid du Colombier 	AFMOVDW,
1183e12c5d1SDavid du Colombier 	AFMOVDX,
1193e12c5d1SDavid du Colombier 	AFMOVF,
1203e12c5d1SDavid du Colombier 	AFMOVFD,
1213e12c5d1SDavid du Colombier 	AFMOVFW,
1223e12c5d1SDavid du Colombier 	AFMOVFX,
1233e12c5d1SDavid du Colombier 	AFMOVWD,
1243e12c5d1SDavid du Colombier 	AFMOVWF,
1253e12c5d1SDavid du Colombier 	AFMOVWX,
1263e12c5d1SDavid du Colombier 	AFMOVX,		/* pseudo op */
1273e12c5d1SDavid du Colombier 	AFMOVXD,
1283e12c5d1SDavid du Colombier 	AFMOVXF,
1293e12c5d1SDavid du Colombier 	AFMOVXW,
1303e12c5d1SDavid du Colombier 	AFMULD,
1313e12c5d1SDavid du Colombier 	AFMULF,
1323e12c5d1SDavid du Colombier 	AFMULX,
1333e12c5d1SDavid du Colombier 	AFNEGD,		/* pseudo op */
1343e12c5d1SDavid du Colombier 	AFNEGF,
1353e12c5d1SDavid du Colombier 	AFNEGX,		/* pseudo op */
1363e12c5d1SDavid du Colombier 	AFSQRTD,
1373e12c5d1SDavid du Colombier 	AFSQRTF,
1383e12c5d1SDavid du Colombier 	AFSQRTX,
1393e12c5d1SDavid du Colombier 	AFSUBD,
1403e12c5d1SDavid du Colombier 	AFSUBF,
1413e12c5d1SDavid du Colombier 	AFSUBX,
1423e12c5d1SDavid du Colombier 	AGLOBL,
1433e12c5d1SDavid du Colombier 	AGOK,
1443e12c5d1SDavid du Colombier 	AHISTORY,
1453e12c5d1SDavid du Colombier 	AIFLUSH,
1463e12c5d1SDavid du Colombier 	AJMPL,
1473e12c5d1SDavid du Colombier 	AJMP,
1483e12c5d1SDavid du Colombier 	AMOD,
1493e12c5d1SDavid du Colombier 	AMODL,
1503e12c5d1SDavid du Colombier 	AMOVB,
1513e12c5d1SDavid du Colombier 	AMOVBU,
1523e12c5d1SDavid du Colombier 	AMOVD,
1533e12c5d1SDavid du Colombier 	AMOVH,
1543e12c5d1SDavid du Colombier 	AMOVHU,
1553e12c5d1SDavid du Colombier 	AMOVW,
1563e12c5d1SDavid du Colombier 	AMUL,
1573e12c5d1SDavid du Colombier 	AMULSCC,
1583e12c5d1SDavid du Colombier 	ANAME,
1593e12c5d1SDavid du Colombier 	ANOP,
1603e12c5d1SDavid du Colombier 	AOR,
1613e12c5d1SDavid du Colombier 	AORCC,
1623e12c5d1SDavid du Colombier 	AORN,
1633e12c5d1SDavid du Colombier 	AORNCC,
1643e12c5d1SDavid du Colombier 	ARESTORE,
1653e12c5d1SDavid du Colombier 	ARETT,
1663e12c5d1SDavid du Colombier 	ARETURN,
1673e12c5d1SDavid du Colombier 	ASAVE,
1683e12c5d1SDavid du Colombier 	ASLL,
1693e12c5d1SDavid du Colombier 	ASRA,
1703e12c5d1SDavid du Colombier 	ASRL,
1713e12c5d1SDavid du Colombier 	ASUB,
1723e12c5d1SDavid du Colombier 	ASUBCC,
1733e12c5d1SDavid du Colombier 	ASUBX,
1743e12c5d1SDavid du Colombier 	ASUBXCC,
1753e12c5d1SDavid du Colombier 	ASWAP,
1763e12c5d1SDavid du Colombier 	ATA,
1773e12c5d1SDavid du Colombier 	ATADDCC,
1783e12c5d1SDavid du Colombier 	ATADDCCTV,
1793e12c5d1SDavid du Colombier 	ATAS,
1803e12c5d1SDavid du Colombier 	ATCC,
1813e12c5d1SDavid du Colombier 	ATCS,
1823e12c5d1SDavid du Colombier 	ATE,
1833e12c5d1SDavid du Colombier 	ATEXT,
1843e12c5d1SDavid du Colombier 	ATG,
1853e12c5d1SDavid du Colombier 	ATGE,
1863e12c5d1SDavid du Colombier 	ATGU,
1873e12c5d1SDavid du Colombier 	ATL,
1883e12c5d1SDavid du Colombier 	ATLE,
1893e12c5d1SDavid du Colombier 	ATLEU,
1903e12c5d1SDavid du Colombier 	ATN,
1913e12c5d1SDavid du Colombier 	ATNE,
1923e12c5d1SDavid du Colombier 	ATNEG,
1933e12c5d1SDavid du Colombier 	ATPOS,
1943e12c5d1SDavid du Colombier 	ATSUBCC,
1953e12c5d1SDavid du Colombier 	ATSUBCCTV,
1963e12c5d1SDavid du Colombier 	ATVC,
1973e12c5d1SDavid du Colombier 	ATVS,
1983e12c5d1SDavid du Colombier 	AUNIMP,
1993e12c5d1SDavid du Colombier 	AWORD,
2003e12c5d1SDavid du Colombier 	AXNOR,
2013e12c5d1SDavid du Colombier 	AXNORCC,
2023e12c5d1SDavid du Colombier 	AXOR,
2033e12c5d1SDavid du Colombier 	AXORCC,
204219b2ee8SDavid du Colombier 	AEND,
205219b2ee8SDavid du Colombier 	ADYNT,
206219b2ee8SDavid du Colombier 	AINIT,
207*375daca8SDavid du Colombier 	ASIGNAME,
208219b2ee8SDavid du Colombier 	ALAST
2093e12c5d1SDavid du Colombier };
2103e12c5d1SDavid du Colombier 
2113e12c5d1SDavid du Colombier /* type/name */
2123e12c5d1SDavid du Colombier enum
2133e12c5d1SDavid du Colombier {
2143e12c5d1SDavid du Colombier 	D_GOK	= 0,
2153e12c5d1SDavid du Colombier 	D_NONE,
2163e12c5d1SDavid du Colombier 
2173e12c5d1SDavid du Colombier /* name */
2183e12c5d1SDavid du Colombier 	D_EXTERN,
2193e12c5d1SDavid du Colombier 	D_STATIC,
2203e12c5d1SDavid du Colombier 	D_AUTO,
2213e12c5d1SDavid du Colombier 	D_PARAM,
2223e12c5d1SDavid du Colombier 
2233e12c5d1SDavid du Colombier /* type */
2243e12c5d1SDavid du Colombier 	D_BRANCH,
2253e12c5d1SDavid du Colombier 	D_OREG,
2263e12c5d1SDavid du Colombier 	D_ASI,
2273e12c5d1SDavid du Colombier 	D_CONST,
2283e12c5d1SDavid du Colombier 	D_FCONST,
2293e12c5d1SDavid du Colombier 	D_SCONST,
2303e12c5d1SDavid du Colombier 	D_REG,
2313e12c5d1SDavid du Colombier 	D_FREG,
2323e12c5d1SDavid du Colombier 	D_CREG,
2333e12c5d1SDavid du Colombier 	D_PREG,
2343e12c5d1SDavid du Colombier 	D_FILE,
235219b2ee8SDavid du Colombier 	D_FILE1,
2363e12c5d1SDavid du Colombier 
2373e12c5d1SDavid du Colombier /* reg names iff type is D_PREG */
2383e12c5d1SDavid du Colombier 	D_CPQ	= 0,
2393e12c5d1SDavid du Colombier 	D_CSR,
2403e12c5d1SDavid du Colombier 	D_FPQ,
2413e12c5d1SDavid du Colombier 	D_FSR,
2423e12c5d1SDavid du Colombier 	D_PSR,
2433e12c5d1SDavid du Colombier 	D_TBR,
2443e12c5d1SDavid du Colombier 	D_WIM,
245*375daca8SDavid du Colombier 	D_Y
2463e12c5d1SDavid du Colombier };
2473e12c5d1SDavid du Colombier 
2483e12c5d1SDavid du Colombier /*
2493e12c5d1SDavid du Colombier  * this is the ranlib header
2503e12c5d1SDavid du Colombier  */
2513e12c5d1SDavid du Colombier #define	SYMDEF	"__.SYMDEF"
2523e12c5d1SDavid du Colombier 
2533e12c5d1SDavid du Colombier /*
2543e12c5d1SDavid du Colombier  * this is the simulated IEEE floating point
2553e12c5d1SDavid du Colombier  */
2563e12c5d1SDavid du Colombier typedef	struct	ieee	Ieee;
2573e12c5d1SDavid du Colombier struct	ieee
2583e12c5d1SDavid du Colombier {
2593e12c5d1SDavid du Colombier 	long	l;	/* contains ls-man	0xffffffff */
2603e12c5d1SDavid du Colombier 	long	h;	/* contains sign	0x80000000
2613e12c5d1SDavid du Colombier 				    exp		0x7ff00000
2623e12c5d1SDavid du Colombier 				    ms-man	0x000fffff */
2633e12c5d1SDavid du Colombier };
264