Annotation of lucent/sys/src/libmach/v.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * mips definition
        !             3:  */
        !             4: #include <u.h>
        !             5: #include <bio.h>
        !             6: #include "/mips/include/ureg.h"
        !             7: #include <mach.h>
        !             8: 
        !             9: 
        !            10: #define USER_REG(x)    (0x1000-4-0xA0+(ulong)(x))
        !            11: #define        FP_REG(x)       (0x0000+4+(x))
        !            12: #define        SCALLOFF        (0x0000+4+132)
        !            13: 
        !            14: #define        REGOFF(x)       (USER_REG(&((struct Ureg *) 0)->x))
        !            15: 
        !            16: #define SP             REGOFF(sp)
        !            17: #define PC             REGOFF(pc)
        !            18: #define        R1              REGOFF(r1)
        !            19: #define        R31             REGOFF(r31)
        !            20: 
        !            21: #define        MINREG  1
        !            22: #define        MAXREG  64
        !            23: 
        !            24: Reglist mipsreglist[] = {
        !            25:        {"STATUS",      REGOFF(status), RINT|RRDONLY, 'X'},
        !            26:        {"CAUSE",       REGOFF(cause),  RINT|RRDONLY, 'X'},
        !            27:        {"BADVADDR",    REGOFF(badvaddr),       RINT|RRDONLY, 'X'},
        !            28:        {"TLBVIRT",     REGOFF(tlbvirt),        RINT|RRDONLY, 'X'},
        !            29:        {"HI",          REGOFF(hi),     RINT|RRDONLY, 'X'},
        !            30:        {"LO",          REGOFF(lo),     RINT|RRDONLY, 'X'},
        !            31: #define        FW      5       /* first register we may write */
        !            32:        {"PC",          PC,     RINT, 'X'},
        !            33:        {"SP",          SP,     RINT, 'X'},
        !            34:        {"R31",         R31,    RINT, 'X'},
        !            35:        {"R30",         REGOFF(r30),    RINT, 'X'},
        !            36:        {"R28",         REGOFF(r28),    RINT, 'X'},
        !            37:        {"R27",         REGOFF(r27),    RINT, 'X'},
        !            38:        {"R26",         REGOFF(r26),    RINT, 'X'},
        !            39:        {"R25",         REGOFF(r25),    RINT, 'X'},
        !            40:        {"R24",         REGOFF(r24),    RINT, 'X'},
        !            41:        {"R23",         REGOFF(r23),    RINT, 'X'},
        !            42:        {"R22",         REGOFF(r22),    RINT, 'X'},
        !            43:        {"R21",         REGOFF(r21),    RINT, 'X'},
        !            44:        {"R20",         REGOFF(r20),    RINT, 'X'},
        !            45:        {"R19",         REGOFF(r19),    RINT, 'X'},
        !            46:        {"R18",         REGOFF(r18),    RINT, 'X'},
        !            47:        {"R17",         REGOFF(r17),    RINT, 'X'},
        !            48:        {"R16",         REGOFF(r16),    RINT, 'X'},
        !            49:        {"R15",         REGOFF(r15),    RINT, 'X'},
        !            50:        {"R14",         REGOFF(r14),    RINT, 'X'},
        !            51:        {"R13",         REGOFF(r13),    RINT, 'X'},
        !            52:        {"R12",         REGOFF(r12),    RINT, 'X'},
        !            53:        {"R11",         REGOFF(r11),    RINT, 'X'},
        !            54:        {"R10",         REGOFF(r10),    RINT, 'X'},
        !            55:        {"R9",          REGOFF(r9),     RINT, 'X'},
        !            56:        {"R8",          REGOFF(r8),     RINT, 'X'},
        !            57:        {"R7",          REGOFF(r7),     RINT, 'X'},
        !            58:        {"R6",          REGOFF(r6),     RINT, 'X'},
        !            59:        {"R5",          REGOFF(r5),     RINT, 'X'},
        !            60:        {"R4",          REGOFF(r4),     RINT, 'X'},
        !            61:        {"R3",          REGOFF(r3),     RINT, 'X'},
        !            62:        {"R2",          REGOFF(r2),     RINT, 'X'},
        !            63:        {"R1",          REGOFF(r1),     RINT, 'X'},
        !            64:        {"F0",          FP_REG(0x00),   RFLT, 'F'},
        !            65:        {"F1",          FP_REG(0x04),   RFLT, 'f'},
        !            66:        {"F2",          FP_REG(0x08),   RFLT, 'F'},
        !            67:        {"F3",          FP_REG(0x0C),   RFLT, 'f'},
        !            68:        {"F4",          FP_REG(0x10),   RFLT, 'F'},
        !            69:        {"F5",          FP_REG(0x14),   RFLT, 'f'},
        !            70:        {"F6",          FP_REG(0x18),   RFLT, 'F'},
        !            71:        {"F7",          FP_REG(0x1C),   RFLT, 'f'},
        !            72:        {"F8",          FP_REG(0x20),   RFLT, 'F'},
        !            73:        {"F9",          FP_REG(0x24),   RFLT, 'f'},
        !            74:        {"F10",         FP_REG(0x28),   RFLT, 'F'},
        !            75:        {"F11",         FP_REG(0x2C),   RFLT, 'f'},
        !            76:        {"F12",         FP_REG(0x30),   RFLT, 'F'},
        !            77:        {"F13",         FP_REG(0x34),   RFLT, 'f'},
        !            78:        {"F14",         FP_REG(0x38),   RFLT, 'F'},
        !            79:        {"F15",         FP_REG(0x3C),   RFLT, 'f'},
        !            80:        {"F16",         FP_REG(0x40),   RFLT, 'F'},
        !            81:        {"F17",         FP_REG(0x44),   RFLT, 'f'},
        !            82:        {"F18",         FP_REG(0x48),   RFLT, 'F'},
        !            83:        {"F19",         FP_REG(0x4C),   RFLT, 'f'},
        !            84:        {"F20",         FP_REG(0x50),   RFLT, 'F'},
        !            85:        {"F21",         FP_REG(0x54),   RFLT, 'f'},
        !            86:        {"F22",         FP_REG(0x58),   RFLT, 'F'},
        !            87:        {"F23",         FP_REG(0x5C),   RFLT, 'f'},
        !            88:        {"F24",         FP_REG(0x60),   RFLT, 'F'},
        !            89:        {"F25",         FP_REG(0x64),   RFLT, 'f'},
        !            90:        {"F26",         FP_REG(0x68),   RFLT, 'F'},
        !            91:        {"F27",         FP_REG(0x6C),   RFLT, 'f'},
        !            92:        {"F28",         FP_REG(0x70),   RFLT, 'F'},
        !            93:        {"F29",         FP_REG(0x74),   RFLT, 'f'},
        !            94:        {"F30",         FP_REG(0x78),   RFLT, 'F'},
        !            95:        {"F31",         FP_REG(0x7C),   RFLT, 'f'},
        !            96:        {"FPCR",        FP_REG(0x80),   RFLT, 'X'},
        !            97:        {  0 }
        !            98: };
        !            99: 
        !           100:        /* the machine description */
        !           101: Mach mmips =
        !           102: {
        !           103:        "mips",
        !           104:        MMIPS,          /* machine type */
        !           105:        mipsreglist,    /* register set */
        !           106:        MINREG,         /* minimum register */
        !           107:        MAXREG,         /* maximum register */
        !           108:        "PC",
        !           109:        "SP",
        !           110:        "R31",
        !           111:        R1,             /* return reg */
        !           112:        0x1000,         /* page size */
        !           113:        0xC0000000,     /* kernel base */
        !           114:        0x40000000,     /* kernel text mask */
        !           115:        0,              /* offset of ksp in /proc/proc */
        !           116:        0,              /* correction to ksp value */
        !           117:        4,              /* offset of kpc in /proc/proc */
        !           118:        0,              /* correction to kpc value */
        !           119:        SCALLOFF,       /* offset to sys call # in ublk */
        !           120:        4,              /* quantization of pc */
        !           121:        "setR30",       /* static base register name */
        !           122:        0,              /* value */
        !           123:        4,              /* szaddr */
        !           124:        4,              /* szreg */
        !           125:        4,              /* szfloat */
        !           126:        8,              /* szdouble */
        !           127: };

unix.superglobalmegacorp.com

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