; 32-bit Task State Segment
;
;      31              23              15              7             0
;     ╔═══════════════╪═══════════════╬═══════════════╪═════════════╦═╗
;     ║          I/O MAP BASE         ║ 0 0 0 0 0 0 0   0 0 0 0 0 0 ║T║64
;     ╟───────────────┼───────────────╫───────────────┼─────────────╨─╢
;     ║0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0║              LDT              ║60
;     ╟───────────────┼───────────────╫───────────────┼───────────────╢
;     ║0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0║              GS               ║5C
;     ╟───────────────┼───────────────╫───────────────┼───────────────╢
;     ║0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0║              FS               ║58
;     ╟───────────────┼───────────────╫───────────────┼───────────────╢
;     ║0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0║              DS               ║54
;     ╟───────────────┼───────────────╫───────────────┼───────────────╢
;     ║0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0║              SS               ║50
;     ╟───────────────┼───────────────╫───────────────┼───────────────╢
;     ║0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0║              CS               ║4C
;     ╟───────────────┼───────────────╫───────────────┼───────────────╢
;     ║0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0║              ES               ║48
;     ╟───────────────┼───────────────╫───────────────┼───────────────╢
;     ║                              EDI                              ║44
;     ╟───────────────┼───────────────┼───────────────┼───────────────╢
;     ║                              ESI                              ║40
;     ╟───────────────┼───────────────┼───────────────┼───────────────╢
;     ║                              EBP                              ║3C
;     ╟───────────────┼───────────────┼───────────────┼───────────────╢
;     ║                              ESP                              ║38
;     ╟───────────────┼───────────────┼───────────────┼───────────────╢
;     ║                              EBX                              ║34
;     ╟───────────────┼───────────────┼───────────────┼───────────────╢
;     ║                              EDX                              ║30
;     ╠═══════════════╪═══════════════╪═══════════════╪═══════════════╣
;     ║                              ECX                              ║2C
;     ╟───────────────┼───────────────┼───────────────┼───────────────╢
;     ║                              EAX                              ║28
;     ╟───────────────┼───────────────┼───────────────┼───────────────╢
;     ║                            EFLAGS                             ║24
;     ╟───────────────┼───────────────┼───────────────┼───────────────╢
;     ║                    INSTRUCTION POINTER (EIP)                  ║20
;     ╟───────────────┼───────────────┼───────────────┼───────────────╢
;     ║                          CR3  (PDPR)                          ║1C
;     ╟───────────────┼───────────────╫───────────────┼───────────────╢
;     ║0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0║              SS2              ║18
;     ╟───────────────┼───────────────╫───────────────┼───────────────╢
;     ║                             ESP2                              ║14
;     ╟───────────────┼───────────────╫───────────────┼───────────────╢
;     ║0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0║              SS1              ║10
;     ╟───────────────┼───────────────╫───────────────┼───────────────╢
;     ║                             ESP1                              ║0C
;     ╟───────────────┼───────────────╫───────────────┼───────────────╢
;     ║0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0║              SS0              ║8
;     ╟───────────────┼───────────────╫───────────────┼───────────────╢
;     ║                             ESP0                              ║4
;     ╟───────────────┼───────────────╫───────────────┼───────────────╢
;     ║0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0║   BACK LINK TO PREVIOUS TSS   ║0
;     ╚═══════════════╪═══════════════╬═══════════════╪═══════════════╝
;
; T = debug trap bit. Causes the processor to raise a debug exception when a
;     task switch occurs.

clearTSS:
	; initialize everything to 0
	les    edi, [cs:ptrTSSprot]
	xor    eax, eax
	mov    ecx, 26*4
	cld
	rep stosd
	ret
