* in PA. MG - 2005-08-29 */
lispobj info_sap, context_sap;
+
+#ifndef LISP_FEATURE_SB_SAFEPOINT
/* Leave deferrable signals blocked, the handler itself will
* allow signals again when it sees fit. */
-#ifndef LISP_FEATURE_SB_SAFEPOINT
unblock_gc_signals(0, 0);
+#else
+ WITH_GC_AT_SAFEPOINTS_ONLY()
#endif
- context_sap = alloc_sap(context);
- info_sap = alloc_sap(info);
+ { // the block is needed for WITH_GC_AT_SAFEPOINTS_ONLY() to work
+ context_sap = alloc_sap(context);
+ info_sap = alloc_sap(info);
- FSHOW_SIGNAL((stderr,"/calling Lisp-level handler\n"));
+ FSHOW_SIGNAL((stderr,"/calling Lisp-level handler\n"));
-#ifdef LISP_FEATURE_SB_SAFEPOINT
- WITH_GC_AT_SAFEPOINTS_ONLY()
-#endif
- funcall3(handler.lisp,
- make_fixnum(signal),
- info_sap,
- context_sap);
+ funcall3(handler.lisp,
+ make_fixnum(signal),
+ info_sap,
+ context_sap);
+ }
} else {
/* This cannot happen in sane circumstances. */
#endif
}
+// x86-64 has an undefined_alien_function tramp in x86-64-assem.S
+#ifndef LISP_FEATURE_X86_64
/* KLUDGE: Theoretically the approach we use for undefined alien
* variables should work for functions as well, but on PPC/Darwin
* we get bus error at bogus addresses instead, hence this workaround,
void
undefined_alien_function(void)
{
- funcall0(StaticSymbolFunction(UNDEFINED_ALIEN_FUNCTION_ERROR));
+ funcall0(StaticSymbolFunction(UNDEFINED_ALIEN_FUN_ERROR));
}
+#endif
void lower_thread_control_stack_guard_page(struct thread *th)
{