0.7.4.40:
[sbcl.git] / src / runtime / bsd-os.c
index dbb97a3..eaf6e10 100644 (file)
@@ -26,6 +26,7 @@
 #include "arch.h"
 #include "globals.h"
 #include "interrupt.h"
+#include "interr.h"
 #include "lispregs.h"
 #include "sbcl.h"
 
@@ -163,6 +164,10 @@ os_map(int fd, int offset, os_vm_address_t addr, os_vm_size_t len)
     return addr;
 }
 
+/* FIXME: If this can be a no-op on BSD/x86, then it 
+ * deserves a more precise name.
+ *
+ * (Perhaps os_prepare_data_area_to_be_executed()?) */
 void
 os_flush_icache(os_vm_address_t address, os_vm_size_t length)
 {
@@ -203,7 +208,9 @@ is_valid_lisp_addr(os_vm_address_t addr)
 
 void
 os_install_interrupt_handlers(void)
-{}
+{
+    SHOW("os_install_interrupt_handlers()/bsd-os/!defined(GENCGC)");
+}
 
 #else
 
@@ -230,13 +237,17 @@ memory_fault_handler(int signal, siginfo_t *siginfo, void *void_context)
 void
 os_install_interrupt_handlers(void)
 {
+    SHOW("os_install_interrupt_handlers()/bsd-os/defined(GENCGC)");
 #if defined __FreeBSD__
-    interrupt_install_low_level_handler(SIGBUS, memory_fault_handler);
+    undoably_install_low_level_interrupt_handler(SIGBUS,
+                                                memory_fault_handler);
 #elif defined __OpenBSD__
-    interrupt_install_low_level_handler(SIGSEGV, memory_fault_handler);
+    undoably_install_low_level_interrupt_handler(SIGSEGV,
+                                                memory_fault_handler);
 #else
 #error unsupported BSD variant
 #endif
+    SHOW("leaving os_install_interrupt_handlers()");
 }
 
 #endif /* !defined GENCGC */