From 0a61c07d591273b76da21fb8386b669989da3707 Mon Sep 17 00:00:00 2001 From: rsc Date: Mon, 19 Apr 2004 18:18:37 +0000 Subject: acid files --- acid/68020 | 137 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 acid/68020 (limited to 'acid/68020') diff --git a/acid/68020 b/acid/68020 new file mode 100644 index 00000000..f57da9f9 --- /dev/null +++ b/acid/68020 @@ -0,0 +1,137 @@ +// 68020 support + +defn acidinit() // Called after all the init modules are loaded +{ + bplist = {}; + bpfmt = 'x'; + + srcpath = { + "./", + "/sys/src/libc/port/", + "/sys/src/libc/9sys/", + "/sys/src/libc/68020/" + }; + + srcfiles = {}; // list of loaded files + srctext = {}; // the text of the files +} + +defn linkreg(addr) +{ + return 0; +} + +defn stk() // trace +{ + _stk(*PC, *A7, 0, 0); +} + +defn lstk() // trace with locals +{ + _stk(*PC, *A7, 0, 1); +} + +defn gpr() // print general purpose registers +{ + print("R0\t", *R0, "R1\t", *R1, "R2\t", *R2, "R3\t", *R3, "\n"); + print("R4\t", *R4, "R5\t", *R5, "R6\t", *R6, "R7\t", *R7, "\n"); + print("A0\t", *A0, "A1\t", *A1, "A2\t", *A2, "A3\t", *A3, "\n"); + print("A4\t", *A4, "A5\t", *A5, "A6\t", *A6, "A7\t", *A7, "\n"); +} + +defn spr() // print special processor registers +{ + local pc; + local cause; + + pc = *PC; + print("PC\t", pc, " ", fmt(pc, 'a'), " "); + pfl(pc); + print("SP\t", *A7, " MAGIC\t", *MAGIC, "\n"); + + cause = *VO; + print("SR\t", *SR, "VO ", cause, " ", reason(cause), "\n"); +} + +defn regs() // print all registers +{ + spr(); + gpr(); +} + +defn pstop(pid) +{ + local l; + local pc; + + pc = *PC; + + print(pid,": ", reason(*VO), "\t"); + print(fmt(pc, 'a'), "\t", fmt(pc, 'i'), "\n"); + + if notes then { + if notes[0] != "sys: breakpoint" then { + print("Notes pending:\n"); + l = notes; + while l do { + print("\t", head l, "\n"); + l = tail l; + } + } + } +} + +aggr Ureg +{ + 'U' 0 r0; + 'U' 4 r1; + 'U' 8 r2; + 'U' 12 r3; + 'U' 16 r4; + 'U' 20 r5; + 'U' 24 r6; + 'U' 28 r7; + 'U' 32 a0; + 'U' 36 a1; + 'U' 40 a2; + 'U' 44 a3; + 'U' 48 a4; + 'U' 52 a5; + 'U' 56 a6; + 'U' 60 sp; + 'U' 64 usp; + 'U' 68 magic; + 'u' 72 sr; + 'U' 74 pc; + 'u' 78 vo; + 'a' 80 microstate; +}; + +defn +Ureg(addr) { + complex Ureg addr; + print(" r0 ", addr.r0, "\n"); + print(" r1 ", addr.r1, "\n"); + print(" r2 ", addr.r2, "\n"); + print(" r3 ", addr.r3, "\n"); + print(" r4 ", addr.r4, "\n"); + print(" r5 ", addr.r5, "\n"); + print(" r6 ", addr.r6, "\n"); + print(" r7 ", addr.r7, "\n"); + print(" a0 ", addr.a0, "\n"); + print(" a1 ", addr.a1, "\n"); + print(" a2 ", addr.a2, "\n"); + print(" a3 ", addr.a3, "\n"); + print(" a4 ", addr.a4, "\n"); + print(" a5 ", addr.a5, "\n"); + print(" a6 ", addr.a6, "\n"); + print(" sp ", addr.sp, "\n"); + print(" usp ", addr.usp, "\n"); + print(" magic ", addr.magic, "\n"); + print(" sr ", addr.sr, "\n"); + print(" pc ", addr.pc, "\n"); + print(" vo ", addr.vo, "\n"); + print(" microstate ", addr.microstate, "\n"); +}; + +print(acidfile); -- cgit v1.2.3