X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fgc-common.c;h=95b5c3b2702a0287401596fa7e4461158a13e3b0;hb=9e83e3dc367e4fd47d3b27a170cb3a87bb5b1b39;hp=97e227c18a5dcbda0e43ae14336eda644bd12b34;hpb=68508f10fb9c235d1f29a55b05f5158e90b8e0b6;p=sbcl.git diff --git a/src/runtime/gc-common.c b/src/runtime/gc-common.c index 97e227c..95b5c3b 100644 --- a/src/runtime/gc-common.c +++ b/src/runtime/gc-common.c @@ -2514,7 +2514,7 @@ scrub_control_stack(void) #ifdef LISP_FEATURE_C_STACK_IS_CONTROL_STACK sp = (lispobj *)&sp - 1; #else - sp = current_control_stack_pointer; + sp = access_control_stack_pointer(th); #endif scrub: if ((((os_vm_address_t)sp < (hard_guard_page_address + os_vm_page_size)) && @@ -2576,6 +2576,8 @@ static int boxed_registers[] = BOXED_REGISTERS; *os_context_lr_addr(context) #define ACCESS_INTERIOR_POINTER_npc \ *os_context_npc_addr(context) +#define ACCESS_INTERIOR_POINTER_ctr \ + *os_context_ctr_addr(context) #define INTERIOR_POINTER_VARS(name) \ unsigned long name##_offset; \ @@ -2673,6 +2675,9 @@ scavenge_interrupt_context(os_context_t * context) #ifdef ARCH_HAS_NPC_REGISTER INTERIOR_POINTER_VARS(npc); #endif +#ifdef LISP_FEATURE_PPC + INTERIOR_POINTER_VARS(ctr); +#endif PAIR_INTERIOR_POINTER(pc); #ifdef reg_LIP @@ -2684,6 +2689,9 @@ scavenge_interrupt_context(os_context_t * context) #ifdef ARCH_HAS_NPC_REGISTER PAIR_INTERIOR_POINTER(npc); #endif +#ifdef LISP_FEATURE_PPC + PAIR_INTERIOR_POINTER(ctr); +#endif /* Scavenge all boxed registers in the context. */ for (i = 0; i < (sizeof(boxed_registers) / sizeof(int)); i++) { @@ -2713,6 +2721,9 @@ scavenge_interrupt_context(os_context_t * context) #ifdef ARCH_HAS_NPC_REGISTER FIXUP_INTERIOR_POINTER(npc); #endif +#ifdef LISP_FEATURE_PPC + FIXUP_INTERIOR_POINTER(ctr); +#endif } void