]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Save label "@F" to 64-bit register (r10) instead of 32-bit register (eax) in case...
authorqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 3 Jun 2009 08:11:34 +0000 (08:11 +0000)
committerqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 3 Jun 2009 08:11:34 +0000 (08:11 +0000)
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

MdePkg/Library/BaseLib/X64/DisablePaging64.asm

index 29bf558e6c8df6154e3d0e0a5691363a0a0ae70b..f11f6ff291a988002528e78641bcd668ce5aee92 100644 (file)
 ;------------------------------------------------------------------------------\r
 InternalX86DisablePaging64    PROC\r
     cli\r
-    shl     rcx, 32                     ; rcx[32..47] <- Cs\r
-    lea     eax, @F\r
+    lea     r10, @F\r
     mov     esi, r8d\r
-    or      rcx, rax                    ; rcx[0..47] <- Cs:@F\r
     mov     edi, r9d\r
     mov     eax, [rsp + 28h]            ; eax <- New Stack\r
-    push    rcx\r
-    retf                                ; switch to compatibility mode\r
+    push    rcx                         ; push Cs to stack\r
+    push    r10\r
+    DB      48h                         ; prefix to composite "retq" with next "retf"\r
+    retf                                ; Use far return to load CS register from stack\r
 @@:\r
     mov     esp, eax                    ; set up new stack\r
     mov     rax, cr0\r