Revision: 14714
          http://sourceforge.net/p/edk2/code/14714
Author:   jljusten
Date:     2013-09-24 18:23:09 +0000 (Tue, 24 Sep 2013)
Log Message:
-----------
UefiCpuPkg/ResetVector/Vtf0: Move Page Table/CR3 setting to a new file

Now, Transition32FlatTo64Flat calls SetCr3ForPageTables64
which is located in Ia32/PageTables64.asm.

This change is required so OVMF can replace the code in
Ia32/PageTables64.asm with code that generates page tables in
RAM.

Note: Since this change does not impact the functionality of the
current VTF0 binaries, they are not being updated. The resulting
new binaries were tested to verify there is no regression.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <[email protected]>
Reviewed-by: Laszlo Ersek <[email protected]>
Tested-by: Laszlo Ersek <[email protected]>
Reviewed-by: Jeff Fan <[email protected]>

Modified Paths:
--------------
    trunk/edk2/UefiCpuPkg/ResetVector/Vtf0/Ia32/Flat32ToFlat64.asm
    trunk/edk2/UefiCpuPkg/ResetVector/Vtf0/ResetVectorCode.asm

Added Paths:
-----------
    trunk/edk2/UefiCpuPkg/ResetVector/Vtf0/Ia32/PageTables64.asm

Modified: trunk/edk2/UefiCpuPkg/ResetVector/Vtf0/Ia32/Flat32ToFlat64.asm
===================================================================
--- trunk/edk2/UefiCpuPkg/ResetVector/Vtf0/Ia32/Flat32ToFlat64.asm      
2013-09-24 11:43:02 UTC (rev 14713)
+++ trunk/edk2/UefiCpuPkg/ResetVector/Vtf0/Ia32/Flat32ToFlat64.asm      
2013-09-24 18:23:09 UTC (rev 14714)
@@ -2,7 +2,7 @@
 ; @file
 ; Transition from 32 bit flat protected mode into 64 bit flat protected mode
 ;
-; Copyright (c) 2008 - 2009, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2008 - 2013, Intel Corporation. All rights reserved.<BR>
 ; 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
@@ -20,8 +20,7 @@
 ;
 Transition32FlatTo64Flat:
 
-    mov     eax, ((ADDR_OF_START_OF_RESET_CODE & ~0xfff) - 0x1000)
-    mov     cr3, eax
+    OneTimeCall SetCr3ForPageTables64
 
     mov     eax, cr4
     bts     eax, 5                      ; enable PAE

Added: trunk/edk2/UefiCpuPkg/ResetVector/Vtf0/Ia32/PageTables64.asm
===================================================================
--- trunk/edk2/UefiCpuPkg/ResetVector/Vtf0/Ia32/PageTables64.asm                
                (rev 0)
+++ trunk/edk2/UefiCpuPkg/ResetVector/Vtf0/Ia32/PageTables64.asm        
2013-09-24 18:23:09 UTC (rev 14714)
@@ -0,0 +1,30 @@
+;------------------------------------------------------------------------------
+; @file
+; Sets the CR3 register for 64-bit paging
+;
+; Copyright (c) 2008 - 2013, Intel Corporation. All rights reserved.<BR>
+; 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
+; http://opensource.org/licenses/bsd-license.php
+;
+; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+;
+;------------------------------------------------------------------------------
+
+BITS    32
+
+;
+; Modified:  EAX
+;
+SetCr3ForPageTables64:
+
+    ;
+    ; These pages are built into the ROM image by Tools/FixupForRawSection.py
+    ;
+    mov     eax, ((ADDR_OF_START_OF_RESET_CODE & ~0xfff) - 0x1000)
+    mov     cr3, eax
+
+    OneTimeCallRet SetCr3ForPageTables64
+

Modified: trunk/edk2/UefiCpuPkg/ResetVector/Vtf0/ResetVectorCode.asm
===================================================================
--- trunk/edk2/UefiCpuPkg/ResetVector/Vtf0/ResetVectorCode.asm  2013-09-24 
11:43:02 UTC (rev 14713)
+++ trunk/edk2/UefiCpuPkg/ResetVector/Vtf0/ResetVectorCode.asm  2013-09-24 
18:23:09 UTC (rev 14714)
@@ -2,7 +2,7 @@
 ; @file
 ; This file includes all other code files to assemble the reset vector code
 ;
-; Copyright (c) 2008 - 2010, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2008 - 2013, Intel Corporation. All rights reserved.<BR>
 ; 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
@@ -41,6 +41,7 @@
 
 %ifdef ARCH_X64
 %include "Ia32/Flat32ToFlat64.asm"
+%include "Ia32/PageTables64.asm"
 %endif
 
 %include "Ia16/Real16ToFlat32.asm"

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60133471&iu=/4140/ostg.clktrk
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to