Simplify (and robustify) regular PACKing
[sbcl.git] / src / runtime / osf1-os.c
index 1a2ffac..fc6a1f8 100644 (file)
@@ -54,7 +54,7 @@ size_t os_vm_page_size;
 void
 os_init(char *argv[], char *envp[])
 {
-    os_vm_page_size = getpagesize();
+    os_vm_page_size = BACKEND_PAGE_BYTES;
 }
 
 
@@ -122,10 +122,8 @@ is_valid_lisp_addr(os_vm_address_t addr)
 
 
 static void
-sigsegv_handler(int signal, siginfo_t *info, void* void_context)
+sigsegv_handler(int signal, siginfo_t *info, os_context_t *context)
 {
-    os_context_t *context = arch_os_get_context(&void_context);
-
     os_vm_address_t addr = arch_get_bad_addr(signal,info,context);
 
     if (addr != NULL &&
@@ -133,9 +131,9 @@ sigsegv_handler(int signal, siginfo_t *info, void* void_context)
         /* this is lifted from linux-os.c, so violates OOAO */
         *os_context_register_addr(context,reg_ALLOC) -= (1L<<63);
         interrupt_handle_pending(context);
-    } else if (!interrupt_maybe_gc(signal, info, context)) {
+    } else if (!cheneygc_handle_wp_violation(context, addr)) {
         if(!handle_guard_page_triggered(context,addr))
-            interrupt_handle_now(signal, info, context);
+            lisp_memory_fault_error(context, addr);
     }
 }
 
@@ -147,3 +145,8 @@ os_install_interrupt_handlers(void)
                                                  sigsegv_handler);
 }
 
+char *
+os_get_runtime_executable_path(int external)
+{
+    return NULL;
+}