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
