IA-32 architecture task state segment
16bit TSS |
| offset |
1 5 |
1 4 |
1 3 |
1 2 |
1 1 |
1 0 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
| +00h |
LINK |
| +02h |
SP0 |
| +04h |
SS0 |
| +06h |
SP1 |
| +08h |
SS1 |
| +0Ah |
SP2 |
| +0Ch |
SS2 |
| +0Eh |
IP |
| +10h |
FLAGS |
| +12h |
AX |
| +14h |
CX |
| +16h |
DX |
| +18h |
BX |
| +1Ah |
SP |
| +1Ch |
BP |
| +1Eh |
SI |
| +20h |
DI |
| +22h |
ES |
| +24h |
CS |
| +26h |
SS |
| +28h |
DS |
| +2Ah |
LDTR |
| note |
White fields are dynamic, gray fields are static. |
32bit TSS |
| offset |
3 1 |
3 0 |
2 9 |
2 8 |
2 7 |
2 6 |
2 5 |
2 4 |
2 3 |
2 2 |
2 1 |
2 0 |
1 9 |
1 8 |
1 7 |
1 6 |
1 5 |
1 4 |
1 3 |
1 2 |
1 1 |
1 0 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
| +00h |
reserved |
LINK |
| +04h |
ESP0 |
| +08h |
reserved |
SS0 |
| +0Ch |
ESP1 |
| +10h |
reserved |
SS1 |
| +14h |
ESP2 |
| +18h |
reserved |
SS2 |
| +1Ch |
CR3 |
| +20h |
EIP |
| +24h |
EFLAGS |
| +28h |
EAX |
| +2Ch |
ECX |
| +30h |
EDX |
| +34h |
EBX |
| +38h |
ESP |
| +3Ch |
EBP |
| +40h |
ESI |
| +44h |
EDI |
| +48h |
reserved |
ES |
| +4Ch |
reserved |
CS |
| +50h |
reserved |
SS |
| +54h |
reserved |
DS |
| +58h |
reserved |
FS |
| +5Ch |
reserved |
GS |
| +60h |
reserved |
LDTR |
| +64h |
IOPB offset |
reserved |
T |
| +68h |
optional operating system data |
+IOPB -32 |
optional interrupt redirection bitmap |
| +IOPB |
optional I/O permission bitmap |
| |
x |
x |
x |
x |
x |
1 |
1 |
1 |
| note |
White fields are dynamic, gray fields are static. |
task linking/nested tasks |
| task? |
nested top-level |
nested high |
nested low |
currently active |
| state? |
TSS #1 |
TSS #2 |
TSS #3 |
EFLAGS.NT=1 TR=TSS #3 |
| TSS.EFLAGS.NT=0 |
TSS.EFLAGS.NT=1 TSS.LINK=TSS #1 |
TSS.EFLAGS.NT=1 TSS.LINK=TSS #2 |
|