Imported slu/mmu/interrupt/register code from WIP memtester program into C template.
[pdp11-modern-c] / pdp11 / interrupt_handler.s
diff --git a/pdp11/interrupt_handler.s b/pdp11/interrupt_handler.s
new file mode 100644 (file)
index 0000000..970363b
--- /dev/null
@@ -0,0 +1,24 @@
+# (c) 2020 Aaron Taylor <ataylor at subgeniuskitty dot com>
+# See License.txt file for copyright and license details.
+
+.globl _int4_asm_handler
+.globl _int4_c_handler
+
+_int4_asm_handler:
+    # GCC appears to be using the same calling convention documented in the
+    # original UNIX manuals. Most of these register saves are probably
+    # unnecessary.
+    mov r0,-(sp)
+    mov r1,-(sp)
+    mov r2,-(sp)
+    mov r3,-(sp)
+    mov r4,-(sp)
+    mov r5,-(sp)
+    jsr pc, _int4_c_handler
+    mov (sp)+,r5
+    mov (sp)+,r4
+    mov (sp)+,r3
+    mov (sp)+,r2
+    mov (sp)+,r1
+    mov (sp)+,r0
+    rti