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