diff options
| author | Peter Wemm <peter@FreeBSD.org> | 2004-06-08 01:14:39 +0000 |
|---|---|---|
| committer | Peter Wemm <peter@FreeBSD.org> | 2004-06-08 01:14:39 +0000 |
| commit | 96a7759e99cc4c5431ee2d2c09176241965cebc7 (patch) | |
| tree | 16a83b1326c986fb78a6956708b277170ee9392c | |
| parent | 18154cd6f8c9df5254a25bfd4c64ba5b95025754 (diff) | |
Notes
| -rw-r--r-- | sys/amd64/amd64/fpu.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/amd64/amd64/fpu.c b/sys/amd64/amd64/fpu.c index 34af7ae995c4..0b91603cb130 100644 --- a/sys/amd64/amd64/fpu.c +++ b/sys/amd64/amd64/fpu.c @@ -73,6 +73,7 @@ __FBSDID("$FreeBSD$"); #define fnstsw(addr) __asm __volatile("fnstsw %0" : "=m" (*(addr))) #define fxrstor(addr) __asm("fxrstor %0" : : "m" (*(addr))) #define fxsave(addr) __asm __volatile("fxsave %0" : "=m" (*(addr))) +#define ldmxcsr(r) __asm __volatile("ldmxcsr %0" : "m" (r)) #define start_emulating() __asm("smsw %%ax; orb %0,%%al; lmsw %%ax" \ : : "n" (CR0_TS) : "ax") #define stop_emulating() __asm("clts") @@ -111,6 +112,7 @@ void fpuinit(void) { register_t savecrit; + u_int mxcsr; u_short control; savecrit = intr_disable(); @@ -119,6 +121,8 @@ fpuinit(void) fninit(); control = __INITIAL_FPUCW__; fldcw(&control); + mxcsr = __INITIAL_MXCSR__; + ldmxcsr(mxcsr); fxsave(&fpu_cleanstate); start_emulating(); fpu_cleanstate_ready = 1; |
