X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Finterrupt.h;h=05c6638680a53f05ede961a100abff25be25249e;hb=171fde84561e232b8af8c05b82dfe8a8f9e08340;hp=4f2b0978f6f5625bc4f9858903710c4c4e7bc4ec;hpb=cf507f95509a855a752b6f1771aa06877b8a3b30;p=sbcl.git diff --git a/src/runtime/interrupt.h b/src/runtime/interrupt.h index 4f2b097..05c6638 100644 --- a/src/runtime/interrupt.h +++ b/src/runtime/interrupt.h @@ -109,10 +109,18 @@ struct interrupt_data { siginfo_t pending_info; sigset_t pending_mask; /* Was pending mask saved for gc request? True if GC_PENDING or - * SIG_STOP_FOR_GC happened in a pseudo atomic with no GC_INHIBIT - * NIL. Both deferrable interrupt handlers and gc are careful not - * to clobber each other's pending_mask. */ + * SIG_STOP_FOR_GC happened in a pseudo atomic with GC_INHIBIT NIL + * and with no pending handler. Both deferrable interrupt handlers + * and gc are careful not to clobber each other's pending_mask. */ boolean gc_blocked_deferrables; +#ifdef LISP_FEATURE_PPC + /* On PPC when consing wants to turn to alloc(), it does so via a + * trap. When alloc() wants to save the sigmask it consults + * allocation_trap_context. It does not look up the most recent + * context, because alloc() can be called from other places + * too. */ + os_context_t *allocation_trap_context; +#endif }; extern boolean interrupt_handler_pending_p(void); @@ -158,4 +166,9 @@ extern void lisp_memory_fault_error(os_context_t *context, os_vm_address_t addr); #endif +#include "thread.h" + +extern void lower_thread_control_stack_guard_page(struct thread *th); +extern void reset_thread_control_stack_guard_page(struct thread *th); + #endif