summaryrefslogtreecommitdiffstats
path: root/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
diff options
context:
space:
mode:
authorGuo Dong <guo.dong@intel.com>2021-09-28 20:34:40 -0700
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2021-09-30 16:26:14 +0000
commit422e5d2f7f1abbecd9dd7baad54213251a8ed47f (patch)
treee2b97dae6156d26e6231b8907616e44730202952 /UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
parent22737996771c8053189b8fe2839cf4a96272784a (diff)
downloadedk2-422e5d2f7f1abbecd9dd7baad54213251a8ed47f.tar.gz
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>
Diffstat (limited to 'UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c')
-rw-r--r--UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c30
1 files changed, 23 insertions, 7 deletions
diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
index a12d9961f1..f2ac3d2c69 100644
--- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
+++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
@@ -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)) {