X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fppc-darwin-os.c;h=f9ab445bf9837c5b7a880e6f92fdb383a306e78c;hb=7e24349c17298e2959e853ea411b5f65d9f7f332;hp=8e16094250c4afdcc353e89616b4414a85edf8e7;hpb=506253505641855dc8bb87033f7af894904f848b;p=sbcl.git diff --git a/src/runtime/ppc-darwin-os.c b/src/runtime/ppc-darwin-os.c index 8e16094..f9ab445 100644 --- a/src/runtime/ppc-darwin-os.c +++ b/src/runtime/ppc-darwin-os.c @@ -1,83 +1,114 @@ +/* + * This is the PowerPC/Darwin incarnation of arch-dependent + * OS-dependent routines. See also "bsdos.c". + */ + +/* + * This software is part of the SBCL system. See the README file for + * more information. + * + * This software is derived from the CMU CL system, which was + * written at Carnegie Mellon University and released into the + * public domain. The software is in the public domain and is + * provided with absolutely no warranty. See the COPYING and CREDITS + * files for more information. + */ + +#include "sbcl.h" #include "globals.h" +#include "runtime.h" #include #include +#include +#include #include "bsd-os.h" +#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; switch(offset) { case 0: - return &state->r0; + return &state->r0; case 1: - return &state->r1; + return &state->r1; case 2: - return &state->r2; + return &state->r2; case 3: - return &state->r3; + return &state->r3; case 4: - return &state->r4; + return &state->r4; case 5: - return &state->r5; + return &state->r5; case 6: - return &state->r6; + return &state->r6; case 7: - return &state->r7; + return &state->r7; case 8: - return &state->r8; + return &state->r8; case 9: - return &state->r9; + return &state->r9; case 10: - return &state->r10; + return &state->r10; case 11: - return &state->r11; + return &state->r11; case 12: - return &state->r12; + return &state->r12; case 13: - return &state->r13; + return &state->r13; case 14: - return &state->r14; + return &state->r14; case 15: - return &state->r15; + return &state->r15; case 16: - return &state->r16; + return &state->r16; case 17: - return &state->r17; + return &state->r17; case 18: - return &state->r18; + return &state->r18; case 19: - return &state->r19; + return &state->r19; case 20: - return &state->r20; + return &state->r20; case 21: - return &state->r21; + return &state->r21; case 22: - return &state->r22; + return &state->r22; case 23: - return &state->r23; + return &state->r23; case 24: - return &state->r24; + return &state->r24; case 25: - return &state->r25; + return &state->r25; case 26: - return &state->r26; + return &state->r26; case 27: - return &state->r27; + return &state->r27; case 28: - return &state->r28; + return &state->r28; case 29: - return &state->r29; + return &state->r29; case 30: - return &state->r30; + return &state->r30; case 31: - return &state->r31; + return &state->r31; case 41: - /* PT_DAR */ - return &context->uc_mcontext->es.dar; + /* PT_DAR */ + return &context->uc_mcontext->es.dar; case 42: - /* PT_DSISR */ - return &context->uc_mcontext->es.dsisr; + /* PT_DSISR */ + return &context->uc_mcontext->es.dsisr; } } @@ -87,9 +118,16 @@ os_context_lr_addr(os_context_t *context) return &context->uc_mcontext->ss.lr; } -void +os_context_register_t * +os_context_pc_addr(os_context_t *context) +{ + return &context->uc_mcontext->ss.srr0; +} + +void os_flush_icache(os_vm_address_t address, os_vm_size_t length) { /* see ppc-arch.c */ ppc_flush_icache(address,length); } +