13e12c5d1SDavid du Colombier /* 23e12c5d1SDavid du Colombier * 386 definition 33e12c5d1SDavid du Colombier */ 4bd389b36SDavid du Colombier #include <u.h> 5*fe483074SDavid du Colombier #include <libc.h> 6bd389b36SDavid du Colombier #include <bio.h> 73e12c5d1SDavid du Colombier #include "/386/include/ureg.h" 8bd389b36SDavid du Colombier #include <mach.h> 93e12c5d1SDavid du Colombier 107dd7cddfSDavid du Colombier #define REGOFF(x) (ulong)(&((struct Ureg *) 0)->x) 113e12c5d1SDavid du Colombier 123e12c5d1SDavid du Colombier #define PC REGOFF(pc) 133e12c5d1SDavid du Colombier #define SP REGOFF(sp) 14bd389b36SDavid du Colombier #define AX REGOFF(ax) 153e12c5d1SDavid du Colombier 167dd7cddfSDavid du Colombier #define REGSIZE sizeof(struct Ureg) 177dd7cddfSDavid du Colombier #define FP_CTL(x) (REGSIZE+4*(x)) 187dd7cddfSDavid du Colombier #define FP_REG(x) (FP_CTL(7)+10*(x)) 1937e88e97SDavid du Colombier #define FPREGSIZE (7*4+8*10) 207dd7cddfSDavid du Colombier 213e12c5d1SDavid du Colombier Reglist i386reglist[] = { 22219b2ee8SDavid du Colombier {"DI", REGOFF(di), RINT, 'X'}, 23219b2ee8SDavid du Colombier {"SI", REGOFF(si), RINT, 'X'}, 24219b2ee8SDavid du Colombier {"BP", REGOFF(bp), RINT, 'X'}, 25219b2ee8SDavid du Colombier {"BX", REGOFF(bx), RINT, 'X'}, 26219b2ee8SDavid du Colombier {"DX", REGOFF(dx), RINT, 'X'}, 27219b2ee8SDavid du Colombier {"CX", REGOFF(cx), RINT, 'X'}, 28219b2ee8SDavid du Colombier {"AX", REGOFF(ax), RINT, 'X'}, 29219b2ee8SDavid du Colombier {"GS", REGOFF(gs), RINT, 'X'}, 30219b2ee8SDavid du Colombier {"FS", REGOFF(fs), RINT, 'X'}, 31219b2ee8SDavid du Colombier {"ES", REGOFF(es), RINT, 'X'}, 32219b2ee8SDavid du Colombier {"DS", REGOFF(ds), RINT, 'X'}, 33219b2ee8SDavid du Colombier {"TRAP", REGOFF(trap), RINT, 'X'}, 34219b2ee8SDavid du Colombier {"ECODE", REGOFF(ecode), RINT, 'X'}, 35219b2ee8SDavid du Colombier {"PC", PC, RINT, 'X'}, 36219b2ee8SDavid du Colombier {"CS", REGOFF(cs), RINT, 'X'}, 37219b2ee8SDavid du Colombier {"EFLAGS", REGOFF(flags), RINT, 'X'}, 38219b2ee8SDavid du Colombier {"SP", SP, RINT, 'X'}, 39219b2ee8SDavid du Colombier {"SS", REGOFF(ss), RINT, 'X'}, 403e12c5d1SDavid du Colombier 41219b2ee8SDavid du Colombier {"E0", FP_CTL(0), RFLT, 'X'}, 42219b2ee8SDavid du Colombier {"E1", FP_CTL(1), RFLT, 'X'}, 43219b2ee8SDavid du Colombier {"E2", FP_CTL(2), RFLT, 'X'}, 44219b2ee8SDavid du Colombier {"E3", FP_CTL(3), RFLT, 'X'}, 45219b2ee8SDavid du Colombier {"E4", FP_CTL(4), RFLT, 'X'}, 46219b2ee8SDavid du Colombier {"E5", FP_CTL(5), RFLT, 'X'}, 47219b2ee8SDavid du Colombier {"E6", FP_CTL(6), RFLT, 'X'}, 4837e88e97SDavid du Colombier {"F0", FP_REG(0), RFLT, '3'}, 4937e88e97SDavid du Colombier {"F1", FP_REG(1), RFLT, '3'}, 5037e88e97SDavid du Colombier {"F2", FP_REG(2), RFLT, '3'}, 5137e88e97SDavid du Colombier {"F3", FP_REG(3), RFLT, '3'}, 5237e88e97SDavid du Colombier {"F4", FP_REG(4), RFLT, '3'}, 5337e88e97SDavid du Colombier {"F5", FP_REG(5), RFLT, '3'}, 5437e88e97SDavid du Colombier {"F6", FP_REG(6), RFLT, '3'}, 5537e88e97SDavid du Colombier {"F7", FP_REG(7), RFLT, '3'}, 563e12c5d1SDavid du Colombier { 0 } 573e12c5d1SDavid du Colombier }; 583e12c5d1SDavid du Colombier 593e12c5d1SDavid du Colombier Mach mi386 = 603e12c5d1SDavid du Colombier { 613e12c5d1SDavid du Colombier "386", 62219b2ee8SDavid du Colombier MI386, /* machine type */ 633e12c5d1SDavid du Colombier i386reglist, /* register list */ 647dd7cddfSDavid du Colombier REGSIZE, /* size of registers in bytes */ 657dd7cddfSDavid du Colombier FPREGSIZE, /* size of fp registers in bytes */ 667dd7cddfSDavid du Colombier "PC", /* name of PC */ 677dd7cddfSDavid du Colombier "SP", /* name of SP */ 68219b2ee8SDavid du Colombier 0, /* link register */ 697dd7cddfSDavid du Colombier "setSB", /* static base register name (bogus anyways) */ 707dd7cddfSDavid du Colombier 0, /* static base register value */ 713e12c5d1SDavid du Colombier 0x1000, /* page size */ 7242860f21SDavid du Colombier 0xF0100000ULL, /* kernel base */ 732cca75a1SDavid du Colombier 0xF0000000ULL, /* kernel text mask */ 744de34a7eSDavid du Colombier 0x7FFFFFFFULL, /* user stack top */ 753e12c5d1SDavid du Colombier 1, /* quantization of pc */ 763e12c5d1SDavid du Colombier 4, /* szaddr */ 773e12c5d1SDavid du Colombier 4, /* szreg */ 783e12c5d1SDavid du Colombier 4, /* szfloat */ 793e12c5d1SDavid du Colombier 8, /* szdouble */ 803e12c5d1SDavid du Colombier }; 81