+#if defined LISP_FEATURE_GENCGC
+
+void
+sigsegv_handler(int signal, siginfo_t *info, void* void_context)
+{
+ os_context_t *context = arch_os_get_context(&void_context);
+ void* fault_addr = (void*)info->si_addr;
+
+ if (!gencgc_handle_wp_violation(fault_addr))
+ if(!handle_guard_page_triggered(context, fault_addr))
+#ifdef LISP_FEATURE_C_STACK_IS_CONTROL_STACK
+ lisp_memory_fault_error(context, fault_addr);
+#else
+ interrupt_handle_now(signal, info, context);
+#endif
+}
+
+#else