|
PatchworkOS
|
Task State Segment. More...
Data Structures | |
| struct | tss_t |
| Task State Segment structure. More... | |
Macros | |
| #define | TSS_IST_EXCEPTION TSS_IST1 |
| The IST index to use for exceptions. | |
| #define | TSS_IST_DOUBLE_FAULT TSS_IST2 |
| The IST index to use for double faults. | |
| #define | TSS_IST_INTERRUPT TSS_IST3 |
| The IST index to use for other interrupts. | |
Enumerations | |
| enum | tss_ist_t { TSS_IST_NONE = 0 , TSS_IST1 = 1 , TSS_IST2 = 2 , TSS_IST3 = 3 , TSS_IST4 = 4 , TSS_IST5 = 5 , TSS_IST6 = 6 , TSS_IST7 = 7 , TSS_IST_COUNT = 7 } |
| Interrupt Stack Table indices. More... | |
Functions | |
| void | tss_load (void) |
| Load the TSS. | |
| void | tss_init (tss_t *tss) |
| Initialize a TSS structure. | |
| void | tss_ist_load (tss_t *tss, tss_ist_t ist, stack_pointer_t *stack) |
| Load a stack into an IST entry. | |
Task State Segment.
The Task State Segment is more or less deprecated, we use it only to tell the cpu what stack pointer to use when handling interrupts. This is done using the Interrupt Stack Table (IST).
| #define TSS_IST_DOUBLE_FAULT TSS_IST2 |
| #define TSS_IST_EXCEPTION TSS_IST1 |
| #define TSS_IST_INTERRUPT TSS_IST3 |
| enum tss_ist_t |
| void tss_init | ( | tss_t * | tss | ) |
Initialize a TSS structure.
| tss | The TSS structure to initialize. |
Definition at line 5 of file tss.c.
References tss_t::iopb, tss_t::ist, tss_t::reserved1, tss_t::reserved2, tss_t::reserved3, tss_t::reserved4, tss_t::rsp0, tss_t::rsp1, and tss_t::rsp2.
Referenced by cpu_init().
| void tss_ist_load | ( | tss_t * | tss, |
| tss_ist_t | ist, | ||
| stack_pointer_t * | stack | ||
| ) |
Load a stack into an IST entry.
| tss | The TSS structure to load the IST into. |
| ist | The IST index to load the stack into. |
| stack | The stack to load into the TSS. |
Definition at line 21 of file tss.c.
References assert, tss_t::ist, stack, and TSS_IST1.
Referenced by cpu_init().
|
extern |
Load the TSS.
Loads the TSS using the ltr instruction, the TSS must already be present in the GDT.
Referenced by gdt_cpu_tss_load().