]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libmach/5.c
3f5afdaa5d34ff14097f1587f91db6512a006568
[plan9front.git] / sys / src / libmach / 5.c
1 /*
2  * arm definition
3  */
4 #include <u.h>
5 #include <bio.h>
6 #include "/arm/include/ureg.h"
7 #include <mach.h>
8
9
10 #define REGOFF(x)       (ulong) (&((struct Ureg *) 0)->x)
11
12 #define SP              REGOFF(r13)
13 #define PC              REGOFF(pc)
14
15 #define REGSIZE         sizeof(struct Ureg)
16
17 Reglist armreglist[] =
18 {
19         {"TYPE",        REGOFF(type),           RINT|RRDONLY, 'X'},
20         {"PSR",         REGOFF(psr),            RINT|RRDONLY, 'X'},
21         {"PC",          PC,                     RINT, 'X'},
22         {"SP",          SP,                     RINT, 'X'},
23         {"R15",         PC,                     RINT, 'X'},
24         {"R14",         REGOFF(r14),            RINT, 'X'},
25         {"R13",         REGOFF(r13),            RINT, 'X'},
26         {"R12",         REGOFF(r12),            RINT, 'X'},
27         {"R11",         REGOFF(r11),            RINT, 'X'},
28         {"R10",         REGOFF(r10),            RINT, 'X'},
29         {"R9",          REGOFF(r9),             RINT, 'X'},
30         {"R8",          REGOFF(r8),             RINT, 'X'},
31         {"R7",          REGOFF(r7),             RINT, 'X'},
32         {"R6",          REGOFF(r6),             RINT, 'X'},
33         {"R5",          REGOFF(r5),             RINT, 'X'},
34         {"R4",          REGOFF(r4),             RINT, 'X'},
35         {"R3",          REGOFF(r3),             RINT, 'X'},
36         {"R2",          REGOFF(r2),             RINT, 'X'},
37         {"R1",          REGOFF(r1),             RINT, 'X'},
38         {"R0",          REGOFF(r0),             RINT, 'X'},
39         {  0 }
40 };
41
42         /* the machine description */
43 Mach marm =
44 {
45         "arm",
46         MARM,           /* machine type */
47         armreglist,     /* register set */
48         REGSIZE,        /* register set size */
49         0,              /* fp register set size */
50         "PC",           /* name of PC */
51         "SP",           /* name of SP */
52         "R14",          /* name of link register */
53         "setR12",       /* static base register name */
54         0,              /* static base register value */
55         0x1000,         /* page size */
56         0xC0000000ULL,  /* kernel base */
57         0xC0000000ULL,  /* kernel text mask */
58         0x3FFFFFFFULL,  /* user stack top */
59         4,              /* quantization of pc */
60         4,              /* szaddr */
61         4,              /* szreg */
62         4,              /* szfloat */
63         8,              /* szdouble */
64 };