From 63d7211ebcfa7cb217a9e50143e1ac1a8119626a Mon Sep 17 00:00:00 2001 From: xli24 Date: Tue, 13 Jan 2009 04:20:22 +0000 Subject: Fix the bug that EntryPoint of DisablePaging64() is corrupted. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7250 6f19259b-4bc3-4df7-8a09-765794883524 --- MdePkg/Library/BaseLib/X64/DisablePaging64.S | 4 +++- MdePkg/Library/BaseLib/X64/DisablePaging64.asm | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'MdePkg/Library') diff --git a/MdePkg/Library/BaseLib/X64/DisablePaging64.S b/MdePkg/Library/BaseLib/X64/DisablePaging64.S index a55059e3be..8c71d2d49e 100644 --- a/MdePkg/Library/BaseLib/X64/DisablePaging64.S +++ b/MdePkg/Library/BaseLib/X64/DisablePaging64.S @@ -51,6 +51,8 @@ L1: mov %cr0,%rax btr $0x1f,%eax mov %rax,%cr0 # disable paging + + mov %rdx,%rbx # save EntryPoint to rbx, for rdmsr will overwrite rdx mov $0xc0000080,%ecx rdmsr and $0xfe,%ah # clear LME @@ -60,6 +62,6 @@ L1: mov %rax,%cr4 push %rdi # push Context2 push %rsi # push Context1 - callq *%rdx # transfer control to EntryPoint + callq *%rbx # transfer control to EntryPoint jmp . # no one should get here diff --git a/MdePkg/Library/BaseLib/X64/DisablePaging64.asm b/MdePkg/Library/BaseLib/X64/DisablePaging64.asm index 518137ddc9..29bf558e6c 100644 --- a/MdePkg/Library/BaseLib/X64/DisablePaging64.asm +++ b/MdePkg/Library/BaseLib/X64/DisablePaging64.asm @@ -1,6 +1,6 @@ ;------------------------------------------------------------------------------ ; -; Copyright (c) 2006, Intel Corporation +; Copyright (c) 2006 - 2008, 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 @@ -49,6 +49,8 @@ InternalX86DisablePaging64 PROC mov rax, cr0 btr eax, 31 mov cr0, rax ; disable paging + + mov rbx, rdx ; save EntryPoint to rbx, for rdmsr will overwrite rdx mov ecx, 0c0000080h rdmsr and ah, NOT 1 ; clear LME @@ -58,7 +60,7 @@ InternalX86DisablePaging64 PROC mov cr4, rax push rdi ; push Context2 push rsi ; push Context1 - call rdx ; transfer control to EntryPoint + call rbx ; transfer control to EntryPoint hlt ; no one should get here InternalX86DisablePaging64 ENDP -- cgit v1.2.3