ref: bf4f158707ebfeacb15826ad4283ff247d7d81ae
dir: /sys/src/libmach/2.c/
/* * 68020 definition */ #include <u.h> #include "/68020/include/ureg.h" #include <libc.h> #include <bio.h> #include <mach.h> #define MAXREG 0 #define MINREG 0 #define REGOFF(x) (ulong)(&((struct Ureg *) 0)->x) #define VO REGOFF(vo) /* vo, 2 bytes */ #define SR REGOFF(sr) /* sr, 2 bytes */ #define R0 REGOFF(r0) #define PC REGOFF(pc) #define DBMAGIC REGOFF(magic) #define SP REGOFF(usp) #define REGSIZE (R0+4) #define FCTL(x) (REGSIZE+(x)*4) #define FREG(x) (FCTL(3)+(x)*12) #define FPREGSIZE (11*12) /* * 68020 register set */ Reglist m68020reglist[] = { {"VO", VO, RINT, 'x'}, {"SR", SR, RINT, 'x'}, {"MAGIC", DBMAGIC, RINT, 'X'}, {"PC", PC, RINT, 'X'}, {"A7", SP, RINT, 'X'}, {"KSP", REGOFF(sp), RINT, 'X'}, {"A6", REGOFF(a6), RINT, 'X'}, {"A5", REGOFF(a5), RINT, 'X'}, {"A4", REGOFF(a4), RINT, 'X'}, {"A3", REGOFF(a3), RINT, 'X'}, {"A2", REGOFF(a2), RINT, 'X'}, {"A1", REGOFF(a1), RINT, 'X'}, {"A0", REGOFF(a0), RINT, 'X'}, {"R7", REGOFF(r7), RINT, 'X'}, {"R6", REGOFF(r6), RINT, 'X'}, {"R5", REGOFF(r5), RINT, 'X'}, {"R4", REGOFF(r4), RINT, 'X'}, {"R3", REGOFF(r3), RINT, 'X'}, {"R2", REGOFF(r2), RINT, 'X'}, {"R1", REGOFF(r1), RINT, 'X'}, {"R0", REGOFF(r0), RINT, 'X'}, {"FPCR", FCTL(0), RFLT, 'X'}, {"FPSR", FCTL(1), RFLT, 'X'}, {"FPIAR", FCTL(2), RFLT, 'X'}, {"F0", FREG(0), RFLT, '8'}, {"F1", FREG(1), RFLT, '8'}, {"F2", FREG(2), RFLT, '8'}, {"F3", FREG(3), RFLT, '8'}, {"F4", FREG(4), RFLT, '8'}, {"F5", FREG(5), RFLT, '8'}, {"F6", FREG(6), RFLT, '8'}, {"F7", FREG(7), RFLT, '8'}, {0} }; Mach m68020 = { "68020", M68020, /* machine type */ m68020reglist, /* register list */ REGSIZE, /* number of bytes in reg set */ FPREGSIZE, /* number of bytes in fp reg set */ "PC", "A7", 0, /* link register */ "a6base", /* static base register name */ 0, /* value */ 0x2000, /* page size */ 0x80000000ULL, /* kernel base */ 0x80000000ULL, /* kernel text mask */ 0x7FFFFFFFULL, /* user stack top */ 2, /* quantization of pc */ 4, /* szaddr */ 4, /* szreg */ 4, /* szfloat */ 8, /* szdouble */ };