Autor Thema: Task-Wechsel und die FPU  (Gelesen 11349 mal)

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #20 am: 27. December 2006, 23:14 »
hm... lol

r0 = st(0) = mm0 (nur 64 Bit)

bitmaster
In the Future everyone will need OS-64!!!

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #21 am: 28. December 2006, 11:52 »
So, ich habs mir heute morgen noch mal genau angeschaut. Ich hatte einen dämlichen Denkfehler mit dem TS-Bit. Jetzt ist alles klar. Ich schäme mich ja fast schon. Vielen dank!!!

bitmaster
In the Future everyone will need OS-64!!!

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #22 am: 28. December 2006, 13:57 »
So, ich bin gerade mit der implementierung beschäftigt. Jetzt reserviere ich für jeden Task zusätzlich 512 Byte. Aber welche Werte müssen diese 512 Byte haben? Kann man die einfach alle auf Null setzen? Hier das Schema für den LongMode:



Die blau markierten Sachen kann man ja einfach auf Null setzen. Aber was ist mit sachen wie rip? Soll ich da immer den aktuellen Wert des rip Registers eintragen oder was? Also aus dem AMD-Manual werde ich nicht schlau. Vielleicht wisst ihr mehr *hoff*.

thx

bitmaster

EDIT: Sag mal reagiert die Exception mittels TS Bit nur auf die FPU oder auch auf die SEE, 3DNow etc. Sachen? Mein Buch sagt nur was von FPU. Aber dann wäre das Ganze ja Schwachsinn. Dann könnte ich auch gleich bei jedem Task-Switch die ganzen Register mittels fxsave und fxrstor laden und speichern.
« Letzte Änderung: 28. December 2006, 14:05 von bitmaster »
In the Future everyone will need OS-64!!!

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #23 am: 28. December 2006, 17:12 »
Zitat
R.I.P. Registers  grin
Soll heißen?

Zitat
/Nachdenk, vlt sollt ich ein Tut über das TS Bit schreiben

Ich verwende einfach bei jedem Taskwechsel fxsave und fxrstore, da ich glaube das eine exception mittels TS-Bit bei xmm etc. nicht aufgerufen wird.

thx

bitmaster
In the Future everyone will need OS-64!!!

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #24 am: 28. December 2006, 17:27 »
Zitat
Task Switched (TS) Bit. Bit 3. When an attempt is made to execute
an x87 or media instruction while TS=1, a device-not-available
exception (#NM) occurs. Software can use this mechanism—
sometimes referred to as “lazy context-switching”—to save the
unit contexts before executing the next instruction of those
types. As a result, the x87 and media instruction-unit contexts
are saved only when necessary as a result of a task switch.
When a hardware task switch occurs, TS is automatically set to
1. System software that implements software task-switching
rather than using the hardware task-switch mechanism can still
use the TS bit to control x87 and media instruction-unit context
saves. In this case, the task-management software uses a MOV
CR0 instruction to explicitly set the TS bit to 1 during a task
switch. Software can clear the TS bit by either executing the
CLTS instruction or by writing to the CR0 register directly.
Long-mode system software can use this approach even though
the hardware task-switch mechanism is not supported in long
mode.
In the Future everyone will need OS-64!!!

Korona

  • Beiträge: 94
    • Profil anzeigen
Gespeichert
« Antwort #25 am: 29. December 2006, 19:27 »
Die Exception sollte bei jedem Zugriff ausgelöst werden. Egal ob jetzt durch SSE, FPU usw. Steht ja auch in deinem zitierten Text.

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #26 am: 30. December 2006, 00:36 »
Die Exception sollte bei jedem Zugriff ausgelöst werden. Egal ob jetzt durch SSE, FPU usw. Steht ja auch in deinem zitierten Text.
Jo, ich habs jetzt. Klappt wunderbar.

thx for help

bitmaster
In the Future everyone will need OS-64!!!

 

Einloggen