aboutsummaryrefslogtreecommitdiffstats
path: root/extras
diff options
context:
space:
mode:
authorMatthew Fioravante <matthew.fioravante@jhuapl.edu>2012-10-08 14:36:31 +0100
committerMatthew Fioravante <matthew.fioravante@jhuapl.edu>2012-10-08 14:36:31 +0100
commit3d30a2684b1ce7210ca5331ea1497f18c5675ffe (patch)
tree2c56295b5ec1d308c82207c8e85f5e15a5f78ef1 /extras
parent6c05d819d836f9955c0ab09e9dfa657e097b2a46 (diff)
downloadxen-3d30a2684b1ce7210ca5331ea1497f18c5675ffe.tar.gz
xen-3d30a2684b1ce7210ca5331ea1497f18c5675ffe.tar.bz2
xen-3d30a2684b1ce7210ca5331ea1497f18c5675ffe.zip
minios: setup fpu and sse in mini-os
This patch adds floating point and sse support to mini-os by initializing the floating point unit and the see unit during domain boot up. Signed-off-by: Matthew Fioravante <matthew.fioravante@jhuapl.edu> Acked-by: Samuel Thibault <samuel.thibault@ens-lyons.org> Committed-by: Ian Campbell <ian.campbell@citrix.com>
Diffstat (limited to 'extras')
-rw-r--r--extras/mini-os/arch/x86/setup.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/extras/mini-os/arch/x86/setup.c b/extras/mini-os/arch/x86/setup.c
index 923901e595..54046d37bc 100644
--- a/extras/mini-os/arch/x86/setup.c
+++ b/extras/mini-os/arch/x86/setup.c
@@ -74,9 +74,28 @@ shared_info_t *map_shared_info(unsigned long pa)
return (shared_info_t *)shared_info;
}
+static inline void fpu_init(void) {
+ asm volatile("fninit");
+}
+
+#ifdef __SSE__
+static inline void sse_init(void) {
+ unsigned long status = 0x1f80;
+ asm volatile("ldmxcsr %0" : : "m" (status));
+}
+#else
+#define sse_init()
+#endif
+
void
arch_init(start_info_t *si)
{
+ /*Initialize floating point unit */
+ fpu_init();
+
+ /* Initialize SSE */
+ sse_init();
+
/* Copy the start_info struct to a globally-accessible area. */
/* WARN: don't do printk before here, it uses information from
shared_info. Use xprintk instead. */
@@ -99,6 +118,7 @@ arch_init(start_info_t *si)
(unsigned long)failsafe_callback, 0);
#endif
+
}
void