diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-05-26 22:41:40 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-05-26 22:41:40 +0200 |
commit | 257c7e958ef125ec12cc218519ce56f767eb112d (patch) | |
tree | 815353b334a8f22f1a6f771fd58c0f27a140bfc9 /sys/lib | |
parent | 7aea1204b9843842827302a3eb58752333daf918 (diff) |
keep fpregs always in sse (FXSAVE) format, adapt libmach and acid files for new format
we now always use the new FXSAVE format in FPsave structure and fpregs
file, converting back and forth in fpx87save() and fpx87restore().
document that fprestore() is a destructive operation now.
change fp register definition in libmach and adapt fpr() acid funciton.
avoid unneccesary copy of fpstate and fpsave in sysfork(). functions
including syscalls do not preserve the fp registers and copying fpstate
from the current process would mean we had to fpsave(&up->fpsave); first.
simply not doing it, new process starts in FPinit state.
Diffstat (limited to 'sys/lib')
-rw-r--r-- | sys/lib/acid/386 | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/sys/lib/acid/386 b/sys/lib/acid/386 index 2aa319daa..5ae46fd83 100644 --- a/sys/lib/acid/386 +++ b/sys/lib/acid/386 @@ -69,22 +69,14 @@ defn fpr() print("F5\t", *F5, "\n"); print("F6\t", *F6, "\n"); print("F7\t", *F7, "\n"); - print("control\t", *fmt(E0, 'x'), "\n"); - print("status\t", *fmt(E1, 'x'), "\n"); - print("tag\t", *fmt(E2, 'x'), "\n"); - print("ip offset\t", *fmt(E3, 'X'), "\n"); - print("cs selector\t", *fmt(E4, 'x'), "\n"); - print("opcode\t", *fmt(E4>>8, 'x'), "\n"); - print("data operand offset\t", *fmt(E5, 'x'), "\n"); - print("operand selector\t", *fmt(E6, 'x'), "\n"); -} - -defn mmregs() -{ - print("MM0\t", *MM0, " MM1\t", *MM1, "\n"); - print("MM2\t", *MM2, " MM3\t", *MM3, "\n"); - print("MM4\t", *MM4, " MM5\t", *MM5, "\n"); - print("MM6\t", *MM6, " MM7\t", *MM7, "\n"); + print("control\t", *FCW, "\n"); + print("status\t", *FSW, "\n"); + print("tag\t", *FTW, "\n"); + print("ip\t", *FIP, "\n"); + print("cs selector\t", *FCS, "\n"); + print("opcode\t", *FOP, "\n"); + print("data operand\t", *FDP, "\n"); + print("operand selector\t", *FDS, "\n"); } defn pstop(pid) |