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