summaryrefslogtreecommitdiffstats
path: root/sys/amd64/include/pcb.h
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2009-03-05 19:42:11 +0000
committerjhb <jhb@FreeBSD.org>2009-03-05 19:42:11 +0000
commite1b708897ea547f25fbc5fc1f73bb2b0738c5757 (patch)
tree156c16702c286b02c436fdf8c8a1140bab925e8b /sys/amd64/include/pcb.h
parent217c09dffc7d5e0d80e98fe648855f9e3c1eee22 (diff)
downloadFreeBSD-src-e1b708897ea547f25fbc5fc1f73bb2b0738c5757.zip
FreeBSD-src-e1b708897ea547f25fbc5fc1f73bb2b0738c5757.tar.gz
A better fix for handling different FPU initial control words for different
ABIs: - Store the FPU initial control word in the pcb for each thread. - When first using the FPU, load the initial control word after restoring the clean state if it is not the standard control word. - Provide a correct control word for Linux/i386 binaries under FreeBSD/amd64. - Adjust the control word returned for fpugetregs()/npxgetregs() when a thread hasn't used the FPU yet to reflect the real initial control word for the current ABI. - The Linux/i386 ABI for FreeBSD/i386 now properly sets the right control word instead of trashing whatever the current state of the FPU is. Reviewed by: bde
Diffstat (limited to 'sys/amd64/include/pcb.h')
-rw-r--r--sys/amd64/include/pcb.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/amd64/include/pcb.h b/sys/amd64/include/pcb.h
index ac14c55..e6a5add 100644
--- a/sys/amd64/include/pcb.h
+++ b/sys/amd64/include/pcb.h
@@ -74,6 +74,7 @@ struct pcb {
u_int64_t pcb_dr7;
struct savefpu pcb_save;
+ uint16_t pcb_initial_fpucw;
caddr_t pcb_onfault; /* copyin/out fault recovery */
OpenPOWER on IntegriCloud