Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: src/sys/arch/i386/i386
Module Name: src
Committed By: dsl
Date: Sat Jan 25 19:51:32 UTC 2014
Modified Files:
src/sys/arch/i386/i386: process_machdep.c
Log Message:
Rewrite the code that converts the x87 tag word between its full and
abridged versions.
The code in xmm_to_s87_tag() looked at the wrong register when trying
to generate 0b01 (zero) and 0b10 (NaN etc) because the registers are
relative to the stack top, but the tag words are absolute.
Since even a real 387 generates the correct tag values when the tag word
(or register value) is loaded there is no point generating other than
0b00 (used) and 0b11 (unused).
The compiler also made a pig's breakfast of the register copy loop.
When convering from fsave to (the larger) fxsave format don't bother
copying the fp register values if none are in use.
Converting the other way we do copy them all because the target buffer
is often written to userspace (and has no padding).
i386 core dumps still seem ok - and do use this code.
To generate a diff of this commit:
cvs rdiff -u -r1.77 -r1.78 src/sys/arch/i386/i386/process_machdep.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Home |
Main Index |
Thread Index |
Old Index