global gdt_flush
gdt_flush:
mov eax, [esp + 4]
lgdt [eax]
jmp 0x08:.flush_label ; long jump to reload CS with new segment
.flush_label:
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
mov ss, ax
ret