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