]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
UefiPayloadPkg: Remove asm code and sharing libraries
[mirror_edk2.git] / UefiPayloadPkg / UefiPayloadEntry / UefiPayloadEntry.c
index a12d9961f1b80daf9c7cfd9741c920637c951c5d..f2ac3d2c692532f7e47aa48837342722b5188f0a 100644 (file)
@@ -385,7 +385,7 @@ BuildGenericHob (
 **/\r
 EFI_STATUS\r
 EFIAPI\r
-PayloadEntry (\r
+_ModuleEntryPoint (\r
   IN UINTN                     BootloaderParameter\r
   )\r
 {\r
@@ -395,13 +395,10 @@ PayloadEntry (
   UINTN                         HobMemBase;\r
   UINTN                         HobMemTop;\r
   EFI_PEI_HOB_POINTERS          Hob;\r
+  SERIAL_PORT_INFO              SerialPortInfo;\r
+  UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO  *UniversalSerialPort;\r
 \r
-  // Call constructor for all libraries\r
-  ProcessLibraryConstructorList ();\r
-\r
-  DEBUG ((DEBUG_INFO, "GET_BOOTLOADER_PARAMETER() = 0x%lx\n", GET_BOOTLOADER_PARAMETER()));\r
-  DEBUG ((DEBUG_INFO, "sizeof(UINTN) = 0x%x\n", sizeof(UINTN)));\r
-\r
+  PcdSet64S (PcdBootloaderParameter, BootloaderParameter);\r
   // Initialize floating point operating environment to be compliant with UEFI spec.\r
   InitializeFloatingPointUnits ();\r
 \r
@@ -412,6 +409,25 @@ PayloadEntry (
 \r
   HobConstructor ((VOID *)MemBase, (VOID *)HobMemTop, (VOID *)HobMemBase, (VOID *)HobMemTop);\r
 \r
+  //\r
+  // Build serial port info\r
+  //\r
+  Status = ParseSerialInfo (&SerialPortInfo);\r
+  if (!EFI_ERROR (Status)) {\r
+    UniversalSerialPort = BuildGuidHob (&gUniversalPayloadSerialPortInfoGuid, sizeof (UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO));\r
+    ASSERT (UniversalSerialPort != NULL);\r
+    UniversalSerialPort->Header.Revision = UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO_REVISION;\r
+    UniversalSerialPort->Header.Length   = sizeof (UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO);\r
+    UniversalSerialPort->UseMmio         = (SerialPortInfo.Type == 1)?FALSE:TRUE;\r
+    UniversalSerialPort->RegisterBase    = SerialPortInfo.BaseAddr;\r
+    UniversalSerialPort->BaudRate        = SerialPortInfo.Baud;\r
+    UniversalSerialPort->RegisterStride  = (UINT8)SerialPortInfo.RegWidth;\r
+  }\r
+\r
+  // The library constructors might depend on serial port, so call it after serial port hob\r
+  ProcessLibraryConstructorList ();\r
+  DEBUG ((DEBUG_INFO, "sizeof(UINTN) = 0x%x\n", sizeof(UINTN)));\r
+\r
   // Build HOB based on information from Bootloader\r
   Status = BuildHobFromBl ();\r
   if (EFI_ERROR (Status)) {\r