OVMF: Update OVMF FD/FV build to minimize ROM size
* Only SEC is uncompressed now * The MAIN FV with PEI & DXE can easily shrink and grow as needed * The final output will now be OVMF.Fv rather than OVMF.fd * The final output size will be a multiple of 64kb git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9672 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/PeimEntryPoint.h>
|
||||
#include <Library/PeiServicesLib.h>
|
||||
#include <Ppi/TemporaryRamSupport.h>
|
||||
#include <Library/PcdLib.h>
|
||||
@@ -61,7 +62,7 @@ InitializeIdtPtr (
|
||||
VOID
|
||||
EFIAPI
|
||||
SecCoreStartupWithStack (
|
||||
IN EFI_FIRMWARE_VOLUME_HEADER *BootFirmwareVolumePtr,
|
||||
IN EFI_FIRMWARE_VOLUME_HEADER *BootFv,
|
||||
IN VOID *TopOfCurrentStack
|
||||
)
|
||||
{
|
||||
@@ -72,18 +73,20 @@ SecCoreStartupWithStack (
|
||||
VOID *IdtPtr;
|
||||
VOID *PeiCoreEntryPoint;
|
||||
|
||||
DEBUG ((EFI_D_INFO,
|
||||
"SecCoreStartupWithStack(0x%x, 0x%x)\n",
|
||||
(UINT32)(UINTN)BootFv,
|
||||
(UINT32)(UINTN)TopOfCurrentStack
|
||||
));
|
||||
|
||||
ProcessLibraryConstructorList (NULL, NULL);
|
||||
|
||||
//
|
||||
// Initialize floating point operating environment
|
||||
// to be compliant with UEFI spec.
|
||||
//
|
||||
InitializeFloatingPointUnits ();
|
||||
|
||||
DEBUG ((EFI_D_INFO,
|
||||
"SecCoreStartupWithStack(0x%x, 0x%x)\n",
|
||||
(UINT32)(UINTN)BootFirmwareVolumePtr,
|
||||
(UINT32)(UINTN)TopOfCurrentStack
|
||||
));
|
||||
|
||||
BottomOfTempRam = (UINT8*)(UINTN) INITIAL_TOP_OF_STACK;
|
||||
SizeOfTempRam = (UINTN) SIZE_64KB;
|
||||
TopOfTempRam = BottomOfTempRam + SizeOfTempRam;
|
||||
@@ -104,9 +107,6 @@ SecCoreStartupWithStack (
|
||||
SecCoreData = (EFI_SEC_PEI_HAND_OFF*)((UINTN) TopOfTempRam - SIZE_4KB);
|
||||
SecCoreData->DataSize = sizeof(EFI_SEC_PEI_HAND_OFF);
|
||||
|
||||
SecCoreData->BootFirmwareVolumeBase = (VOID*)(UINTN) PcdGet32 (PcdOvmfFlashFvRecoveryBase);
|
||||
SecCoreData->BootFirmwareVolumeSize = PcdGet32 (PcdOvmfFlashFvRecoverySize);
|
||||
|
||||
SecCoreData->TemporaryRamBase = (VOID*) BottomOfTempRam;
|
||||
SecCoreData->TemporaryRamSize = SizeOfTempRam;
|
||||
|
||||
@@ -124,7 +124,10 @@ SecCoreStartupWithStack (
|
||||
IdtPtr = ALIGN_POINTER(IdtPtr, 16);
|
||||
InitializeIdtPtr (IdtPtr);
|
||||
|
||||
FindPeiCoreEntryPoint (BootFirmwareVolumePtr, &PeiCoreEntryPoint);
|
||||
FindPeiCoreEntryPoint (&BootFv, &PeiCoreEntryPoint);
|
||||
|
||||
SecCoreData->BootFirmwareVolumeBase = BootFv;
|
||||
SecCoreData->BootFirmwareVolumeSize = BootFv->FvLength;
|
||||
|
||||
if (PeiCoreEntryPoint != NULL) {
|
||||
DEBUG ((EFI_D_INFO,
|
||||
|
Reference in New Issue
Block a user