X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fppc-darwin-os.c;h=46c9ef0ac35e592ae4af4ca90297d9e823260ba2;hb=35ab27e7aab71c94aa6be12da15603c7fd87fca8;hp=1bdf9509b37b58f91e1d51895c49108c43daaa52;hpb=33a6b2817f3e2a8cf98d162a2b40c50d259295c4;p=sbcl.git diff --git a/src/runtime/ppc-darwin-os.c b/src/runtime/ppc-darwin-os.c index 1bdf950..46c9ef0 100644 --- a/src/runtime/ppc-darwin-os.c +++ b/src/runtime/ppc-darwin-os.c @@ -21,7 +21,8 @@ #include #include #include -#include "bsd-os.h" +#include "arch.h" +#include "interr.h" /* for declaration of lose */ #ifdef LISP_FEATURE_SB_THREAD #error "Define threading support functions" @@ -37,85 +38,105 @@ int arch_os_thread_cleanup(struct thread *thread) { os_context_register_t * os_context_register_addr(os_context_t *context, int offset) { - ppc_saved_state_t *state = &context->uc_mcontext->ss; + ppc_ss_struct_t *state = &context->uc_mcontext->PPC_DARWIN_REGIFY(ss); switch(offset) { case 0: - return &state->r0; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r0); case 1: - return &state->r1; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r1); case 2: - return &state->r2; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r2); case 3: - return &state->r3; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r3); case 4: - return &state->r4; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r4); case 5: - return &state->r5; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r5); case 6: - return &state->r6; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r6); case 7: - return &state->r7; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r7); case 8: - return &state->r8; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r8); case 9: - return &state->r9; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r9); case 10: - return &state->r10; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r10); case 11: - return &state->r11; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r11); case 12: - return &state->r12; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r12); case 13: - return &state->r13; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r13); case 14: - return &state->r14; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r14); case 15: - return &state->r15; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r15); case 16: - return &state->r16; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r16); case 17: - return &state->r17; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r17); case 18: - return &state->r18; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r18); case 19: - return &state->r19; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r19); case 20: - return &state->r20; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r20); case 21: - return &state->r21; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r21); case 22: - return &state->r22; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r22); case 23: - return &state->r23; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r23); case 24: - return &state->r24; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r24); case 25: - return &state->r25; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r25); case 26: - return &state->r26; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r26); case 27: - return &state->r27; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r27); case 28: - return &state->r28; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r28); case 29: - return &state->r29; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r29); case 30: - return &state->r30; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r30); case 31: - return &state->r31; + return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r31); case 41: /* PT_DAR */ - return &context->uc_mcontext->es.dar; + return (os_context_register_t *) &context->uc_mcontext->PPC_DARWIN_REGIFY(es).PPC_DARWIN_REGIFY(dar); case 42: /* PT_DSISR */ - return &context->uc_mcontext->es.dsisr; + return (os_context_register_t *) &context->uc_mcontext->PPC_DARWIN_REGIFY(es).PPC_DARWIN_REGIFY(dsisr); + default: + lose("bad offset to os_context_register_addr"); } } os_context_register_t * os_context_lr_addr(os_context_t *context) { - return &context->uc_mcontext->ss.lr; + return (os_context_register_t *) &context->uc_mcontext->PPC_DARWIN_REGIFY(ss).PPC_DARWIN_REGIFY(lr); +} + +os_context_register_t * +os_context_ctr_addr(os_context_t *context) +{ + return (os_context_register_t *) &context->uc_mcontext->PPC_DARWIN_REGIFY(ss).PPC_DARWIN_REGIFY(ctr); +} + +os_context_register_t * +os_context_cr_addr(os_context_t *context) +{ + return (os_context_register_t *) &context->uc_mcontext->PPC_DARWIN_REGIFY(ss).PPC_DARWIN_REGIFY(cr); +} + +os_context_register_t * +os_context_pc_addr(os_context_t *context) +{ + return &context->uc_mcontext->PPC_DARWIN_REGIFY(ss).PPC_DARWIN_REGIFY(srr0); } void