Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 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
sizeofUreg=72;
72
aggr Ureg
73
{
74
	'U' 0 r0;
75
	'U' 4 r1;
76
	'U' 8 r2;
77
	'U' 12 r3;
78
	'U' 16 r4;
79
	'U' 20 r5;
80
	'U' 24 r6;
81
	'U' 28 r7;
82
	'U' 32 r8;
83
	'U' 36 r9;
84
	'U' 40 r10;
85
	'U' 44 r11;
86
	'U' 48 r12;
87
	'U' 52 r13;
88
	'U' 56 r14;
89
	'U' 60 type;
90
	'U' 64 psr;
91
	'U' 68 pc;
92
};
93
 
94
defn
95
Ureg(addr) {
96
	complex Ureg addr;
97
	print("	r0	", addr.r0, "\n");
98
	print("	r1	", addr.r1, "\n");
99
	print("	r2	", addr.r2, "\n");
100
	print("	r3	", addr.r3, "\n");
101
	print("	r4	", addr.r4, "\n");
102
	print("	r5	", addr.r5, "\n");
103
	print("	r6	", addr.r6, "\n");
104
	print("	r7	", addr.r7, "\n");
105
	print("	r8	", addr.r8, "\n");
106
	print("	r9	", addr.r9, "\n");
107
	print("	r10	", addr.r10, "\n");
108
	print("	r11	", addr.r11, "\n");
109
	print("	r12	", addr.r12, "\n");
110
	print("	r13	", addr.r13, "\n");
111
	print("	r14	", addr.r14, "\n");
112
	print("	type	", addr.type, "\n");
113
	print("	psr	", addr.psr, "\n");
114
	print("	pc	", addr.pc, "\n");
115
};
116
 
117
print("/sys/lib/acid/arm");