X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fx86-linux-os.c;h=3d6e8a3d9a757c6829c6886265d3d2c9cb0dcdb2;hb=1a66c01ddaca2c2349d106fc335f527c802cc8f2;hp=ed7a9e03984fb21d5fcc0d6bef8b55bce60b118e;hpb=68fd2d2dd6f265669a8957accd8a33e62786a97e;p=sbcl.git diff --git a/src/runtime/x86-linux-os.c b/src/runtime/x86-linux-os.c index ed7a9e0..3d6e8a3 100644 --- a/src/runtime/x86-linux-os.c +++ b/src/runtime/x86-linux-os.c @@ -76,6 +76,13 @@ os_context_sp_addr(os_context_t *context) return &context->uc_mcontext.gregs[17]; } +unsigned long +os_context_fp_control(os_context_t *context) +{ + return ((((context->uc_mcontext.fpregs->cw) & 0xffff) ^ 0x3f) | + (((context->uc_mcontext.fpregs->sw) & 0xffff) << 16)); +} + sigset_t * os_context_sigmask_addr(os_context_t *context) { @@ -83,6 +90,12 @@ os_context_sigmask_addr(os_context_t *context) } void +os_restore_fp_control(os_context_t *context) +{ + asm ("fldcw %0" : : "m" (context->uc_mcontext.fpregs->cw)); +} + +void os_flush_icache(os_vm_address_t address, os_vm_size_t length) { }