ret\r
AsmExchangeRole ENDP\r
\r
-AsmInitializeGdt PROC\r
- push rbp\r
- mov rbp, rsp\r
-\r
- lgdt fword PTR [rcx] ; update the GDTR\r
-\r
- sub rsp, 0x10\r
- lea rax, SetCodeSelectorFarJump\r
- mov [rsp], rax\r
- mov rdx, LONG_MODE_CS\r
- mov [rsp + 4], dx ; get new CS\r
- jmp fword ptr [rsp]\r
-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
- ret\r
-AsmInitializeGdt ENDP\r
-\r
END\r