/** @file
Implementation of Fsp Misc UPD Initialization.
Copyright (c) 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include
#include
#include
#include
#include
/**
Performs FSP Misc UPD initialization.
@param[in][out] FspmUpd Pointer to FSPM_UPD Data.
@retval EFI_SUCCESS FSP UPD Data is updated.
**/
EFI_STATUS
EFIAPI
PeiFspMiscUpdInitPreMem (
IN OUT FSPM_UPD *FspmUpd
)
{
EFI_STATUS Status;
//
// Locate system configuration variable
//
FspmUpd->FspmArchUpd.StackBase = (VOID *)(UINTN)(PcdGet32(PcdTemporaryRamBase) + PcdGet32(PcdTemporaryRamSize) - (PcdGet32(PcdFspTemporaryRamSize) + PcdGet32(PcdFspReservedBufferSize)));
FspmUpd->FspmArchUpd.StackSize = PcdGet32(PcdFspTemporaryRamSize);
Status = PeiServicesGetBootMode (&(FspmUpd->FspmArchUpd.BootMode));
if (EFI_ERROR (Status)) {
FspmUpd->FspmArchUpd.BootMode = BOOT_WITH_FULL_CONFIGURATION;
}
FspmUpd->FspmArchUpd.BootLoaderTolumSize = 0x0;
//
// Initialize S3 Data variable (S3DataPtr). It may be used for warm and fast boot paths.
//
FspmUpd->FspmArchUpd.NvsBufferPtr = NULL;
return EFI_SUCCESS;
}