]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libmach/0.c
webfs: preauth support
[plan9front.git] / sys / src / libmach / 0.c
1 /*
2  * mips r4k definition
3  *
4  * currently no compiler - not related to 0c
5  */
6 #include <u.h>
7 #include <bio.h>
8 #include "mips2ureg.h"
9 #include <mach.h>
10
11 #define FPREGBYTES      4
12 #define REGOFF(x)       (ulong)(&((struct Ureg *) 0)->x)
13
14 #define SP              REGOFF(sp)
15 #define PC              REGOFF(pc)
16 #define R1              REGOFF(hr1)
17 #define R31             REGOFF(hr31)
18 #define FP_REG(x)       (R1+8+FPREGBYTES*(x))
19
20 #define REGSIZE         sizeof(struct Ureg)
21 #define FPREGSIZE       (FPREGBYTES*33)
22
23 Reglist mips2reglist[] = {
24         {"STATUS",      REGOFF(status),         RINT|RRDONLY, 'X'},
25         {"CAUSE",       REGOFF(cause),          RINT|RRDONLY, 'X'},
26         {"BADVADDR",    REGOFF(badvaddr),       RINT|RRDONLY, 'X'},
27         {"TLBVIRT",     REGOFF(tlbvirt),        RINT|RRDONLY, 'X'},
28         {"HI",          REGOFF(hhi),            RINT|RRDONLY, 'W'},
29         {"LO",          REGOFF(hlo),            RINT|RRDONLY, 'W'},
30         {"PC",          PC,             RINT, 'X'},
31         {"SP",          SP,             RINT, 'X'},
32         {"R31",         R31,            RINT, 'W'},
33         {"R30",         REGOFF(hr30),   RINT, 'W'},
34         {"R28",         REGOFF(hr28),   RINT, 'W'},
35         {"R27",         REGOFF(hr27),   RINT, 'W'},
36         {"R26",         REGOFF(hr26),   RINT, 'W'},
37         {"R25",         REGOFF(hr25),   RINT, 'W'},
38         {"R24",         REGOFF(hr24),   RINT, 'W'},
39         {"R23",         REGOFF(hr23),   RINT, 'W'},
40         {"R22",         REGOFF(hr22),   RINT, 'W'},
41         {"R21",         REGOFF(hr21),   RINT, 'W'},
42         {"R20",         REGOFF(hr20),   RINT, 'W'},
43         {"R19",         REGOFF(hr19),   RINT, 'W'},
44         {"R18",         REGOFF(hr18),   RINT, 'W'},
45         {"R17",         REGOFF(hr17),   RINT, 'W'},
46         {"R16",         REGOFF(hr16),   RINT, 'W'},
47         {"R15",         REGOFF(hr15),   RINT, 'W'},
48         {"R14",         REGOFF(hr14),   RINT, 'W'},
49         {"R13",         REGOFF(hr13),   RINT, 'W'},
50         {"R12",         REGOFF(hr12),   RINT, 'W'},
51         {"R11",         REGOFF(hr11),   RINT, 'W'},
52         {"R10",         REGOFF(hr10),   RINT, 'W'},
53         {"R9",          REGOFF(hr9),    RINT, 'W'},
54         {"R8",          REGOFF(hr8),    RINT, 'W'},
55         {"R7",          REGOFF(hr7),    RINT, 'W'},
56         {"R6",          REGOFF(hr6),    RINT, 'W'},
57         {"R5",          REGOFF(hr5),    RINT, 'W'},
58         {"R4",          REGOFF(hr4),    RINT, 'W'},
59         {"R3",          REGOFF(hr3),    RINT, 'W'},
60         {"R2",          REGOFF(hr2),    RINT, 'W'},
61         {"R1",          REGOFF(hr1),    RINT, 'W'},
62         {"F0",          FP_REG(0),      RFLT, 'F'},
63         {"F1",          FP_REG(1),      RFLT, 'f'},
64         {"F2",          FP_REG(2),      RFLT, 'F'},
65         {"F3",          FP_REG(3),      RFLT, 'f'},
66         {"F4",          FP_REG(4),      RFLT, 'F'},
67         {"F5",          FP_REG(5),      RFLT, 'f'},
68         {"F6",          FP_REG(6),      RFLT, 'F'},
69         {"F7",          FP_REG(7),      RFLT, 'f'},
70         {"F8",          FP_REG(8),      RFLT, 'F'},
71         {"F9",          FP_REG(9),      RFLT, 'f'},
72         {"F10",         FP_REG(10),     RFLT, 'F'},
73         {"F11",         FP_REG(11),     RFLT, 'f'},
74         {"F12",         FP_REG(12),     RFLT, 'F'},
75         {"F13",         FP_REG(13),     RFLT, 'f'},
76         {"F14",         FP_REG(14),     RFLT, 'F'},
77         {"F15",         FP_REG(15),     RFLT, 'f'},
78         {"F16",         FP_REG(16),     RFLT, 'F'},
79         {"F17",         FP_REG(17),     RFLT, 'f'},
80         {"F18",         FP_REG(18),     RFLT, 'F'},
81         {"F19",         FP_REG(19),     RFLT, 'f'},
82         {"F20",         FP_REG(20),     RFLT, 'F'},
83         {"F21",         FP_REG(21),     RFLT, 'f'},
84         {"F22",         FP_REG(22),     RFLT, 'F'},
85         {"F23",         FP_REG(23),     RFLT, 'f'},
86         {"F24",         FP_REG(24),     RFLT, 'F'},
87         {"F25",         FP_REG(25),     RFLT, 'f'},
88         {"F26",         FP_REG(26),     RFLT, 'F'},
89         {"F27",         FP_REG(27),     RFLT, 'f'},
90         {"F28",         FP_REG(28),     RFLT, 'F'},
91         {"F29",         FP_REG(29),     RFLT, 'f'},
92         {"F30",         FP_REG(30),     RFLT, 'F'},
93         {"F31",         FP_REG(31),     RFLT, 'f'},
94         {"FPCR",        FP_REG(32),     RFLT, 'X'},
95         {  0 }
96 };
97
98         /* mips r4k big-endian */
99 Mach mmips2be =
100 {
101         "mips2",
102         MMIPS2,         /* machine type */
103         mips2reglist,   /* register set */
104         REGSIZE,        /* number of bytes in reg set */
105         FPREGSIZE,      /* number of bytes in fp reg set */
106         "PC",           /* name of PC */
107         "SP",           /* name of SP */
108         "R31",          /* name of link register */
109         "setR30",       /* static base register name */
110         0,              /* SB value */
111         0x1000,         /* page size */
112         0xC0000000,     /* kernel base */
113         0x40000000,     /* kernel text mask */
114         0x7FFFFFFFULL,  /* user stack top */
115         4,              /* quantization of pc */
116         4,              /* szaddr */
117         8,              /* szreg */
118         4,              /* szfloat */
119         8,              /* szdouble */
120 };
121
122         /* mips r4k little-endian */
123 Mach mmips2le =
124 {
125         "mips2",
126         NMIPS2,         /* machine type */
127         mips2reglist,   /* register set */
128         REGSIZE,        /* number of bytes in reg set */
129         FPREGSIZE,      /* number of bytes in fp reg set */
130         "PC",           /* name of PC */
131         "SP",           /* name of SP */
132         "R31",          /* name of link register */
133         "setR30",       /* static base register name */
134         0,              /* SB value */
135         0x1000,         /* page size */
136         0xC0000000ULL,  /* kernel base */
137         0x40000000ULL,  /* kernel text mask */
138         0x7FFFFFFFULL,  /* user stack top */
139         4,              /* quantization of pc */
140         4,              /* szaddr */
141         8,              /* szreg */
142         4,              /* szfloat */
143         8,              /* szdouble */
144 };