X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fppc-darwin-os.c;h=46c9ef0ac35e592ae4af4ca90297d9e823260ba2;hb=6b1b11a6c51e1c29aee947f1fde7f91651ca3763;hp=b29e447d0f4e69f067e01327dde88e442498552c;hpb=3d2165e67f9ad1443f6e7d8ad24810000b0436e8;p=sbcl.git diff --git a/src/runtime/ppc-darwin-os.c b/src/runtime/ppc-darwin-os.c index b29e447..46c9ef0 100644 --- a/src/runtime/ppc-darwin-os.c +++ b/src/runtime/ppc-darwin-os.c @@ -21,90 +21,122 @@ #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" +#else +int arch_os_thread_init(struct thread *thread) { + return 1; /* success */ +} +int arch_os_thread_cleanup(struct thread *thread) { + return 1; /* success */ +} +#endif 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