diff options
Diffstat (limited to 'acid/arm')
-rw-r--r-- | acid/arm | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/acid/arm b/acid/arm new file mode 100644 index 00000000..01599978 --- /dev/null +++ b/acid/arm @@ -0,0 +1,104 @@ +// ARM7500 support + +defn acidinit() // Called after all the init modules are loaded +{ + bplist = {}; + bpfmt = 'b'; + + srcpath = { + "./", + "/sys/src/libc/port/", + "/sys/src/libc/9sys/", + "/sys/src/libc/arm/" + }; + + srcfiles = {}; // list of loaded files + srctext = {}; // the text of the files +} + +defn linkreg(addr) +{ + return 0; +} + +defn stk() // trace +{ + _stk(*PC, *SP, 0, 0); +} + +defn lstk() // trace with locals +{ + _stk(*PC, *SP, 0, 1); +} + +defn gpr() // print general purpose registers +{ + print("R0\t", *R0, " R1\t", *R1, " R2\t", *R2, "\n"); + print("R3\t", *R3, " R4\t", *R4, " R5\t", *R5, "\n"); + print("R6\t", *R6, " R7\t", *R7, " R8\t", *R8, "\n"); + print("R9\t", *R9, " R10\t", *R10, " R11\t", *R11, "\n"); + print("R12\t", *R12, " R13\t", *R13, " R14\t", *R14, "\n"); + print("R15\t", *R15, "\n"); +} + +defn regs() // print all registers +{ + gpr(); +} + +defn pstop(pid) +{ + return 0; +} + +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 r8; + 'U' 36 r9; + 'U' 40 r10; + 'U' 44 r11; + 'U' 48 r12; + 'U' 52 r13; + 'U' 56 r14; + 'U' 60 type; + 'U' 64 psr; + 'U' 68 pc; +}; + +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(" r8 ", addr.r8, "\n"); + print(" r9 ", addr.r9, "\n"); + print(" r10 ", addr.r10, "\n"); + print(" r11 ", addr.r11, "\n"); + print(" r12 ", addr.r12, "\n"); + print(" r13 ", addr.r13, "\n"); + print(" r14 ", addr.r14, "\n"); + print(" type ", addr.type, "\n"); + print(" psr ", addr.psr, "\n"); + print(" pc ", addr.pc, "\n"); +}; + +defn acornmap() +{ + map({"text", _startup, end, 0x20}); +} + +print(acidfile); |