]> git.lizzy.rs Git - plan9front.git/blob - sys/lib/acid/arm
merge
[plan9front.git] / sys / lib / acid / arm
1 // ARM 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/arm/"
13         };
14
15         srcfiles = {};                  // list of loaded files
16         srctext = {};                   // the text of the files
17 }
18
19 defn linkreg(addr)
20 {
21         return *R14;
22 }
23
24 defn stk()                              // trace
25 {
26         _stk(*PC, *SP, linkreg(0), 0);
27 }
28
29 defn lstk()                             // trace with locals
30 {
31         _stk(*PC, *SP, linkreg(0), 1);
32 }
33
34 defn gpr()                      // print general purpose registers
35 {
36         print("R0\t", *R0, " R1\t", *R1, " R2\t", *R2, "\n");
37         print("R3\t", *R3, " R4\t", *R4, " R5\t", *R5, "\n");
38         print("R6\t", *R6, " R7\t", *R7, " R8\t", *R8, "\n");
39         print("R9\t", *R9, " R10\t", *R10, " R11\t", *R11, "\n");
40         print("R12\t", *R12, " R13\t", *R13, " R14\t", *R14, "\n");
41         print("R15\t", *R15, "\n");
42 }
43
44 defn regs()                             // print all registers
45 {
46         gpr();
47 }
48
49 defn pstop(pid)
50 {
51         local l;
52         local pc;
53
54         pc = *PC;
55
56         print(pid,": ", reason(*TYPE), "\t");
57         print(fmt(pc, 'a'), "\t", fmt(pc, 'i'), "\n");
58
59         if notes then {
60                 if notes[0] != "sys: breakpoint" then {
61                         print("Notes pending:\n");
62                         l = notes;
63                         while l do {
64                                 print("\t", head l, "\n");
65                                 l = tail l;
66                         }
67                 }
68         }
69 }
70
71 aggr Ureg
72 {
73         'U' 0 r0;
74         'U' 4 r1;
75         'U' 8 r2;
76         'U' 12 r3;
77         'U' 16 r4;
78         'U' 20 r5;
79         'U' 24 r6;
80         'U' 28 r7;
81         'U' 32 r8;
82         'U' 36 r9;
83         'U' 40 r10;
84         'U' 44 r11;
85         'U' 48 r12;
86         'U' 52 r13;
87         'U' 56 r14;
88         'U' 60 type;
89         'U' 64 psr;
90         'U' 68 pc;
91 };
92
93 defn
94 Ureg(addr) {
95         complex Ureg addr;
96         print(" r0      ", addr.r0, "\n");
97         print(" r1      ", addr.r1, "\n");
98         print(" r2      ", addr.r2, "\n");
99         print(" r3      ", addr.r3, "\n");
100         print(" r4      ", addr.r4, "\n");
101         print(" r5      ", addr.r5, "\n");
102         print(" r6      ", addr.r6, "\n");
103         print(" r7      ", addr.r7, "\n");
104         print(" r8      ", addr.r8, "\n");
105         print(" r9      ", addr.r9, "\n");
106         print(" r10     ", addr.r10, "\n");
107         print(" r11     ", addr.r11, "\n");
108         print(" r12     ", addr.r12, "\n");
109         print(" r13     ", addr.r13, "\n");
110         print(" r14     ", addr.r14, "\n");
111         print(" type    ", addr.type, "\n");
112         print(" psr     ", addr.psr, "\n");
113         print(" pc      ", addr.pc, "\n");
114 };
115
116 print("/sys/lib/acid/arm");