Ich habe im Moment einen C Kernel, den ich mit GRUB an die physikalische Adresse 0x100000 laden lasse. Ich möchte jetzt den Kernel aber an die virtuelle Adresse 0xC0000000 laden lassen. Wie muss ich jetzt vorgehen um den Kernel an die Adresse 0xC0000000 mappen zu lassen? GRUB aktiviert ja soweit ich weiß kein Paging, und wenn ich in der linkfile 0xC0000000 angeben würde, dürfte der Kernel ja eigentlich nichtmehr funktionieren, da er die C-Funktionen die das Paging aktivieren nicht mehr findet, oder?

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert
.
Da hat doch jemand die Specs nicht richtig gelesen. Near Calls (Opcode 0xe8) und Near Jumps (Opcodes 0xeb und 0xe9) nehmen nur relative Angaben an! Es gibt noch absolute Angabemöglichkeiten (Opcode 0xff), nur da wird die Zieladdresse aus einem angegebenen Register oder einer angegebenen Speicherstelle geladen, sprich indirekt.