diff options
author | jhb <jhb@FreeBSD.org> | 2009-03-05 19:42:11 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2009-03-05 19:42:11 +0000 |
commit | e1b708897ea547f25fbc5fc1f73bb2b0738c5757 (patch) | |
tree | 156c16702c286b02c436fdf8c8a1140bab925e8b /sys/i386/include/pcb.h | |
parent | 217c09dffc7d5e0d80e98fe648855f9e3c1eee22 (diff) | |
download | FreeBSD-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/i386/include/pcb.h')
-rw-r--r-- | sys/i386/include/pcb.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/i386/include/pcb.h b/sys/i386/include/pcb.h index ff6ff5a..17c8486 100644 --- a/sys/i386/include/pcb.h +++ b/sys/i386/include/pcb.h @@ -61,6 +61,7 @@ struct pcb { int pcb_dr7; union savefpu pcb_save; + uint16_t pcb_initial_npxcw; u_int pcb_flags; #define FP_SOFTFP 0x01 /* process using software fltng pnt emulator */ #define PCB_DBREGS 0x02 /* process using debug registers */ |