mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-26 23:24:03 +02:00
Save label "@F" to 64-bit register (r10) instead of 32-bit register (eax) in case label @F is above 4G.
Use "far retq" to load CS and 64-bit rip instead. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8455 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
693c4e024f
commit
1a76fbef84
@ -36,14 +36,14 @@
|
|||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
InternalX86DisablePaging64 PROC
|
InternalX86DisablePaging64 PROC
|
||||||
cli
|
cli
|
||||||
shl rcx, 32 ; rcx[32..47] <- Cs
|
lea r10, @F
|
||||||
lea eax, @F
|
|
||||||
mov esi, r8d
|
mov esi, r8d
|
||||||
or rcx, rax ; rcx[0..47] <- Cs:@F
|
|
||||||
mov edi, r9d
|
mov edi, r9d
|
||||||
mov eax, [rsp + 28h] ; eax <- New Stack
|
mov eax, [rsp + 28h] ; eax <- New Stack
|
||||||
push rcx
|
push rcx ; push Cs to stack
|
||||||
retf ; switch to compatibility mode
|
push r10
|
||||||
|
DB 48h ; prefix to composite "retq" with next "retf"
|
||||||
|
retf ; Use far return to load CS register from stack
|
||||||
@@:
|
@@:
|
||||||
mov esp, eax ; set up new stack
|
mov esp, eax ; set up new stack
|
||||||
mov rax, cr0
|
mov rax, cr0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user