Changes in kernel/arch/ia32/src/fpu_context.c [45b4300:add04f7] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/fpu_context.c
r45b4300 radd04f7 27 27 */ 28 28 29 /** @addtogroup ia32 29 /** @addtogroup ia32 30 30 * @{ 31 31 */ … … 38 38 #include <cpu.h> 39 39 40 /** x87 FPU scr values (P3+ MMX2) */41 enum {42 X87_FLUSH_ZERO_FLAG = (1 << 15),43 X87_ROUND_CONTROL_MASK = (0x3 << 13),44 x87_ROUND_TO_NEAREST_EVEN = (0x0 << 13),45 X87_ROUND_DOWN_TO_NEG_INF = (0x1 << 13),46 X87_ROUND_UP_TO_POS_INF = (0x2 << 13),47 X87_ROUND_TO_ZERO = (0x3 << 13),48 X87_PRECISION_MASK = (1 << 12),49 X87_UNDERFLOW_MASK = (1 << 11),50 X87_OVERFLOW_MASK = (1 << 10),51 X87_ZERO_DIV_MASK = (1 << 9),52 X87_DENORMAL_OP_MASK = (1 << 8),53 X87_INVALID_OP_MASK = (1 << 7),54 X87_DENOM_ZERO_FLAG = (1 << 6),55 X87_PRECISION_EXC_FLAG = (1 << 5),56 X87_UNDERFLOW_EXC_FLAG = (1 << 4),57 X87_OVERFLOW_EXC_FLAG = (1 << 3),58 X87_ZERO_DIV_EXC_FLAG = (1 << 2),59 X87_DENORMAL_EXC_FLAG = (1 << 1),60 X87_INVALID_OP_EXC_FLAG = (1 << 0),61 62 X87_ALL_MASK = X87_PRECISION_MASK | X87_UNDERFLOW_MASK | X87_OVERFLOW_MASK | X87_ZERO_DIV_MASK | X87_DENORMAL_OP_MASK | X87_INVALID_OP_MASK,63 };64 65 40 typedef void (*fpu_context_function)(fpu_context_t *fctx); 66 41 67 static fpu_context_function fpu_save; 68 static fpu_context_function fpu_restore; 42 static fpu_context_function fpu_save, fpu_restore; 69 43 70 44 static void fpu_context_f_save(fpu_context_t *fctx) … … 103 77 void fpu_fxsr(void) 104 78 { 105 fpu_save =fpu_context_fx_save;106 fpu_restore =fpu_context_fx_restore;79 fpu_save=fpu_context_fx_save; 80 fpu_restore=fpu_context_fx_restore; 107 81 } 108 82 … … 124 98 } 125 99 126 /** Initialize x87 FPU. Mask all exceptions. */127 100 void fpu_init() 128 101 { … … 138 111 "ldmxcsr %[help0]\n" 139 112 : [help0] "+m" (help0), [help1] "+r" (help1) 140 : [magic] "i" ( X87_ALL_MASK)113 : [magic] "i" (0x1f80) 141 114 ); 142 115 }
Note:
See TracChangeset
for help on using the changeset viewer.