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