1*2a571cc0SRichard Miller /* 2*2a571cc0SRichard Miller * RISC-V definition 3*2a571cc0SRichard Miller */ 4*2a571cc0SRichard Miller #include <lib9.h> 5*2a571cc0SRichard Miller #include <bio.h> 6*2a571cc0SRichard Miller #include "uregi.h" 7*2a571cc0SRichard Miller #include <mach.h> 8*2a571cc0SRichard Miller 9*2a571cc0SRichard Miller #define REGOFF(x) offsetof(struct Ureg, x) 10*2a571cc0SRichard Miller #define REGSIZE sizeof(struct Ureg) 11*2a571cc0SRichard Miller 12*2a571cc0SRichard Miller Reglist riscvreglist[] = { 13*2a571cc0SRichard Miller {"PC", REGOFF(pc), RINT, 'X'}, 14*2a571cc0SRichard Miller {"SP", REGOFF(r27), RINT, 'X'}, 15*2a571cc0SRichard Miller {"R31", REGOFF(r31), RINT, 'X'}, 16*2a571cc0SRichard Miller {"R30", REGOFF(r30), RINT, 'X'}, 17*2a571cc0SRichard Miller {"R28", REGOFF(r28), RINT, 'X'}, 18*2a571cc0SRichard Miller {"R27", REGOFF(r27), RINT, 'X'}, 19*2a571cc0SRichard Miller {"R26", REGOFF(r26), RINT, 'X'}, 20*2a571cc0SRichard Miller {"R25", REGOFF(r25), RINT, 'X'}, 21*2a571cc0SRichard Miller {"R24", REGOFF(r24), RINT, 'X'}, 22*2a571cc0SRichard Miller {"R23", REGOFF(r23), RINT, 'X'}, 23*2a571cc0SRichard Miller {"R22", REGOFF(r22), RINT, 'X'}, 24*2a571cc0SRichard Miller {"R21", REGOFF(r21), RINT, 'X'}, 25*2a571cc0SRichard Miller {"R20", REGOFF(r20), RINT, 'X'}, 26*2a571cc0SRichard Miller {"R19", REGOFF(r19), RINT, 'X'}, 27*2a571cc0SRichard Miller {"R18", REGOFF(r18), RINT, 'X'}, 28*2a571cc0SRichard Miller {"R17", REGOFF(r17), RINT, 'X'}, 29*2a571cc0SRichard Miller {"R16", REGOFF(r16), RINT, 'X'}, 30*2a571cc0SRichard Miller {"R15", REGOFF(r15), RINT, 'X'}, 31*2a571cc0SRichard Miller {"R14", REGOFF(r14), RINT, 'X'}, 32*2a571cc0SRichard Miller {"R13", REGOFF(r13), RINT, 'X'}, 33*2a571cc0SRichard Miller {"R12", REGOFF(r12), RINT, 'X'}, 34*2a571cc0SRichard Miller {"R11", REGOFF(r11), RINT, 'X'}, 35*2a571cc0SRichard Miller {"R10", REGOFF(r10), RINT, 'X'}, 36*2a571cc0SRichard Miller {"R9", REGOFF(r9), RINT, 'X'}, 37*2a571cc0SRichard Miller {"R8", REGOFF(r8), RINT, 'X'}, 38*2a571cc0SRichard Miller {"R7", REGOFF(r7), RINT, 'X'}, 39*2a571cc0SRichard Miller {"R6", REGOFF(r6), RINT, 'X'}, 40*2a571cc0SRichard Miller {"R5", REGOFF(r5), RINT, 'X'}, 41*2a571cc0SRichard Miller {"R4", REGOFF(r4), RINT, 'X'}, 42*2a571cc0SRichard Miller {"R3", REGOFF(r3), RINT, 'X'}, 43*2a571cc0SRichard Miller {"R2", REGOFF(r2), RINT, 'X'}, 44*2a571cc0SRichard Miller {"R1", REGOFF(r1), RINT, 'X'}, 45*2a571cc0SRichard Miller { 0 } 46*2a571cc0SRichard Miller }; 47*2a571cc0SRichard Miller 48*2a571cc0SRichard Miller /* the machine description */ 49*2a571cc0SRichard Miller Mach mriscv = 50*2a571cc0SRichard Miller { 51*2a571cc0SRichard Miller "riscv", 52*2a571cc0SRichard Miller MRISCV, /* machine type */ 53*2a571cc0SRichard Miller riscvreglist, /* register set */ 54*2a571cc0SRichard Miller REGSIZE, /* register set size */ 55*2a571cc0SRichard Miller 0, /* fp register set size */ 56*2a571cc0SRichard Miller "PC", /* name of PC */ 57*2a571cc0SRichard Miller "SP", /* name of SP */ 58*2a571cc0SRichard Miller "R1", /* name of link register */ 59*2a571cc0SRichard Miller "setSB", /* static base register name */ 60*2a571cc0SRichard Miller 0, /* static base register value */ 61*2a571cc0SRichard Miller 0x1000, /* page size */ 62*2a571cc0SRichard Miller 0x80000000ULL, /* kernel base */ 63*2a571cc0SRichard Miller 0xC0000000ULL, /* kernel text mask */ 64*2a571cc0SRichard Miller 0x3FFFFFFFULL, /* user stack top */ 65*2a571cc0SRichard Miller 2, /* quantization of pc */ 66*2a571cc0SRichard Miller 4, /* szaddr */ 67*2a571cc0SRichard Miller 4, /* szreg */ 68*2a571cc0SRichard Miller 4, /* szfloat */ 69*2a571cc0SRichard Miller 8, /* szdouble */ 70*2a571cc0SRichard Miller }; 71