X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fsparc-sunos-os.c;h=73440fb13f37cfa5e6800c7f10bde4961a540249;hb=e795ac27a9780a35a7d561bfe34d7df224958fbd;hp=76459f46ce5c3c5dfa3953f8a6f9026a04e7bbfc;hpb=0d669e68a1ffbea42af6216f2ae8c7d7ca12ffb6;p=sbcl.git diff --git a/src/runtime/sparc-sunos-os.c b/src/runtime/sparc-sunos-os.c index 76459f4..73440fb 100644 --- a/src/runtime/sparc-sunos-os.c +++ b/src/runtime/sparc-sunos-os.c @@ -30,15 +30,24 @@ #include #include -/* #include */ #include #include #include #include "validate.h" -#if defined GENCGC /* unlikely ... */ -#include "gencgc.h" +#ifdef LISP_FEATURE_SB_THREAD +#error "Define threading support functions" +#else +struct thread *arch_os_get_current_thread() { + return all_threads; +} +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 * @@ -63,23 +72,29 @@ os_context_register_addr(os_context_t *context, int offset) os_context_register_t * os_context_pc_addr(os_context_t *context) { - return &(context->uc_mcontext.gregs[REG_PC]); + return &(context->uc_mcontext.gregs[REG_PC]); } os_context_register_t * os_context_npc_addr(os_context_t *context) { - return &(context->uc_mcontext.gregs[REG_nPC]); + return &(context->uc_mcontext.gregs[REG_nPC]); } sigset_t * os_context_sigmask_addr(os_context_t *context) { - return &(context->uc_sigmask); + return &(context->uc_sigmask); +} + +unsigned long +os_context_fp_control(os_context_t *context) +{ + return (context->uc_mcontext.fpregs.fpu_fsr); } void os_flush_icache(os_vm_address_t address, os_vm_size_t length) { - /* FIXME. There's a bit of stuff in the CMUCL version. It may or - may not be needed */ + /* see sparc-assem.S */ + sparc_flush_icache(address, length); }