Bonjour,
Voila je viens vers vous suites à un problème embêtant.
J'essaye de développer les bases d'un petit noyau en c++.
Et lors du chargement de la GDT ( dans le noyau ), j'ai besoin
de modifier les registres de segment (ss, ds, es, fs, gs). De là vient le problème, quand j'essaye de modifier les registres de segment mon noyau reboot.
Le code:
Si quelqu'un peut m'aider ça serait cool.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #include "terminal.hpp" #include "gdt.hpp" int kmain(void); extern "C" void _start(void) { Tk::terminal_initialize(); Tk::terminal_print("Kernel: Loading new GDT...\n"); Tk::gdt_initialize(); asm("movw $0x18, %ax;" "movw %ax, %ss;" "movl $0x20000, %esp;"); while(1); } int kmain(void) { Tk::terminal_initialize(); Tk::terminal_print("Kernel: New GDT Loaded.\n"); while(1); return 1; }
Merci d'avance
Partager