aboutsummaryrefslogtreecommitdiff
path: root/src/utils/gdt.h
diff options
context:
space:
mode:
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