mirror of
https://github.com/0xAX/linux-insides.git
synced 2024-12-22 14:48:08 +00:00
Update linux-initialization-2.md
This commit is contained in:
parent
c9ef7f6943
commit
93dd23b65d
@ -115,7 +115,11 @@ Where:
|
|||||||
* `Offset` - is offset to entry point of an interrupt handler;
|
* `Offset` - is offset to entry point of an interrupt handler;
|
||||||
* `DPL` - Descriptor Privilege Level;
|
* `DPL` - Descriptor Privilege Level;
|
||||||
* `P` - Segment Present flag;
|
* `P` - Segment Present flag;
|
||||||
* `Segment selector` - a code segment selector in GDT or LDT
|
* `Segment selector` - a code segment selector in GDT or LDT (actually it always point to GDT in linux)
|
||||||
|
```C
|
||||||
|
#define __KERNEL_CS (GDT_ENTRY_KERNEL_CS*8) // 0000 0000 0001 0000
|
||||||
|
#define GDT_ENTRY_KERNEL_CS 2
|
||||||
|
```
|
||||||
* `IST` - provides ability to switch to a new stack for interrupts handling.
|
* `IST` - provides ability to switch to a new stack for interrupts handling.
|
||||||
|
|
||||||
And the last `Type` field describes type of the `IDT` entry. There are three different kinds of gates for interrupts:
|
And the last `Type` field describes type of the `IDT` entry. There are three different kinds of gates for interrupts:
|
||||||
@ -164,7 +168,7 @@ where `NUM_EXCEPTION_VECTORS` expands to `32`. As we can see, We're filling only
|
|||||||
|
|
||||||
and inserts an interrupt gate to the `IDT` table which is represented by the `&idt_descr` array.
|
and inserts an interrupt gate to the `IDT` table which is represented by the `&idt_descr` array.
|
||||||
|
|
||||||
The `early_idt_handler_array` array is declaredd in the [arch/x86/include/asm/segment.h](https://github.com/torvalds/linux/blob/master/arch/x86/include/asm/segment.h) header file and contains addresses of the first `32` exception handlers:
|
The `early_idt_handler_array` array is declared in the [arch/x86/include/asm/segment.h](https://github.com/torvalds/linux/blob/master/arch/x86/include/asm/segment.h) header file and contains addresses of the first `32` exception handlers:
|
||||||
|
|
||||||
```C
|
```C
|
||||||
#define EARLY_IDT_HANDLER_SIZE 9
|
#define EARLY_IDT_HANDLER_SIZE 9
|
||||||
|
Loading…
Reference in New Issue
Block a user