Autor Thema: AMD64 Emulation  (Gelesen 2974 mal)

fr0z3n

  • Beiträge: 15
    • Profil anzeigen
Gespeichert
« am: 13. July 2007, 19:12 »
Hi!
Ich habe ein Problem und hoffe ihr könnt mir helfen ...
Ich will einen Kernel schreiben, der im Long-Mode arbeitet. Nun ja, ich wollte gerade den Wechsel in den Long-Mode schreiben, als mir aufgefallen ist, dass der bisherige Code irgendwie nur mit einer emulierten 32-Bit CPU funktioniert. Wenn ich auf x86-64 umschalte hängt sich Qemu auf. Dass heißt das Fenster mit dem emulierten PC öffnet sich für 1 Sekunde und schließt sich sofort wieder.  Entweder der emulierte PC schaltet sich jetzt ab oder Qemu stürzt ab ... Eigentlich müsste der Code ja ohne Mucken laufen, da es auf einer normal emulierten x86 CPU ohne 64-Bit Erweiterung ja tadellos funktioniert und ich bisher ja noch nichts im Punkto 64-Bit gemacht habe. Deswegen war mein erster Gedanke, dass die 64-Bit Emulation unter Qemu noch nicht ganz tadellos funktioniert ... Leider bekomme ich Bochs nicht kompiliert, da er mir configure mit der Meldung x86-64 needs SSE2 abbricht ... Ja mein Prozessor unterstützt SSE2. Deswegen ist mir das auch unerklärlich ...
Hat irgendjemand eine Idee oder einen Hinweis?

Achja: Ich verwende zur Zeit GRUB als Bootloader und den Beispielkernel von Bran's Kernel Development Tutorial
« Letzte Änderung: 13. July 2007, 20:31 von fr0z3n »

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #1 am: 13. July 2007, 20:34 »
Bringt qemu irgendwelche Fehlermeldungen in der Console? Wie siehts mit dem qemu Log aus (afaik hat qemu eins...)? Hast du es schonmal auf ner ganz normalen x86 CPU versucht? Qemu ist bei manchen sachen nämlich viel näher an der Hardware dran als bochs zb.
Abgesehen davon hatte ich noch keine Probleme mit der 64bit Emulation. Hab mein komplettes OS mittlerweile auf 32 und 64 bit laufen. btw. du schaltest doch garnicht in den longmode, warum sollte die qemu 64bit emulation dann schuld sein?

zu bochs: du musst configure mit --enable-sse=2 (oder 3 oder 4 je nach lust und laune) aufrufen. Mal abgesehen davon hat das nichts damit zu tun, was deine CPU unterstützt. Bochs _emuliert_ die CPU! (Vllt. mal meinen wiki artikel zu bochs durchlesen, denn ich vor ein paar tagen geschrieben hab).
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

fr0z3n

  • Beiträge: 15
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 14. July 2007, 12:35 »
Ja habe es unter Qemu auch mit einer normalen x86 CPU versucht und da funktioniert es wie gesagt tadellos und das sollte es ja dann auch auf einer x86-64 CPU.
Wegen den qemu Fehlermeldungen muss ich nochmal schauen, da ich Q benutze, dass Qemu unter Mac OS X eine grafische Oberfläche verleiht. Da muss ich nochmal schauen, wie ich an die Meldungen von Qemu ran komme ...

Da hätte ich mir bei bochs  ./configure --help wohl mal besser durchlesen sollen :-) Naja auf jeden Fall funktioniert dort das GRUB Floppy Image einwandfrei, aber muss ich in der Bochs Konfiguration x86-64 noch irgendwie einschalten, wenn ich bochs mit --enable-x86-64 kompiliert habe?
Da ich gedacht hatte, dass es vll an der GRUB Floppy liegt, da ich sie nicht selber erstellt habe, sondern irgendwo heruntergeladen, habe ich mal ein bootfähiges GRUB .iso Image erstellt, bei dem Bochs sich strikt weigert, das Bootmenu anzuzeigen, sondern mir nur eine GRUB Shell gibt ... Mit Parallels (sowas wie VMWare) erhalte ich das Menu allerdings ...

Ist irgendwie alles ein bißchen komisch, weil mit keinem Programm alles funktioniert, sondern auf jedem nur ein bißchen. Hat jemand eine Idee?
« Letzte Änderung: 14. July 2007, 12:37 von fr0z3n »

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #3 am: 14. July 2007, 19:28 »
Hast du eigentlich die neuste qemu version (0.9)? Es könnte schon sein, dass ältere versionen kaputt sind...

[...] aber muss ich in der Bochs Konfiguration x86-64 noch irgendwie einschalten, wenn ich bochs mit --enable-x86-64 kompiliert habe?[/url]
Nein.

Zitat
Hat jemand eine Idee?
ehrlich gesagt nicht... deine Probleme sind durchaus ein bisschen komisch...
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

fr0z3n

  • Beiträge: 15
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 15. July 2007, 13:12 »
Ja habe Version 0.9.0 von qemu.
Naja werde dann jetzt wohl bochs benutzen, da habe ich dann auch gleich ohne Suchen ein Log und so.
Und wegen dem komischen Verhalten der Boot-CD, werde ich dann vorerst erstmal nur Floppy's benutzen bis ich eine Lösung gefunden habe ...
trotzdem dankeschön und wenn jemand eine Lösungsidee hat, immer her damit ;-)

 

Einloggen