Intel ARCHITECTURE IA-32 User Manual Page 507

  • Download
  • Add to my manuals
  • Print
  • Page
    / 636
  • Table of contents
  • BOOKMARKS
  • Rated. / 5. Based on customer reviews
Page view 506
Vol. 3A 12-9
SSE, SSE2 AND SSE3 SYSTEM PROGRAMMING
On a task switch, the operating system task switching code must execute the following pseudo-
code to set the TS flag according to the current owner of the x87 FPU/MMX/SSE/SSE2/SSE3
state. If the new task (task B in this example) is not the current owner of this state, the TS flag
is set to 1; otherwise, it is set to 0.
IF Task_Being_Switched_To x87FPU_MMX_SSE_SSE2_SSE3_StateOwner
THEN
CR0.TS 1;
ELSE
CR0.TS 0;
FI;
If a new task attempts to access an x87 FPU, MMX, XMM, or MXCSR register while the TS
flag is set to 1, a device-not-available exception (#NM) is generated. The device-not-available
exception handler executes the following pseudo-code.
FSAVE “To x87FPU/MMX/SSE/SSE2/SSE3 State Save Area for Current
x87FPU_MMX_SSE_SSE2_SSE3_StateOwner”;
FRSTOR “x87FPU/MMX/SSE/SSE2/SSE3 State From Current Task’s
x87FPU/MMX/SSE/SSE2/SSE3 State Save Area”;
x87FPU_MMX_SSE_SSE2_SSE3_StateOwner Current_Task;
CR0.TS 0;
This exception handler code performs the following tasks:
Saves the x87 FPU, MMX, XMM, or MXCSR registers in the state save area for the
current owner of the x87 FPU/MMX/SSE/SSE2/SSE3 state.
Figure 12-1. Example of Saving the x87 FPU, MMX, SSE, and SSE2 State During an
Operating-System Controlled Task Switch
Task A
Task B
Application
Operating System
Task A
Operating System
Task Switching Code
Device-Not-Available
Exception Handler
Owner of x87 FPU,
CR0.TS=1 and x87 FPU
MMX, SSE, SSE2 or SSE3
Instruction is encountered
MMX, SSE, SSE2,
x87 FPU/MMX/
State Save Area
SSE/SSE2/SSE3
Task B
x87 FPU/MMX/
State Save Area
SSE/SSE2/SSE3
Saves Task A
x87 FPU/MMX/
SSE/SSE2/SSE3 State
Loads Task B
x87 FPU/MMX/
SSE/SSE2/SSE3 State
SSE3 State
Page view 506
1 2 ... 502 503 504 505 506 507 508 509 510 511 512 ... 635 636

Comments to this Manuals

No comments