Ich geh dann mal alle Ideen durch.
Dann geht das spekulieren weiter. Lass dir mal die übergebene Multiboot-Magic (eax) ausgeben, bzw. prüf den Wert, ob er korrekt ist.
Der ist korrekt.
Ja, das mit den Flags hast du richtig verstanden.
Ich fange dann jetzt auch mal an zu Spekulieren:
- Paging, und GDT hast du noch nicht angefasst?
- Du löschst den Bildschirm mit 0x00, statt mit grauen Leerzeichen (0x20 0x07) ?, evtl. läuft da was schief und du überschreibst die struktur
- dann sind MB_Magic(eax), MB_Info(ebx), mb_info->flags interresant
- Interrupts sind aus ?
- sind wirklich alle Felder 0, oder hast du nur stichprobenartig überprüft?
- du könntest mal eine cmdline angeben: qeum -kernel foo -append "cmdline"
und gucken ob die korrekt übergeben wird.
-Paging habe ich noch nicht, aber GDT schon. (aber zu dem Zeitpunkt sind sie noch nicht initialisiert
-Ich lösche den Bildschirm zwar mit 0x0, aber ich habe schon ausprobiert, die clear Funktion rauszunehmen.
-MB_Magic ist ganz normal 0x1BADB002, MB_Info hat die Adresse 0x9500, mb_info->flags ist wie gesagt 0x0
-Interrupts sind zu dem Zeitpunkt aus.
-Ich habe ein Großteil der Felder überprüft.
-Was passiert denn durch die cmdline?
Hallo,
wenn du "qemu -kernel" benutzt, dann hat nach dem Start des Kernel EBX (und damit der Zeiger auf die Multiboot-Informationsstruktur) den Wert 0x9500. Die Memory Map liegt bei 0x9000 und endet bei 0x9078. Prüf mal, ob du diese Werte bestätigen kannst.
Schau mal nach, ob du bei 0x9000 die Memory Map trotzdem findest, evtl. überschreibst du dein mb_info. Möglicherweise ist auch das Linkerscript seltsam, aber vorstellen kann ich mir das nicht...
Gruß,
Svenska
Ich kriege die richtige Adresse (0x9500) übergeben, allerdings ist dort eben alles leer, deswegen kann ich auch nicht die Adresse der Memory Map beziehen. 0x9000 scheint aber auch leer zu sein.
BTW: 5000 Beitrag in diesem Forum