hi,
kurz zur ausgangslage. bis jetzt sieht der ablauf meines codes so aus:
ich hab also den funktionierenden code hergenommen und anders auf bootloader und kernel verteilt. also:
würde diese "neue" reihenfolge der ausführung überhaupt funktionieren bzw macht sie sinn?
kurz zur ausgangslage. bis jetzt sieht der ablauf meines codes so aus:
Code: [Auswählen]
- bootloader wird vom ersten sektor der diskette nach 0x7c00 geladen
- der kernel, der direkt hinter dem bootloader im zweiten sektor der diskette liegt, wird eingelesen
- lgdt [gdt_desc] wird ausgeführt
- jump in den protected-mode
- lidt [idt_desc] wird ausgeführt
- es wird zum zuvor geladenen kernel gesprungen
das funktioniert alles wunderbar. das problem ist jetzt folgendes. die interrupt service routinen sind bis jetzt natürlich im bootloader, da ich ja im bootloader die idt lade. nun würd ich aber gern das switchen in den protected mode, sowie das laden der gdt/idt in den kernel verlagern, damit ich meine interrupt-service-routinen im kernel definieren kann.ich hab also den funktionierenden code hergenommen und anders auf bootloader und kernel verteilt. also:
Code: [Auswählen]
bootloader:
- laden des kernels(nach 0x1000)
- springen zum kernel
kernel:
- interrupts deaktivieren
- lgdt [gdt_desc] <-- nach diesem befehl steht im gdt-register nichts drinnen(base=0, limit=0)
- jump in den protected mode (funktioniert damit natürlich nicht)
was stimmt da nicht?würde diese "neue" reihenfolge der ausführung überhaupt funktionieren bzw macht sie sinn?

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert

-> org 0x1000 einfügen