|
|
1.1 root 1: /*
2: * 68020 definition
3: */
4: #include <u.h>
5: #include "/68020/include/ureg.h"
6: #include <bio.h>
7: #include <mach.h>
8:
9: #define MAXREG 0
10: #define MINREG 0
11:
12: /*
13: * 68020 register offsets relative to beginning of ublock
14: */
15: #define USIZE 8192 /* size of the user block */
16: #define UREG(x) (USIZE-(2+4+2+(8+8+1+1)*4)+(ulong)(x))
17: #define FCTL(x) (0x0000+4+216+(x)*4)
18: #define FREG(x) (0x0000+4+216+12+(x)*12)
19: #define SCALLOFF (0x0000+4+216+108)
20:
21: #define REGOFF(x) (UREG(&((struct Ureg *) 0)->x))
22:
23: #define VO REGOFF(vo) /* vo, 2 bytes */
24: #define SR REGOFF(sr) /* sr, 2 bytes */
25:
26: #define R0 REGOFF(r0)
27: #define PC REGOFF(pc)
28: #define DBMAGIC REGOFF(magic)
29: #define SP REGOFF(usp)
30:
31: /*
32: * 68020 register set
33: */
34: Reglist m68020reglist[] = {
35: {"VO", VO, RINT, 'x'},
36: {"SR", SR, RINT, 'x'},
37: {"MAGIC", DBMAGIC, RINT, 'X'},
38: {"PC", PC, RINT, 'X'},
39: {"A7", SP, RINT, 'X'},
40: {"KSP", REGOFF(sp), RINT, 'X'},
41: {"A6", REGOFF(a6), RINT, 'X'},
42: {"A5", REGOFF(a5), RINT, 'X'},
43: {"A4", REGOFF(a4), RINT, 'X'},
44: {"A3", REGOFF(a3), RINT, 'X'},
45: {"A2", REGOFF(a2), RINT, 'X'},
46: {"A1", REGOFF(a1), RINT, 'X'},
47: {"A0", REGOFF(a0), RINT, 'X'},
48: {"R7", REGOFF(r7), RINT, 'X'},
49: {"R6", REGOFF(r6), RINT, 'X'},
50: {"R5", REGOFF(r5), RINT, 'X'},
51: {"R4", REGOFF(r4), RINT, 'X'},
52: {"R3", REGOFF(r3), RINT, 'X'},
53: {"R2", REGOFF(r2), RINT, 'X'},
54: {"R1", REGOFF(r1), RINT, 'X'},
55: {"R0", REGOFF(r0), RINT, 'X'},
56: {"FPCR", FCTL(0), RFLT, 'X'},
57: {"FPSR", FCTL(1), RFLT, 'X'},
58: {"FPIAR", FCTL(2), RFLT, 'X'},
59: {"F0", FREG(0), RFLT, '8'},
60: {"F1", FREG(1), RFLT, '8'},
61: {"F2", FREG(2), RFLT, '8'},
62: {"F3", FREG(3), RFLT, '8'},
63: {"F4", FREG(4), RFLT, '8'},
64: {"F5", FREG(5), RFLT, '8'},
65: {"F6", FREG(6), RFLT, '8'},
66: {"F7", FREG(7), RFLT, '8'},
67: {0}
68: };
69:
70: Mach m68020 =
71: {
72: "68020",
73: M68020, /* machine type */
74: m68020reglist, /* register list */
75: MINREG, /* minimum register */
76: MAXREG, /* maximum register */
77: "PC",
78: "A7",
79: 0, /* link register */
80: R0, /* return register */
81: 0x2000, /* page size */
82: 0x80000000, /* kernel base */
83: 0, /* kernel text mask */
84: 0, /* offset of ksp in /proc/proc */
85: 4, /* correction to ksp value */
86: 4, /* offset of kpc in /proc/proc */
87: 0, /* correction to kpc value */
88: SCALLOFF, /* offset in ublk of syscall #*/
89: 2, /* quantization of pc */
90: "a6base", /* static base register name */
91: 0, /* value */
92: 4, /* szaddr */
93: 4, /* szreg */
94: 4, /* szfloat */
95: 8, /* szdouble */
96: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.