diff options
author | Danny Holman <dholman@gymli.org> | 2022-01-15 16:20:52 -0600 |
---|---|---|
committer | Danny Holman <dholman@gymli.org> | 2022-01-15 16:22:58 -0600 |
commit | acc73186bc3de78ceb0a54cbf2605dff1b9a6d62 (patch) | |
tree | 0b2b930e1e9ad4f96d6b91ff7400a14f7d0335c6 /arch/i386/boot/tss.h | |
parent | 5db084e3b478be1c9aa9caeeea94b949264aa853 (diff) |
arch: i386: simplifiy GDT setup
Simplify the setup and definitions of GDT/TSS entries.
Signed-off-by: Danny Holman <dholman@gymli.org>
Diffstat (limited to 'arch/i386/boot/tss.h')
-rw-r--r-- | arch/i386/boot/tss.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/arch/i386/boot/tss.h b/arch/i386/boot/tss.h new file mode 100644 index 0000000..28bae6e --- /dev/null +++ b/arch/i386/boot/tss.h @@ -0,0 +1,39 @@ +#ifndef I386_TSS_H +#define I386_TSS_H + +#include <stdint.h> + +struct tss { + uint32_t link; + uint32_t esp0; + uint32_t ss0; + uint32_t esp1; + uint32_t ss2; + uint32_t cr3; + uint32_t eip; + uint32_t eflags; + uint32_t eax; + uint32_t ecx; + uint32_t edx; + uint32_t ebx; + uint32_t esp; + uint32_t ebp; + uint32_t esi; + uint32_t edi; + uint32_t es; + uint32_t cs; + uint32_t ss; + uint32_t ds; + uint32_t fs; + uint32_t gs; + uint32_t ldtr; + uint32_t io_offset; +}__attribute__((packed)); + +void flush_tss(void); + +uint64_t create_gdt_entry(uint32_t base, uint32_t limit, uint16_t flag); +uint64_t create_tss_entry(uint16_t ss0, uint32_t esp0); +void set_kernel_stack(uint32_t stack); + +#endif |