summaryrefslogtreecommitdiff
path: root/kernel/GDT/gdt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/GDT/gdt.cpp')
-rw-r--r--kernel/GDT/gdt.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/GDT/gdt.cpp b/kernel/GDT/gdt.cpp
index 4e2c28c..3b84e71 100644
--- a/kernel/GDT/gdt.cpp
+++ b/kernel/GDT/gdt.cpp
@@ -1,5 +1,6 @@
#include "gdt.hpp"
#include "../Helpers/types.hpp"
+#include "../Helpers/memory.hpp"
Gdt::Gdt(){
@@ -39,7 +40,14 @@ void Gdt::initGdtDesc(u32 base, u32 limit, u8 access, u8 flags, gdtDescriptorStr
}
void Gdt::loadGdt(){
+ int *gdtAdress=(int *)&m_Pointer;
//Copy Gdt into memory and init registers
+ memcpy((u32)m_Descriptors, (u32)m_Pointer.segment, (u32)m_Pointer.size);
+
+ __asm__("lgdtl (%0);"
+ :
+ :"r"(gdtAdress)
+ );
}