UefiPayloadPkg: Remove asm code and sharing libraries
Remove asm code used for payload entry. Use patchable PCD instead a fixed PCD PcdPayloadStackTop to avoid potential conflict. Based on the removal, use same HobLib regardless UNIVERSAL_PAYLOAD. Use same PlatformHookLib regardless UNIVERSAL_PAYLOAD. The original PlatformHookLib was removed and UniversalPayloadPlatformHookLib was rename to new PlatformHookLib. Cc: Ray Ni <ray.ni@intel.com> Cc: Maurice Ma <maurice.ma@intel.com> Cc: Benjamin You <benjamin.you@intel.com> Signed-off-by: Guo Dong <guo.dong@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
This commit is contained in:
@@ -385,7 +385,7 @@ BuildGenericHob (
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PayloadEntry (
|
||||
_ModuleEntryPoint (
|
||||
IN UINTN BootloaderParameter
|
||||
)
|
||||
{
|
||||
@@ -395,13 +395,10 @@ PayloadEntry (
|
||||
UINTN HobMemBase;
|
||||
UINTN HobMemTop;
|
||||
EFI_PEI_HOB_POINTERS Hob;
|
||||
SERIAL_PORT_INFO SerialPortInfo;
|
||||
UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO *UniversalSerialPort;
|
||||
|
||||
// Call constructor for all libraries
|
||||
ProcessLibraryConstructorList ();
|
||||
|
||||
DEBUG ((DEBUG_INFO, "GET_BOOTLOADER_PARAMETER() = 0x%lx\n", GET_BOOTLOADER_PARAMETER()));
|
||||
DEBUG ((DEBUG_INFO, "sizeof(UINTN) = 0x%x\n", sizeof(UINTN)));
|
||||
|
||||
PcdSet64S (PcdBootloaderParameter, BootloaderParameter);
|
||||
// Initialize floating point operating environment to be compliant with UEFI spec.
|
||||
InitializeFloatingPointUnits ();
|
||||
|
||||
@@ -412,6 +409,25 @@ PayloadEntry (
|
||||
|
||||
HobConstructor ((VOID *)MemBase, (VOID *)HobMemTop, (VOID *)HobMemBase, (VOID *)HobMemTop);
|
||||
|
||||
//
|
||||
// Build serial port info
|
||||
//
|
||||
Status = ParseSerialInfo (&SerialPortInfo);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
UniversalSerialPort = BuildGuidHob (&gUniversalPayloadSerialPortInfoGuid, sizeof (UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO));
|
||||
ASSERT (UniversalSerialPort != NULL);
|
||||
UniversalSerialPort->Header.Revision = UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO_REVISION;
|
||||
UniversalSerialPort->Header.Length = sizeof (UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO);
|
||||
UniversalSerialPort->UseMmio = (SerialPortInfo.Type == 1)?FALSE:TRUE;
|
||||
UniversalSerialPort->RegisterBase = SerialPortInfo.BaseAddr;
|
||||
UniversalSerialPort->BaudRate = SerialPortInfo.Baud;
|
||||
UniversalSerialPort->RegisterStride = (UINT8)SerialPortInfo.RegWidth;
|
||||
}
|
||||
|
||||
// The library constructors might depend on serial port, so call it after serial port hob
|
||||
ProcessLibraryConstructorList ();
|
||||
DEBUG ((DEBUG_INFO, "sizeof(UINTN) = 0x%x\n", sizeof(UINTN)));
|
||||
|
||||
// Build HOB based on information from Bootloader
|
||||
Status = BuildHobFromBl ();
|
||||
if (EFI_ERROR (Status)) {
|
||||
|
Reference in New Issue
Block a user