Descriptor: Difference between revisions

From OSDev.wiki
Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content added Content deleted
No edit summary
Line 111: Line 111:
|}
|}


== Gate Descriptor ==
== Interrupt Gate Descriptor ==
{| {{wikitable}}
{| {{wikitable}}
! Name
! Name
Line 124: Line 124:
| 16..31 || Selector || [[Selector]] that specifies the segment of the function to call.
| 16..31 || Selector || [[Selector]] that specifies the segment of the function to call.
|-
|-
! Reserved
! DWC
| 32..35 || ||
| 32..35 || Double Word Counter || Nr of Dword stack arguments to copy on stack switch.
|-
|-
! 0
! 0
| 36..39 || - || Have to be 0.
| 36..39 || - || Have to be 0.
|-
|-
! Typ
! Type
| 40..43 || Gate Type || Possible gate types :
| 40..43 || Gate Type || Possible interrupt gate types :
{| {{wikitable}}
{| {{wikitable}}
| 0b0101=0x5 || [[#I386 Task Gate|Task gate]]
| 0b0101=0x5 || [[#I386 Task Gate|Task gate]]
Line 156: Line 156:
| 48..63 || Offset 16..31 || Higher part of the offset.
| 48..63 || Offset 16..31 || Higher part of the offset.
|}
|}

== Call Gate Descriptor ==
{| {{wikitable}}
! Name
! Bit
! Full Name
! Description
|-
! Offset
| 0..15 || Offset 0..15 || Lower part of the offset address (also known as pointer).
|-
! Selector
| 16..31 || Selector || [[Selector]] that specifies the code segment of the function to call.
|-
! ParamCnt
| 32..35 || DWords to copy || Number of dword stack arguments to copy on stack switch.
|-
! 0
| 36..39 || - || Have to be 0.
|-
! Type
| 40..43 || Gate Type || Possible call gate types :
{| {{wikitable}}
| 0b0100=0x4 || 16-bit [[#I386 Call Gate|Call gate]]
|-
| 0b1100=0xc || 32-bit [[#I386 Call Gate|Call gate]]
|}
|-
! S
| 44 || Storage Segment || <b>= 0</b> for gates.
|-
! DPL
| 45,46 || Descriptor Privilege Level || Gate call protection. Specifies which privilege level the calling process minimum should have.
|-
! P
| 47 || Present || Accessing this selector with the P flag 0 causes #NP (Exception 0xb, Segment Not Present).
|-
! Offset
| 48..63 || Offset 16..31 || Higher part of the offset.
|}




[[Category:X86]]
[[Category:X86]]

Revision as of 22:34, 5 July 2013

Descritors are describing System Segments, Memory Segments and Gates.

System Segment Descriptor

Name Bit Full Name Description
Limit 0..15 Limit 0..15 Memory range.
BAddr 16..39 Base Address 0..23 Linear address where the memory range begins.
Typ 40..43 Descriptor Type Possible types :
0000b=0x0 unused (invalid Descriptor)
0001b=0x1 80286-TSS, 16 bit
0010b=0x2 LDT
0011b=0x3 activ 80286-TSS, 16 bit
1001=0x9 80386-TSS, 32 bit
1011=0xB activ 80386-TSS, 32 bit
S 44 Storage Segment = 0 for System Segments.
DPL 45,46 Descriptor Privilege Level Specifies which privilege level a process minimum must have to use this Descriptor.
P 47 Present defines if this Descriptor is "present" in memory. s. Paging.
Limit 48..51 Limit 16..19 high part of the Limit.
AVL 52 .
0 53 .
- 54 .
G 55 .
BAddr 56..63 Base Address 24..31 Higher part of the Base Address.

Memory Segment Descriptor

Name Bit Full Name Description
Limit 0..15 Limit 0..15 Memory range.
BAddr 16..39 Base Address 0..23 Linear address where the memory range begins.
A 40
WR 41
CE 42
EX 43
S 44 Storage Segment = 1 for Memory Segments.
DPL 45,46 Descriptor Privilege Level Specifies which privilege level a process minimum must have to use this Descriptor.
P 47 Present defines if this Descriptor is "present" in memory. s. Paging.
Limit 48..51 Limit 16..19 high part of the Limit.
AVL 52 .
0 53 .
B 54 .
G 55 .
BAddr 56..63 Base Address 24..31 Higher part of the Base Address.

Interrupt Gate Descriptor

Name Bit Full Name Description
Offset 0..15 Offset 0..15 Lower part of the offset address (also known as pointer).
Selector 16..31 Selector Selector that specifies the segment of the function to call.
Reserved 32..35
0 36..39 - Have to be 0.
Type 40..43 Gate Type Possible interrupt gate types :
0b0101=0x5 Task gate
0b0110=0x6 16-bit interrupt gate
0b0111=0x7 16-bit trap gate
0b1110=0xE 32-bit interrupt gate
0b1111=0xF 32-bit trap gate
S 44 Storage Segment = 0 for gates.
DPL 45,46 Descriptor Privilege Level Gate call protection. Specifies which privilege level the calling process minimum should have.
P 47 Present can be set to 0 for Paging.
Offset 48..63 Offset 16..31 Higher part of the offset.

Call Gate Descriptor

Name Bit Full Name Description
Offset 0..15 Offset 0..15 Lower part of the offset address (also known as pointer).
Selector 16..31 Selector Selector that specifies the code segment of the function to call.
ParamCnt 32..35 DWords to copy Number of dword stack arguments to copy on stack switch.
0 36..39 - Have to be 0.
Type 40..43 Gate Type Possible call gate types :
0b0100=0x4 16-bit Call gate
0b1100=0xc 32-bit Call gate
S 44 Storage Segment = 0 for gates.
DPL 45,46 Descriptor Privilege Level Gate call protection. Specifies which privilege level the calling process minimum should have.
P 47 Present Accessing this selector with the P flag 0 causes #NP (Exception 0xb, Segment Not Present).
Offset 48..63 Offset 16..31 Higher part of the offset.