Annotation of lucent/sys/src/libmach/8.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * 386 definition
                      3:  */
                      4: #include <u.h>
                      5: #include <bio.h>
                      6: #include "/386/include/ureg.h"
                      7: #include <mach.h>
                      8: 
                      9: #define        MINREG  0
                     10: #define        MAXREG  0
                     11: 
                     12: #define USIZE          0x1000
                     13: #define USER_REG(x)    (USIZE-((19)*4)+(ulong)(x))
                     14: #define FP_CTL(x)      (0x0000+4+4*(x))
                     15: #define FP_REG(x)      (0x0000+4+7*4+10*(x))
                     16: #define        SCALLOFF        (0x0000+4+108)
                     17: 
                     18: #define        REGOFF(x)       (USER_REG(&((struct Ureg *) 0)->x))
                     19: 
                     20: #define PC             REGOFF(pc)
                     21: #define SP             REGOFF(sp)
                     22: #define        AX              REGOFF(ax)
                     23: 
                     24: Reglist i386reglist[] = {
                     25:        {"DI",          REGOFF(di),     RINT, 'X'},
                     26:        {"SI",          REGOFF(si),     RINT, 'X'},
                     27:        {"BP",          REGOFF(bp),     RINT, 'X'},
                     28:        {"BX",          REGOFF(bx),     RINT, 'X'},
                     29:        {"DX",          REGOFF(dx),     RINT, 'X'},
                     30:        {"CX",          REGOFF(cx),     RINT, 'X'},
                     31:        {"AX",          REGOFF(ax),     RINT, 'X'},
                     32:        {"GS",          REGOFF(gs),     RINT, 'X'},
                     33:        {"FS",          REGOFF(fs),     RINT, 'X'},
                     34:        {"ES",          REGOFF(es),     RINT, 'X'},
                     35:        {"DS",          REGOFF(ds),     RINT, 'X'},
                     36:        {"TRAP",        REGOFF(trap),   RINT, 'X'},
                     37:        {"ECODE",       REGOFF(ecode),  RINT, 'X'},
                     38:        {"PC",          PC,             RINT, 'X'},
                     39:        {"CS",          REGOFF(cs),     RINT, 'X'},
                     40:        {"EFLAGS",      REGOFF(flags),  RINT, 'X'},
                     41:        {"SP",          SP,             RINT, 'X'},
                     42:        {"SS",          REGOFF(ss),     RINT, 'X'},
                     43: 
                     44:        {"E0",          FP_CTL(0),      RFLT, 'X'},
                     45:        {"E1",          FP_CTL(1),      RFLT, 'X'},
                     46:        {"E2",          FP_CTL(2),      RFLT, 'X'},
                     47:        {"E3",          FP_CTL(3),      RFLT, 'X'},
                     48:        {"E4",          FP_CTL(4),      RFLT, 'X'},
                     49:        {"E5",          FP_CTL(5),      RFLT, 'X'},
                     50:        {"E6",          FP_CTL(6),      RFLT, 'X'},
                     51:        {"F0",          FP_REG(7),      RFLT, '3'},
                     52:        {"F1",          FP_REG(6),      RFLT, '3'},
                     53:        {"F2",          FP_REG(5),      RFLT, '3'},
                     54:        {"F3",          FP_REG(4),      RFLT, '3'},
                     55:        {"F4",          FP_REG(3),      RFLT, '3'},
                     56:        {"F5",          FP_REG(2),      RFLT, '3'},
                     57:        {"F6",          FP_REG(1),      RFLT, '3'},
                     58:        {"F7",          FP_REG(0),      RFLT, '3'},
                     59:        {  0 }
                     60: };
                     61: 
                     62: Mach mi386 =
                     63: {
                     64:        "386",
                     65:        MI386,          /* machine type */
                     66:        i386reglist,    /* register list */
                     67:        MINREG,         /* minimum register */
                     68:        MAXREG,         /* maximum register */
                     69:        "PC",
                     70:        "SP",
                     71:        0,              /* link register */
                     72:        AX,             /* return reg */
                     73:        0x1000,         /* page size */
                     74:        0x80100000,     /* kernel base */
                     75:        0,              /* kernel text mask */
                     76:        0,              /* offset of ksp in /proc/proc */
                     77:        4,              /* correction to ksp value */
                     78:        4,              /* offset of kpc in /proc/proc */
                     79:        0,              /* correction to kpc value */
                     80:        SCALLOFF,       /* offset in ublk to sys call # */
                     81:        1,              /* quantization of pc */
                     82:        "setSB",        /* static base register name (bogus anyways) */
                     83:        0,              /* value */
                     84:        4,              /* szaddr */
                     85:        4,              /* szreg */
                     86:        4,              /* szfloat */
                     87:        8,              /* szdouble */
                     88: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.