159cc4ca5SDavid du Colombier /* 259cc4ca5SDavid du Colombier * mips r4k definition 317dd33a2SDavid du Colombier * 417dd33a2SDavid du Colombier * currently no compiler - not related to 0c 559cc4ca5SDavid du Colombier */ 659cc4ca5SDavid du Colombier #include <u.h> 7*eaba85aaSDavid du Colombier #include <libc.h> 859cc4ca5SDavid du Colombier #include <bio.h> 917dd33a2SDavid du Colombier #include "mips2ureg.h" 1059cc4ca5SDavid du Colombier #include <mach.h> 1159cc4ca5SDavid du Colombier 1259cc4ca5SDavid du Colombier #define FPREGBYTES 4 1359cc4ca5SDavid du Colombier #define REGOFF(x) (ulong)(&((struct Ureg *) 0)->x) 1459cc4ca5SDavid du Colombier 1559cc4ca5SDavid du Colombier #define SP REGOFF(sp) 1659cc4ca5SDavid du Colombier #define PC REGOFF(pc) 1759cc4ca5SDavid du Colombier #define R1 REGOFF(hr1) 1859cc4ca5SDavid du Colombier #define R31 REGOFF(hr31) 1959cc4ca5SDavid du Colombier #define FP_REG(x) (R1+8+FPREGBYTES*(x)) 2059cc4ca5SDavid du Colombier 2159cc4ca5SDavid du Colombier #define REGSIZE sizeof(struct Ureg) 2259cc4ca5SDavid du Colombier #define FPREGSIZE (FPREGBYTES*33) 2359cc4ca5SDavid du Colombier 2459cc4ca5SDavid du Colombier Reglist mips2reglist[] = { 2559cc4ca5SDavid du Colombier {"STATUS", REGOFF(status), RINT|RRDONLY, 'X'}, 2659cc4ca5SDavid du Colombier {"CAUSE", REGOFF(cause), RINT|RRDONLY, 'X'}, 2759cc4ca5SDavid du Colombier {"BADVADDR", REGOFF(badvaddr), RINT|RRDONLY, 'X'}, 2859cc4ca5SDavid du Colombier {"TLBVIRT", REGOFF(tlbvirt), RINT|RRDONLY, 'X'}, 2959cc4ca5SDavid du Colombier {"HI", REGOFF(hhi), RINT|RRDONLY, 'W'}, 3059cc4ca5SDavid du Colombier {"LO", REGOFF(hlo), RINT|RRDONLY, 'W'}, 3159cc4ca5SDavid du Colombier {"PC", PC, RINT, 'X'}, 3259cc4ca5SDavid du Colombier {"SP", SP, RINT, 'X'}, 3359cc4ca5SDavid du Colombier {"R31", R31, RINT, 'W'}, 3459cc4ca5SDavid du Colombier {"R30", REGOFF(hr30), RINT, 'W'}, 3559cc4ca5SDavid du Colombier {"R28", REGOFF(hr28), RINT, 'W'}, 3659cc4ca5SDavid du Colombier {"R27", REGOFF(hr27), RINT, 'W'}, 3759cc4ca5SDavid du Colombier {"R26", REGOFF(hr26), RINT, 'W'}, 3859cc4ca5SDavid du Colombier {"R25", REGOFF(hr25), RINT, 'W'}, 3959cc4ca5SDavid du Colombier {"R24", REGOFF(hr24), RINT, 'W'}, 4059cc4ca5SDavid du Colombier {"R23", REGOFF(hr23), RINT, 'W'}, 4159cc4ca5SDavid du Colombier {"R22", REGOFF(hr22), RINT, 'W'}, 4259cc4ca5SDavid du Colombier {"R21", REGOFF(hr21), RINT, 'W'}, 4359cc4ca5SDavid du Colombier {"R20", REGOFF(hr20), RINT, 'W'}, 4459cc4ca5SDavid du Colombier {"R19", REGOFF(hr19), RINT, 'W'}, 4559cc4ca5SDavid du Colombier {"R18", REGOFF(hr18), RINT, 'W'}, 4659cc4ca5SDavid du Colombier {"R17", REGOFF(hr17), RINT, 'W'}, 4759cc4ca5SDavid du Colombier {"R16", REGOFF(hr16), RINT, 'W'}, 4859cc4ca5SDavid du Colombier {"R15", REGOFF(hr15), RINT, 'W'}, 4959cc4ca5SDavid du Colombier {"R14", REGOFF(hr14), RINT, 'W'}, 5059cc4ca5SDavid du Colombier {"R13", REGOFF(hr13), RINT, 'W'}, 5159cc4ca5SDavid du Colombier {"R12", REGOFF(hr12), RINT, 'W'}, 5259cc4ca5SDavid du Colombier {"R11", REGOFF(hr11), RINT, 'W'}, 5359cc4ca5SDavid du Colombier {"R10", REGOFF(hr10), RINT, 'W'}, 5459cc4ca5SDavid du Colombier {"R9", REGOFF(hr9), RINT, 'W'}, 5559cc4ca5SDavid du Colombier {"R8", REGOFF(hr8), RINT, 'W'}, 5659cc4ca5SDavid du Colombier {"R7", REGOFF(hr7), RINT, 'W'}, 5759cc4ca5SDavid du Colombier {"R6", REGOFF(hr6), RINT, 'W'}, 5859cc4ca5SDavid du Colombier {"R5", REGOFF(hr5), RINT, 'W'}, 5959cc4ca5SDavid du Colombier {"R4", REGOFF(hr4), RINT, 'W'}, 6059cc4ca5SDavid du Colombier {"R3", REGOFF(hr3), RINT, 'W'}, 6159cc4ca5SDavid du Colombier {"R2", REGOFF(hr2), RINT, 'W'}, 6259cc4ca5SDavid du Colombier {"R1", REGOFF(hr1), RINT, 'W'}, 6359cc4ca5SDavid du Colombier {"F0", FP_REG(0), RFLT, 'F'}, 6459cc4ca5SDavid du Colombier {"F1", FP_REG(1), RFLT, 'f'}, 6559cc4ca5SDavid du Colombier {"F2", FP_REG(2), RFLT, 'F'}, 6659cc4ca5SDavid du Colombier {"F3", FP_REG(3), RFLT, 'f'}, 6759cc4ca5SDavid du Colombier {"F4", FP_REG(4), RFLT, 'F'}, 6859cc4ca5SDavid du Colombier {"F5", FP_REG(5), RFLT, 'f'}, 6959cc4ca5SDavid du Colombier {"F6", FP_REG(6), RFLT, 'F'}, 7059cc4ca5SDavid du Colombier {"F7", FP_REG(7), RFLT, 'f'}, 7159cc4ca5SDavid du Colombier {"F8", FP_REG(8), RFLT, 'F'}, 7259cc4ca5SDavid du Colombier {"F9", FP_REG(9), RFLT, 'f'}, 7359cc4ca5SDavid du Colombier {"F10", FP_REG(10), RFLT, 'F'}, 7459cc4ca5SDavid du Colombier {"F11", FP_REG(11), RFLT, 'f'}, 7559cc4ca5SDavid du Colombier {"F12", FP_REG(12), RFLT, 'F'}, 7659cc4ca5SDavid du Colombier {"F13", FP_REG(13), RFLT, 'f'}, 7759cc4ca5SDavid du Colombier {"F14", FP_REG(14), RFLT, 'F'}, 7859cc4ca5SDavid du Colombier {"F15", FP_REG(15), RFLT, 'f'}, 7959cc4ca5SDavid du Colombier {"F16", FP_REG(16), RFLT, 'F'}, 8059cc4ca5SDavid du Colombier {"F17", FP_REG(17), RFLT, 'f'}, 8159cc4ca5SDavid du Colombier {"F18", FP_REG(18), RFLT, 'F'}, 8259cc4ca5SDavid du Colombier {"F19", FP_REG(19), RFLT, 'f'}, 8359cc4ca5SDavid du Colombier {"F20", FP_REG(20), RFLT, 'F'}, 8459cc4ca5SDavid du Colombier {"F21", FP_REG(21), RFLT, 'f'}, 8559cc4ca5SDavid du Colombier {"F22", FP_REG(22), RFLT, 'F'}, 8659cc4ca5SDavid du Colombier {"F23", FP_REG(23), RFLT, 'f'}, 8759cc4ca5SDavid du Colombier {"F24", FP_REG(24), RFLT, 'F'}, 8859cc4ca5SDavid du Colombier {"F25", FP_REG(25), RFLT, 'f'}, 8959cc4ca5SDavid du Colombier {"F26", FP_REG(26), RFLT, 'F'}, 9059cc4ca5SDavid du Colombier {"F27", FP_REG(27), RFLT, 'f'}, 9159cc4ca5SDavid du Colombier {"F28", FP_REG(28), RFLT, 'F'}, 9259cc4ca5SDavid du Colombier {"F29", FP_REG(29), RFLT, 'f'}, 9359cc4ca5SDavid du Colombier {"F30", FP_REG(30), RFLT, 'F'}, 9459cc4ca5SDavid du Colombier {"F31", FP_REG(31), RFLT, 'f'}, 9559cc4ca5SDavid du Colombier {"FPCR", FP_REG(32), RFLT, 'X'}, 9659cc4ca5SDavid du Colombier { 0 } 9759cc4ca5SDavid du Colombier }; 9859cc4ca5SDavid du Colombier 9959cc4ca5SDavid du Colombier /* mips r4k big-endian */ 10059cc4ca5SDavid du Colombier Mach mmips2be = 10159cc4ca5SDavid du Colombier { 10259cc4ca5SDavid du Colombier "mips2", 10359cc4ca5SDavid du Colombier MMIPS2, /* machine type */ 10459cc4ca5SDavid du Colombier mips2reglist, /* register set */ 10559cc4ca5SDavid du Colombier REGSIZE, /* number of bytes in reg set */ 10659cc4ca5SDavid du Colombier FPREGSIZE, /* number of bytes in fp reg set */ 10759cc4ca5SDavid du Colombier "PC", /* name of PC */ 10859cc4ca5SDavid du Colombier "SP", /* name of SP */ 10959cc4ca5SDavid du Colombier "R31", /* name of link register */ 11059cc4ca5SDavid du Colombier "setR30", /* static base register name */ 11159cc4ca5SDavid du Colombier 0, /* SB value */ 11259cc4ca5SDavid du Colombier 0x1000, /* page size */ 11359cc4ca5SDavid du Colombier 0xC0000000, /* kernel base */ 11459cc4ca5SDavid du Colombier 0x40000000, /* kernel text mask */ 11517dd33a2SDavid du Colombier 0x7FFFFFFFULL, /* user stack top */ 11659cc4ca5SDavid du Colombier 4, /* quantization of pc */ 11759cc4ca5SDavid du Colombier 4, /* szaddr */ 11859cc4ca5SDavid du Colombier 8, /* szreg */ 11959cc4ca5SDavid du Colombier 4, /* szfloat */ 12059cc4ca5SDavid du Colombier 8, /* szdouble */ 12159cc4ca5SDavid du Colombier }; 12259cc4ca5SDavid du Colombier 12359cc4ca5SDavid du Colombier /* mips r4k little-endian */ 12459cc4ca5SDavid du Colombier Mach mmips2le = 12559cc4ca5SDavid du Colombier { 12659cc4ca5SDavid du Colombier "mips2", 12759cc4ca5SDavid du Colombier NMIPS2, /* machine type */ 12859cc4ca5SDavid du Colombier mips2reglist, /* register set */ 12959cc4ca5SDavid du Colombier REGSIZE, /* number of bytes in reg set */ 13059cc4ca5SDavid du Colombier FPREGSIZE, /* number of bytes in fp reg set */ 13159cc4ca5SDavid du Colombier "PC", /* name of PC */ 13259cc4ca5SDavid du Colombier "SP", /* name of SP */ 13359cc4ca5SDavid du Colombier "R31", /* name of link register */ 13459cc4ca5SDavid du Colombier "setR30", /* static base register name */ 13559cc4ca5SDavid du Colombier 0, /* SB value */ 13659cc4ca5SDavid du Colombier 0x1000, /* page size */ 1374de34a7eSDavid du Colombier 0xC0000000ULL, /* kernel base */ 1384de34a7eSDavid du Colombier 0x40000000ULL, /* kernel text mask */ 1394de34a7eSDavid du Colombier 0x7FFFFFFFULL, /* user stack top */ 14059cc4ca5SDavid du Colombier 4, /* quantization of pc */ 14159cc4ca5SDavid du Colombier 4, /* szaddr */ 14259cc4ca5SDavid du Colombier 8, /* szreg */ 14359cc4ca5SDavid du Colombier 4, /* szfloat */ 14459cc4ca5SDavid du Colombier 8, /* szdouble */ 14559cc4ca5SDavid du Colombier }; 146