]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libmach/7.c
libmach: pragma pack 32bit Ureg structs for amd64
[plan9front.git] / sys / src / libmach / 7.c
1 /*
2  * alpha definition
3  */
4 #include <u.h>
5 #include <libc.h>
6 #include <bio.h>
7 #include "/alpha/include/ureg.h"
8 #include <mach.h>
9
10 #define REGOFF(x)       (ulong)(&((struct Ureg *) 0)->x)
11
12 #define REGSIZE         sizeof(struct Ureg)
13 #define FPREGSIZE       (8*33)
14
15 #define SP              REGOFF(sp)
16 #define PC              REGOFF(pc)
17 #define FP_REG(x)       (REGSIZE+8*(x))
18
19 Reglist alphareglist[] = {
20         {"STATUS",      REGOFF(status), RINT|RRDONLY, 'W'},
21         {"TYPE",        REGOFF(type),   RINT|RRDONLY, 'W'},
22         {"A0",  REGOFF(a0),     RINT|RRDONLY, 'W'},
23         {"A1",  REGOFF(a1),     RINT|RRDONLY, 'W'},
24         {"A2",          REGOFF(a2),     RINT|RRDONLY, 'W'},
25         {"PC",          PC,     RINT, 'X'},
26         {"SP",          SP,     RINT, 'X'},
27         {"R29",         REGOFF(r29),    RINT, 'W'},
28         {"R28",         REGOFF(r28),    RINT, 'W'},
29         {"R27",         REGOFF(r27),    RINT, 'W'},
30         {"R26",         REGOFF(r26),    RINT, 'W'},
31         {"R25",         REGOFF(r25),    RINT, 'W'},
32         {"R24",         REGOFF(r24),    RINT, 'W'},
33         {"R23",         REGOFF(r23),    RINT, 'W'},
34         {"R22",         REGOFF(r22),    RINT, 'W'},
35         {"R21",         REGOFF(r21),    RINT, 'W'},
36         {"R20",         REGOFF(r20),    RINT, 'W'},
37         {"R19",         REGOFF(r19),    RINT, 'W'},
38         {"R18",         REGOFF(r18),    RINT, 'W'},
39         {"R17",         REGOFF(r17),    RINT, 'W'},
40         {"R16",         REGOFF(r16),    RINT, 'W'},
41         {"R15",         REGOFF(r15),    RINT, 'W'},
42         {"R14",         REGOFF(r14),    RINT, 'W'},
43         {"R13",         REGOFF(r13),    RINT, 'W'},
44         {"R12",         REGOFF(r12),    RINT, 'W'},
45         {"R11",         REGOFF(r11),    RINT, 'W'},
46         {"R10",         REGOFF(r10),    RINT, 'W'},
47         {"R9",          REGOFF(r9),     RINT, 'W'},
48         {"R8",          REGOFF(r8),     RINT, 'W'},
49         {"R7",          REGOFF(r7),     RINT, 'W'},
50         {"R6",          REGOFF(r6),     RINT, 'W'},
51         {"R5",          REGOFF(r5),     RINT, 'W'},
52         {"R4",          REGOFF(r4),     RINT, 'W'},
53         {"R3",          REGOFF(r3),     RINT, 'W'},
54         {"R2",          REGOFF(r2),     RINT, 'W'},
55         {"R1",          REGOFF(r1),     RINT, 'W'},
56         {"R0",          REGOFF(r0),     RINT, 'W'},
57         {"F0",          FP_REG(0),      RFLT, 'F'},
58         {"F1",          FP_REG(1),      RFLT, 'F'},
59         {"F2",          FP_REG(2),      RFLT, 'F'},
60         {"F3",          FP_REG(3),      RFLT, 'F'},
61         {"F4",          FP_REG(4),      RFLT, 'F'},
62         {"F5",          FP_REG(5),      RFLT, 'F'},
63         {"F6",          FP_REG(6),      RFLT, 'F'},
64         {"F7",          FP_REG(7),      RFLT, 'F'},
65         {"F8",          FP_REG(8),      RFLT, 'F'},
66         {"F9",          FP_REG(9),      RFLT, 'F'},
67         {"F10",         FP_REG(10),     RFLT, 'F'},
68         {"F11",         FP_REG(11),     RFLT, 'F'},
69         {"F12",         FP_REG(12),     RFLT, 'F'},
70         {"F13",         FP_REG(13),     RFLT, 'F'},
71         {"F14",         FP_REG(14),     RFLT, 'F'},
72         {"F15",         FP_REG(15),     RFLT, 'F'},
73         {"F16",         FP_REG(16),     RFLT, 'F'},
74         {"F17",         FP_REG(17),     RFLT, 'F'},
75         {"F18",         FP_REG(18),     RFLT, 'F'},
76         {"F19",         FP_REG(19),     RFLT, 'F'},
77         {"F20",         FP_REG(20),     RFLT, 'F'},
78         {"F21",         FP_REG(21),     RFLT, 'F'},
79         {"F22",         FP_REG(22),     RFLT, 'F'},
80         {"F23",         FP_REG(23),     RFLT, 'F'},
81         {"F24",         FP_REG(24),     RFLT, 'F'},
82         {"F25",         FP_REG(25),     RFLT, 'F'},
83         {"F26",         FP_REG(26),     RFLT, 'F'},
84         {"F27",         FP_REG(27),     RFLT, 'F'},
85         {"F28",         FP_REG(28),     RFLT, 'F'},
86         {"F29",         FP_REG(29),     RFLT, 'F'},
87         {"F30",         FP_REG(30),     RFLT, 'F'},
88         {"F31",         FP_REG(31),     RFLT, 'F'},
89         {"FPCR",                FP_REG(32),     RFLT, 'W'},
90         {  0 }
91 };
92
93         /* the machine description */
94 Mach malpha =
95 {
96         "alpha",
97         MALPHA,         /* machine type */
98         alphareglist,   /* register set */
99         REGSIZE,        /* number of bytes in reg set */
100         FPREGSIZE,      /* number of bytes in fp reg set */
101         "PC",
102         "SP",
103         "R29",
104         "setSB",        /* static base register name */
105         0,              /* static base register value */
106         0x2000,         /* page size */
107         0x80000000ULL,  /* kernel base */
108         0xF0000000ULL,  /* kernel text mask */
109         0x7FFFFFFFULL,  /* user stack top */
110         4,              /* quantization of pc */
111         4,              /* szaddr */
112         8,              /* szreg (not used?) */
113         4,              /* szfloat */
114         8,              /* szdouble */
115 };