Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: SplittyDev am 21. July 2014, 12:51

Titel: Neustart nach GDT setup
Beitrag von: SplittyDev am 21. July 2014, 12:51
Moin leute,
ich hab mich jetzt auch mal bisschen mit OS dev beschäftigt und hab mir da nen kleinen Kernel geschrieben.

Zuerst die Konsole implementiert mit allem was man braucht, funktioniert auch super.
Jetzt bin ich am GDT angelangt und habe leider das Problem, dass mein Kernel nach dem
neuladen der segment register neustartet.

Ich habe meinen code ca. 2 Stunden lang angestarrt und habe immernoch keine Idee,
weshalb der Triple Fault passiert..

Meine gdt.h und gdt.c habe ich im anhang verlinkt,
der Assembler Teil sieht so aus:

gdt_reload_segments:
mov $0x10, %ax
mov %ax, %ds
mov %ax, %es
mov %ax, %fs
mov %ax, %gs
mov %ax, %ss
ljmp $0x8, $.1

.1:
ret

Wäre nett, wenn da jemand nen kurzen Blick drauf werfen könnte.
Grüße, Splitty
Titel: Re: Neustart nach GDT setup
Beitrag von: Svenska am 21. July 2014, 13:15
Du hast schlecht abgetippt. Das "limit" im gdtp ist ein uint16_t, kein uint64_t.
Titel: Re: Neustart nach GDT setup
Beitrag von: SplittyDev am 21. July 2014, 13:50
oh.. :')
Vielen Dank.. ich glaub das wär mir niemals aufgefallen ^^