^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef __TSS_SEGMENT_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define __TSS_SEGMENT_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) struct tss_segment_32 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) u32 prev_task_link;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) u32 esp0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) u32 ss0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) u32 esp1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) u32 ss1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) u32 esp2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) u32 ss2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) u32 cr3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) u32 eip;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) u32 eflags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) u32 eax;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) u32 ecx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) u32 edx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) u32 ebx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) u32 esp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) u32 ebp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) u32 esi;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) u32 edi;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) u32 es;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) u32 cs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) u32 ss;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) u32 ds;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) u32 fs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) u32 gs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) u32 ldt_selector;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) u16 t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) u16 io_map;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) struct tss_segment_16 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) u16 prev_task_link;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) u16 sp0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) u16 ss0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) u16 sp1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) u16 ss1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) u16 sp2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) u16 ss2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) u16 ip;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) u16 flag;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) u16 ax;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) u16 cx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) u16 dx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) u16 bx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) u16 sp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) u16 bp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) u16 si;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) u16 di;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) u16 es;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) u16 cs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) u16 ss;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) u16 ds;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) u16 ldt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) #endif