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