summaryrefslogtreecommitdiff
path: root/lib/acid/arm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/acid/arm')
-rw-r--r--lib/acid/arm84
1 files changed, 84 insertions, 0 deletions
diff --git a/lib/acid/arm b/lib/acid/arm
new file mode 100644
index 00000000..8f054af5
--- /dev/null
+++ b/lib/acid/arm
@@ -0,0 +1,84 @@
+// ARM support
+
+defn acidinit() // Called after all the init modules are loaded
+{
+ bpl = {};
+ bpid = -1;
+ bpfmt = 'X';
+ nopstop = 0;
+
+ srcpath = {
+ "./",
+ };
+
+ srcfiles = {}; // list of loaded files
+ srctext = {}; // the text of the files
+}
+
+defn linkreg(addr)
+{
+ return 0;
+}
+
+defn stk() // trace
+{
+ _stk(*PC, *SP, linkreg(0), 0);
+}
+
+defn lstk() // trace with locals
+{
+ _stk(*PC, *SP, linkreg(0), 1);
+}
+
+defn kstk()
+{
+ local lab;
+ complex Proc proc;
+ lab = proc.sched;
+ complex Label lab;
+ _stk(lab.pc\X, lab.sp\X, linkreg(0), 0);
+}
+
+defn lkstk()
+{
+ local lab;
+ complex Proc proc;
+ lab = proc.sched;
+ complex Label lab;
+ _stk(lab.pc\X, lab.sp\X, linkreg(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("R8\t", *R8, " R9\t", *R9, " R10\t", *R10, " R11\t", *R11, "\n");
+ print("R12\t", *R12, "\n");
+ return 0;
+}
+
+defn spr() // print special processor registers
+{
+ local pc;
+ local cause;
+ local lr;
+
+ pc = *PC;
+ lr = *LINK;
+ print("PC\t", pc, " ", fmt(pc, 'a'), " ");
+ pfl(pc);
+ print("LINK\t", lr, " ", fmt(lr, 'a'), " ");
+ pfl(lr);
+ print("TYPE: ", reason(*TYPE), "\n");
+ print("SP\t", *SP, "\n");
+
+ return 0;
+}
+
+defn regs() // print all registers
+{
+ spr();
+ gpr();
+}
+
+print("$ROOT/lib/acid/arm");