SayoriOS  0.3.3
fpu.c
См. документацию.
1 
9 #include "common.h"
10 #include "io/ports.h"
11 
12 bool fpu_initialized = false;
13 
16  return fpu_initialized;
17 }
18 
20 void fpu_fldcw(const uint16_t cw) {
21  __asm__ volatile("fldcw %0" : : "m"(cw));
22 }
23 
25 void fpu_init() {
26  uint32_t cr4 = 0;
27 
28  __asm__ volatile ("mov %%cr4, %0":"=r"(cr4));
29  cr4 |= 0x200;
30  __asm__ volatile("mov %0, %%cr4"::"r"(cr4));
31 
32  fpu_fldcw(0x37F);
33 
34  fpu_initialized = true;
35 
36  qemu_log("FPU init result: %f (should be 0.5)", 1.0 / 2.0);
37 }
Основные определения ядра
void fpu_fldcw(const uint16_t cw)
Для инициализации FPU.
Definition: fpu.c:20
bool fpu_isInitialized()
Возвращает статус FPU.
Definition: fpu.c:15
void fpu_init()
Инициализация FPU.
Definition: fpu.c:25