X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdePkg%2FLibrary%2FBaseLib%2FX64%2FDisablePaging64.S;h=220a59127b84d9c2606c91b664bbe2ab307fc137;hp=676e9e175a7fae5aa5f18b867f6fb5ba8bd73c64;hb=9095d37b8fe5bfc3d02adad6ba7fd7359ebc0107;hpb=d1102dba7210b95e41d06c2338a22ba6af248645 diff --git a/MdePkg/Library/BaseLib/X64/DisablePaging64.S b/MdePkg/Library/BaseLib/X64/DisablePaging64.S index 676e9e175a..220a59127b 100644 --- a/MdePkg/Library/BaseLib/X64/DisablePaging64.S +++ b/MdePkg/Library/BaseLib/X64/DisablePaging64.S @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ # -# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
# This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at @@ -21,7 +21,7 @@ # #------------------------------------------------------------------------------ - + #------------------------------------------------------------------------------ # VOID @@ -37,29 +37,29 @@ ASM_GLOBAL ASM_PFX(InternalX86DisablePaging64) ASM_PFX(InternalX86DisablePaging64): - cli + cli lea L1(%rip), %rsi # rsi <- The start address of transition code mov 0x28(%rsp), %edi # rdi <- New stack lea _mTransitionEnd(%rip), %rax # rax <- end of transition code sub %rsi, %rax # rax <- The size of transition piece code add $4, %rax # round rax up to the next 4 byte boundary and $0xfc, %al - sub %rax, %rdi # rdi <- use stack to hold transition code + sub %rax, %rdi # rdi <- use stack to hold transition code mov %edi, %r10d # r10 <- The start address of transicition code below 4G push %rcx # save rcx to stack mov %rax, %rcx # rcx <- The size of transition piece code rep movsb # copy transition code to (new stack - 64byte) below 4G pop %rcx # restore rcx - - mov %r8d, %esi - mov %r9d, %edi + + mov %r8d, %esi + mov %r9d, %edi mov %r10d, %eax sub $4, %eax push %rcx # push Cs to stack - push %r10 # push address of transition code on stack + push %r10 # push address of transition code on stack .byte 0x48, 0xcb # retq: Use far return to load CS register from stack - # (Use raw byte code since some GNU assemblers generates incorrect code for "retq") + # (Use raw byte code since some GNU assemblers generates incorrect code for "retq") L1: mov %eax,%esp # set up new stack mov %cr0,%rax @@ -68,9 +68,9 @@ L1: mov %edx,%ebx # save EntryPoint to ebx, for rdmsr will overwrite edx mov $0xc0000080,%ecx - rdmsr + rdmsr and $0xfe,%ah # clear LME - wrmsr + wrmsr mov %cr4,%rax and $0xdf,%al # clear PAE mov %rax,%cr4