From 5aa224c153db83a9fe82848860a062c7c3566cc5 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sun, 1 May 2016 21:51:15 +0200 Subject: pc: use fpsave() instead of fpenv() to capture fp exception context --- sys/src/9/pc/fns.h | 2 -- sys/src/9/pc/l.s | 9 --------- sys/src/9/pc/main.c | 5 +++-- 3 files changed, 3 insertions(+), 13 deletions(-) (limited to 'sys/src/9') diff --git a/sys/src/9/pc/fns.h b/sys/src/9/pc/fns.h index 9701ed547..69c4fc01c 100644 --- a/sys/src/9/pc/fns.h +++ b/sys/src/9/pc/fns.h @@ -35,7 +35,6 @@ int ecread(uchar addr); int ecwrite(uchar addr, uchar val); #define evenaddr(x) /* x86 doesn't care */ void fpclear(void); -void fpenv(FPsave*); void fpinit(void); void fpoff(void); void (*fprestore)(FPsave*); @@ -44,7 +43,6 @@ void fpsserestore(FPsave*); void fpsserestore0(FPsave*); void fpssesave(FPsave*); void fpssesave0(FPsave*); -ulong fpstatus(void); void fpx87restore(FPsave*); void fpx87restore0(FPsave*); void fpx87save(FPsave*); diff --git a/sys/src/9/pc/l.s b/sys/src/9/pc/l.s index f9e5c5372..40b05519f 100644 --- a/sys/src/9/pc/l.s +++ b/sys/src/9/pc/l.s @@ -612,15 +612,6 @@ TEXT fpx87restore0(SB), $0 /* enable and restore state */ WAIT RET -TEXT fpstatus(SB), $0 /* get floating point status */ - FSTSW AX - RET - -TEXT fpenv(SB), $0 /* save state without waiting */ - MOVL p+0(FP), AX - FSTENV 0(AX) - RET - TEXT fpclear(SB), $0 /* clear pending exceptions */ FPON FCLEX /* no WAIT */ diff --git a/sys/src/9/pc/main.c b/sys/src/9/pc/main.c index 02ca17d81..e972c2854 100644 --- a/sys/src/9/pc/main.c +++ b/sys/src/9/pc/main.c @@ -706,8 +706,9 @@ matherror(Ureg*, void*) /* * get floating point state to check out error */ - fpenv(&up->fpsave); - mathnote(up->fpsave.status, up->fpsave.pc); + fpsave(&up->fpsave); + up->fpstate = FPinactive; + mathnote(up->fpsave.fsw, up->fpsave.fpuip); } /* -- cgit v1.2.3