diff options
author | Matthew Fioravante <matthew.fioravante@jhuapl.edu> | 2012-10-08 14:36:31 +0100 |
---|---|---|
committer | Matthew Fioravante <matthew.fioravante@jhuapl.edu> | 2012-10-08 14:36:31 +0100 |
commit | 3d30a2684b1ce7210ca5331ea1497f18c5675ffe (patch) | |
tree | 2c56295b5ec1d308c82207c8e85f5e15a5f78ef1 /extras/mini-os/arch/x86 | |
parent | 6c05d819d836f9955c0ab09e9dfa657e097b2a46 (diff) | |
download | xen-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/mini-os/arch/x86')
-rw-r--r-- | extras/mini-os/arch/x86/setup.c | 20 |
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 |