X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fppc-bsd-os.c;h=c71912d0c3b26eca7da836aa5874796525abad03;hb=9effe671fd4baacd924b58a25dac89587d38eb27;hp=e77590c1f44ad676ab31162d378904bdf8b23341;hpb=1657a93e26650ab1f517980bdc9ab0a9b9f624ca;p=sbcl.git diff --git a/src/runtime/ppc-bsd-os.c b/src/runtime/ppc-bsd-os.c index e77590c..c71912d 100644 --- a/src/runtime/ppc-bsd-os.c +++ b/src/runtime/ppc-bsd-os.c @@ -8,26 +8,62 @@ int * os_context_register_addr(os_context_t *context, int offset) { +#if defined(LISP_FEATURE_NETBSD) return &context->uc_mcontext.__gregs[offset]; +#elif defined(LISP_FEATURE_OPENBSD) + return &context->sc_frame.fixreg[offset]; +#endif } +#if defined(ARCH_HAS_STACK_POINTER) /* It's not defined on PPC. */ int * os_context_sp_addr(os_context_t *context) { +#if defined(LISP_FEATURE_NETBSD) return &(_UC_MACHINE_SP(context)); +#endif } +#endif int * os_context_pc_addr(os_context_t *context) { +#if defined(LISP_FEATURE_NETBSD) return &(_UC_MACHINE_PC(context)); +#elif defined(LISP_FEATURE_OPENBSD) + return &context->sc_frame.srr0; +#endif } int * os_context_lr_addr(os_context_t *context) { +#if defined(LISP_FEATURE_NETBSD) return &context->uc_mcontext.__gregs[_REG_LR]; +#elif defined(LISP_FEATURE_OPENBSD) + return &context->sc_frame.lr; +#endif +} + +os_context_register_t * +os_context_ctr_addr(os_context_t *context) +{ +#if defined(LISP_FEATURE_NETBSD) + return &context->uc_mcontext.__gregs[_REG_CTR]; +#elif defined(LISP_FEATURE_OPENBSD) + return &context->sc_frame.ctr; +#endif +} + +os_context_register_t * +os_context_cr_addr(os_context_t *context) +{ +#if defined(LISP_FEATURE_NETBSD) + return &context->uc_mcontext.__gregs[_REG_CR]; +#elif defined(LISP_FEATURE_OPENBSD) + return &context->sc_frame.cr; +#endif } /* FIXME: If this can be a no-op on BSD/x86, then it