From ae413d8b120e0c804e36188adda1259cb33e0710 Mon Sep 17 00:00:00 2001 From: deischen Date: Mon, 30 Sep 2002 08:45:38 +0000 Subject: Add back the i386-specific hack to save and restore the FP state to/from a ucontext when a thread is interrupted by a signal. This will be removed when a proper fix is made in the kernel to save/restore the FP state without breaking the ABI. --- lib/libc_r/uthread/pthread_private.h | 4 ++-- lib/libc_r/uthread/uthread_kern.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/libc_r/uthread/pthread_private.h b/lib/libc_r/uthread/pthread_private.h index 97b30b7..4983a57 100644 --- a/lib/libc_r/uthread/pthread_private.h +++ b/lib/libc_r/uthread/pthread_private.h @@ -77,12 +77,12 @@ #define SET_STACK_UC(ucp, stk) (ucp)->uc_mcontext.mc_esp = (int)(stk) #define FP_SAVE_UC(ucp) do { \ char *fdata; \ - fdata = (char *) (ucp)->uc_mcontext.mc_fpregs; \ + fdata = (char *) (ucp)->uc_mcontext.mc_fpstate; \ __asm__("fnsave %0": :"m"(*fdata)); \ } while (0) #define FP_RESTORE_UC(ucp) do { \ char *fdata; \ - fdata = (char *) (ucp)->uc_mcontext.mc_fpregs; \ + fdata = (char *) (ucp)->uc_mcontext.mc_fpstate; \ __asm__("frstor %0": :"m"(*fdata)); \ } while (0) #define SET_RETURN_ADDR_JB(jb, ra) (jb)[0]._jb[0] = (int)(ra) diff --git a/lib/libc_r/uthread/uthread_kern.c b/lib/libc_r/uthread/uthread_kern.c index 5c646c1..b18f944 100644 --- a/lib/libc_r/uthread/uthread_kern.c +++ b/lib/libc_r/uthread/uthread_kern.c @@ -113,7 +113,7 @@ _thread_kern_sched(ucontext_t *ucp) /* Check if this function was called from the signal handler: */ if (ucp != NULL) { -#if 0 +#if 1 /* XXX - Save FP registers? */ FP_SAVE_UC(ucp); #endif @@ -158,7 +158,7 @@ _thread_kern_sched(ucontext_t *ucp) if (ucp == NULL) return; else { -#if 0 +#if 1 /* XXX - Restore FP registers? */ FP_RESTORE_UC(ucp); #endif -- cgit v1.1