1*ce95e1b3SDavid du Colombier #define NSNAME 8 2*ce95e1b3SDavid du Colombier #define NSYM 50 3*ce95e1b3SDavid du Colombier #define NREG 32 4*ce95e1b3SDavid du Colombier #define NOPROF (1<<0) 5*ce95e1b3SDavid du Colombier #define DUPOK (1<<1) 6*ce95e1b3SDavid du Colombier 7*ce95e1b3SDavid du Colombier /* 8*ce95e1b3SDavid du Colombier * Register roles are influenced by the compressed extension: 9*ce95e1b3SDavid du Colombier * CIW, CL, CS and CB format use only R8-R15 10*ce95e1b3SDavid du Colombier * CL and CS floating load/store use only F8-F15 11*ce95e1b3SDavid du Colombier * CI and CSS load/store assume stack pointer is R2 12*ce95e1b3SDavid du Colombier * C.JAL assumes link register is R1 13*ce95e1b3SDavid du Colombier */ 14*ce95e1b3SDavid du Colombier enum 15*ce95e1b3SDavid du Colombier { 16*ce95e1b3SDavid du Colombier REGZERO = 0, /* always zero */ 17*ce95e1b3SDavid du Colombier REGLINK = 1, /* call return address */ 18*ce95e1b3SDavid du Colombier REGSP = 2, /* stack pointer */ 19*ce95e1b3SDavid du Colombier REGSB = 3, /* static base */ 20*ce95e1b3SDavid du Colombier REGTMP = 4, /* assembler temporary */ 21*ce95e1b3SDavid du Colombier REGEXT = 7, /* extern reg from here down */ 22*ce95e1b3SDavid du Colombier REGRET = 8, /* fn return value */ 23*ce95e1b3SDavid du Colombier REGARG = 8, /* fn arg value */ 24*ce95e1b3SDavid du Colombier REGALLOC = 15, /* highest reg to allocate (allow for RV32E) */ 25*ce95e1b3SDavid du Colombier 26*ce95e1b3SDavid du Colombier FREGRET = 0, /* fn return value */ 27*ce95e1b3SDavid du Colombier FREGEXT = 27, /* extern reg from here down */ 28*ce95e1b3SDavid du Colombier FREGZERO = 28, 29*ce95e1b3SDavid du Colombier FREGHALF = 29, 30*ce95e1b3SDavid du Colombier FREGONE = 30, 31*ce95e1b3SDavid du Colombier FREGTWO = 31, 32*ce95e1b3SDavid du Colombier }; 33*ce95e1b3SDavid du Colombier 34*ce95e1b3SDavid du Colombier enum as 35*ce95e1b3SDavid du Colombier { 36*ce95e1b3SDavid du Colombier AXXX = 0, 37*ce95e1b3SDavid du Colombier 38*ce95e1b3SDavid du Colombier /* processor instructions */ 39*ce95e1b3SDavid du Colombier AADD, 40*ce95e1b3SDavid du Colombier AADDW, 41*ce95e1b3SDavid du Colombier AAMO_D, 42*ce95e1b3SDavid du Colombier AAMO_W, 43*ce95e1b3SDavid du Colombier AAND, 44*ce95e1b3SDavid du Colombier ABEQ, 45*ce95e1b3SDavid du Colombier ABGE, 46*ce95e1b3SDavid du Colombier ABGEU, 47*ce95e1b3SDavid du Colombier ABLT, 48*ce95e1b3SDavid du Colombier ABLTU, 49*ce95e1b3SDavid du Colombier ABNE, 50*ce95e1b3SDavid du Colombier ACSRRC, 51*ce95e1b3SDavid du Colombier ACSRRCI, 52*ce95e1b3SDavid du Colombier ACSRRS, 53*ce95e1b3SDavid du Colombier ACSRRSI, 54*ce95e1b3SDavid du Colombier ACSRRW, 55*ce95e1b3SDavid du Colombier ACSRRWI, 56*ce95e1b3SDavid du Colombier ADIV, 57*ce95e1b3SDavid du Colombier ADIVU, 58*ce95e1b3SDavid du Colombier ADIVUW, 59*ce95e1b3SDavid du Colombier ADIVW, 60*ce95e1b3SDavid du Colombier AFENCE, 61*ce95e1b3SDavid du Colombier AFENCE_I, 62*ce95e1b3SDavid du Colombier AJAL, 63*ce95e1b3SDavid du Colombier AJALR, 64*ce95e1b3SDavid du Colombier ALR_D, 65*ce95e1b3SDavid du Colombier ALR_W, 66*ce95e1b3SDavid du Colombier ALUI, 67*ce95e1b3SDavid du Colombier AMOVB, 68*ce95e1b3SDavid du Colombier AMOVBU, 69*ce95e1b3SDavid du Colombier AMOVH, 70*ce95e1b3SDavid du Colombier AMOVHU, 71*ce95e1b3SDavid du Colombier AMOV, 72*ce95e1b3SDavid du Colombier AMOVW, 73*ce95e1b3SDavid du Colombier AMOVWU, 74*ce95e1b3SDavid du Colombier AMUL, 75*ce95e1b3SDavid du Colombier AMULH, 76*ce95e1b3SDavid du Colombier AMULHSU, 77*ce95e1b3SDavid du Colombier AMULHU, 78*ce95e1b3SDavid du Colombier AMULW, 79*ce95e1b3SDavid du Colombier AOR, 80*ce95e1b3SDavid du Colombier AREM, 81*ce95e1b3SDavid du Colombier AREMU, 82*ce95e1b3SDavid du Colombier AREMUW, 83*ce95e1b3SDavid du Colombier AREMW, 84*ce95e1b3SDavid du Colombier ASC_D, 85*ce95e1b3SDavid du Colombier ASC_W, 86*ce95e1b3SDavid du Colombier ASLL, 87*ce95e1b3SDavid du Colombier ASLLW, 88*ce95e1b3SDavid du Colombier ASLT, 89*ce95e1b3SDavid du Colombier ASLTU, 90*ce95e1b3SDavid du Colombier ASRA, 91*ce95e1b3SDavid du Colombier ASRAW, 92*ce95e1b3SDavid du Colombier ASRL, 93*ce95e1b3SDavid du Colombier ASRLW, 94*ce95e1b3SDavid du Colombier ASUB, 95*ce95e1b3SDavid du Colombier ASUBW, 96*ce95e1b3SDavid du Colombier ASWAP_D, 97*ce95e1b3SDavid du Colombier ASWAP_W, 98*ce95e1b3SDavid du Colombier ASYS, 99*ce95e1b3SDavid du Colombier AXOR, 100*ce95e1b3SDavid du Colombier 101*ce95e1b3SDavid du Colombier /* floating point */ 102*ce95e1b3SDavid du Colombier AMOVF, /* FLW, FSW, FSGNJ.S */ 103*ce95e1b3SDavid du Colombier AMOVD, /* FLD, FSD, FSGNJ.D */ 104*ce95e1b3SDavid du Colombier AMOVFD, /* FCVT.D.S */ 105*ce95e1b3SDavid du Colombier AMOVDF, /* FCVT.S.D */ 106*ce95e1b3SDavid du Colombier AMOVWF, /* FCVT.S.W */ 107*ce95e1b3SDavid du Colombier AMOVUF, /* FCVT.S.WU */ 108*ce95e1b3SDavid du Colombier AMOVFW, /* FCVT.W.S */ 109*ce95e1b3SDavid du Colombier AMOVWD, /* FCVT.D.W */ 110*ce95e1b3SDavid du Colombier AMOVUD, /* FCVT.D.WU */ 111*ce95e1b3SDavid du Colombier AMOVDW, /* FCVT.W.D */ 112*ce95e1b3SDavid du Colombier AADDF, /* FADD.S */ 113*ce95e1b3SDavid du Colombier AADDD, /* FADD.D */ 114*ce95e1b3SDavid du Colombier ASUBF, /* FSUB.S */ 115*ce95e1b3SDavid du Colombier ASUBD, /* FSUB.D */ 116*ce95e1b3SDavid du Colombier AMULF, /* FMUL.S */ 117*ce95e1b3SDavid du Colombier AMULD, /* FMUL.D */ 118*ce95e1b3SDavid du Colombier ADIVF, /* FDIV.S */ 119*ce95e1b3SDavid du Colombier ADIVD, /* FDIV.D */ 120*ce95e1b3SDavid du Colombier ACMPLTF, /* FLT.S */ 121*ce95e1b3SDavid du Colombier ACMPLTD, /* FLT.D */ 122*ce95e1b3SDavid du Colombier ACMPEQF, /* FEQ.S */ 123*ce95e1b3SDavid du Colombier ACMPEQD, /* FEQ.D */ 124*ce95e1b3SDavid du Colombier ACMPLEF, /* FLE.S */ 125*ce95e1b3SDavid du Colombier ACMPLED, /* FLE.S */ 126*ce95e1b3SDavid du Colombier 127*ce95e1b3SDavid du Colombier /* floating point instructions not included */ 128*ce95e1b3SDavid du Colombier /* 129*ce95e1b3SDavid du Colombier FMADD.S FMADD.D 130*ce95e1b3SDavid du Colombier FMSUB.S FMSUB.D 131*ce95e1b3SDavid du Colombier FNMSUB.S FNMSUB.D 132*ce95e1b3SDavid du Colombier FNMADD.S FNMADD.D 133*ce95e1b3SDavid du Colombier FSQRT.S FSQRT.D 134*ce95e1b3SDavid du Colombier FSGNJ.S FSGNJ.D 135*ce95e1b3SDavid du Colombier FSGNJN.S FSGNJN.D 136*ce95e1b3SDavid du Colombier FSGNNX.S FSGNNX.D 137*ce95e1b3SDavid du Colombier FMIN.S FMIN.D 138*ce95e1b3SDavid du Colombier FMAX.S FMAX.D 139*ce95e1b3SDavid du Colombier FMV.X.W 140*ce95e1b3SDavid du Colombier FCLASS.S FCLASS.D 141*ce95e1b3SDavid du Colombier FCVT.WU.S FCVT.WU.D 142*ce95e1b3SDavid du Colombier FMV.W.X 143*ce95e1b3SDavid du Colombier */ 144*ce95e1b3SDavid du Colombier 145*ce95e1b3SDavid du Colombier 146*ce95e1b3SDavid du Colombier /* pseudo-ops */ 147*ce95e1b3SDavid du Colombier ABGT, 148*ce95e1b3SDavid du Colombier ABGTU, 149*ce95e1b3SDavid du Colombier ABLE, 150*ce95e1b3SDavid du Colombier ABLEU, 151*ce95e1b3SDavid du Colombier ASGT, 152*ce95e1b3SDavid du Colombier ASGTU, 153*ce95e1b3SDavid du Colombier AJMP, 154*ce95e1b3SDavid du Colombier ARET, 155*ce95e1b3SDavid du Colombier ANOP, 156*ce95e1b3SDavid du Colombier 157*ce95e1b3SDavid du Colombier /* C compiler pseudo-ops */ 158*ce95e1b3SDavid du Colombier ADATA, 159*ce95e1b3SDavid du Colombier AGLOBL, 160*ce95e1b3SDavid du Colombier AGOK, 161*ce95e1b3SDavid du Colombier AHISTORY, 162*ce95e1b3SDavid du Colombier ANAME, 163*ce95e1b3SDavid du Colombier ATEXT, 164*ce95e1b3SDavid du Colombier AWORD, 165*ce95e1b3SDavid du Colombier AEND, 166*ce95e1b3SDavid du Colombier ADYNT, 167*ce95e1b3SDavid du Colombier AINIT, 168*ce95e1b3SDavid du Colombier ASIGNAME, 169*ce95e1b3SDavid du Colombier 170*ce95e1b3SDavid du Colombier /* RV64 extension */ 171*ce95e1b3SDavid du Colombier ADWORD, 172*ce95e1b3SDavid du Colombier AMOVFV, 173*ce95e1b3SDavid du Colombier AMOVDV, 174*ce95e1b3SDavid du Colombier AMOVVF, 175*ce95e1b3SDavid du Colombier AMOVUVF, 176*ce95e1b3SDavid du Colombier AMOVVD, 177*ce95e1b3SDavid du Colombier AMOVUVD, 178*ce95e1b3SDavid du Colombier 179*ce95e1b3SDavid du Colombier ALAST, 180*ce95e1b3SDavid du Colombier }; 181*ce95e1b3SDavid du Colombier 182*ce95e1b3SDavid du Colombier /* type/name */ 183*ce95e1b3SDavid du Colombier enum 184*ce95e1b3SDavid du Colombier { 185*ce95e1b3SDavid du Colombier D_GOK = 0, 186*ce95e1b3SDavid du Colombier D_NONE, 187*ce95e1b3SDavid du Colombier 188*ce95e1b3SDavid du Colombier /* name */ 189*ce95e1b3SDavid du Colombier D_EXTERN, 190*ce95e1b3SDavid du Colombier D_STATIC, 191*ce95e1b3SDavid du Colombier D_AUTO, 192*ce95e1b3SDavid du Colombier D_PARAM, 193*ce95e1b3SDavid du Colombier 194*ce95e1b3SDavid du Colombier /* type */ 195*ce95e1b3SDavid du Colombier D_BRANCH, 196*ce95e1b3SDavid du Colombier D_OREG, 197*ce95e1b3SDavid du Colombier D_CONST, 198*ce95e1b3SDavid du Colombier D_FCONST, 199*ce95e1b3SDavid du Colombier D_SCONST, 200*ce95e1b3SDavid du Colombier D_REG, 201*ce95e1b3SDavid du Colombier D_CTLREG, 202*ce95e1b3SDavid du Colombier D_FREG, 203*ce95e1b3SDavid du Colombier D_FCREG, 204*ce95e1b3SDavid du Colombier D_FILE, 205*ce95e1b3SDavid du Colombier D_FILE1, 206*ce95e1b3SDavid du Colombier D_VCONST, 207*ce95e1b3SDavid du Colombier }; 208*ce95e1b3SDavid du Colombier 209*ce95e1b3SDavid du Colombier /* 210*ce95e1b3SDavid du Colombier * this is the ranlib header 211*ce95e1b3SDavid du Colombier */ 212*ce95e1b3SDavid du Colombier #define SYMDEF "__.SYMDEF" 213*ce95e1b3SDavid du Colombier 214*ce95e1b3SDavid du Colombier /* 215*ce95e1b3SDavid du Colombier * this is the simulated IEEE floating point 216*ce95e1b3SDavid du Colombier */ 217*ce95e1b3SDavid du Colombier typedef struct ieee Ieee; 218*ce95e1b3SDavid du Colombier struct ieee 219*ce95e1b3SDavid du Colombier { 220*ce95e1b3SDavid du Colombier long l; /* contains ls-man 0xffffffff */ 221*ce95e1b3SDavid du Colombier long h; /* contains sign 0x80000000 222*ce95e1b3SDavid du Colombier exp 0x7ff00000 223*ce95e1b3SDavid du Colombier ms-man 0x000fffff */ 224*ce95e1b3SDavid du Colombier }; 225