68020 (2474B)
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(acidfile);