10 #include "/386/include/ureg.h"
13 #define REGOFF(x) (uintptr)(&((struct Ureg *) 0)->x)
19 #define REGSIZE sizeof(struct Ureg)
20 #define FP_CTLS(x) (REGSIZE+2*(x))
21 #define FP_CTL(x) (REGSIZE+4*(x))
22 #define FP_REG(x) (FP_CTL(8)+16*(x))
23 #define XM_REG(x) (FP_CTL(8)+8*16+16*(x))
26 Reglist i386reglist[] = {
27 {"DI", REGOFF(di), RINT, 'X'},
28 {"SI", REGOFF(si), RINT, 'X'},
29 {"BP", REGOFF(bp), RINT, 'X'},
30 {"BX", REGOFF(bx), RINT, 'X'},
31 {"DX", REGOFF(dx), RINT, 'X'},
32 {"CX", REGOFF(cx), RINT, 'X'},
33 {"AX", REGOFF(ax), RINT, 'X'},
34 {"GS", REGOFF(gs), RINT, 'X'},
35 {"FS", REGOFF(fs), RINT, 'X'},
36 {"ES", REGOFF(es), RINT, 'X'},
37 {"DS", REGOFF(ds), RINT, 'X'},
38 {"TRAP", REGOFF(trap), RINT, 'X'},
39 {"ECODE", REGOFF(ecode), RINT, 'X'},
40 {"PC", PC, RINT, 'X'},
41 {"CS", REGOFF(cs), RINT, 'X'},
42 {"EFLAGS", REGOFF(flags), RINT, 'X'},
43 {"SP", SP, RINT, 'X'},
44 {"SS", REGOFF(ss), RINT, 'X'},
46 {"FCW", FP_CTLS(0), RFLT, 'x'},
47 {"FSW", FP_CTLS(1), RFLT, 'x'},
48 {"FTW", FP_CTLS(2), RFLT, 'b'},
49 {"FOP", FP_CTLS(3), RFLT, 'x'},
50 {"FIP", FP_CTL(2), RFLT, 'X'},
51 {"FCS", FP_CTLS(6), RFLT, 'x'},
52 {"FDP", FP_CTL(4), RFLT, 'X'},
53 {"FDS", FP_CTLS(10), RFLT, 'x'},
54 {"MXCSR", FP_CTL(6), RFLT, 'X'},
55 {"MXCSRMASK", FP_CTL(7), RFLT, 'X'},
57 {"M0", FP_REG(0), RFLT, 'F'}, /* assumes double */
58 {"M1", FP_REG(1), RFLT, 'F'},
59 {"M2", FP_REG(2), RFLT, 'F'},
60 {"M3", FP_REG(3), RFLT, 'F'},
61 {"M4", FP_REG(4), RFLT, 'F'},
62 {"M5", FP_REG(5), RFLT, 'F'},
63 {"M6", FP_REG(6), RFLT, 'F'},
64 {"M7", FP_REG(7), RFLT, 'F'},
66 {"X0", XM_REG(0), RFLT, 'F'}, /* assumes double */
67 {"X1", XM_REG(1), RFLT, 'F'},
68 {"X2", XM_REG(2), RFLT, 'F'},
69 {"X3", XM_REG(3), RFLT, 'F'},
70 {"X4", XM_REG(4), RFLT, 'F'},
71 {"X5", XM_REG(5), RFLT, 'F'},
72 {"X6", XM_REG(6), RFLT, 'F'},
73 {"X7", XM_REG(7), RFLT, 'F'},
75 {"F0", FP_REG(0), RFLT, '3'},
76 {"F1", FP_REG(1), RFLT, '3'},
77 {"F2", FP_REG(2), RFLT, '3'},
78 {"F3", FP_REG(3), RFLT, '3'},
79 {"F4", FP_REG(4), RFLT, '3'},
80 {"F5", FP_REG(5), RFLT, '3'},
81 {"F6", FP_REG(6), RFLT, '3'},
82 {"F7", FP_REG(7), RFLT, '3'},
90 MI386, /* machine type */
91 i386reglist, /* register list */
92 REGSIZE, /* size of registers in bytes */
93 FPREGSIZE, /* size of fp registers in bytes */
94 "PC", /* name of PC */
95 "SP", /* name of SP */
96 0, /* link register */
97 "setSB", /* static base register name (bogus anyways) */
98 0, /* static base register value */
99 0x1000, /* page size */
100 0xF0100000ULL, /* kernel base */
101 0xF0000000ULL, /* kernel text mask */
102 0x7FFFFFFFULL, /* user stack top */
103 1, /* quantization of pc */