Autor Thema: Parameterübergabe an Kernel  (Gelesen 5091 mal)

ST-225

  • Beiträge: 43
    • Profil anzeigen
Gespeichert
« am: 04. July 2006, 15:24 »
Wie kann ich von meinem Bootloader aus parameter an den kernel übergeben, wenn ich im Bootloader den parameter bereits vor dem PMode Switch erhalte ? Schließlich stimmen ja dann die offsets nicht mehr überein.

Oder das Problem konkretisiert: In meinem Bootloader schalte ich den VESA-Mode ein und lasse mir die Framebuffer-Adresse geben, schalte dann in den PMode und springe zum kernel, in dem ich dann den Bildschirm weiß füllen will, jedoch brauche ich dazu die LFB-Adresse ausm Bootloader.

Wäre nett wenn mir jemand weiterhelfen könnte. Ich verwende übrigends NASM, dessen Syntax wäre also ideal bei Beispielcodes

THX

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 04. July 2006, 15:53 »
Dir steht fast der gesamte Speicher zur freien Verfügung. Du kannst also Parameter im Bootloader einfach an irgendeine feste Adresse kopieren und im Kernel wieder auslesen.

Freier Speicher ist zum Beispiel zwischen 0x00000500 (hinter der BIOS Data Area) und 0x00007C00 (vor dem Bootloader). Da ich mal denke, dass du deinen Kernel nicht dahin lädst, deswegen kannst du einfach sagen, dass du an die Adresse 0x00001000 die Adresse des LFB kopierst. Oder gleich den gesamten VESA-Informationsblock. Im Kernel kannst du dann das ganze einfach von da wieder auslesen.
Dieser Text wird unter jedem Beitrag angezeigt.

hannibal

  • Host
  • Beiträge: 400
    • Profil anzeigen
    • brainsware - the rock.
Gespeichert
« Antwort #2 am: 04. July 2006, 19:12 »
Oder du pushst einfach die Adresse vorm Aufruf des Kernels auf den Stack, viel eleganter.
\\o
o//
\o/

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 05. July 2006, 01:12 »
Wie wärs mit einer Registerübergabe wie bei GRUB ?
Agieren statt Konsumieren!

hannibal

  • Host
  • Beiträge: 400
    • Profil anzeigen
    • brainsware - the rock.
Gespeichert
« Antwort #4 am: 08. July 2006, 15:10 »
Zitat von: n3Ro
Wie wärs mit einer Registerübergabe wie bei GRUB ?

Achja stimmt, Grub machts ja mit Register....hatte Grub ja auch im Hinterkopf - pushe naemlich ebx in meiner entry.asm :P
\\o
o//
\o/

 

Einloggen