]> git.lizzy.rs Git - plan9front.git/blob - sys/lib/acid/68020
dist/mkfile: run binds in subshell
[plan9front.git] / sys / lib / acid / 68020
1 // 68020 support
2
3 defn acidinit()                 // Called after all the init modules are loaded
4 {
5         bplist = {};
6         bpfmt = 'x';
7
8         srcpath = {
9                 "./",
10                 "/sys/src/libc/port/",
11                 "/sys/src/libc/9sys/",
12                 "/sys/src/libc/68020/"
13         };
14
15         srcfiles = {};                  // list of loaded files
16         srctext = {};                   // the text of the files
17 }
18
19 defn linkreg(addr)
20 {
21         return 0;
22 }
23
24 defn stk()                              // trace
25 {
26         _stk(*PC, *A7, 0, 0);
27 }
28
29 defn lstk()                             // trace with locals
30 {
31         _stk(*PC, *A7, 0, 1);
32 }
33
34 defn gpr()                              // print general purpose registers
35 {
36         print("R0\t", *R0, "R1\t", *R1, "R2\t", *R2, "R3\t", *R3, "\n");
37         print("R4\t", *R4, "R5\t", *R5, "R6\t", *R6, "R7\t", *R7, "\n");
38         print("A0\t", *A0, "A1\t", *A1, "A2\t", *A2, "A3\t", *A3, "\n");
39         print("A4\t", *A4, "A5\t", *A5, "A6\t", *A6, "A7\t", *A7, "\n");
40 }
41
42 defn spr()                              // print special processor registers
43 {
44         local pc;
45         local cause;
46
47         pc = *PC;
48         print("PC\t", pc, " ", fmt(pc, 'a'), "  ");
49         pfl(pc);
50         print("SP\t", *A7, " MAGIC\t", *MAGIC, "\n");
51
52         cause = *VO;
53         print("SR\t", *SR, "VO ", cause, " ", reason(cause), "\n");
54 }
55
56 defn regs()                             // print all registers
57 {
58         spr();
59         gpr();
60 }
61
62 defn pstop(pid)
63 {
64         local l;
65         local pc;
66
67         pc = *PC;
68
69         print(pid,": ", reason(*VO), "\t");
70         print(fmt(pc, 'a'), "\t", fmt(pc, 'i'), "\n");
71
72         if notes then {
73                 if notes[0] != "sys: breakpoint" then {
74                         print("Notes pending:\n");
75                         l = notes;
76                         while l do {
77                                 print("\t", head l, "\n");
78                                 l = tail l;
79                         }
80                 }
81         }
82 }
83
84 aggr Ureg
85 {
86         'U' 0 r0;
87         'U' 4 r1;
88         'U' 8 r2;
89         'U' 12 r3;
90         'U' 16 r4;
91         'U' 20 r5;
92         'U' 24 r6;
93         'U' 28 r7;
94         'U' 32 a0;
95         'U' 36 a1;
96         'U' 40 a2;
97         'U' 44 a3;
98         'U' 48 a4;
99         'U' 52 a5;
100         'U' 56 a6;
101         'U' 60 sp;
102         'U' 64 usp;
103         'U' 68 magic;
104         'u' 72 sr;
105         'U' 74 pc;
106         'u' 78 vo;
107         'a' 80 microstate;
108 };
109
110 defn
111 Ureg(addr) {
112         complex Ureg addr;
113         print(" r0      ", addr.r0, "\n");
114         print(" r1      ", addr.r1, "\n");
115         print(" r2      ", addr.r2, "\n");
116         print(" r3      ", addr.r3, "\n");
117         print(" r4      ", addr.r4, "\n");
118         print(" r5      ", addr.r5, "\n");
119         print(" r6      ", addr.r6, "\n");
120         print(" r7      ", addr.r7, "\n");
121         print(" a0      ", addr.a0, "\n");
122         print(" a1      ", addr.a1, "\n");
123         print(" a2      ", addr.a2, "\n");
124         print(" a3      ", addr.a3, "\n");
125         print(" a4      ", addr.a4, "\n");
126         print(" a5      ", addr.a5, "\n");
127         print(" a6      ", addr.a6, "\n");
128         print(" sp      ", addr.sp, "\n");
129         print(" usp     ", addr.usp, "\n");
130         print(" magic   ", addr.magic, "\n");
131         print(" sr      ", addr.sr, "\n");
132         print(" pc      ", addr.pc, "\n");
133         print(" vo      ", addr.vo, "\n");
134         print(" microstate      ", addr.microstate, "\n");
135 };
136
137 print("/sys/lib/acid/68020");