1*74a4d8c2SCharles.Forsyth #define NSNAME 8 2*74a4d8c2SCharles.Forsyth #define NSYM 50 3*74a4d8c2SCharles.Forsyth #define NREG 16 4*74a4d8c2SCharles.Forsyth 5*74a4d8c2SCharles.Forsyth #define NOPROF (1<<0) 6*74a4d8c2SCharles.Forsyth #define DUPOK (1<<1) 7*74a4d8c2SCharles.Forsyth #define ALLTHUMBS (1<<2) 8*74a4d8c2SCharles.Forsyth 9*74a4d8c2SCharles.Forsyth #define REGRET 0 10*74a4d8c2SCharles.Forsyth #define REGARG 0 11*74a4d8c2SCharles.Forsyth /* compiler allocates R1 up as temps */ 12*74a4d8c2SCharles.Forsyth /* compiler allocates register variables R3 up */ 13*74a4d8c2SCharles.Forsyth #define REGEXT 6 14*74a4d8c2SCharles.Forsyth /* compiler allocates external registers R5 down */ 15*74a4d8c2SCharles.Forsyth #define REGTMPT 7 /* used by the loader - thumb */ 16*74a4d8c2SCharles.Forsyth #define REGTMP 11 /* used by the loader - arm */ 17*74a4d8c2SCharles.Forsyth #define REGSB 12 18*74a4d8c2SCharles.Forsyth #define REGSP 13 19*74a4d8c2SCharles.Forsyth #define REGLINK 14 20*74a4d8c2SCharles.Forsyth #define REGPC 15 21*74a4d8c2SCharles.Forsyth 22*74a4d8c2SCharles.Forsyth #define NFREG 8 23*74a4d8c2SCharles.Forsyth #define FREGRET 0 24*74a4d8c2SCharles.Forsyth #define FREGEXT 7 25*74a4d8c2SCharles.Forsyth /* compiler allocates register variables F0 up */ 26*74a4d8c2SCharles.Forsyth /* compiler allocates external registers F7 down */ 27*74a4d8c2SCharles.Forsyth 28*74a4d8c2SCharles.Forsyth enum as 29*74a4d8c2SCharles.Forsyth { 30*74a4d8c2SCharles.Forsyth 31*74a4d8c2SCharles.Forsyth AXXX, 32*74a4d8c2SCharles.Forsyth 33*74a4d8c2SCharles.Forsyth AAND, 34*74a4d8c2SCharles.Forsyth AEOR, 35*74a4d8c2SCharles.Forsyth ASUB, 36*74a4d8c2SCharles.Forsyth ARSB, // not used 37*74a4d8c2SCharles.Forsyth AADD, 38*74a4d8c2SCharles.Forsyth AADC, 39*74a4d8c2SCharles.Forsyth ASBC, 40*74a4d8c2SCharles.Forsyth ARSC, // not used 41*74a4d8c2SCharles.Forsyth ATST, 42*74a4d8c2SCharles.Forsyth ATEQ, // not used 43*74a4d8c2SCharles.Forsyth ACMP, 44*74a4d8c2SCharles.Forsyth ACMN, 45*74a4d8c2SCharles.Forsyth AORR, 46*74a4d8c2SCharles.Forsyth ABIC, 47*74a4d8c2SCharles.Forsyth 48*74a4d8c2SCharles.Forsyth AMVN, 49*74a4d8c2SCharles.Forsyth 50*74a4d8c2SCharles.Forsyth AB, 51*74a4d8c2SCharles.Forsyth ABL, 52*74a4d8c2SCharles.Forsyth 53*74a4d8c2SCharles.Forsyth /* 54*74a4d8c2SCharles.Forsyth * Do not reorder or fragment the conditional branch 55*74a4d8c2SCharles.Forsyth * opcodes, or the predication code will break 56*74a4d8c2SCharles.Forsyth */ 57*74a4d8c2SCharles.Forsyth 58*74a4d8c2SCharles.Forsyth ABEQ, 59*74a4d8c2SCharles.Forsyth ABNE, 60*74a4d8c2SCharles.Forsyth ABCS, 61*74a4d8c2SCharles.Forsyth ABHS, 62*74a4d8c2SCharles.Forsyth ABCC, 63*74a4d8c2SCharles.Forsyth ABLO, 64*74a4d8c2SCharles.Forsyth ABMI, 65*74a4d8c2SCharles.Forsyth ABPL, 66*74a4d8c2SCharles.Forsyth ABVS, 67*74a4d8c2SCharles.Forsyth ABVC, 68*74a4d8c2SCharles.Forsyth ABHI, 69*74a4d8c2SCharles.Forsyth ABLS, 70*74a4d8c2SCharles.Forsyth ABGE, 71*74a4d8c2SCharles.Forsyth ABLT, 72*74a4d8c2SCharles.Forsyth ABGT, 73*74a4d8c2SCharles.Forsyth ABLE, 74*74a4d8c2SCharles.Forsyth 75*74a4d8c2SCharles.Forsyth AMOVWD, 76*74a4d8c2SCharles.Forsyth AMOVWF, 77*74a4d8c2SCharles.Forsyth AMOVDW, 78*74a4d8c2SCharles.Forsyth AMOVFW, 79*74a4d8c2SCharles.Forsyth AMOVFD, 80*74a4d8c2SCharles.Forsyth AMOVDF, 81*74a4d8c2SCharles.Forsyth AMOVF, 82*74a4d8c2SCharles.Forsyth AMOVD, 83*74a4d8c2SCharles.Forsyth 84*74a4d8c2SCharles.Forsyth ACMPF, 85*74a4d8c2SCharles.Forsyth ACMPD, 86*74a4d8c2SCharles.Forsyth AADDF, 87*74a4d8c2SCharles.Forsyth AADDD, 88*74a4d8c2SCharles.Forsyth ASUBF, 89*74a4d8c2SCharles.Forsyth ASUBD, 90*74a4d8c2SCharles.Forsyth AMULF, 91*74a4d8c2SCharles.Forsyth AMULD, 92*74a4d8c2SCharles.Forsyth ADIVF, 93*74a4d8c2SCharles.Forsyth ADIVD, 94*74a4d8c2SCharles.Forsyth 95*74a4d8c2SCharles.Forsyth ASRL, // right logical 96*74a4d8c2SCharles.Forsyth ASRA, // right arithmetic 97*74a4d8c2SCharles.Forsyth ASLL, // left logical = left arithmetic 98*74a4d8c2SCharles.Forsyth AMULU, 99*74a4d8c2SCharles.Forsyth ADIVU, 100*74a4d8c2SCharles.Forsyth AMUL, 101*74a4d8c2SCharles.Forsyth ADIV, 102*74a4d8c2SCharles.Forsyth AMOD, 103*74a4d8c2SCharles.Forsyth AMODU, 104*74a4d8c2SCharles.Forsyth 105*74a4d8c2SCharles.Forsyth AMOVB, 106*74a4d8c2SCharles.Forsyth AMOVBU, 107*74a4d8c2SCharles.Forsyth AMOVH, 108*74a4d8c2SCharles.Forsyth AMOVHU, 109*74a4d8c2SCharles.Forsyth AMOVW, 110*74a4d8c2SCharles.Forsyth AMOVM, 111*74a4d8c2SCharles.Forsyth ASWPBU, // not used 112*74a4d8c2SCharles.Forsyth ASWPW, // not used 113*74a4d8c2SCharles.Forsyth 114*74a4d8c2SCharles.Forsyth ANOP, 115*74a4d8c2SCharles.Forsyth ARFE, 116*74a4d8c2SCharles.Forsyth ASWI, 117*74a4d8c2SCharles.Forsyth AMULA, // not used 118*74a4d8c2SCharles.Forsyth 119*74a4d8c2SCharles.Forsyth ADATA, 120*74a4d8c2SCharles.Forsyth AGLOBL, 121*74a4d8c2SCharles.Forsyth AGOK, 122*74a4d8c2SCharles.Forsyth AHISTORY, 123*74a4d8c2SCharles.Forsyth ANAME, 124*74a4d8c2SCharles.Forsyth ARET, // fn return 125*74a4d8c2SCharles.Forsyth ATEXT, // fn start 126*74a4d8c2SCharles.Forsyth AWORD, 127*74a4d8c2SCharles.Forsyth ADYNT, // not used 128*74a4d8c2SCharles.Forsyth AINIT, // not used 129*74a4d8c2SCharles.Forsyth ABCASE, // not used 130*74a4d8c2SCharles.Forsyth ACASE, // not used 131*74a4d8c2SCharles.Forsyth 132*74a4d8c2SCharles.Forsyth AEND, 133*74a4d8c2SCharles.Forsyth 134*74a4d8c2SCharles.Forsyth AMULL, 135*74a4d8c2SCharles.Forsyth AMULAL, 136*74a4d8c2SCharles.Forsyth AMULLU, 137*74a4d8c2SCharles.Forsyth AMULALU, 138*74a4d8c2SCharles.Forsyth 139*74a4d8c2SCharles.Forsyth ABX, 140*74a4d8c2SCharles.Forsyth ABXRET, 141*74a4d8c2SCharles.Forsyth 142*74a4d8c2SCharles.Forsyth ADWORD, 143*74a4d8c2SCharles.Forsyth 144*74a4d8c2SCharles.Forsyth ASIGNAME, 145*74a4d8c2SCharles.Forsyth 146*74a4d8c2SCharles.Forsyth ALAST, 147*74a4d8c2SCharles.Forsyth 148*74a4d8c2SCharles.Forsyth }; 149*74a4d8c2SCharles.Forsyth 150*74a4d8c2SCharles.Forsyth /* type/name */ 151*74a4d8c2SCharles.Forsyth #define D_GOK 0 152*74a4d8c2SCharles.Forsyth #define D_NONE 1 153*74a4d8c2SCharles.Forsyth 154*74a4d8c2SCharles.Forsyth /* type */ 155*74a4d8c2SCharles.Forsyth #define D_BRANCH (D_NONE+1) 156*74a4d8c2SCharles.Forsyth #define D_OREG (D_NONE+2) 157*74a4d8c2SCharles.Forsyth #define D_CONST (D_NONE+7) 158*74a4d8c2SCharles.Forsyth #define D_FCONST (D_NONE+8) 159*74a4d8c2SCharles.Forsyth #define D_SCONST (D_NONE+9) 160*74a4d8c2SCharles.Forsyth #define D_PSR (D_NONE+10) 161*74a4d8c2SCharles.Forsyth #define D_REG (D_NONE+12) 162*74a4d8c2SCharles.Forsyth #define D_FREG (D_NONE+13) 163*74a4d8c2SCharles.Forsyth #define D_FILE (D_NONE+16) 164*74a4d8c2SCharles.Forsyth #define D_OCONST (D_NONE+17) 165*74a4d8c2SCharles.Forsyth #define D_FILE1 (D_NONE+18) 166*74a4d8c2SCharles.Forsyth 167*74a4d8c2SCharles.Forsyth #define D_SHIFT (D_NONE+19) /* not used */ 168*74a4d8c2SCharles.Forsyth #define D_FPCR (D_NONE+20) 169*74a4d8c2SCharles.Forsyth #define D_REGREG (D_NONE+21) 170*74a4d8c2SCharles.Forsyth 171*74a4d8c2SCharles.Forsyth /* name */ 172*74a4d8c2SCharles.Forsyth #define D_EXTERN (D_NONE+3) 173*74a4d8c2SCharles.Forsyth #define D_STATIC (D_NONE+4) 174*74a4d8c2SCharles.Forsyth #define D_AUTO (D_NONE+5) 175*74a4d8c2SCharles.Forsyth #define D_PARAM (D_NONE+6) 176*74a4d8c2SCharles.Forsyth 177*74a4d8c2SCharles.Forsyth /* 178*74a4d8c2SCharles.Forsyth * this is the ranlib header 179*74a4d8c2SCharles.Forsyth */ 180*74a4d8c2SCharles.Forsyth #define SYMDEF "__.SYMDEF" 181*74a4d8c2SCharles.Forsyth 182*74a4d8c2SCharles.Forsyth /* 183*74a4d8c2SCharles.Forsyth * this is the simulated IEEE floating point 184*74a4d8c2SCharles.Forsyth */ 185*74a4d8c2SCharles.Forsyth typedef struct ieee Ieee; 186*74a4d8c2SCharles.Forsyth struct ieee 187*74a4d8c2SCharles.Forsyth { 188*74a4d8c2SCharles.Forsyth long l; /* contains ls-man 0xffffffff */ 189*74a4d8c2SCharles.Forsyth long h; /* contains sign 0x80000000 190*74a4d8c2SCharles.Forsyth exp 0x7ff00000 191*74a4d8c2SCharles.Forsyth ms-man 0x000fffff */ 192*74a4d8c2SCharles.Forsyth }; 193