aboutsummaryrefslogtreecommitdiff
path: root/src/utils/gdt.h
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2021-04-09 18:18:15 +0200
committerLoic Guegan <manzerbredes@mailbox.org>2021-04-09 18:18:15 +0200
commitc6aa00eea71c91a219dae8688530ff0a3b83bcd4 (patch)
treee2f4d26362e8a57b5fba1a3392b947b95cb40039 /src/utils/gdt.h
parentdeabd68158b865f2bcf928c604d6c46f73832d0a (diff)
Enable TSS segment
Diffstat (limited to 'src/utils/gdt.h')
-rw-r--r--src/utils/gdt.h31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/utils/gdt.h b/src/utils/gdt.h
index 85a75aa..01a01bf 100644
--- a/src/utils/gdt.h
+++ b/src/utils/gdt.h
@@ -31,6 +31,35 @@ struct GDT_REGISTER {
u32 base;
} __attribute__((packed));
+typedef struct GDT_TSS {
+ u16 previous_task,previous_task_unused;
+ u32 esp0;
+ u16 ss0, ss0_unused;
+ u32 esp1;
+ u16 ss1, ss1_unused;
+ u32 esp2;
+ u16 ss2, ss2_unused;
+ u32 cr3;
+ u32 eip;
+ u32 eflags;
+ u32 eax;
+ u32 ecx;
+ u32 edx;
+ u32 ebx;
+ u32 esp;
+ u32 ebp;
+ u32 esi;
+ u32 edi;
+ u16 es, es_reserved;
+ u16 cs, cs_reserved;
+ u16 ss, ss_reserved;
+ u16 ds, ds_reserved;
+ u16 fs, fs_reserved;
+ u16 gs, gs_reserved;
+ u16 ldtss, ldtss_reserved;
+ u16 t_reserved, io_map;
+} __attribute__((packed)) GDT_TSS;
+
/**
* Copy GDT in memory
*/
@@ -39,6 +68,6 @@ void gdt_memcpy();
/**
* Write a GDT entry at address addr
*/
-void gdt_write_entry(GDT_ENTRY entry, u32 addr);
+void gdt_write_entry(GDT_ENTRY entry, u32 id);
#endif