xref: /inferno-os/lib/acid/amd64 (revision 773d7fd206e9623edfb12cd182dc5a115ec86950)
1*773d7fd2Sforsyth// amd64
2*773d7fd2Sforsyth
3*773d7fd2Sforsythdefn acidinit()
4*773d7fd2Sforsyth{
5*773d7fd2Sforsyth	bplist = {};
6*773d7fd2Sforsyth	bpfmt = 'b';
7*773d7fd2Sforsyth
8*773d7fd2Sforsyth	srcpath = {
9*773d7fd2Sforsyth		"./",
10*773d7fd2Sforsyth		"/sys/src/libc/port/",
11*773d7fd2Sforsyth		"/sys/src/libc/9sys/",
12*773d7fd2Sforsyth		"/sys/src/libc/amd64/"
13*773d7fd2Sforsyth	};
14*773d7fd2Sforsyth
15*773d7fd2Sforsyth	srcfiles = {};		// list of loaded files
16*773d7fd2Sforsyth	srctext = {};		// the text of the files
17*773d7fd2Sforsyth}
18*773d7fd2Sforsyth
19*773d7fd2Sforsythdefn gpr()
20*773d7fd2Sforsyth{
21*773d7fd2Sforsyth	print("AX    ", *AX, "\n");
22*773d7fd2Sforsyth	print("BX    ", *BX, "\n");
23*773d7fd2Sforsyth	print("CX    ", *CX, "\n");
24*773d7fd2Sforsyth	print("DX    ", *DX, "\n");
25*773d7fd2Sforsyth	print("DI    ", *DI, "\n");
26*773d7fd2Sforsyth	print("SI    ", *SI, "\n");
27*773d7fd2Sforsyth	print("BP    ", *BP, "\n");
28*773d7fd2Sforsyth	print("R8    ", *R8, "\n");
29*773d7fd2Sforsyth	print("R9    ", *R9, "\n");
30*773d7fd2Sforsyth	print("R10   ", *R10, "\n");
31*773d7fd2Sforsyth	print("R11   ", *R11, "\n");
32*773d7fd2Sforsyth	print("R12   ", *R12, "\n");
33*773d7fd2Sforsyth	print("R13   ", *R13, "\n");
34*773d7fd2Sforsyth	print("R14   ", *R14, "\n");
35*773d7fd2Sforsyth	print("R15   ", *R15, "\n");
36*773d7fd2Sforsyth}
37*773d7fd2Sforsyth
38*773d7fd2Sforsythdefn spr()
39*773d7fd2Sforsyth{
40*773d7fd2Sforsyth	print("DS  ", *DS, "  ES  ", *ES, "  FS  ", *FS, "  GS  ", *GS, "\n");
41*773d7fd2Sforsyth	print("TYPE  ", *TYPE, "\n");
42*773d7fd2Sforsyth	print("ERROR ", *ERROR, "\n");
43*773d7fd2Sforsyth	print("PC    ", *PC, "\n");
44*773d7fd2Sforsyth	print("CS    ", *CS, "\n");
45*773d7fd2Sforsyth	print("FLAGS ", *FLAGS, "\n");
46*773d7fd2Sforsyth	print("SP    ", *SP, "\n");
47*773d7fd2Sforsyth	print("SS    ", *SS, "\n");
48*773d7fd2Sforsyth}
49*773d7fd2Sforsyth
50*773d7fd2Sforsythdefn x87r()
51*773d7fd2Sforsyth{
52*773d7fd2Sforsyth	print("FCW  ", *FCW, "  FSW  ", *FSW, "  FTW  ", *FTW, "  FOP  ", *FOP, "\n");
53*773d7fd2Sforsyth	print("RIP  ", *RIP, "   RDP  ", *RDP, "\n");
54*773d7fd2Sforsyth	print("M0   ", *M0, "\n");
55*773d7fd2Sforsyth	print("M1   ", *M1, "\n");
56*773d7fd2Sforsyth	print("M2   ", *M2, "\n");
57*773d7fd2Sforsyth	print("M3   ", *M3, "\n");
58*773d7fd2Sforsyth	print("M4   ", *M4, "\n");
59*773d7fd2Sforsyth	print("M5   ", *M5, "\n");
60*773d7fd2Sforsyth	print("M6   ", *M6, "\n");
61*773d7fd2Sforsyth	print("M7   ", *M7, "\n");
62*773d7fd2Sforsyth}
63*773d7fd2Sforsyth
64*773d7fd2Sforsythdefn xmmr()
65*773d7fd2Sforsyth{
66*773d7fd2Sforsyth	print("MXCSR  ", *MXCSR, "   MXCSRMASK  ", *MXCSRMASK, "\n");
67*773d7fd2Sforsyth	print("X0   ", *X0, "\n");
68*773d7fd2Sforsyth	print("X1   ", *X1, "\n");
69*773d7fd2Sforsyth	print("X2   ", *X2, "\n");
70*773d7fd2Sforsyth	print("X3   ", *X3, "\n");
71*773d7fd2Sforsyth	print("X4   ", *X4, "\n");
72*773d7fd2Sforsyth	print("X5   ", *X5, "\n");
73*773d7fd2Sforsyth	print("X6   ", *X6, "\n");
74*773d7fd2Sforsyth	print("X7   ", *X7, "\n");
75*773d7fd2Sforsyth	print("X8   ", *X8, "\n");
76*773d7fd2Sforsyth	print("X9   ", *X9, "\n");
77*773d7fd2Sforsyth	print("X10  ", *X10, "\n");
78*773d7fd2Sforsyth	print("X11  ", *X11, "\n");
79*773d7fd2Sforsyth	print("X12  ", *X12, "\n");
80*773d7fd2Sforsyth	print("X13  ", *X13, "\n");
81*773d7fd2Sforsyth	print("X14  ", *X14, "\n");
82*773d7fd2Sforsyth	print("X15  ", *X15, "\n");
83*773d7fd2Sforsyth}
84*773d7fd2Sforsyth
85*773d7fd2Sforsythdefn fpr()
86*773d7fd2Sforsyth{
87*773d7fd2Sforsyth	xmmr();
88*773d7fd2Sforsyth}
89*773d7fd2Sforsyth
90*773d7fd2Sforsythdefn regs()
91*773d7fd2Sforsyth{
92*773d7fd2Sforsyth	gpr();
93*773d7fd2Sforsyth	spr();
94*773d7fd2Sforsyth}
95*773d7fd2Sforsyth
96*773d7fd2Sforsythdefn pstop(pid)
97*773d7fd2Sforsyth{
98*773d7fd2Sforsyth	local l;
99*773d7fd2Sforsyth	local pc;
100*773d7fd2Sforsyth
101*773d7fd2Sforsyth	pc = *PC;
102*773d7fd2Sforsyth
103*773d7fd2Sforsyth	print(pid,": ", reason(*TRAP), "\t");
104*773d7fd2Sforsyth	print(fmt(pc, 'a'), "\t", fmt(pc, 'i'), "\n");
105*773d7fd2Sforsyth
106*773d7fd2Sforsyth	if notes then {
107*773d7fd2Sforsyth		if notes[0] != "sys: breakpoint" then {
108*773d7fd2Sforsyth			print("Notes pending:\n");
109*773d7fd2Sforsyth			l = notes;
110*773d7fd2Sforsyth			while l do {
111*773d7fd2Sforsyth				print("\t", head l, "\n");
112*773d7fd2Sforsyth				l = tail l;
113*773d7fd2Sforsyth			}
114*773d7fd2Sforsyth		}
115*773d7fd2Sforsyth	}
116*773d7fd2Sforsyth}
117*773d7fd2Sforsyth
118*773d7fd2Sforsythdefn stk()
119*773d7fd2Sforsyth{
120*773d7fd2Sforsyth	_stk(*PC, *SP, 0, 0);
121*773d7fd2Sforsyth}
122*773d7fd2Sforsyth
123*773d7fd2Sforsythprint("/sys/lib/acid/amd64");
124