]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libmach/2.c
python: arm64 support
[plan9front.git] / sys / src / libmach / 2.c
1 /*
2  * 68020 definition
3  */
4 #include <u.h>
5 #include "/68020/include/ureg.h"
6 #include <libc.h>
7 #include <bio.h>
8 #include <mach.h>
9
10 #define MAXREG  0
11 #define MINREG  0
12
13 #define REGOFF(x)       (ulong)(&((struct Ureg *) 0)->x)
14
15 #define VO      REGOFF(vo)              /* vo, 2 bytes */
16 #define SR      REGOFF(sr)              /* sr, 2 bytes */
17 #define R0      REGOFF(r0)
18 #define PC      REGOFF(pc)
19 #define DBMAGIC REGOFF(magic)
20 #define SP      REGOFF(usp)
21
22 #define REGSIZE         (R0+4)
23 #define FCTL(x)         (REGSIZE+(x)*4)
24 #define FREG(x)         (FCTL(3)+(x)*12)
25 #define FPREGSIZE       (11*12)
26
27 /*
28  *      68020 register set
29  */
30 Reglist m68020reglist[] = {
31         {"VO",          VO,             RINT,   'x'},
32         {"SR",          SR,             RINT,   'x'},
33         {"MAGIC",       DBMAGIC,        RINT,   'X'},
34         {"PC",          PC,             RINT,   'X'},
35         {"A7",          SP,             RINT,   'X'},
36         {"KSP",         REGOFF(sp),     RINT,   'X'},
37         {"A6",          REGOFF(a6),     RINT,   'X'},
38         {"A5",          REGOFF(a5),     RINT,   'X'},
39         {"A4",          REGOFF(a4),     RINT,   'X'},
40         {"A3",          REGOFF(a3),     RINT,   'X'},
41         {"A2",          REGOFF(a2),     RINT,   'X'},
42         {"A1",          REGOFF(a1),     RINT,   'X'},
43         {"A0",          REGOFF(a0),     RINT,   'X'},
44         {"R7",          REGOFF(r7),     RINT,   'X'},
45         {"R6",          REGOFF(r6),     RINT,   'X'},
46         {"R5",          REGOFF(r5),     RINT,   'X'},
47         {"R4",          REGOFF(r4),     RINT,   'X'},
48         {"R3",          REGOFF(r3),     RINT,   'X'},
49         {"R2",          REGOFF(r2),     RINT,   'X'},
50         {"R1",          REGOFF(r1),     RINT,   'X'},
51         {"R0",          REGOFF(r0),     RINT,   'X'},
52         {"FPCR",        FCTL(0),        RFLT,   'X'},
53         {"FPSR",        FCTL(1),        RFLT,   'X'},
54         {"FPIAR",       FCTL(2),        RFLT,   'X'},
55         {"F0",          FREG(0),        RFLT,   '8'},
56         {"F1",          FREG(1),        RFLT,   '8'},
57         {"F2",          FREG(2),        RFLT,   '8'},
58         {"F3",          FREG(3),        RFLT,   '8'},
59         {"F4",          FREG(4),        RFLT,   '8'},
60         {"F5",          FREG(5),        RFLT,   '8'},
61         {"F6",          FREG(6),        RFLT,   '8'},
62         {"F7",          FREG(7),        RFLT,   '8'},
63         {0}
64 };
65
66 Mach m68020 =
67 {
68         "68020",
69         M68020,         /* machine type */
70         m68020reglist,  /* register list */
71         REGSIZE,        /* number of bytes in reg set */
72         FPREGSIZE,      /* number of bytes in fp reg set */
73         "PC",
74         "A7",
75         0,              /* link register */
76         "a6base",       /* static base register name */
77         0,              /* value */
78         0x2000,         /* page size */
79         0x80000000ULL,  /* kernel base */
80         0x80000000ULL,  /* kernel text mask */
81         0x7FFFFFFFULL,  /* user stack top */
82         2,              /* quantization of pc */
83         4,              /* szaddr */
84         4,              /* szreg */
85         4,              /* szfloat */
86         8,              /* szdouble */
87 };