Quake-III-Arena

Quake III Arena GPL Source Release
Log | Files | Refs

config.h (2469B)


      1 typedef struct {
      2 	unsigned char max_unaligned_load;
      3 	Symbol (*rmap)(int);
      4 
      5 	void (*blkfetch)(int size, int off, int reg, int tmp);
      6 	void (*blkstore)(int size, int off, int reg, int tmp);
      7 	void (*blkloop)(int dreg, int doff,
      8 	                 int sreg, int soff,
      9 	                 int size, int tmps[]);
     10 	void (*_label)(Node);
     11 	int (*_rule)(void*, int);
     12 	short **_nts;
     13 	void (*_kids)(Node, int, Node*);
     14 	char **_string;
     15 	char **_templates;
     16 	char *_isinstruction;
     17 	char **_ntname;
     18 	void (*emit2)(Node);
     19 	void (*doarg)(Node);
     20 	void (*target)(Node);
     21 	void (*clobber)(Node);
     22 } Xinterface;
     23 extern int     askregvar(Symbol, Symbol);
     24 extern void    blkcopy(int, int, int, int, int, int[]);
     25 extern int     getregnum(Node);
     26 extern int     mayrecalc(Node);
     27 extern int     mkactual(int, int);
     28 extern void    mkauto(Symbol);
     29 extern Symbol  mkreg(char *, int, int, int);
     30 extern Symbol  mkwildcard(Symbol *);
     31 extern int     move(Node);
     32 extern int     notarget(Node);
     33 extern void    parseflags(int, char **);
     34 extern int     range(Node, int, int);
     35 extern unsigned regloc(Symbol);  /* omit */
     36 extern void    rtarget(Node, int, Symbol);
     37 extern void    setreg(Node, Symbol);
     38 extern void    spill(unsigned, int, Node);
     39 extern int     widens(Node);
     40 
     41 extern int      argoffset, maxargoffset;
     42 extern int      bflag, dflag;
     43 extern int      dalign, salign;
     44 extern int      framesize;
     45 extern unsigned freemask[], usedmask[];
     46 extern int      offset, maxoffset;
     47 extern int      swap;
     48 extern unsigned tmask[], vmask[];
     49 typedef struct {
     50 	unsigned listed:1;
     51 	unsigned registered:1;
     52 	unsigned emitted:1;
     53 	unsigned copy:1;
     54 	unsigned equatable:1;
     55 	unsigned spills:1;
     56 	unsigned mayrecalc:1;
     57 	void *state;
     58 	short inst;
     59 	Node kids[3];
     60 	Node prev, next;
     61 	Node prevuse;
     62 	short argno;
     63 } Xnode;
     64 typedef struct {
     65 	Symbol vbl;
     66 	short set;
     67 	short number;
     68 	unsigned mask;
     69 } *Regnode;
     70 enum { IREG=0, FREG=1 };
     71 typedef struct {
     72 	char *name;
     73 	unsigned int eaddr;  /* omit */
     74 	int offset;
     75 	Node lastuse;
     76 	int usecount;
     77 	Regnode regnode;
     78 	Symbol *wildcard;
     79 } Xsymbol;
     80 enum { RX=2 };
     81 typedef struct {
     82 	int offset;
     83 	unsigned freemask[2];
     84 } Env;
     85 
     86 #define LBURG_MAX SHRT_MAX
     87 
     88 enum { VREG=(44<<4) };
     89 
     90 /* Exported for the front end */
     91 extern void             blockbeg(Env *);
     92 extern void             blockend(Env *);
     93 extern void             emit(Node);
     94 extern Node             gen(Node);
     95 
     96 extern unsigned         emitbin(Node, int);
     97 
     98 #ifdef NDEBUG
     99 #define debug(x) (void)0
    100 #else
    101 #define debug(x) (void)(dflag&&((x),0))
    102 #endif