Module Name: src
Committed By: dsl
Date: Sun Dec 8 20:45:30 UTC 2013
Modified Files:
src/sys/arch/i386/i386: freebsd_machdep.c ibcs2_machdep.c machdep.c
process_machdep.c svr4_machdep.c trap.c
src/sys/arch/i386/include: freebsd_machdep.h npx.h
src/sys/arch/i386/isa: npx.c
Log Message:
Rename the fields of 'struct envxmm' (itself badly named) so that they
are different from those used for the x87 fpu.
Use a union to describe the 64bit 'address' field so that it correctly
spilt for 32bit binaries.
The freebsd emulation defined its own 'struct freebsd_env87' that the
code just assumed matched the netbsd one.
Since this is a hardware structure, just use the netbsd one.
This shouldn't change the binaries except that 'en_fos' used to be
incorrectly a 32bit field.
To generate a diff of this commit:
cvs rdiff -u -r1.55 -r1.56 src/sys/arch/i386/i386/freebsd_machdep.c
cvs rdiff -u -r1.40 -r1.41 src/sys/arch/i386/i386/ibcs2_machdep.c
cvs rdiff -u -r1.739 -r1.740 src/sys/arch/i386/i386/machdep.c
cvs rdiff -u -r1.74 -r1.75 src/sys/arch/i386/i386/process_machdep.c
cvs rdiff -u -r1.96 -r1.97 src/sys/arch/i386/i386/svr4_machdep.c
cvs rdiff -u -r1.266 -r1.267 src/sys/arch/i386/i386/trap.c
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/i386/include/freebsd_machdep.h
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/i386/include/npx.h
cvs rdiff -u -r1.146 -r1.147 src/sys/arch/i386/isa/npx.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/i386/i386/freebsd_machdep.c
diff -u src/sys/arch/i386/i386/freebsd_machdep.c:1.55 src/sys/arch/i386/i386/freebsd_machdep.c:1.56
--- src/sys/arch/i386/i386/freebsd_machdep.c:1.55 Thu Dec 10 14:13:50 2009
+++ src/sys/arch/i386/i386/freebsd_machdep.c Sun Dec 8 20:45:30 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: freebsd_machdep.c,v 1.55 2009/12/10 14:13:50 matt Exp $ */
+/* $NetBSD: freebsd_machdep.c,v 1.56 2013/12/08 20:45:30 dsl Exp $ */
/*-
* Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: freebsd_machdep.c,v 1.55 2009/12/10 14:13:50 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: freebsd_machdep.c,v 1.56 2013/12/08 20:45:30 dsl Exp $");
#if defined(_KERNEL_OPT)
#include "opt_vm86.h"
@@ -65,7 +65,7 @@ freebsd_setregs(struct lwp *l, struct ex
setregs(l, epp, stack);
if (i386_use_fxsave)
- pcb->pcb_savefpu.sv_xmm.sv_env.en_cw = __FreeBSD_NPXCW__;
+ pcb->pcb_savefpu.sv_xmm.sv_env.fx_cw = __FreeBSD_NPXCW__;
else
pcb->pcb_savefpu.sv_87.sv_env.en_cw = __FreeBSD_NPXCW__;
}
@@ -285,8 +285,7 @@ netbsd_to_freebsd_ptrace_regs(struct reg
fregs->freebsd_ptrace_regs.tf_esp = nregs->r_esp;
fregs->freebsd_ptrace_regs.tf_ss = nregs->r_ss;
- fregs->freebsd_ptrace_fpregs.sv_env =
- *(struct freebsd_env87 *)&nframe->sv_env;
+ fregs->freebsd_ptrace_fpregs.sv_env = nframe->sv_env;
memcpy(fregs->freebsd_ptrace_fpregs.sv_ac, nframe->sv_ac,
sizeof(fregs->freebsd_ptrace_fpregs.sv_ac));
fregs->freebsd_ptrace_fpregs.sv_ex_sw =
@@ -336,8 +335,7 @@ freebsd_to_netbsd_ptrace_regs(struct fre
nregs->r_esp = fregs->freebsd_ptrace_regs.tf_esp;
nregs->r_ss = fregs->freebsd_ptrace_regs.tf_ss;
- nframe->sv_env =
- *(struct env87 *)&fregs->freebsd_ptrace_fpregs.sv_env;
+ nframe->sv_env = fregs->freebsd_ptrace_fpregs.sv_env;
memcpy(nframe->sv_ac, fregs->freebsd_ptrace_fpregs.sv_ac,
sizeof(nframe->sv_ac));
nframe->sv_ex_sw =
Index: src/sys/arch/i386/i386/ibcs2_machdep.c
diff -u src/sys/arch/i386/i386/ibcs2_machdep.c:1.40 src/sys/arch/i386/i386/ibcs2_machdep.c:1.41
--- src/sys/arch/i386/i386/ibcs2_machdep.c:1.40 Sun Feb 14 11:09:54 2010
+++ src/sys/arch/i386/i386/ibcs2_machdep.c Sun Dec 8 20:45:30 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: ibcs2_machdep.c,v 1.40 2010/02/14 11:09:54 drochner Exp $ */
+/* $NetBSD: ibcs2_machdep.c,v 1.41 2013/12/08 20:45:30 dsl Exp $ */
/*-
* Copyright (c) 1997, 2000 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ibcs2_machdep.c,v 1.40 2010/02/14 11:09:54 drochner Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ibcs2_machdep.c,v 1.41 2013/12/08 20:45:30 dsl Exp $");
#if defined(_KERNEL_OPT)
#include "opt_vm86.h"
@@ -69,7 +69,7 @@ ibcs2_setregs(struct lwp *l, struct exec
setregs(l, epp, stack);
if (i386_use_fxsave)
- pcb->pcb_savefpu.sv_xmm.sv_env.en_cw = __iBCS2_NPXCW__;
+ pcb->pcb_savefpu.sv_xmm.sv_env.fx_cw = __iBCS2_NPXCW__;
else
pcb->pcb_savefpu.sv_87.sv_env.en_cw = __iBCS2_NPXCW__;
tf = l->l_md.md_regs;
Index: src/sys/arch/i386/i386/machdep.c
diff -u src/sys/arch/i386/i386/machdep.c:1.739 src/sys/arch/i386/i386/machdep.c:1.740
--- src/sys/arch/i386/i386/machdep.c:1.739 Sun Dec 1 01:05:16 2013
+++ src/sys/arch/i386/i386/machdep.c Sun Dec 8 20:45:30 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: machdep.c,v 1.739 2013/12/01 01:05:16 christos Exp $ */
+/* $NetBSD: machdep.c,v 1.740 2013/12/08 20:45:30 dsl Exp $ */
/*-
* Copyright (c) 1996, 1997, 1998, 2000, 2004, 2006, 2008, 2009
@@ -67,7 +67,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.739 2013/12/01 01:05:16 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.740 2013/12/08 20:45:30 dsl Exp $");
#include "opt_beep.h"
#include "opt_compat_ibcs2.h"
@@ -886,8 +886,8 @@ setregs(struct lwp *l, struct exec_packa
l->l_md.md_flags &= ~MDL_USEDFPU;
if (i386_use_fxsave) {
- pcb->pcb_savefpu.sv_xmm.sv_env.en_cw = control;
- pcb->pcb_savefpu.sv_xmm.sv_env.en_mxcsr = __INITIAL_MXCSR__;
+ pcb->pcb_savefpu.sv_xmm.sv_env.fx_cw = control;
+ pcb->pcb_savefpu.sv_xmm.sv_env.fx_mxcsr = __INITIAL_MXCSR__;
} else
pcb->pcb_savefpu.sv_87.sv_env.en_cw = control;
memcpy(&pcb->pcb_fsd, &gdt[GUDATA_SEL], sizeof(pcb->pcb_fsd));
Index: src/sys/arch/i386/i386/process_machdep.c
diff -u src/sys/arch/i386/i386/process_machdep.c:1.74 src/sys/arch/i386/i386/process_machdep.c:1.75
--- src/sys/arch/i386/i386/process_machdep.c:1.74 Sun Dec 1 01:05:16 2013
+++ src/sys/arch/i386/i386/process_machdep.c Sun Dec 8 20:45:30 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: process_machdep.c,v 1.74 2013/12/01 01:05:16 christos Exp $ */
+/* $NetBSD: process_machdep.c,v 1.75 2013/12/08 20:45:30 dsl Exp $ */
/*-
* Copyright (c) 1998, 2000, 2001, 2008 The NetBSD Foundation, Inc.
@@ -52,7 +52,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.74 2013/12/01 01:05:16 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.75 2013/12/08 20:45:30 dsl Exp $");
#include "opt_vm86.h"
#include "opt_ptrace.h"
@@ -132,14 +132,12 @@ process_xmm_to_s87(const struct savexmm
int i;
/* FPU control/status */
- s87->sv_env.en_cw = sxmm->sv_env.en_cw;
- s87->sv_env.en_sw = sxmm->sv_env.en_sw;
+ s87->sv_env.en_cw = sxmm->sv_env.fx_cw;
+ s87->sv_env.en_sw = sxmm->sv_env.fx_sw;
/* tag word handled below */
- s87->sv_env.en_fip = sxmm->sv_env.en_fip;
- s87->sv_env.en_fcs = sxmm->sv_env.en_fcs;
- s87->sv_env.en_opcode = sxmm->sv_env.en_opcode;
- s87->sv_env.en_foo = sxmm->sv_env.en_foo;
- s87->sv_env.en_fos = sxmm->sv_env.en_fos;
+ s87->sv_env.en_ip = sxmm->sv_env.fx_ip;
+ s87->sv_env.en_opcode = sxmm->sv_env.fx_opcode;
+ s87->sv_env.en_dp = sxmm->sv_env.fx_dp;
/* Tag word and registers. */
s87->sv_env.en_tw = 0;
@@ -147,7 +145,7 @@ process_xmm_to_s87(const struct savexmm
for (i = 0; i < 8; i++) {
s87->sv_env.en_tw |=
(xmm_to_s87_tag(sxmm->sv_ac[i].fp_bytes, i,
- sxmm->sv_env.en_tw) << (i * 2));
+ sxmm->sv_env.fx_tw) << (i * 2));
s87->sv_ex_tw |=
(xmm_to_s87_tag(sxmm->sv_ac[i].fp_bytes, i,
@@ -166,21 +164,19 @@ process_s87_to_xmm(const struct save87 *
int i;
/* FPU control/status */
- sxmm->sv_env.en_cw = s87->sv_env.en_cw;
- sxmm->sv_env.en_sw = s87->sv_env.en_sw;
+ sxmm->sv_env.fx_cw = s87->sv_env.en_cw;
+ sxmm->sv_env.fx_sw = s87->sv_env.en_sw;
/* tag word handled below */
- sxmm->sv_env.en_fip = s87->sv_env.en_fip;
- sxmm->sv_env.en_fcs = s87->sv_env.en_fcs;
- sxmm->sv_env.en_opcode = s87->sv_env.en_opcode;
- sxmm->sv_env.en_foo = s87->sv_env.en_foo;
- sxmm->sv_env.en_fos = s87->sv_env.en_fos;
+ sxmm->sv_env.fx_ip = s87->sv_env.en_ip;
+ sxmm->sv_env.fx_opcode = s87->sv_env.en_opcode;
+ sxmm->sv_env.fx_dp = s87->sv_env.en_dp;
/* Tag word and registers. */
for (i = 0; i < 8; i++) {
if (((s87->sv_env.en_tw >> (i * 2)) & 3) == 3)
- sxmm->sv_env.en_tw &= ~(1U << i);
+ sxmm->sv_env.fx_tw &= ~(1U << i);
else
- sxmm->sv_env.en_tw |= (1U << i);
+ sxmm->sv_env.fx_tw |= (1U << i);
#if 0
/*
@@ -257,15 +253,15 @@ process_read_fpregs(struct lwp *l, struc
* save it temporarily.
*/
if (i386_use_fxsave) {
- uint32_t mxcsr = frame->sv_xmm.sv_env.en_mxcsr;
- uint16_t cw = frame->sv_xmm.sv_env.en_cw;
+ uint32_t mxcsr = frame->sv_xmm.sv_env.fx_mxcsr;
+ uint16_t cw = frame->sv_xmm.sv_env.fx_cw;
/* XXX Don't zero XMM regs? */
memset(&frame->sv_xmm, 0, sizeof(frame->sv_xmm));
- frame->sv_xmm.sv_env.en_cw = cw;
- frame->sv_xmm.sv_env.en_mxcsr = mxcsr;
- frame->sv_xmm.sv_env.en_sw = 0x0000;
- frame->sv_xmm.sv_env.en_tw = 0x00;
+ frame->sv_xmm.sv_env.fx_cw = cw;
+ frame->sv_xmm.sv_env.fx_mxcsr = mxcsr;
+ frame->sv_xmm.sv_env.fx_sw = 0x0000;
+ frame->sv_xmm.sv_env.fx_tw = 0x00;
} else {
uint16_t cw = frame->sv_87.sv_env.en_cw;
@@ -414,15 +410,15 @@ process_machdep_read_xmmregs(struct lwp
* The initial control word was already set by setregs(),
* so save it temporarily.
*/
- uint32_t mxcsr = frame->sv_xmm.sv_env.en_mxcsr;
- uint16_t cw = frame->sv_xmm.sv_env.en_cw;
+ uint32_t mxcsr = frame->sv_xmm.sv_env.fx_mxcsr;
+ uint16_t cw = frame->sv_xmm.sv_env.fx_cw;
/* XXX Don't zero XMM regs? */
memset(&frame->sv_xmm, 0, sizeof(frame->sv_xmm));
- frame->sv_xmm.sv_env.en_cw = cw;
- frame->sv_xmm.sv_env.en_mxcsr = mxcsr;
- frame->sv_xmm.sv_env.en_sw = 0x0000;
- frame->sv_xmm.sv_env.en_tw = 0x00;
+ frame->sv_xmm.sv_env.fx_cw = cw;
+ frame->sv_xmm.sv_env.fx_mxcsr = mxcsr;
+ frame->sv_xmm.sv_env.fx_sw = 0x0000;
+ frame->sv_xmm.sv_env.fx_tw = 0x00;
l->l_md.md_flags |= MDL_USEDFPU;
}
Index: src/sys/arch/i386/i386/svr4_machdep.c
diff -u src/sys/arch/i386/i386/svr4_machdep.c:1.96 src/sys/arch/i386/i386/svr4_machdep.c:1.97
--- src/sys/arch/i386/i386/svr4_machdep.c:1.96 Sun Feb 14 11:09:54 2010
+++ src/sys/arch/i386/i386/svr4_machdep.c Sun Dec 8 20:45:30 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: svr4_machdep.c,v 1.96 2010/02/14 11:09:54 drochner Exp $ */
+/* $NetBSD: svr4_machdep.c,v 1.97 2013/12/08 20:45:30 dsl Exp $ */
/*-
* Copyright (c) 1994, 2000 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: svr4_machdep.c,v 1.96 2010/02/14 11:09:54 drochner Exp $");
+__KERNEL_RCSID(0, "$NetBSD: svr4_machdep.c,v 1.97 2013/12/08 20:45:30 dsl Exp $");
#if defined(_KERNEL_OPT)
#include "opt_vm86.h"
@@ -116,7 +116,7 @@ svr4_setregs(struct lwp *l, struct exec_
setregs(l, epp, stack);
if (i386_use_fxsave)
- pcb->pcb_savefpu.sv_xmm.sv_env.en_cw = __SVR4_NPXCW__;
+ pcb->pcb_savefpu.sv_xmm.sv_env.fx_cw = __SVR4_NPXCW__;
else
pcb->pcb_savefpu.sv_87.sv_env.en_cw = __SVR4_NPXCW__;
tf->tf_cs = GSEL(GUCODEBIG_SEL, SEL_UPL);
Index: src/sys/arch/i386/i386/trap.c
diff -u src/sys/arch/i386/i386/trap.c:1.266 src/sys/arch/i386/i386/trap.c:1.267
--- src/sys/arch/i386/i386/trap.c:1.266 Sat Dec 8 12:36:30 2012
+++ src/sys/arch/i386/i386/trap.c Sun Dec 8 20:45:30 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.266 2012/12/08 12:36:30 kiyohara Exp $ */
+/* $NetBSD: trap.c,v 1.267 2013/12/08 20:45:30 dsl Exp $ */
/*-
* Copyright (c) 1998, 2000, 2005, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.266 2012/12/08 12:36:30 kiyohara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.267 2013/12/08 20:45:30 dsl Exp $");
#include "opt_ddb.h"
#include "opt_kgdb.h"
@@ -203,7 +203,7 @@ xmm_si_code(struct lwp *l)
return 0;
}
pcb = lwp_getpcb(l);
- mxcsr = pcb->pcb_savefpu.sv_xmm.sv_env.en_mxcsr;
+ mxcsr = pcb->pcb_savefpu.sv_xmm.sv_env.fx_mxcsr;
/*
* Since we only have a single status and control register,
Index: src/sys/arch/i386/include/freebsd_machdep.h
diff -u src/sys/arch/i386/include/freebsd_machdep.h:1.9 src/sys/arch/i386/include/freebsd_machdep.h:1.10
--- src/sys/arch/i386/include/freebsd_machdep.h:1.9 Wed Sep 14 15:00:16 2005
+++ src/sys/arch/i386/include/freebsd_machdep.h Sun Dec 8 20:45:30 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: freebsd_machdep.h,v 1.9 2005/09/14 15:00:16 he Exp $ */
+/* $NetBSD: freebsd_machdep.h,v 1.10 2013/12/08 20:45:30 dsl Exp $ */
/*
* Copyright (c) 1986, 1989, 1991, 1993
@@ -143,16 +143,7 @@ struct freebsd_trapframe {
};
/* Environment information of floating point unit */
-struct freebsd_env87 {
- long en_cw; /* control word (16bits) */
- long en_sw; /* status word (16bits) */
- long en_tw; /* tag word (16bits) */
- long en_fip; /* floating point instruction pointer */
- u_short en_fcs; /* floating code segment selector */
- u_short en_opcode; /* opcode last executed (11 bits ) */
- long en_foo; /* floating operand offset */
- long en_fos; /* floating operand segment selector */
-};
+#define freebsd_env87 env87
/* Contents of each floating point accumulator */
struct freebsd_fpacc87 {
Index: src/sys/arch/i386/include/npx.h
diff -u src/sys/arch/i386/include/npx.h:1.26 src/sys/arch/i386/include/npx.h:1.27
--- src/sys/arch/i386/include/npx.h:1.26 Mon Nov 11 11:10:45 2013
+++ src/sys/arch/i386/include/npx.h Sun Dec 8 20:45:30 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: npx.h,v 1.26 2013/11/11 11:10:45 joerg Exp $ */
+/* $NetBSD: npx.h,v 1.27 2013/12/08 20:45:30 dsl Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@@ -42,16 +42,28 @@
#ifndef _I386_NPX_H_
#define _I386_NPX_H_
-/* Environment information of floating point unit */
+union fp_addr {
+ uint64_t fa_64; /* Linear address for 64bit systems */
+ struct {
+ uint32_t fa_off; /* Linear address for 32 bit */
+ uint16_t fa_seg; /* Code/data (etc) segment */
+ uint16_t fa_pad;
+ } fa_32;
+} __packed;
+
+/*
+ * Environment information of floating point unit (fsave instruction).
+ * Note that the 'tag word' contains 2 bits per register and is relative
+ * to the stack top.
+ * The fxsave version is 1 bit per register indexed by register number.
+ */
struct env87 {
long en_cw; /* control word (16bits) */
long en_sw; /* status word (16bits) */
long en_tw; /* tag word (16bits) */
- long en_fip; /* floating point instruction pointer */
- uint16_t en_fcs; /* floating code segment selector */
- uint16_t en_opcode; /* opcode last executed (11 bits ) */
- long en_foo; /* floating operand offset */
- long en_fos; /* floating operand segment selector */
+ union fp_addr en_ip; /* floating point instruction pointer */
+#define en_opcode en_ip.fa_32.fa_pad /* opcode last executed (11bits) */
+ union fp_addr en_dp; /* floating operand offset */
};
/* Contents of each floating point accumulator */
@@ -77,21 +89,17 @@ struct save87 {
#endif
};
-/* Environment of FPU/MMX/SSE/SSE2. */
+/* Environment of FPU/MMX/SSE/SSE2 (fxsave instruction). */
struct envxmm {
-/*0*/ uint16_t en_cw; /* FPU Control Word */
- uint16_t en_sw; /* FPU Status Word */
- uint8_t en_tw; /* FPU Tag Word (abridged) */
- uint8_t en_rsvd0;
- uint16_t en_opcode; /* FPU Opcode */
- uint32_t en_fip; /* FPU Instruction Pointer */
- uint16_t en_fcs; /* FPU IP selector */
- uint16_t en_rsvd1;
-/*16*/ uint32_t en_foo; /* FPU Data pointer */
- uint16_t en_fos; /* FPU Data pointer selector */
- uint16_t en_rsvd2;
- uint32_t en_mxcsr; /* MXCSR Register State */
- uint32_t en_rsvd3;
+/*0*/ uint16_t fx_cw; /* FPU Control Word */
+ uint16_t fx_sw; /* FPU Status Word */
+ uint8_t fx_tw; /* FPU Tag Word (abridged) */
+ uint8_t fx_reserved1;
+ uint16_t fx_opcode; /* FPU Opcode */
+ union fp_addr fx_ip; /* FPU Instruction Pointer */
+/*16*/ union fp_addr fx_dp; /* FPU Data pointer */
+ uint32_t fx_mxcsr; /* MXCSR Register State */
+ uint32_t fx_mxcsr_mask;
};
/* FPU regsters in the extended save format. */
Index: src/sys/arch/i386/isa/npx.c
diff -u src/sys/arch/i386/isa/npx.c:1.146 src/sys/arch/i386/isa/npx.c:1.147
--- src/sys/arch/i386/isa/npx.c:1.146 Sun Dec 1 01:05:16 2013
+++ src/sys/arch/i386/isa/npx.c Sun Dec 8 20:45:30 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: npx.c,v 1.146 2013/12/01 01:05:16 christos Exp $ */
+/* $NetBSD: npx.c,v 1.147 2013/12/08 20:45:30 dsl Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -96,7 +96,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: npx.c,v 1.146 2013/12/01 01:05:16 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: npx.c,v 1.147 2013/12/08 20:45:30 dsl Exp $");
#if 0
#define IPRINTF(x) printf x
@@ -435,7 +435,7 @@ npxintr(void *arg, struct intrframe *fra
fpu_save(addr);
fwait();
if (i386_use_fxsave) {
- fldcw(&addr->sv_xmm.sv_env.en_cw);
+ fldcw(&addr->sv_xmm.sv_env.fx_cw);
/*
* FNINIT doesn't affect MXCSR or the XMM registers;
* no need to re-load MXCSR here.
@@ -452,8 +452,8 @@ npxintr(void *arg, struct intrframe *fra
* words, so the complete exception state can be recovered.
*/
if (i386_use_fxsave) {
- addr->sv_xmm.sv_ex_sw = addr->sv_xmm.sv_env.en_sw;
- addr->sv_xmm.sv_ex_tw = addr->sv_xmm.sv_env.en_tw;
+ addr->sv_xmm.sv_ex_sw = addr->sv_xmm.sv_env.fx_sw;
+ addr->sv_xmm.sv_ex_tw = addr->sv_xmm.sv_env.fx_tw;
} else {
addr->sv_87.sv_ex_sw = addr->sv_87.sv_env.en_sw;
addr->sv_87.sv_ex_tw = addr->sv_87.sv_env.en_tw;
@@ -610,7 +610,7 @@ npxdna(struct cpu_info *ci)
fninit();
if (i386_use_fxsave) {
fldcw(&pcb->pcb_savefpu.
- sv_xmm.sv_env.en_cw);
+ sv_xmm.sv_env.fx_cw);
} else {
fldcw(&pcb->pcb_savefpu.
sv_87.sv_env.en_cw);
@@ -916,11 +916,11 @@ static const uint8_t fpetable[128] = {
#define GET_FPU_CW(pcb) \
(i386_use_fxsave ? \
- pcb->pcb_savefpu.sv_xmm.sv_env.en_cw : \
+ pcb->pcb_savefpu.sv_xmm.sv_env.fx_cw : \
pcb->pcb_savefpu.sv_87.sv_env.en_cw)
#define GET_FPU_SW(pcb) \
(i386_use_fxsave ? \
- pcb->pcb_savefpu.sv_xmm.sv_env.en_sw : \
+ pcb->pcb_savefpu.sv_xmm.sv_env.fx_sw : \
pcb->pcb_savefpu.sv_87.sv_env.en_sw)
/*