diff --git a/asm/x86-unknown-none/thunk.asm b/asm/x86-unknown-none/thunk.asm
index 0e47f9dba2118f7e789c1ee216d2a80094586846..16a3597aab79f14b525c831234ac7112065c15f7 100644
--- a/asm/x86-unknown-none/thunk.asm
+++ b/asm/x86-unknown-none/thunk.asm
@@ -32,6 +32,9 @@ thunk:
     ; save esp
     mov [.esp], esp
 
+    ; load gdt
+    lgdt [gdtr]
+
     ; far jump to protected mode 16-bit
     jmp gdt.pm16_code:.pm16
 
@@ -121,6 +124,9 @@ USE16
     ; save registers
     pushad
 
+    ; load gdt (BIOS sometimes overwrites this)
+    lgdt [gdtr]
+
     ; restore cr0, will enable protected mode
     mov eax, [.cr0]
     mov cr0, eax