1 /* 2 * 68020 definition 3 */ 4 #include <u.h> 5 #include "68020/ureg.h" 6 #include <libc.h> 7 #include <bio.h> 8 #include <mach.h> 9 10 #define MAXREG 0 11 #define MINREG 0 12 13 #define REGOFF(x) (ulong)(&((struct Ureg *) 0)->x) 14 15 #define VO REGOFF(vo) /* vo, 2 bytes */ 16 #define SR REGOFF(sr) /* sr, 2 bytes */ 17 #define R0 REGOFF(r0) 18 #define PC REGOFF(pc) 19 #define DBMAGIC REGOFF(magic) 20 #define SP REGOFF(usp) 21 22 #define REGSIZE (R0+4) 23 #define FCTL(x) (REGSIZE+(x)*4) 24 #define FREG(x) (FCTL(3)+(x)*12) 25 #define FPREGSIZE (11*12) 26 27 /* 28 * 68020 register set 29 */ 30 Reglist m68020reglist[] = { 31 {"VO", VO, RINT, 'x'}, 32 {"SR", SR, RINT, 'x'}, 33 {"MAGIC", DBMAGIC, RINT, 'X'}, 34 {"PC", PC, RINT, 'X'}, 35 {"A7", SP, RINT, 'X'}, 36 {"KSP", REGOFF(sp), RINT, 'X'}, 37 {"A6", REGOFF(a6), RINT, 'X'}, 38 {"A5", REGOFF(a5), RINT, 'X'}, 39 {"A4", REGOFF(a4), RINT, 'X'}, 40 {"A3", REGOFF(a3), RINT, 'X'}, 41 {"A2", REGOFF(a2), RINT, 'X'}, 42 {"A1", REGOFF(a1), RINT, 'X'}, 43 {"A0", REGOFF(a0), RINT, 'X'}, 44 {"R7", REGOFF(r7), RINT, 'X'}, 45 {"R6", REGOFF(r6), RINT, 'X'}, 46 {"R5", REGOFF(r5), RINT, 'X'}, 47 {"R4", REGOFF(r4), RINT, 'X'}, 48 {"R3", REGOFF(r3), RINT, 'X'}, 49 {"R2", REGOFF(r2), RINT, 'X'}, 50 {"R1", REGOFF(r1), RINT, 'X'}, 51 {"R0", REGOFF(r0), RINT, 'X'}, 52 {"FPCR", FCTL(0), RFLT, 'X'}, 53 {"FPSR", FCTL(1), RFLT, 'X'}, 54 {"FPIAR", FCTL(2), RFLT, 'X'}, 55 {"F0", FREG(0), RFLT, '8'}, 56 {"F1", FREG(1), RFLT, '8'}, 57 {"F2", FREG(2), RFLT, '8'}, 58 {"F3", FREG(3), RFLT, '8'}, 59 {"F4", FREG(4), RFLT, '8'}, 60 {"F5", FREG(5), RFLT, '8'}, 61 {"F6", FREG(6), RFLT, '8'}, 62 {"F7", FREG(7), RFLT, '8'}, 63 {0} 64 }; 65 66 Mach m68020 = 67 { 68 "68020", 69 M68020, /* machine type */ 70 m68020reglist, /* register list */ 71 REGSIZE, /* number of bytes in reg set */ 72 FPREGSIZE, /* number of bytes in fp reg set */ 73 "PC", 74 "A7", 75 0, /* link register */ 76 "a6base", /* static base register name */ 77 0, /* value */ 78 0x2000, /* page size */ 79 0x80000000ULL, /* kernel base */ 80 0x80000000ULL, /* kernel text mask */ 81 0x7FFFFFFFULL, /* user stack top */ 82 2, /* quantization of pc */ 83 4, /* szaddr */ 84 4, /* szreg */ 85 4, /* szfloat */ 86 8, /* szdouble */ 87 }; 88