x86 architecture
task state segment




 
16-bit 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.

 
32-bit 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 SSP (if CET is supported)
+6Ch  
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.

 
64-bit 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 reserved
+04h RSP0
+08h
+0Ch RSP1
+10h
+14h RSP2
+18h
+1Ch reserved
+20h reserved
+24h IST_RSP1
+28h
+2Ch IST_RSP2
+30h
+34h IST_RSP3
+38h
+3Ch IST_RSP4
+40h
+44h IST_RSP5
+48h
+4Ch IST_RSP6
+50h
+54h IST_RSP7
+58h
+5Ch reserved reserved
+60h reserved reserved
+64h IOPB offset reserved T
+68h  
optional operating system data
 
+IOPB  
optional I/O permission bitmap
 
  x x x x x 1 1 1



 
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



main page