3a8fc8ce2016672677a3a11ad79e0c4f7335226e
[fw/sdcc] / src / izt / izt.h
1 #include <common.h>
2
3 typedef enum {
4     REG_ID_NONE,
5     // Z80
6     REG_ID_A,
7     REG_ID_B,
8     REG_ID_C,
9     REG_ID_D,
10     REG_ID_E,
11     REG_ID_H,
12     REG_ID_L,
13     REG_ID_AF,
14     REG_ID_BC,
15     REG_ID_DE,
16     REG_ID_HL,
17     REG_ID_IX,
18     REG_ID_IY,
19     // TLCS-900H
20     REG_ID_XBC,
21     REG_ID_XDE,
22     // i186
23     REG_ID_CL,
24     REG_ID_CH,
25     REG_ID_CX,
26     REG_ID_DL,
27     REG_ID_DH,
28     REG_ID_DX,
29     REG_ID_MAX
30 } REG_ID;
31
32 enum {
33     REG_USED = 1,
34     REG_USED_HIDDEN = 2
35 };
36
37 enum {
38     REG_TYPE_CND = 1,
39     REG_TYPE_GPR = 2
40 } REG_TYPE;
41
42 typedef struct regs {
43     int size;
44     REG_ID id;
45     const char *name;
46     int used;
47     REG_ID hides[3];
48 } REG;
49
50 #define TEST(_d, _a) \
51         (_a) ? (void)0 : (failures++, printf("Test %s \"%s\" failed.\n", #_a, _d), _dumpRegs())
52
53 #define NUM_OF(_a)      (sizeof(_a)/sizeof(*(_a)))
54
55 typedef struct {
56     REG *regs;
57 } PORT_DATA;
58
59 PORT_DATA port_data;
60
61 void izt_init(REG *regs);
62 void izt_assignRegisters (eBBlock **ebbs, int count);