summaryrefslogtreecommitdiff
path: root/sys/src/9/pc/devarch.c
diff options
context:
space:
mode:
authorjpathy <jpathy@mail.nanosouffle.net>2013-05-22 23:47:05 +0530
committerjpathy <jpathy@mail.nanosouffle.net>2013-05-22 23:47:05 +0530
commit81b7451972780743bcd00c963a1c9cb686a3e4ad (patch)
treeb711d0c54fb162dc564373babf100ea6c2c65aa5 /sys/src/9/pc/devarch.c
parent213bf5089365d00d9d40635bcfe62e197d548c1b (diff)
sse kernel support (sources)
Diffstat (limited to 'sys/src/9/pc/devarch.c')
-rw-r--r--sys/src/9/pc/devarch.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/sys/src/9/pc/devarch.c b/sys/src/9/pc/devarch.c
index e877eab5f..be29eab3c 100644
--- a/sys/src/9/pc/devarch.c
+++ b/sys/src/9/pc/devarch.c
@@ -38,6 +38,11 @@ enum {
Qmax = 16,
};
+
+enum {
+ CR4Osfxsr = 1 << 9,
+};
+
enum { /* cpuid standard function codes */
Highstdfunc = 0, /* also returns vendor string */
Procsig,
@@ -850,6 +855,15 @@ cpuidentify(void)
rdmsr(0x01, &mct);
}
+ if(m->cpuiddx & Fxsr){ /* have sse fp? */
+ fpsave = fpssesave;
+ fprestore = fpsserestore;
+ putcr4(getcr4() | CR4Osfxsr);
+ } else {
+ fpsave = fpx87save;
+ fprestore = fpx87restore;
+ }
+
cputype = t;
return t->family;
}