pop rax\r
\r
ret\r
-\r
-global ASM_PFX(AsmInitializeGdt)\r
-ASM_PFX(AsmInitializeGdt):\r
- push rbp\r
- mov rbp, rsp\r
-\r
- lgdt [rcx] ; update the GDTR\r
-\r
- sub rsp, 0x10\r
- mov rax, ASM_PFX(SetCodeSelectorFarJump)\r
- mov [rsp], rax\r
- mov rdx, LONG_MODE_CS\r
- mov [rsp + 4], dx ; get new CS\r
- jmp far dword [rsp] ; far jump with new CS\r
-ASM_PFX(SetCodeSelectorFarJump):\r
- add rsp, 0x10\r
-\r
- mov rax, LONG_MODE_DS ; get new DS\r
- mov ds, ax\r
- mov es, ax\r
- mov fs, ax\r
- mov gs, ax\r
- mov ss, ax\r
-\r
- pop rbp\r
-\r
- ret\r