L_SavedCs: .space 2\r
L_64BitCode:\r
.byte 0x90\r
- .byte 0x67,0xbc # mov esp, imm32\r
-L_SavedSp: .space 4 # restore stack\r
+ .byte 0x48,0xbc # mov rsp, imm64\r
+L_SavedSp: .space 8 # restore stack\r
nop\r
ret\r
\r
pushq %r8\r
movl %cs, %r8d\r
movw %r8w, (L_SavedCs - L_SavedCr4)(%rcx)\r
- movl %esp, (L_SavedSp - L_SavedCr4)(%rcx)\r
+ movq %rsp, (L_SavedSp - L_SavedCr4)(%rcx)\r
.byte 0xff, 0x69 # jmp (_EntryPoint - L_SavedCr4)(%rcx)\r
.set Ltemp1, _EntryPoint - L_SavedCr4\r
.byte Ltemp1\r
SavedCs DW ?\r
@64BitCode:\r
db 090h \r
- db 067h, 0bch ; mov esp, imm32\r
-SavedSp DD ? ; restore stack\r
+ db 048h, 0bch ; mov rsp, imm64\r
+SavedSp DQ ? ; restore stack\r
nop\r
ret\r
_BackFromUserCode ENDP\r
push r8\r
mov r8d, cs\r
mov [rcx + (SavedCs - SavedCr4)], r8w\r
- mov [rcx + (SavedSp - SavedCr4)], esp\r
+ mov [rcx + (SavedSp - SavedCr4)], rsp\r
jmp fword ptr [rcx + (_EntryPoint - SavedCr4)]\r
@RetFromRealMode:\r
popfq\r