global load_gdt
load_gdt:
    cli
    lgdt [rdi]
    mov   ax, 0x10
    mov   ds, ax
    mov   es, ax
    mov   fs, ax
    mov   gs, ax
    mov   ss, ax
    push 0x08                 
    lea rax, [rel .reload_CS]
    push rax
    retfq
.reload_CS:
    ret
global load_tr
load_tr:
    mov rax, rdi
    ltr ax
    ret