diff options
Diffstat (limited to '')
-rw-r--r-- | kernel/src/cpu/cpu.c | 24 | ||||
-rw-r--r-- | kernel/src/cpu/cpu.h | 7 |
2 files changed, 17 insertions, 14 deletions
diff --git a/kernel/src/cpu/cpu.c b/kernel/src/cpu/cpu.c index f78ef26..416a1ad 100644 --- a/kernel/src/cpu/cpu.c +++ b/kernel/src/cpu/cpu.c @@ -2,19 +2,17 @@ #include "print.h" -extern int sse_init (void); -extern int fpu_init (void); +extern uint8_t sse_init (void); +extern uint8_t fpu_init (void); -void init_registers (void) { - if (!sse_init()) { - debugk("Loaded SIMD"); - } else { - errork("SIMD not supported"); - } +uint8_t init_registers (uint8_t reg) { + uint8_t res = 0; - if (!fpu_init()) { - debugk("Loaded FPU"); - } else { - errork("FPU not supported"); - } + if (reg & SSE_REG) + res |= ~sse_init() & SSE_REG; + + if (reg & FPU_REG) + res |= ~fpu_init() & FPU_REG; + + return res; } diff --git a/kernel/src/cpu/cpu.h b/kernel/src/cpu/cpu.h index 3044292..b6221aa 100644 --- a/kernel/src/cpu/cpu.h +++ b/kernel/src/cpu/cpu.h @@ -1,3 +1,8 @@ #pragma once -void init_registers (void); +#include <stdint.h> + +#define SSE_REG 0x01 +#define FPU_REG 0x02 + +uint8_t init_registers (uint8_t reg); |