xref: /plan9/sys/src/libmach/alpha/7.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 	REGRET		= 0,	/* return register and first temp, grows++ */
10 	REGARG		= 0,	/* first arg passed in */
11 	REGEXT		= 15,	/* first external register, grows-- */
12 
13 	REGLINK		= 26,	/* subroutine linkage */
14 	REGTMP		= 27,	/* used by the loader */
15 	REGTMP2		= 28,	/* used by the loader */
16 	REGSB		= 29,	/* static pointer */
17 	REGSP		= 30,	/* stack pointer */
18 	REGZERO		= 31,	/* always zero */
19 
20 	FREGRET		= 0,
21 	FREGEXT		= 27,	/* first external register */
22 	FREGHALF	= 28,	/* double */
23 	FREGONE		= 29,	/* double */
24 	FREGTWO		= 30,	/* double */
25 	FREGZERO	= 31,	/* both float and double */
26 };
27 
28 enum	as
29 {
30 	AXXX,
31 	AGOK,
32 	ATEXT,
33 	ADATA,
34 	AGLOBL,
35 	AHISTORY,
36 	ANAME,
37 	AWORD,
38 
39 	ANOP,
40 
41 	AMOVL,
42 	AMOVLU,
43 	AMOVQ,
44 	AMOVQU,
45 	AMOVS,
46 	AMOVT,
47 
48 	AMOVB,
49 	AMOVBU,
50 	AMOVW,
51 	AMOVWU,
52 
53 	AMOVA,
54 	AMOVAH,
55 
56 	AMOVLL,
57 	AMOVQL,
58 	AMOVLC,
59 	AMOVQC,
60 
61 	AMOVQP,
62 	AMOVLP,
63 
64 	AADDL,
65 	AADDLV,
66 	AADDQ,
67 	AADDQV,
68 	AS4ADDL,
69 	AS4ADDQ,
70 	AS8ADDL,
71 	AS8ADDQ,
72 	AS4SUBL,
73 	AS4SUBQ,
74 	AS8SUBL,
75 	AS8SUBQ,
76 	ASUBL,
77 	ASUBLV,
78 	ASUBQ,
79 	ASUBQV,
80 
81 	ACMPEQ,
82 	ACMPGT,
83 	ACMPGE,
84 	ACMPUGT,
85 	ACMPUGE,
86 	ACMPBLE,
87 
88 	AAND,
89 	AANDNOT,
90 	AOR,
91 	AORNOT,
92 	AXOR,
93 	AXORNOT,
94 
95 	ACMOVEQ,
96 	ACMOVNE,
97 	ACMOVLT,
98 	ACMOVGE,
99 	ACMOVLE,
100 	ACMOVGT,
101 	ACMOVLBC,
102 	ACMOVLBS,
103 
104 	AMULL,
105 	AMULQ,
106 	AMULLV,
107 	AMULQV,
108 	AUMULH,
109 	ADIVQ,
110 	AMODQ,
111 	ADIVQU,
112 	AMODQU,
113 	ADIVL,
114 	AMODL,
115 	ADIVLU,
116 	AMODLU,
117 
118 	ASLLQ,
119 	ASRLQ,
120 	ASRAQ,
121 	ASLLL,
122 	ASRLL,
123 	ASRAL,
124 
125 	AEXTBL,
126 	AEXTWL,
127 	AEXTLL,
128 	AEXTQL,
129 	AEXTWH,
130 	AEXTLH,
131 	AEXTQH,
132 
133 	AINSBL,
134 	AINSWL,
135 	AINSLL,
136 	AINSQL,
137 	AINSWH,
138 	AINSLH,
139 	AINSQH,
140 
141 	AMSKBL,
142 	AMSKWL,
143 	AMSKLL,
144 	AMSKQL,
145 	AMSKWH,
146 	AMSKLH,
147 	AMSKQH,
148 
149 	AZAP,
150 	AZAPNOT,
151 
152 	AJMP,
153 	AJSR,
154 	ARET,
155 
156 	ABR,
157 	ABSR,
158 
159 	ABEQ,
160 	ABNE,
161 	ABLT,
162 	ABGE,
163 	ABLE,
164 	ABGT,
165 	ABLBC,
166 	ABLBS,
167 
168 	AFBEQ,
169 	AFBNE,
170 	AFBLT,
171 	AFBGE,
172 	AFBLE,
173 	AFBGT,
174 
175 	ATRAPB,
176 	AMB,
177 	AFETCH,
178 	AFETCHM,
179 	ARPCC,
180 
181 	ACPYS,
182 	ACPYSN,
183 	ACPYSE,
184 	ACVTLQ,
185 	ACVTQL,
186 	AFCMOVEQ,
187 	AFCMOVNE,
188 	AFCMOVLT,
189 	AFCMOVGE,
190 	AFCMOVLE,
191 	AFCMOVGT,
192 
193 	AADDS,
194 	AADDT,
195 	ACMPTEQ,
196 	ACMPTGT,
197 	ACMPTGE,
198 	ACMPTUN,
199 	ACVTQS,
200 	ACVTQT,
201 	ACVTTS,
202 	ACVTTQ,
203 	ADIVS,
204 	ADIVT,
205 	AMULS,
206 	AMULT,
207 	ASUBS,
208 	ASUBT,
209 
210 	ACALL_PAL,
211 	AREI,
212 
213 	AEND,
214 
215 	ADYNT,
216 	AINIT,
217 
218 	ASIGNAME,
219 
220 	ALAST,
221 };
222 
223 /* type/name */
224 enum
225 {
226 	D_GOK	= 0,
227 	D_NONE,
228 
229 /* name */
230 	D_EXTERN,
231 	D_STATIC,
232 	D_AUTO,
233 	D_PARAM,
234 
235 /* type */
236 	D_BRANCH,
237 	D_OREG,
238 	D_CONST,
239 	D_FCONST,
240 	D_SCONST,
241 	D_REG,
242 	D_FREG,
243 	D_FCREG,
244 	D_PREG,
245 	D_PCC,
246 	D_FILE,
247 	D_FILE1,
248 };
249 
250 /*
251  * this is the ranlib header
252  */
253 #define	SYMDEF	"__.SYMDEF"
254 
255 /*
256  * this is the simulated IEEE floating point
257  */
258 typedef	struct	ieee	Ieee;
259 struct	ieee
260 {
261 	long	l;	/* contains ls-man	0xffffffff */
262 	long	h;	/* contains sign	0x80000000
263 				    exp		0x7ff00000
264 				    ms-man	0x000fffff */
265 };
266