Autor Thema: SSE und Basic Protected Mode  (Gelesen 4692 mal)

mkirin

  • Beiträge: 4
    • Profil anzeigen
Gespeichert
« am: 27. July 2009, 03:55 »
Hallo,
in meinem Kernel (C / Assembler Mix) moechte ich SSE Befehle
verwenden, sobald ich aber solch einen benutze stuerzt das
System ab. Ich kann mit bochs bis zu dem SSE Befehl steppen,
der Rest des Kernels ist also nicht das Problem. Auch in VMware
oder qemu crasht der Kernel sobald ich den SSE teil auskommentiere (bochs ist mit SSE unterstuetzung compiliert und das Host-System
kennt SSE4) Protected Mode ist eingeschaltet, aber nur mit einer
Basis GDT mit 3 eintraegen, Interupts sind noch ausgeschaltet,
alles Feedback kommt durch den VGA Videospeicher.
Zum Testen benutze ich "movhlps xmm0, xmm0".
Ich waere fuer jede Idee woran das liegt sehr dankbar, im Moment
ist mir absolut unklar warum das nicht funktioniert.
M.K.

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 27. July 2009, 09:30 »
Hallo,


SSE muss erst freigeschaltet werden (sonst gibts ne "Illegal-Opcode-Exception"), eventuell als "Unterfunktion" einer MMX-Aktivierung.
Ich glaube die betreffenden Bits findest Du im CR4.
Da kann man auch konfigurieren wie mit ungültigen Werten, NaN u.ä., umgegangen werden soll.

Von Bochs hätte ich aber eine passende Fehlermeldung erwartet.


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 27. July 2009, 15:20 »
Zum 'Freischalten' sind neben den Bits 9 & 10 im CR4 Register auch die Bits 1 & 2 im CR0 Register Interessant.
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

mkirin

  • Beiträge: 4
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 28. July 2009, 15:43 »
Ganz vielen Dank! Jetzt klappt es wunderbar!
M.K.

 

Einloggen