On 09/18/13 01:24, Jordan Justen wrote:
> 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]>
> ---
>  .../ResetVector/Vtf0/Ia32/Flat32ToFlat64.asm       |    5 ++--
>  UefiCpuPkg/ResetVector/Vtf0/Ia32/PageTables64.asm  |   30 
> ++++++++++++++++++++
>  UefiCpuPkg/ResetVector/Vtf0/ResetVectorCode.asm    |    3 +-
>  3 files changed, 34 insertions(+), 4 deletions(-)
>  create mode 100644 UefiCpuPkg/ResetVector/Vtf0/Ia32/PageTables64.asm
> 
> diff --git a/UefiCpuPkg/ResetVector/Vtf0/Ia32/Flat32ToFlat64.asm 
> b/UefiCpuPkg/ResetVector/Vtf0/Ia32/Flat32ToFlat64.asm
> index 9eba864..62e71da 100644
> --- a/UefiCpuPkg/ResetVector/Vtf0/Ia32/Flat32ToFlat64.asm
> +++ b/UefiCpuPkg/ResetVector/Vtf0/Ia32/Flat32ToFlat64.asm
> @@ -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 @@ BITS    32
>  ;
>  Transition32FlatTo64Flat:
>  
> -    mov     eax, ((ADDR_OF_START_OF_RESET_CODE & ~0xfff) - 0x1000)
> -    mov     cr3, eax
> +    OneTimeCall SetCr3ForPageTables64
>  
>      mov     eax, cr4
>      bts     eax, 5                      ; enable PAE
> diff --git a/UefiCpuPkg/ResetVector/Vtf0/Ia32/PageTables64.asm 
> b/UefiCpuPkg/ResetVector/Vtf0/Ia32/PageTables64.asm
> new file mode 100644
> index 0000000..0cfcbae
> --- /dev/null
> +++ b/UefiCpuPkg/ResetVector/Vtf0/Ia32/PageTables64.asm
> @@ -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
> +
> diff --git a/UefiCpuPkg/ResetVector/Vtf0/ResetVectorCode.asm 
> b/UefiCpuPkg/ResetVector/Vtf0/ResetVectorCode.asm
> index 96f686b..052c821 100644
> --- a/UefiCpuPkg/ResetVector/Vtf0/ResetVectorCode.asm
> +++ b/UefiCpuPkg/ResetVector/Vtf0/ResetVectorCode.asm
> @@ -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"
> 

Reviewed-by: Laszlo Ersek <[email protected]>

------------------------------------------------------------------------------
LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99!
1,500+ hours of tutorials including VisualStudio 2012, Windows 8, SharePoint
2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack includes
Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13. 
http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to