| 1 | /* @title: TSS */ |
| 2 | #pragma once |
| 3 | #include <stdint.h> |
| 4 | |
| 5 | struct __attribute__((aligned)) tss { |
| 6 | uint32_t reserved0; |
| 7 | uint64_t rsp0; // Stack pointer for ring 0 |
| 8 | uint64_t rsp1; // Stack pointer for ring 1 (optional) |
| 9 | uint64_t rsp2; // Stack pointer for ring 2 (optional) |
| 10 | uint64_t reserved1; |
| 11 | uint64_t ist1; // Interrupt Stack Table entry 1 |
| 12 | uint64_t ist2; // IST2 |
| 13 | uint64_t ist3; // IST3 |
| 14 | uint64_t ist4; // IST4 |
| 15 | uint64_t ist5; // IST5 |
| 16 | uint64_t ist6; // IST6 |
| 17 | uint64_t ist7; // IST7 |
| 18 | uint64_t reserved2; |
| 19 | uint16_t reserved3; |
| 20 | uint16_t io_map_base; // Offset to I/O permission bitmap |
| 21 | } __packed; |
| 22 | |