7-6 Vol. 3
TASK MANAGEMENT
EIP (instruction pointer) field — State of the EIP register prior to the task
switch.
Previous task link field — Contains the segment selector for the TSS of the
previous task (updated on a task switch that was initiated by a call, interrupt, or
exception). This field (which is sometimes called the back link field) permits a
task switch back to the previous task by using the IRET instruction.
The processor reads the static fields, but does not normally change them. These
fields are set up when a task is created. The following are static fields:
LDT segment selector field — Contains the segment selector for the task's
LDT.
CR3 control register field — Contains the base physical address of the page
directory to be used by the task. Control register CR3 is also known as the page-
directory base register (PDBR).
Privilege level-0, -1, and -2 stack pointer fields — These stack pointers
consist of a logical address made up of the segment selector for the stack
segment (SS0, SS1, and SS2) and an offset into the stack (ESP0, ESP1, and
ESP2). Note that the values in these fields are static for a particular task;
whereas, the SS and ESP values will change if stack switching occurs within the
task.
T (debug trap) flag (byte 100, bit 0) — When set, the T flag causes the
processor to raise a debug exception when a task switch to this task occurs (see
Section 16.3.1.5, “Task-Switch Exception Condition”).
I/O map base address field — Contains a 16-bit offset from the base of the
TSS to the I/O permission bit map and interrupt redirection bitmap. When
present, these maps are stored in the TSS at higher addresses. The I/O map base
address points to the beginning of the I/O permission bit map and the end of the
interrupt redirection bit map. See Chapter 13, “Input/Output,” in the Intel® 64
and IA-32 Architectures Software Developer’s Manual, Volume 1, for more
information about the I/O permission bit map. See Section 17.3, “Interrupt and
Exception Handling in Virtual-8086 Mode,” for a detailed description of the
interrupt redirection bit map.
If paging is used:
Avoid placing a page boundary in the part of the TSS that the processor reads
during a task switch (the first 104 bytes). The processor may not correctly
perform address translations if a boundary occurs in this area. During a task
switch, the processor reads and writes into the first 104 bytes of each TSS (using
contiguous physical addresses beginning with the physical address of the first
byte of the TSS). So, after TSS access begins, if part of the 104 bytes is not
physically contiguous, the processor will access incorrect information without
generating a page-fault exception.
Pages corresponding to the previous task’s TSS, the current task’s TSS, and the
descriptor table entries for each all should be marked as read/write.