Interrupt Descriptor Table: Difference between revisions

[unchecked revision][unchecked revision]
Content deleted Content added
m Reverted edits by Revolution (talk) to last revision by Lukflug
m Sorry I kinda did this weird, nothing much changed though.
Line 82:
 
* '''Offset:''' A 32-bit value, split in two parts. It represents the address of the entry point of the '''[[Interrupt Service Routines|Interrupt Service Routine]]'''.
* '''Selector:''' A 16-bit'''[[Segment valueSelector]]''' with multiple fields which must point to a valid code segment in your '''[[GDT]]'''. For more information, see the [[Segment selector|Segment selector]] page or '''Section 3.4.2: Segment Selectors''' and '''Figure 3-6: Segment Selector''' of the Intel Software Developer Manual, Volume 3-A.
* '''Gate Type:''' A 4-bit value which defines the type of gate this '''Interrupt Descriptor''' represents. There are five valid type values:
** '''0b0101''' or '''0x5''': Task Gate, note that in this case, the '''Offset''' value is unused and should be set to zero.
Line 142:
{| class="wikitable"
|+Gate Descriptor (64-bit):
!colspan="67" style="text-align: left;"|127&nbsp;&nbsp;&nbsp;<span style="float: right;">96</span>
|-
|colspan="67" |Reserved
|-
!colspan="67" style="text-align: left;"|95&nbsp;&nbsp;&nbsp;<span style="float: right;">64</span>
|-
|colspan="67" |'''Offset'''<br>63&nbsp;&nbsp;&nbsp;<span style="float: right;">32</span>
|-
!style="width: 50%; text-align: left;"|63&nbsp;&nbsp;&nbsp;<span style="float: right;">48</span>
Line 155:
!style="width: 3.125%"|44
!style="width: 12.5%; text-align: left;"|43&nbsp;&nbsp;&nbsp;<span style="float: right;">40</span>
!style="width: 2515.625%; text-align: left;"|39&nbsp;&nbsp;&nbsp;<span style="float: right;">3235</span>
!style="width: 9.375%; text-align: left;"|34&nbsp;&nbsp;&nbsp;<span style="float: right;">32</span>
|-
|'''Offset'''<br>31&nbsp;&nbsp;&nbsp;<span style="float: right;">16</span>
Line 163 ⟶ 164:
|'''Gate Type'''<br>3&nbsp;&nbsp;&nbsp;<span style="float: right;">0</span>
|style="vertical-align:top"|Reserved
|'''IST'''<br>2&nbsp;&nbsp;&nbsp;<span style="float: right;">0</span>
|-
!style="text-align: left;" |31&nbsp;&nbsp;&nbsp;<span style="float: right;">16</span>
!style="text-align: left;" colspan="56" |15&nbsp;&nbsp;&nbsp;<span style="float: right;">0</span>
|-
|'''Segment Selector'''<br>15&nbsp;&nbsp;&nbsp;<span style="float: right;">0</span>
|colspan="56" |'''Offset'''<br>15&nbsp;&nbsp;&nbsp;<span style="float: right;">0</span>
|}
 
* '''Offset:''' A 64-bit value, split in three parts. It represents the address of the entry point of the '''[[Interrupt Service Routines|Interrupt Service Routine]]'''.
* '''Selector:''' A 16-bit'''[[Segment valueSelector]]''' with multiple fields which must point to a valid 64-bit code segment in your '''[[GDT]]'''. For more information, see '''Section 3.4.2: Segment Selectors''' and '''Figure 3-6: Segment Selector''' of the Intel Software Developer Manual, Volume 3-A.
* '''IST:''' A 3-bit value which is an offset into the '''Interrupt Stack Table''', which is stored in the '''[[Task State Segment]]'''. If the bits are all set to zero, the '''Interrupt Stack Table''' is not used.
* '''Gate Type:''' A 4-bit value which defines the type of gate this '''Interrupt Descriptor''' represents. In long mode there are two valid type values: