xref: /plan9/sys/src/libmach/sparc64/u.out.h (revision 473d4f4b3fed09ca133e03643ec71c9150b33bcc)
1*473d4f4bSDavid du Colombier #define	NSNAME	8
2*473d4f4bSDavid du Colombier #define	NSYM	50
3*473d4f4bSDavid du Colombier #define	NREG	32
4*473d4f4bSDavid du Colombier #define NOPROF	(1<<0)
5*473d4f4bSDavid du Colombier #define DUPOK	(1<<1)
6*473d4f4bSDavid du Colombier 
7*473d4f4bSDavid du Colombier enum
8*473d4f4bSDavid du Colombier {
9*473d4f4bSDavid du Colombier 	REGZERO		= 0,	/* always zero */
10*473d4f4bSDavid du Colombier 	REGSP		= 1,	/* stack pointer */
11*473d4f4bSDavid du Colombier 	REGSB		= 2,	/* static pointer */
12*473d4f4bSDavid du Colombier 	REGSB1		= 3,	/* (possible) second static pointer */
13*473d4f4bSDavid du Colombier 	REGEXT		= 6,	/* first external register, grows-- */
14*473d4f4bSDavid du Colombier 	REGRET		= 7,	/* return register and first temp, grows++ */
15*473d4f4bSDavid du Colombier 	REGTMP		= 14,	/* used by the loader */
16*473d4f4bSDavid du Colombier 	REGLINK		= 15,	/* subroutine linkage */
17*473d4f4bSDavid du Colombier 	REGARG		= 7,	/* first arg passed in */
18*473d4f4bSDavid du Colombier 
19*473d4f4bSDavid du Colombier 	FREGRET		= 0,
20*473d4f4bSDavid du Colombier 	FREGEXT		= 22,	/* first external register */
21*473d4f4bSDavid du Colombier 	FREGZERO	= 24,	/* both float and double */
22*473d4f4bSDavid du Colombier 	FREGHALF	= 26,	/* double */
23*473d4f4bSDavid du Colombier 	FREGONE		= 28,	/* double */
24*473d4f4bSDavid du Colombier 	FREGTWO		= 30	/* double */
25*473d4f4bSDavid du Colombier /*
26*473d4f4bSDavid du Colombier  * GENERAL:
27*473d4f4bSDavid du Colombier  *
28*473d4f4bSDavid du Colombier  * compiler allocates R7 up as temps
29*473d4f4bSDavid du Colombier  * compiler allocates external registers R6 down
30*473d4f4bSDavid du Colombier  * compiler allocates register variables F4-F22
31*473d4f4bSDavid du Colombier  * compiler allocates external registers F22 down
32*473d4f4bSDavid du Colombier  */
33*473d4f4bSDavid du Colombier };
34*473d4f4bSDavid du Colombier 
35*473d4f4bSDavid du Colombier enum	as
36*473d4f4bSDavid du Colombier {
37*473d4f4bSDavid du Colombier 	AXXX	= 0,
38*473d4f4bSDavid du Colombier 	AADD,
39*473d4f4bSDavid du Colombier 	AADDCC,
40*473d4f4bSDavid du Colombier 	AADDX,
41*473d4f4bSDavid du Colombier 	AADDXCC,
42*473d4f4bSDavid du Colombier 	AAND,
43*473d4f4bSDavid du Colombier 	AANDCC,
44*473d4f4bSDavid du Colombier 	AANDN,
45*473d4f4bSDavid du Colombier 	AANDNCC,
46*473d4f4bSDavid du Colombier 	ABA,
47*473d4f4bSDavid du Colombier 	ABCC,
48*473d4f4bSDavid du Colombier 	ABCS,
49*473d4f4bSDavid du Colombier 	ABE,
50*473d4f4bSDavid du Colombier 	ABG,
51*473d4f4bSDavid du Colombier 	ABGE,
52*473d4f4bSDavid du Colombier 	ABGU,
53*473d4f4bSDavid du Colombier 	ABL,
54*473d4f4bSDavid du Colombier 	ABLE,
55*473d4f4bSDavid du Colombier 	ABLEU,
56*473d4f4bSDavid du Colombier 	ABN,
57*473d4f4bSDavid du Colombier 	ABNE,
58*473d4f4bSDavid du Colombier 	ABNEG,
59*473d4f4bSDavid du Colombier 	ABPOS,
60*473d4f4bSDavid du Colombier 	ABVC,
61*473d4f4bSDavid du Colombier 	ABVS,
62*473d4f4bSDavid du Colombier 	ACB0,
63*473d4f4bSDavid du Colombier 	ACB01,
64*473d4f4bSDavid du Colombier 	ACB012,
65*473d4f4bSDavid du Colombier 	ACB013,
66*473d4f4bSDavid du Colombier 	ACB02,
67*473d4f4bSDavid du Colombier 	ACB023,
68*473d4f4bSDavid du Colombier 	ACB03,
69*473d4f4bSDavid du Colombier 	ACB1,
70*473d4f4bSDavid du Colombier 	ACB12,
71*473d4f4bSDavid du Colombier 	ACB123,
72*473d4f4bSDavid du Colombier 	ACB13,
73*473d4f4bSDavid du Colombier 	ACB2,
74*473d4f4bSDavid du Colombier 	ACB23,
75*473d4f4bSDavid du Colombier 	ACB3,
76*473d4f4bSDavid du Colombier 	ACBA,
77*473d4f4bSDavid du Colombier 	ACBN,
78*473d4f4bSDavid du Colombier 	ACMP,		/* pseudo op */
79*473d4f4bSDavid du Colombier 	ACPOP1,
80*473d4f4bSDavid du Colombier 	ACPOP2,
81*473d4f4bSDavid du Colombier 	ADATA,
82*473d4f4bSDavid du Colombier 	ADIV,
83*473d4f4bSDavid du Colombier 	ADIVL,
84*473d4f4bSDavid du Colombier 	AFABSD,		/* pseudo op */
85*473d4f4bSDavid du Colombier 	AFABSF,
86*473d4f4bSDavid du Colombier 	AFABSX,		/* pseudo op */
87*473d4f4bSDavid du Colombier 	AFADDD,
88*473d4f4bSDavid du Colombier 	AFADDF,
89*473d4f4bSDavid du Colombier 	AFADDX,
90*473d4f4bSDavid du Colombier 	AFBA,
91*473d4f4bSDavid du Colombier 	AFBE,
92*473d4f4bSDavid du Colombier 	AFBG,
93*473d4f4bSDavid du Colombier 	AFBGE,
94*473d4f4bSDavid du Colombier 	AFBL,
95*473d4f4bSDavid du Colombier 	AFBLE,
96*473d4f4bSDavid du Colombier 	AFBLG,
97*473d4f4bSDavid du Colombier 	AFBN,
98*473d4f4bSDavid du Colombier 	AFBNE,
99*473d4f4bSDavid du Colombier 	AFBO,
100*473d4f4bSDavid du Colombier 	AFBU,
101*473d4f4bSDavid du Colombier 	AFBUE,
102*473d4f4bSDavid du Colombier 	AFBUG,
103*473d4f4bSDavid du Colombier 	AFBUGE,
104*473d4f4bSDavid du Colombier 	AFBUL,
105*473d4f4bSDavid du Colombier 	AFBULE,
106*473d4f4bSDavid du Colombier 	AFCMPD,
107*473d4f4bSDavid du Colombier 	AFCMPED,
108*473d4f4bSDavid du Colombier 	AFCMPEF,
109*473d4f4bSDavid du Colombier 	AFCMPEX,
110*473d4f4bSDavid du Colombier 	AFCMPF,
111*473d4f4bSDavid du Colombier 	AFCMPX,
112*473d4f4bSDavid du Colombier 	AFDIVD,
113*473d4f4bSDavid du Colombier 	AFDIVF,
114*473d4f4bSDavid du Colombier 	AFDIVX,
115*473d4f4bSDavid du Colombier 	AFMOVD,		/* pseudo op */
116*473d4f4bSDavid du Colombier 	AFMOVDF,
117*473d4f4bSDavid du Colombier 	AFMOVDW,
118*473d4f4bSDavid du Colombier 	AFMOVDX,
119*473d4f4bSDavid du Colombier 	AFMOVF,
120*473d4f4bSDavid du Colombier 	AFMOVFD,
121*473d4f4bSDavid du Colombier 	AFMOVFW,
122*473d4f4bSDavid du Colombier 	AFMOVFX,
123*473d4f4bSDavid du Colombier 	AFMOVWD,
124*473d4f4bSDavid du Colombier 	AFMOVWF,
125*473d4f4bSDavid du Colombier 	AFMOVWX,
126*473d4f4bSDavid du Colombier 	AFMOVX,		/* pseudo op */
127*473d4f4bSDavid du Colombier 	AFMOVXD,
128*473d4f4bSDavid du Colombier 	AFMOVXF,
129*473d4f4bSDavid du Colombier 	AFMOVXW,
130*473d4f4bSDavid du Colombier 	AFMULD,
131*473d4f4bSDavid du Colombier 	AFMULF,
132*473d4f4bSDavid du Colombier 	AFMULX,
133*473d4f4bSDavid du Colombier 	AFNEGD,		/* pseudo op */
134*473d4f4bSDavid du Colombier 	AFNEGF,
135*473d4f4bSDavid du Colombier 	AFNEGX,		/* pseudo op */
136*473d4f4bSDavid du Colombier 	AFSQRTD,
137*473d4f4bSDavid du Colombier 	AFSQRTF,
138*473d4f4bSDavid du Colombier 	AFSQRTX,
139*473d4f4bSDavid du Colombier 	AFSUBD,
140*473d4f4bSDavid du Colombier 	AFSUBF,
141*473d4f4bSDavid du Colombier 	AFSUBX,
142*473d4f4bSDavid du Colombier 	AGLOBL,
143*473d4f4bSDavid du Colombier 	AGOK,
144*473d4f4bSDavid du Colombier 	AHISTORY,
145*473d4f4bSDavid du Colombier 	AIFLUSH,
146*473d4f4bSDavid du Colombier 	AJMPL,
147*473d4f4bSDavid du Colombier 	AJMP,
148*473d4f4bSDavid du Colombier 	AMOD,
149*473d4f4bSDavid du Colombier 	AMODL,
150*473d4f4bSDavid du Colombier 	AMOVB,
151*473d4f4bSDavid du Colombier 	AMOVBU,
152*473d4f4bSDavid du Colombier 	AMOVD,
153*473d4f4bSDavid du Colombier 	AMOVH,
154*473d4f4bSDavid du Colombier 	AMOVHU,
155*473d4f4bSDavid du Colombier 	AMOVW,
156*473d4f4bSDavid du Colombier 	AMUL,
157*473d4f4bSDavid du Colombier 	AMULSCC,
158*473d4f4bSDavid du Colombier 				AXXXdummy,		// to temporarily make ANAME/ASIGNAME different than .k's
159*473d4f4bSDavid du Colombier 	ANAME,
160*473d4f4bSDavid du Colombier 	ANOP,
161*473d4f4bSDavid du Colombier 	AOR,
162*473d4f4bSDavid du Colombier 	AORCC,
163*473d4f4bSDavid du Colombier 	AORN,
164*473d4f4bSDavid du Colombier 	AORNCC,
165*473d4f4bSDavid du Colombier 	ARESTORE,
166*473d4f4bSDavid du Colombier 	ARETT,
167*473d4f4bSDavid du Colombier 	ARETURN,
168*473d4f4bSDavid du Colombier 	ASAVE,
169*473d4f4bSDavid du Colombier 	ASLL,
170*473d4f4bSDavid du Colombier 	ASRA,
171*473d4f4bSDavid du Colombier 	ASRL,
172*473d4f4bSDavid du Colombier 	ASUB,
173*473d4f4bSDavid du Colombier 	ASUBCC,
174*473d4f4bSDavid du Colombier 	ASUBX,
175*473d4f4bSDavid du Colombier 	ASUBXCC,
176*473d4f4bSDavid du Colombier 	ASWAP,
177*473d4f4bSDavid du Colombier 	ATA,
178*473d4f4bSDavid du Colombier 	ATADDCC,
179*473d4f4bSDavid du Colombier 	ATADDCCTV,
180*473d4f4bSDavid du Colombier 	ATAS,
181*473d4f4bSDavid du Colombier 	ATCC,
182*473d4f4bSDavid du Colombier 	ATCS,
183*473d4f4bSDavid du Colombier 	ATE,
184*473d4f4bSDavid du Colombier 	ATEXT,
185*473d4f4bSDavid du Colombier 	ATG,
186*473d4f4bSDavid du Colombier 	ATGE,
187*473d4f4bSDavid du Colombier 	ATGU,
188*473d4f4bSDavid du Colombier 	ATL,
189*473d4f4bSDavid du Colombier 	ATLE,
190*473d4f4bSDavid du Colombier 	ATLEU,
191*473d4f4bSDavid du Colombier 	ATN,
192*473d4f4bSDavid du Colombier 	ATNE,
193*473d4f4bSDavid du Colombier 	ATNEG,
194*473d4f4bSDavid du Colombier 	ATPOS,
195*473d4f4bSDavid du Colombier 	ATSUBCC,
196*473d4f4bSDavid du Colombier 	ATSUBCCTV,
197*473d4f4bSDavid du Colombier 	ATVC,
198*473d4f4bSDavid du Colombier 	ATVS,
199*473d4f4bSDavid du Colombier 	AUNIMP,
200*473d4f4bSDavid du Colombier 	AWORD,
201*473d4f4bSDavid du Colombier 	AXNOR,
202*473d4f4bSDavid du Colombier 	AXNORCC,
203*473d4f4bSDavid du Colombier 	AXOR,
204*473d4f4bSDavid du Colombier 	AXORCC,
205*473d4f4bSDavid du Colombier 	AEND,
206*473d4f4bSDavid du Colombier 	ADYNT,
207*473d4f4bSDavid du Colombier 	AINIT,
208*473d4f4bSDavid du Colombier 	ASIGNAME,
209*473d4f4bSDavid du Colombier 	ALAST
210*473d4f4bSDavid du Colombier };
211*473d4f4bSDavid du Colombier 
212*473d4f4bSDavid du Colombier /* type/name */
213*473d4f4bSDavid du Colombier enum
214*473d4f4bSDavid du Colombier {
215*473d4f4bSDavid du Colombier 	D_GOK	= 0,
216*473d4f4bSDavid du Colombier 	D_NONE,
217*473d4f4bSDavid du Colombier 
218*473d4f4bSDavid du Colombier /* name */
219*473d4f4bSDavid du Colombier 	D_EXTERN,
220*473d4f4bSDavid du Colombier 	D_STATIC,
221*473d4f4bSDavid du Colombier 	D_AUTO,
222*473d4f4bSDavid du Colombier 	D_PARAM,
223*473d4f4bSDavid du Colombier 
224*473d4f4bSDavid du Colombier /* type */
225*473d4f4bSDavid du Colombier 	D_BRANCH,
226*473d4f4bSDavid du Colombier 	D_OREG,
227*473d4f4bSDavid du Colombier 	D_ASI,
228*473d4f4bSDavid du Colombier 	D_CONST,
229*473d4f4bSDavid du Colombier 	D_FCONST,
230*473d4f4bSDavid du Colombier 	D_SCONST,
231*473d4f4bSDavid du Colombier 	D_REG,
232*473d4f4bSDavid du Colombier 	D_FREG,
233*473d4f4bSDavid du Colombier 	D_CREG,
234*473d4f4bSDavid du Colombier 	D_PREG,
235*473d4f4bSDavid du Colombier 	D_FILE,
236*473d4f4bSDavid du Colombier 	D_FILE1,
237*473d4f4bSDavid du Colombier 
238*473d4f4bSDavid du Colombier /* reg names iff type is D_PREG */
239*473d4f4bSDavid du Colombier 	D_CPQ	= 0,
240*473d4f4bSDavid du Colombier 	D_CSR,
241*473d4f4bSDavid du Colombier 	D_FPQ,
242*473d4f4bSDavid du Colombier 	D_FSR,
243*473d4f4bSDavid du Colombier 	D_PSR,
244*473d4f4bSDavid du Colombier 	D_TBR,
245*473d4f4bSDavid du Colombier 	D_WIM,
246*473d4f4bSDavid du Colombier 	D_Y
247*473d4f4bSDavid du Colombier };
248*473d4f4bSDavid du Colombier 
249*473d4f4bSDavid du Colombier /*
250*473d4f4bSDavid du Colombier  * this is the ranlib header
251*473d4f4bSDavid du Colombier  */
252*473d4f4bSDavid du Colombier #define	SYMDEF	"__.SYMDEF"
253*473d4f4bSDavid du Colombier 
254*473d4f4bSDavid du Colombier /*
255*473d4f4bSDavid du Colombier  * this is the simulated IEEE floating point
256*473d4f4bSDavid du Colombier  */
257*473d4f4bSDavid du Colombier typedef	struct	ieee	Ieee;
258*473d4f4bSDavid du Colombier struct	ieee
259*473d4f4bSDavid du Colombier {
260*473d4f4bSDavid du Colombier 	long	l;	/* contains ls-man	0xffffffff */
261*473d4f4bSDavid du Colombier 	long	h;	/* contains sign	0x80000000
262*473d4f4bSDavid du Colombier 				    exp		0x7ff00000
263*473d4f4bSDavid du Colombier 				    ms-man	0x000fffff */
264*473d4f4bSDavid du Colombier };
265