The Kernel Debugger and Dump Formatter format descriptor table entries in either of two forms depending on whether the descriptor describes a segment of memory or a gate:
dddd type Bas=bbbbbbb Lim=llllllll DPL=p flags dddd type Sel:Off=ssss:oooooooo DPL=p flags
Each of these fields has the following meaning:
dddd
┌─────────┬─────────────┬─────────────────────────┐ │Type │Type Numbers │Description │ ├─────────┼─────────────┼─────────────────────────┤ │Code │- │Code segment │ ├─────────┼─────────────┼─────────────────────────┤ │Data │- │Data segment │ ├─────────┼─────────────┼─────────────────────────┤ │Invalid │0 or 8 │Invalid descriptor │ ├─────────┼─────────────┼─────────────────────────┤ │TSS │1 or 3 │Available or Busy 80286 │ │ │ │TSS │ ├─────────┼─────────────┼─────────────────────────┤ │LDT │2 │system descriptor for an │ │ │ │LDT │ ├─────────┼─────────────┼─────────────────────────┤ │CallG │4 │Call Gate │ ├─────────┼─────────────┼─────────────────────────┤ │TaskG │5 │Task Gate │ ├─────────┼─────────────┼─────────────────────────┤ │IntG │6 │80286 Interrupt Gate │ ├─────────┼─────────────┼─────────────────────────┤ │TrapG │7 │80286 Trap Gate │ ├─────────┼─────────────┼─────────────────────────┤ │Reserve │10 or 13 │Reserved descriptor types│ ├─────────┼─────────────┼─────────────────────────┤ │TSS32 │9 or 11 │Available or Busy │ │ │ │Intel486 CPU TSS │ ├─────────┼─────────────┼─────────────────────────┤ │CallG32 │12 │Inter486 CPU Call Gate │ ├─────────┼─────────────┼─────────────────────────┤ │IntG32 │14 │Intel486 CPU Interrupt │ │ │ │Gate │ ├─────────┼─────────────┼─────────────────────────┤ │TrapG32 │15 │Intel486 CPU Trap Gate │ └─────────┴─────────────┴─────────────────────────┘Bas=bbbbbbbb
┌─────┬─────┬─────────────────────────┐ │Flag │Bits │Description │ ├─────┼─────┼─────────────────────────┤ │NP │¬15 │Not present │ ├─────┼─────┼─────────────────────────┤ │P │15 │Present │ ├─────┼─────┼─────────────────────────┤ │RW │9 │Read/Write data segment │ ├─────┼─────┼─────────────────────────┤ │RO │¬9 │Read-only data segment │ ├─────┼─────┼─────────────────────────┤ │ED │10 │Expand-down data segment │ ├─────┼─────┼─────────────────────────┤ │C │10 │Conforming code segment │ ├─────┼─────┼─────────────────────────┤ │G4k │23 │4K granularity segment │ │ │ │limit │ ├─────┼─────┼─────────────────────────┤ │BIG │22 │32-bit Stack offsets │ │ │ │(ESP) used as a stack │ │ │ │segment. (No meaning when│ │ │ │used as a data segment). │ ├─────┼─────┼─────────────────────────┤ │C32 │22 │32-bit operands and data │ │ │ │sizes used by default │ │ │ │with this code segment │ ├─────┼─────┼─────────────────────────┤ │RES │21 │reserved │ ├─────┼─────┼─────────────────────────┤ │UV │20 │Available bit. Used in │ │ │ │OS/2 to indicate a UVIRT │ │ │ │mapping. │ ├─────┼─────┼─────────────────────────┤ │WC=w │0 │Word count of a 16-bit │ │ │ │call gate │ ├─────┼─────┼─────────────────────────┤ │DWC=w│0 │Double-word count of a │ │ │ │32-bit call gate │ ├─────┼─────┼─────────────────────────┤ │RE │9 │Read/Execute code segment│ ├─────┼─────┼─────────────────────────┤ │EO │¬9 │Read-only code segment │ ├─────┼─────┼─────────────────────────┤ │A │8 │Code or Data segment │ │ │ │accessed │ ├─────┼─────┼─────────────────────────┤ │NB │- │TSS/TSS32 not busy │ │ │ │(available) │ ├─────┼─────┼─────────────────────────┤ │B │- │TSS/TSS32 busy │ └─────┴─────┴─────────────────────────┘
Notes
The bit offsets given above are relative to the second double-word of the descriptor viewed as 2 double-words. The INTEL programmer's Reference shows the descriptor format as a quad-word, but uses the same offsets specified above.
See the INTEL Pentium User's Reference or the INTEL x86 Programmer's References for further information.