summaryrefslogtreecommitdiff
path: root/kernel/include/tss.h
blob: f1af6d671c71efe98b67e3936c4e0ccfdf12e9df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#ifndef TSS_H
#define TSS_H

#include <types.h>

struct tss_type {
	uint32_t reserved1;
	uint32_t rsp0_low;
	uint32_t rsp0_high;
	uint32_t rsp1_low;
	uint32_t rsp1_high;
	uint32_t rsp2_low;
	uint32_t rsp2_high;
	uint32_t reserved2;
	uint32_t reserved3;
	uint32_t ist1_low;
	uint32_t ist1_high;
	uint32_t ist2_low;
	uint32_t ist2_high;
	uint32_t ist3_low;
	uint32_t ist3_high;
	uint32_t ist4_low;
	uint32_t ist4_high;
	uint32_t ist5_low;
	uint32_t ist5_high;
	uint32_t ist6_low;
	uint32_t ist6_high;
	uint32_t ist7_low;
	uint32_t ist7_high;
	uint32_t reserved4;
	uint32_t reserved5;
	uint16_t reserved6;
	uint16_t iopb;
} __attribute__((packed, aligned(4096)));
typedef struct tss_type tss_type;

extern tss_type tss;

void load_tss(void);
void init_tss(void);

#endif