1473d4f4bSDavid du Colombier /* 2473d4f4bSDavid du Colombier * 68020 definition 3473d4f4bSDavid du Colombier */ 4473d4f4bSDavid du Colombier #include <u.h> 5473d4f4bSDavid du Colombier #include "68020/ureg.h" 6*eaba85aaSDavid du Colombier #include <libc.h> 7473d4f4bSDavid du Colombier #include <bio.h> 8473d4f4bSDavid du Colombier #include <mach.h> 9473d4f4bSDavid du Colombier 10473d4f4bSDavid du Colombier #define MAXREG 0 11473d4f4bSDavid du Colombier #define MINREG 0 12473d4f4bSDavid du Colombier 13473d4f4bSDavid du Colombier #define REGOFF(x) (ulong)(&((struct Ureg *) 0)->x) 14473d4f4bSDavid du Colombier 15473d4f4bSDavid du Colombier #define VO REGOFF(vo) /* vo, 2 bytes */ 16473d4f4bSDavid du Colombier #define SR REGOFF(sr) /* sr, 2 bytes */ 17473d4f4bSDavid du Colombier #define R0 REGOFF(r0) 18473d4f4bSDavid du Colombier #define PC REGOFF(pc) 19473d4f4bSDavid du Colombier #define DBMAGIC REGOFF(magic) 20473d4f4bSDavid du Colombier #define SP REGOFF(usp) 21473d4f4bSDavid du Colombier 22473d4f4bSDavid du Colombier #define REGSIZE (R0+4) 23473d4f4bSDavid du Colombier #define FCTL(x) (REGSIZE+(x)*4) 24473d4f4bSDavid du Colombier #define FREG(x) (FCTL(3)+(x)*12) 25473d4f4bSDavid du Colombier #define FPREGSIZE (11*12) 26473d4f4bSDavid du Colombier 27473d4f4bSDavid du Colombier /* 28473d4f4bSDavid du Colombier * 68020 register set 29473d4f4bSDavid du Colombier */ 30473d4f4bSDavid du Colombier Reglist m68020reglist[] = { 31473d4f4bSDavid du Colombier {"VO", VO, RINT, 'x'}, 32473d4f4bSDavid du Colombier {"SR", SR, RINT, 'x'}, 33473d4f4bSDavid du Colombier {"MAGIC", DBMAGIC, RINT, 'X'}, 34473d4f4bSDavid du Colombier {"PC", PC, RINT, 'X'}, 35473d4f4bSDavid du Colombier {"A7", SP, RINT, 'X'}, 36473d4f4bSDavid du Colombier {"KSP", REGOFF(sp), RINT, 'X'}, 37473d4f4bSDavid du Colombier {"A6", REGOFF(a6), RINT, 'X'}, 38473d4f4bSDavid du Colombier {"A5", REGOFF(a5), RINT, 'X'}, 39473d4f4bSDavid du Colombier {"A4", REGOFF(a4), RINT, 'X'}, 40473d4f4bSDavid du Colombier {"A3", REGOFF(a3), RINT, 'X'}, 41473d4f4bSDavid du Colombier {"A2", REGOFF(a2), RINT, 'X'}, 42473d4f4bSDavid du Colombier {"A1", REGOFF(a1), RINT, 'X'}, 43473d4f4bSDavid du Colombier {"A0", REGOFF(a0), RINT, 'X'}, 44473d4f4bSDavid du Colombier {"R7", REGOFF(r7), RINT, 'X'}, 45473d4f4bSDavid du Colombier {"R6", REGOFF(r6), RINT, 'X'}, 46473d4f4bSDavid du Colombier {"R5", REGOFF(r5), RINT, 'X'}, 47473d4f4bSDavid du Colombier {"R4", REGOFF(r4), RINT, 'X'}, 48473d4f4bSDavid du Colombier {"R3", REGOFF(r3), RINT, 'X'}, 49473d4f4bSDavid du Colombier {"R2", REGOFF(r2), RINT, 'X'}, 50473d4f4bSDavid du Colombier {"R1", REGOFF(r1), RINT, 'X'}, 51473d4f4bSDavid du Colombier {"R0", REGOFF(r0), RINT, 'X'}, 52473d4f4bSDavid du Colombier {"FPCR", FCTL(0), RFLT, 'X'}, 53473d4f4bSDavid du Colombier {"FPSR", FCTL(1), RFLT, 'X'}, 54473d4f4bSDavid du Colombier {"FPIAR", FCTL(2), RFLT, 'X'}, 55473d4f4bSDavid du Colombier {"F0", FREG(0), RFLT, '8'}, 56473d4f4bSDavid du Colombier {"F1", FREG(1), RFLT, '8'}, 57473d4f4bSDavid du Colombier {"F2", FREG(2), RFLT, '8'}, 58473d4f4bSDavid du Colombier {"F3", FREG(3), RFLT, '8'}, 59473d4f4bSDavid du Colombier {"F4", FREG(4), RFLT, '8'}, 60473d4f4bSDavid du Colombier {"F5", FREG(5), RFLT, '8'}, 61473d4f4bSDavid du Colombier {"F6", FREG(6), RFLT, '8'}, 62473d4f4bSDavid du Colombier {"F7", FREG(7), RFLT, '8'}, 63473d4f4bSDavid du Colombier {0} 64473d4f4bSDavid du Colombier }; 65473d4f4bSDavid du Colombier 66473d4f4bSDavid du Colombier Mach m68020 = 67473d4f4bSDavid du Colombier { 68473d4f4bSDavid du Colombier "68020", 69473d4f4bSDavid du Colombier M68020, /* machine type */ 70473d4f4bSDavid du Colombier m68020reglist, /* register list */ 71473d4f4bSDavid du Colombier REGSIZE, /* number of bytes in reg set */ 72473d4f4bSDavid du Colombier FPREGSIZE, /* number of bytes in fp reg set */ 73473d4f4bSDavid du Colombier "PC", 74473d4f4bSDavid du Colombier "A7", 75473d4f4bSDavid du Colombier 0, /* link register */ 76473d4f4bSDavid du Colombier "a6base", /* static base register name */ 77473d4f4bSDavid du Colombier 0, /* value */ 78473d4f4bSDavid du Colombier 0x2000, /* page size */ 79473d4f4bSDavid du Colombier 0x80000000ULL, /* kernel base */ 80473d4f4bSDavid du Colombier 0x80000000ULL, /* kernel text mask */ 81473d4f4bSDavid du Colombier 0x7FFFFFFFULL, /* user stack top */ 82473d4f4bSDavid du Colombier 2, /* quantization of pc */ 83473d4f4bSDavid du Colombier 4, /* szaddr */ 84473d4f4bSDavid du Colombier 4, /* szreg */ 85473d4f4bSDavid du Colombier 4, /* szfloat */ 86473d4f4bSDavid du Colombier 8, /* szdouble */ 87473d4f4bSDavid du Colombier }; 88