]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/7a/a.h
cc, ?a, ?l: change thunk type to uintptr
[plan9front.git] / sys / src / cmd / 7a / a.h
1 /*
2  * arm64
3  */
4 #include <u.h>
5 #include <libc.h>
6 #include <bio.h>
7 #include "../7c/7.out.h"
8
9 typedef vlong int64;
10
11 #ifndef EXTERN
12 #define EXTERN  extern
13 #endif
14
15 typedef struct  Sym     Sym;
16 typedef struct  Gen     Gen;
17 typedef struct  Io      Io;
18 typedef struct  Hist    Hist;
19
20 #define MAXALIGN        7
21 #define FPCHIP          1
22 #define NSYMB           8192
23 #define BUFSIZ          8192
24 #define HISTSZ          20
25 #define NINCLUDE        10
26 #define NHUNK           10000
27 #define EOF             (-1)
28 #define IGN             (-2)
29 #define GETC()          ((--fi.c < 0)? filbuf(): *fi.p++ & 0xff)
30 #define NHASH           503
31 #define STRINGSZ        200
32 #define NMACRO          10
33
34 struct  Sym
35 {
36         Sym*    link;
37         char*   macro;
38         long    value;
39         ushort  type;
40         char    *name;
41         char    sym;
42 };
43 #define S       ((Sym*)0)
44
45 EXTERN  struct
46 {
47         char*   p;
48         int     c;
49 } fi;
50
51 struct  Io
52 {
53         Io*     link;
54         char    b[BUFSIZ];
55         char*   p;
56         short   c;
57         short   f;
58 };
59 #define I       ((Io*)0)
60
61 EXTERN  struct
62 {
63         Sym*    sym;
64         short   type;
65 } h[NSYM];
66
67 struct  Gen
68 {
69         Sym*    sym;
70         int64   offset;
71         short   type;
72         short   reg;
73         short   xreg;
74         short   name;
75         short   ext;
76         double  dval;
77         char    sval[NSNAME];
78 };
79
80 struct  Hist
81 {
82         Hist*   link;
83         char*   name;
84         long    line;
85         long    offset;
86 };
87 #define H       ((Hist*)0)
88
89 enum
90 {
91         CLAST,
92         CMACARG,
93         CMACRO,
94         CPREPROC,
95 };
96
97 EXTERN  char    debug[256];
98 EXTERN  Sym*    hash[NHASH];
99 EXTERN  char*   Dlist[30];
100 EXTERN  int     nDlist;
101 EXTERN  Hist*   ehist;
102 EXTERN  int     newflag;
103 EXTERN  Hist*   hist;
104 EXTERN  char*   hunk;
105 EXTERN  char*   include[NINCLUDE];
106 EXTERN  Io*     iofree;
107 EXTERN  Io*     ionext;
108 EXTERN  Io*     iostack;
109 EXTERN  long    lineno;
110 EXTERN  int     nerrors;
111 EXTERN  long    nhunk;
112 EXTERN  int     ninclude;
113 EXTERN  Gen     nullgen;
114 EXTERN  char*   outfile;
115 EXTERN  int     pass;
116 EXTERN  char*   pathname;
117 EXTERN  long    pc;
118 EXTERN  int     peekc;
119 EXTERN  int     sym;
120 EXTERN  char    symb[NSYMB];
121 EXTERN  int     thechar;
122 EXTERN  char*   thestring;
123 EXTERN  uintptr thunk;
124 EXTERN  Biobuf  obuf;
125
126 void*   alloc(long);
127 void*   allocn(void*, long, long);
128 void    errorexit(void);
129 void    pushio(void);
130 void    newio(void);
131 void    newfile(char*, int);
132 Sym*    slookup(char*);
133 Sym*    lookup(void);
134 void    syminit(Sym*);
135 long    yylex(void);
136 int     getc(void);
137 int     getnsc(void);
138 void    unget(int);
139 int     escchar(int);
140 void    cinit(void);
141 void    pinit(char*);
142 void    cclean(void);
143 void    outcode(int, Gen*, int, Gen*);
144 void    outcodec(int, int, Gen*, int, Gen*);
145 void    outcode4(int, Gen*, int, Gen*, Gen*);
146 void    zname(char*, int, int);
147 void    zaddr(Gen*, int);
148 void    ieeedtod(Ieee*, double);
149 int     filbuf(void);
150 Sym*    getsym(void);
151 void    domacro(void);
152 void    macund(void);
153 void    macdef(void);
154 void    macexpand(Sym*, char*);
155 void    macinc(void);
156 void    maclin(void);
157 void    macprag(void);
158 void    macif(int);
159 void    macend(void);
160 void    outhist(void);
161 void    dodefine(char*);
162 void    prfile(long);
163 void    linehist(char*, int);
164 void    gethunk(void);
165 void    yyerror(char*, ...);
166 int     yyparse(void);
167 void    setinclude(char*);
168 int     assemble(char*);
169
170 /*
171  *      system-dependent stuff from ../cc/compat.c
172  */
173
174 enum                            /* keep in synch with ../cc/cc.h */
175 {
176         Plan9   = 1<<0,
177         Unix    = 1<<1,
178         Windows = 1<<2,
179 };
180 int     mywait(int*);
181 int     mycreat(char*, int);
182 int     systemtype(int);
183 int     pathchar(void);
184 int     myfork(void);
185 void*   mysbrk(ulong);