1 /* 2 * 960 definition 3 */ 4 #include <u.h> 5 #include <bio.h> 6 #include <mach.h> 7 8 #define MINREG 0 9 #define MAXREG 0 10 11 #define USIZE 0x1000 12 #define UR(x) (USIZE-((32)*4)+4*(x)) 13 14 /* 15 * until we decide how we'll take faults, we really 16 * don't know what the saved regs will look like. 17 * this is just a guess. -- presotto 18 */ 19 #define SP UR(29) 20 #define PC UR(30) 21 #define R4 UR(4) 22 23 Reglist i960reglist[] = { 24 { "R0", UR(0), RINT, 'X'}, 25 { "R1", UR(1), RINT, 'X'}, 26 { "R2", UR(2), RINT, 'X'}, 27 { "R3", UR(3), RINT, 'X'}, 28 { "R4", UR(4), RINT, 'X'}, 29 { "R5", UR(5), RINT, 'X'}, 30 { "R6", UR(6), RINT, 'X'}, 31 { "R7", UR(7), RINT, 'X'}, 32 { "R8", UR(8), RINT, 'X'}, 33 { "R9", UR(9), RINT, 'X'}, 34 { "R10", UR(10), RINT, 'X'}, 35 { "R11", UR(11), RINT, 'X'}, 36 { "R12", UR(12), RINT, 'X'}, 37 { "R13", UR(13), RINT, 'X'}, 38 { "R14", UR(14), RINT, 'X'}, 39 { "R15", UR(15), RINT, 'X'}, 40 { "R16", UR(16), RINT, 'X'}, 41 { "R17", UR(17), RINT, 'X'}, 42 { "R18", UR(18), RINT, 'X'}, 43 { "R19", UR(19), RINT, 'X'}, 44 { "R20", UR(20), RINT, 'X'}, 45 { "R21", UR(21), RINT, 'X'}, 46 { "R22", UR(22), RINT, 'X'}, 47 { "R23", UR(23), RINT, 'X'}, 48 { "R24", UR(24), RINT, 'X'}, 49 { "R25", UR(25), RINT, 'X'}, 50 { "R26", UR(26), RINT, 'X'}, 51 { "TMP", UR(27), RINT, 'X'}, 52 { "SB", UR(28), RINT, 'X'}, 53 { "SP", SP, RINT, 'X'}, 54 { "PC", PC, RINT, 'X'}, 55 { "R31", UR(31), RINT, 'X' }, 56 { 0 } 57 }; 58 59 Mach mi960 = 60 { 61 "960", 62 MI960, /* machine type */ 63 i960reglist, /* register list */ 64 MINREG, /* minimum register */ 65 MAXREG, /* maximum register */ 66 "PC", 67 "SP", 68 0, /* link register */ 69 R4, /* return register */ 70 0x1000, /* page size */ 71 0x80000000, /* kernel base */ 72 0, /* kernel text mask */ 73 0, /* offset of ksp in /proc/proc */ 74 0, /* correction to ksp value */ 75 4, /* offset of kpc in /proc/proc */ 76 0, /* correction to kpc value */ 77 0, /* offset in ublk of syscall #*/ 78 1, /* quantization of pc */ 79 "setSB", /* static base register name */ 80 0, /* value */ 81 4, /* szaddr */ 82 4, /* szreg */ 83 4, /* szfloat */ 84 8, /* szdouble */ 85 }; 86