]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/7c/7.out.h
ip/cifsd: dont return garbage in upper 32 bit of unix extension stat fields
[plan9front.git] / sys / src / cmd / 7c / 7.out.h
1 /*
2  * arm64
3  */
4
5 #define NSNAME          8
6 #define NSYM            50
7 #define NREG            32
8
9 #define NOPROF          (1<<0)
10 #define DUPOK           (1<<1)
11
12 #define REGRET          0
13 #define REGARG          0
14 /* R1 to R7 are potential parameter/return registers */
15 #define REGIRL          8       /* indirect result location (TO DO) */
16 /* compiler allocates R9 up as temps */
17 /* compiler allocates register variables R10 up */
18 #define REGMIN          9
19 #define REGMAX          15
20 #define REGIP0          16
21 #define REGIP1          17
22 #define REGTMP          REGIP1
23 /* compiler allocates external registers R27 down */
24 #define REGEXT          27
25 #define REGSB           28
26 #define REGFP           29
27 #define REGLINK         30
28 #define REGSP           31
29 #define REGZERO         31
30
31 #define NFREG           32
32 #define FREGRET         0
33 #define FREGMIN         7
34 #define FREGEXT         15
35
36 /* compiler allocates register variables F0 up */
37 /* compiler allocates external registers F15 down */
38
39 enum    as
40 {
41         AXXX,
42
43         AADC,
44         AADCS,
45         AADCSW,
46         AADCW,
47         AADD,
48         AADDS,
49         AADDSW,
50         AADDW,
51         AADR,
52         AADRP,
53         AAND,
54         AANDS,
55         AANDSW,
56         AANDW,
57         AASR,
58         AASRW,
59         AAT,
60         AB,
61         ABFI,
62         ABFIW,
63         ABFM,
64         ABFMW,
65         ABFXIL,
66         ABFXILW,
67         ABIC,
68         ABICS,
69         ABICSW,
70         ABICW,
71         ABL,
72         ABRK,
73         ACBNZ,
74         ACBNZW,
75         ACBZ,
76         ACBZW,
77         ACCMN,
78         ACCMNW,
79         ACCMP,
80         ACCMPW,
81         ACINC,
82         ACINCW,
83         ACINV,
84         ACINVW,
85         ACLREX,
86         ACLS,
87         ACLSW,
88         ACLZ,
89         ACLZW,
90         ACMN,
91         ACMNW,
92         ACMP,
93         ACMPW,
94         ACNEG,
95         ACNEGW,
96         ACRC32B,
97         ACRC32CB,
98         ACRC32CH,
99         ACRC32CW,
100         ACRC32CX,
101         ACRC32H,
102         ACRC32W,
103         ACRC32X,
104         ACSEL,
105         ACSELW,
106         ACSET,
107         ACSETM,
108         ACSETMW,
109         ACSETW,
110         ACSINC,
111         ACSINCW,
112         ACSINV,
113         ACSINVW,
114         ACSNEG,
115         ACSNEGW,
116         ADC,
117         ADCPS1,
118         ADCPS2,
119         ADCPS3,
120         ADMB,
121         ADRPS,
122         ADSB,
123         AEON,
124         AEONW,
125         AEOR,
126         AEORW,
127         AERET,
128         AEXTR,
129         AEXTRW,
130         AHINT,
131         AHLT,
132         AHVC,
133         AIC,
134         AISB,
135         ALDAR,
136         ALDARB,
137         ALDARH,
138         ALDARW,
139         ALDAXP,
140         ALDAXPW,
141         ALDAXR,
142         ALDAXRB,
143         ALDAXRH,
144         ALDAXRW,
145         ALDXR,
146         ALDXRB,
147         ALDXRH,
148         ALDXRW,
149         ALDXP,
150         ALDXPW,
151         ALSL,
152         ALSLW,
153         ALSR,
154         ALSRW,
155         AMADD,
156         AMADDW,
157         AMNEG,
158         AMNEGW,
159         AMOVK,
160         AMOVKW,
161         AMOVN,
162         AMOVNW,
163         AMOVZ,
164         AMOVZW,
165         AMRS,
166         AMSR,
167         AMSUB,
168         AMSUBW,
169         AMUL,
170         AMULW,
171         AMVN,
172         AMVNW,
173         ANEG,
174         ANEGS,
175         ANEGSW,
176         ANEGW,
177         ANGC,
178         ANGCS,
179         ANGCSW,
180         ANGCW,
181         ANOP,
182         AORN,
183         AORNW,
184         AORR,
185         AORRW,
186         APRFM,
187         APRFUM,
188         ARBIT,
189         ARBITW,
190         AREM,
191         AREMW,
192         ARET,
193         AREV,
194         AREV16,
195         AREV16W,
196         AREV32,
197         AREVW,
198         AROR,
199         ARORW,
200         ASBC,
201         ASBCS,
202         ASBCSW,
203         ASBCW,
204         ASBFIZ,
205         ASBFIZW,
206         ASBFM,
207         ASBFMW,
208         ASBFX,
209         ASBFXW,
210         ASDIV,
211         ASDIVW,
212         ASEV,
213         ASEVL,
214         ASMADDL,
215         ASMC,
216         ASMNEGL,
217         ASMSUBL,
218         ASMULH,
219         ASMULL,
220         ASTXR,
221         ASTXRB,
222         ASTXRH,
223         ASTXP,
224         ASTXPW,
225         ASTXRW,
226         ASTLP,
227         ASTLPW,
228         ASTLR,
229         ASTLRB,
230         ASTLRH,
231         ASTLRW,
232         ASTLXP,
233         ASTLXPW,
234         ASTLXR,
235         ASTLXRB,
236         ASTLXRH,
237         ASTLXRW,
238         ASUB,
239         ASUBS,
240         ASUBSW,
241         ASUBW,
242         ASVC,
243         ASXTB,
244         ASXTBW,
245         ASXTH,
246         ASXTHW,
247         ASXTW,
248         ASYS,
249         ASYSL,
250         ATBNZ,
251         ATBZ,
252         ATLBI,
253         ATST,
254         ATSTW,
255         AUBFIZ,
256         AUBFIZW,
257         AUBFM,
258         AUBFMW,
259         AUBFX,
260         AUBFXW,
261         AUDIV,
262         AUDIVW,
263         AUMADDL,
264         AUMNEGL,
265         AUMSUBL,
266         AUMULH,
267         AUMULL,
268         AUREM,
269         AUREMW,
270         AUXTB,
271         AUXTH,
272         AUXTW,
273         AUXTBW,
274         AUXTHW,
275         AWFE,
276         AWFI,
277         AYIELD,
278
279         AMOVB,
280         AMOVBU,
281         AMOVH,
282         AMOVHU,
283         AMOVW,
284         AMOVWU,
285         AMOV,
286         AMOVNP,
287         AMOVNPW,
288         AMOVP,
289         AMOVPD,
290         AMOVPQ,
291         AMOVPS,
292         AMOVPSW,
293         AMOVPW,
294
295 /* 
296  * Do not reorder or fragment the conditional branch 
297  * opcodes, or the predication code will break 
298  */ 
299         ABEQ,
300         ABNE,
301         ABCS,
302         ABHS,
303         ABCC,
304         ABLO,
305         ABMI,
306         ABPL,
307         ABVS,
308         ABVC,
309         ABHI,
310         ABLS,
311         ABGE,
312         ABLT,
313         ABGT,
314         ABLE,
315
316         AFABSD,
317         AFABSS,
318         AFADDD,
319         AFADDS,
320         AFCCMPD,
321         AFCCMPED,
322         AFCCMPS,
323         AFCCMPES,
324         AFCMPD,
325         AFCMPED,
326         AFCMPES,
327         AFCMPS,
328         AFCVTSD,
329         AFCVTDS,
330         AFCVTZSD,
331         AFCVTZSDW,
332         AFCVTZSS,
333         AFCVTZSSW,
334         AFCVTZUD,
335         AFCVTZUDW,
336         AFCVTZUS,
337         AFCVTZUSW,
338         AFDIVD,
339         AFDIVS,
340         AFMOVD,
341         AFMOVS,
342         AFMULD,
343         AFMULS,
344         AFNEGD,
345         AFNEGS,
346         AFSQRTD,
347         AFSQRTS,
348         AFSUBD,
349         AFSUBS,
350         ASCVTFD,
351         ASCVTFS,
352         ASCVTFWD,
353         ASCVTFWS,
354         AUCVTFD,
355         AUCVTFS,
356         AUCVTFWD,
357         AUCVTFWS,
358
359         ATEXT,
360         ADATA,
361         AGLOBL,
362         AHISTORY,
363         ANAME,
364         AWORD,
365         ADYNT,
366         AINIT,
367         ABCASE,
368         ACASE,
369         ADWORD,
370         ASIGNAME,
371         AGOK,
372         ARETURN,
373         AEND,
374
375         AFCSELS,
376         AFCSELD,
377         AFMAXS,
378         AFMINS,
379         AFMAXD,
380         AFMIND,
381         AFMAXNMS,
382         AFMAXNMD,
383         AFNMULS,
384         AFNMULD,
385         AFRINTNS,
386         AFRINTND,
387         AFRINTPS,
388         AFRINTPD,
389         AFRINTMS,
390         AFRINTMD,
391         AFRINTZS,
392         AFRINTZD,
393         AFRINTAS,
394         AFRINTAD,
395         AFRINTXS,
396         AFRINTXD,
397         AFRINTIS,
398         AFRINTID,
399         AFMADDS,
400         AFMADDD,
401         AFMSUBS,
402         AFMSUBD,
403         AFNMADDS,
404         AFNMADDD,
405         AFNMSUBS,
406         AFNMSUBD,
407         AFMINNMS,
408         AFMINNMD,
409         AFCVTDH,
410         AFCVTHS,
411         AFCVTHD,
412         AFCVTSH,
413
414         AAESD,
415         AAESE,
416         AAESIMC,
417         AAESMC,
418         ASHA1C,
419         ASHA1H,
420         ASHA1M,
421         ASHA1P,
422         ASHA1SU0,
423         ASHA1SU1,
424         ASHA256H,
425         ASHA256H2,
426         ASHA256SU0,
427         ASHA256SU1,
428         
429         ALAST,
430 };
431
432 /* form offset parameter to SYS; special register number */
433 #define SYSARG5(op0,op1,Cn,Cm,op2)      ((op0)<<19|(op1)<<16|(Cn)<<12|(Cm)<<8|(op2)<<5)
434 #define SYSARG4(op1,Cn,Cm,op2)  SYSARG5(0,op1,Cn,Cm,op2)
435
436 /* type/name */
437 enum
438 {
439         D_GOK   = 0,
440         D_NONE,
441
442 /* name */
443         D_EXTERN,
444         D_STATIC,
445         D_AUTO,
446         D_PARAM,
447
448 /* type */
449         D_BRANCH,
450         D_OREG,         /* offset(reg) */
451         D_XPRE,         /* offset(reg)! - pre-indexed */
452         D_XPOST,                /* (reg)offset! - post-indexed */
453         D_CONST,        /* 32-bit constant */
454         D_DCONST,       /* 64-bit constant */
455         D_FCONST,       /* floating-point constant */
456         D_SCONST,       /* short string constant */
457         D_REG,          /* Rn = Wn or Xn depending on op */
458         D_SP,           /* distinguish REGSP from REGZERO */
459         D_FREG,         /* Fn = Sn or Dn depending on op */
460         D_VREG,         /* Vn = SIMD register */
461         D_SPR,          /* special processor register */
462         D_FILE,
463         D_OCONST,       /* absolute address constant (unused) */
464         D_FILE1,
465
466         D_SHIFT,                /* Rm{, ashift #imm} */
467         D_PAIR,         /* pair of gprs */
468         D_ADDR,         /* address constant (dynamic loading) */
469         D_ADRP,         /* pc-relative addressing, page */
470         D_ADRLO,        /* low-order 12 bits of external reference */
471         D_EXTREG,       /* Rm{, ext #imm} */
472         D_ROFF,         /* register offset Rn+ext(Rm)<<s */
473         D_COND,         /* condition EQ, NE, etc */
474         D_VLANE,                /* Vn lane */
475         D_VSET,         /* set of Vn */
476
477         /* offset iff type is D_SPR */
478         D_DAIF  = SYSARG5(3,3,4,2,1),
479         D_NZCV  = SYSARG5(3,3,4,2,0),
480         D_FPSR  = SYSARG5(3,3,4,4,1),
481         D_FPCR  = SYSARG5(3,3,4,4,0),
482         D_SPSR_EL1 = SYSARG5(3,0,4,0,0),
483         D_ELR_EL1 = SYSARG5(3,0,4,0,1),
484         D_SPSR_EL2 = SYSARG5(3,4,4,0,0),
485         D_ELR_EL2 = SYSARG5(3,4,4,0,1),
486 //      D_SPSR_EL3 = SYSARG5(3,x,4,x,x),
487 //      D_ELR_EL3 = SYSARG5(3,x,4,x,x),
488 //      D_LR_EL0 = SYSARG5(3,x,4,x,x),
489         D_CurrentEL = SYSARG5(3,0,4,2,2),
490         D_SP_EL0 = SYSARG5(3,0,4,1,0),
491 //      D_SP_EL1 = SYSARG5(3,x,4,x,x),
492 //      D_SP_EL2 = SYSARG5(3,x,4,x,x),
493         D_SPSel = SYSARG5(3,0,4,2,0),
494 //      D_SPSR_abt  = SYSARG5(3,x,4,x,x),
495 //      D_SPSR_fiq = SYSARG5(3,x,4,x,x),
496 //      D_SPSR_ieq = SYSARG5(3,x,4,x,x),
497 //      D_SPSR_und = SYSARG5(3,x,4,x,x),
498         D_DAIFSet = (1<<30)|0,
499         D_DAIFClr = (1<<30)|1
500 };
501
502 /*
503  * this is the ranlib header
504  */
505 #define SYMDEF  "__.SYMDEF"
506
507 /*
508  * this is the simulated IEEE floating point
509  */
510 typedef struct  Ieee    Ieee;
511 struct  Ieee
512 {
513         long    l;      /* contains ls-man      0xffffffff */
514         long    h;      /* contains sign        0x80000000
515                                     exp         0x7ff00000
516                                     ms-man      0x000fffff */
517 };