]> git.proxmox.com Git - mirror_edk2.git/commitdiff
UefiPayloadPkg: Remove asm code and sharing libraries
authorGuo Dong <guo.dong@intel.com>
Wed, 29 Sep 2021 03:34:40 +0000 (20:34 -0700)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Thu, 30 Sep 2021 16:26:14 +0000 (16:26 +0000)
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>
16 files changed:
UefiPayloadPkg/Include/Library/BlParseLib.h
UefiPayloadPkg/Library/CbParseLib/CbParseLib.c
UefiPayloadPkg/Library/CbParseLib/CbParseLib.inf
UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.c
UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.inf
UefiPayloadPkg/Library/SblParseLib/SblParseLib.inf
UefiPayloadPkg/Library/UniversalPayloadPlatformHookLib/PlatformHookLib.c [deleted file]
UefiPayloadPkg/Library/UniversalPayloadPlatformHookLib/PlatformHookLib.inf [deleted file]
UefiPayloadPkg/UefiPayloadEntry/Ia32/SecEntry.nasm [deleted file]
UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h
UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf
UefiPayloadPkg/UefiPayloadEntry/UniversalPayloadEntry.inf
UefiPayloadPkg/UefiPayloadEntry/X64/SecEntry.nasm [deleted file]
UefiPayloadPkg/UefiPayloadPkg.dec
UefiPayloadPkg/UefiPayloadPkg.dsc

index 20a526d15c6325b17719445f1a70db9829983ed4..1244190d4e87237c07e715fe69879157fd0d0f7e 100644 (file)
@@ -2,7 +2,7 @@
   This library will parse the coreboot table in memory and extract those required\r
   information.\r
 \r
-  Copyright (c) 2014 - 2020, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2014 - 2021, Intel Corporation. All rights reserved.<BR>\r
   SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
@@ -16,8 +16,7 @@
 #ifndef __BOOTLOADER_PARSE_LIB__\r
 #define __BOOTLOADER_PARSE_LIB__\r
 \r
-#define GET_BOOTLOADER_PARAMETER()      (*(UINTN *)(UINTN)(PcdGet32(PcdPayloadStackTop) - sizeof(UINT64)))\r
-#define SET_BOOTLOADER_PARAMETER(Value) GET_BOOTLOADER_PARAMETER()=Value\r
+#define GET_BOOTLOADER_PARAMETER()      PcdGet64 (PcdBootloaderParameter)\r
 \r
 typedef RETURN_STATUS \\r
         (*BL_MEM_INFO_CALLBACK) (MEMROY_MAP_ENTRY *MemoryMapEntry, VOID *Param);\r
index 4e23cff50e773b17d050290384315bf72fa28920..4f90687e407ebd168d7c42509476a3337bdb538b 100644 (file)
@@ -2,7 +2,7 @@
   This library will parse the coreboot table in memory and extract those required\r
   information.\r
 \r
-  Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2014 - 2021, Intel Corporation. All rights reserved.<BR>\r
   SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
@@ -140,6 +140,7 @@ GetParameterBase (
   UINT8              *TmpPtr;\r
   UINT8              *CbTablePtr;\r
   UINTN              Idx;\r
+  EFI_STATUS         Status;\r
 \r
   //\r
   // coreboot could pass coreboot table to UEFI payload\r
@@ -193,7 +194,8 @@ GetParameterBase (
     return NULL;\r
   }\r
 \r
-  SET_BOOTLOADER_PARAMETER ((UINT32)(UINTN)CbTablePtr);\r
+  PcdSet64S (PcdBootloaderParameter, (UINTN)CbTablePtr);\r
+  ASSERT_EFI_STATUS (Status);\r
 \r
   return CbTablePtr;\r
 }\r
index 52e3ad205404b5e473696e5c7954936b598ce77f..cf81697703cc1dd08beed8035b9a972feccabcc7 100644 (file)
@@ -1,7 +1,7 @@
 ## @file\r
 #  Coreboot Table Parse Library.\r
 #\r
-#  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>\r
+#  Copyright (c) 2014 - 2021, Intel Corporation. All rights reserved.<BR>\r
 #  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 #\r
 ##\r
@@ -36,4 +36,4 @@
   PcdLib\r
 \r
 [Pcd]\r
-  gUefiPayloadPkgTokenSpaceGuid.PcdPayloadStackTop\r
+  gUefiPayloadPkgTokenSpaceGuid.PcdBootloaderParameter\r
index d8453e595772b3385ac100cf53a4f552f3cfbfc9..004fcd8b7ca3beec0a0e3139eb7e9549ba3a3f1b 100644 (file)
@@ -1,29 +1,34 @@
 /** @file\r
   Platform Hook Library instance for UART device.\r
 \r
-  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>\r
   SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #include <Base.h>\r
-#include <Uefi/UefiBaseType.h>\r
-#include <Library/PciLib.h>\r
+#include <PiDxe.h>\r
+#include <UniversalPayload/SerialPortInfo.h>\r
 #include <Library/PlatformHookLib.h>\r
-#include <Library/BlParseLib.h>\r
 #include <Library/PcdLib.h>\r
+#include <Library/HobLib.h>\r
 \r
-typedef struct {\r
-  UINT16  VendorId;          ///< Vendor ID to match the PCI device.  The value 0xFFFF terminates the list of entries.\r
-  UINT16  DeviceId;          ///< Device ID to match the PCI device\r
-  UINT32  ClockRate;         ///< UART clock rate.  Set to 0 for default clock rate of 1843200 Hz\r
-  UINT64  Offset;            ///< The byte offset into to the BAR\r
-  UINT8   BarIndex;          ///< Which BAR to get the UART base address\r
-  UINT8   RegisterStride;    ///< UART register stride in bytes.  Set to 0 for default register stride of 1 byte.\r
-  UINT16  ReceiveFifoDepth;  ///< UART receive FIFO depth in bytes. Set to 0 for a default FIFO depth of 16 bytes.\r
-  UINT16  TransmitFifoDepth; ///< UART transmit FIFO depth in bytes. Set to 0 for a default FIFO depth of 16 bytes.\r
-  UINT8   Reserved[2];\r
-} PCI_SERIAL_PARAMETER;\r
+\r
+/** Library Constructor\r
+\r
+  @retval RETURN_SUCCESS  Success.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+PlatformHookSerialPortConstructor (\r
+  VOID\r
+  )\r
+{\r
+  // Nothing to do here. This constructor is added to\r
+  // enable the chain of constructor invocation for\r
+  // dependent libraries.\r
+  return RETURN_SUCCESS;\r
+}\r
 \r
 /**\r
   Performs platform specific initialization required for the CPU to access\r
@@ -42,52 +47,49 @@ PlatformHookSerialPortInitialize (
   VOID\r
   )\r
 {\r
-  RETURN_STATUS         Status;\r
-  UINT32                DeviceVendor;\r
-  PCI_SERIAL_PARAMETER  *SerialParam;\r
-  SERIAL_PORT_INFO      SerialPortInfo;\r
-\r
-  Status = ParseSerialInfo (&SerialPortInfo);\r
-  if (RETURN_ERROR (Status)) {\r
-    return Status;\r
-  }\r
+  RETURN_STATUS                       Status;\r
+  UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO  *SerialPortInfo;\r
+  UINT8                               *GuidHob;\r
+  UNIVERSAL_PAYLOAD_GENERIC_HEADER    *GenericHeader;\r
 \r
-  if (SerialPortInfo.Type == PLD_SERIAL_TYPE_MEMORY_MAPPED) {\r
-    Status = PcdSetBoolS (PcdSerialUseMmio, TRUE);\r
-  } else { //IO\r
-    Status = PcdSetBoolS (PcdSerialUseMmio, FALSE);\r
-  }\r
-  if (RETURN_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-  Status = PcdSet64S (PcdSerialRegisterBase, SerialPortInfo.BaseAddr);\r
-  if (RETURN_ERROR (Status)) {\r
-    return Status;\r
+  GuidHob = GetFirstGuidHob (&gUniversalPayloadSerialPortInfoGuid);\r
+  if (GuidHob == NULL) {\r
+    return EFI_NOT_FOUND;\r
   }\r
 \r
-  Status = PcdSet32S (PcdSerialRegisterStride, SerialPortInfo.RegWidth);\r
-  if (RETURN_ERROR (Status)) {\r
-    return Status;\r
+  GenericHeader = (UNIVERSAL_PAYLOAD_GENERIC_HEADER *) GET_GUID_HOB_DATA (GuidHob);\r
+  if ((sizeof (UNIVERSAL_PAYLOAD_GENERIC_HEADER) > GET_GUID_HOB_DATA_SIZE (GuidHob)) || (GenericHeader->Length > GET_GUID_HOB_DATA_SIZE (GuidHob))) {\r
+    return EFI_NOT_FOUND;\r
   }\r
 \r
-  Status = PcdSet32S (PcdSerialBaudRate, SerialPortInfo.Baud);\r
-  if (RETURN_ERROR (Status)) {\r
-    return Status;\r
-  }\r
+  if (GenericHeader->Revision == UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO_REVISION) {\r
+    SerialPortInfo = (UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO *) GET_GUID_HOB_DATA (GuidHob);\r
+    if (GenericHeader->Length < UNIVERSAL_PAYLOAD_SIZEOF_THROUGH_FIELD (UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO, RegisterBase)) {\r
+      //\r
+      // Return if can't find the Serial Port Info Hob with enough length\r
+      //\r
+      return EFI_NOT_FOUND;\r
+    }\r
 \r
-  Status = PcdSet32S (PcdSerialClockRate, SerialPortInfo.InputHertz);\r
-  if (RETURN_ERROR (Status)) {\r
-    return Status;\r
-  }\r
+    Status = PcdSetBoolS (PcdSerialUseMmio, SerialPortInfo->UseMmio);\r
+    if (RETURN_ERROR (Status)) {\r
+      return Status;\r
+    }\r
+    Status = PcdSet64S (PcdSerialRegisterBase, SerialPortInfo->RegisterBase);\r
+    if (RETURN_ERROR (Status)) {\r
+      return Status;\r
+    }\r
+    Status = PcdSet32S (PcdSerialRegisterStride, SerialPortInfo->RegisterStride);\r
+    if (RETURN_ERROR (Status)) {\r
+      return Status;\r
+    }\r
+    Status = PcdSet32S (PcdSerialBaudRate, SerialPortInfo->BaudRate);\r
+    if (RETURN_ERROR (Status)) {\r
+      return Status;\r
+    }\r
 \r
-  if (SerialPortInfo.UartPciAddr >= 0x80000000) {\r
-    DeviceVendor = PciRead32 (SerialPortInfo.UartPciAddr & 0x0ffff000);\r
-    SerialParam  = PcdGetPtr(PcdPciSerialParameters);\r
-    SerialParam->VendorId  = (UINT16)DeviceVendor;\r
-    SerialParam->DeviceId  = DeviceVendor >> 16;\r
-    SerialParam->ClockRate = SerialPortInfo.InputHertz;\r
-    SerialParam->RegisterStride = (UINT8)SerialPortInfo.RegWidth;\r
+    return RETURN_SUCCESS;\r
   }\r
 \r
-  return RETURN_SUCCESS;\r
+  return EFI_NOT_FOUND;\r
 }\r
index 3eeb94d8faeedbe444e0ca3c3ff0e16952b2fc31..7ac6bfa1b1b08480f1f0be52bd63524d6a9995d1 100644 (file)
@@ -1,7 +1,7 @@
 ## @file\r
-#  Platform Hook Library instance for UART device.\r
+#  Platform Hook Library instance for UART device for Universal Payload.\r
 #\r
-#  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
+#  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>\r
 #\r
 #  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 #\r
 [Defines]\r
   INF_VERSION                    = 0x00010005\r
   BASE_NAME                      = PlatformHookLib\r
-  FILE_GUID                      = 40A2CBC6-CFB8-447b-A90E-198E88FD345E\r
+  FILE_GUID                      = 807E05AB-9411-429F-97F0-FE425BF6B094\r
   MODULE_TYPE                    = BASE\r
   VERSION_STRING                 = 1.0\r
   LIBRARY_CLASS                  = PlatformHookLib\r
-  CONSTRUCTOR                    = PlatformHookSerialPortInitialize\r
+  CONSTRUCTOR                    = PlatformHookSerialPortConstructor\r
 \r
 [Sources]\r
   PlatformHookLib.c\r
 \r
 [LibraryClasses]\r
-  BlParseLib\r
   PcdLib\r
-  PciLib\r
+  BaseLib\r
+  HobLib\r
+  DxeHobListLib\r
 \r
 [Packages]\r
   MdePkg/MdePkg.dec\r
   MdeModulePkg/MdeModulePkg.dec\r
   UefiPayloadPkg/UefiPayloadPkg.dec\r
 \r
+[Guids]\r
+  gUniversalPayloadSerialPortInfoGuid\r
+\r
 [Pcd]\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseMmio         ## PRODUCES\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase    ## PRODUCES\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdSerialBaudRate        ## PRODUCES\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterStride  ## PRODUCES\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialClockRate       ## PRODUCES\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdPciSerialParameters   ## PRODUCES\r
index 9ce2864f9fe3d1b2f5f9002141748ab75674a0e8..665a5a8adcef815c3e9b158bf2203314fa8db022 100644 (file)
@@ -1,7 +1,7 @@
 ## @file\r
 #  Slim Bootloader parse library.\r
 #\r
-#  Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>\r
+#  Copyright (c) 2019 - 2021, Intel Corporation. All rights reserved.<BR>\r
 #  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 #\r
 ##\r
@@ -43,4 +43,4 @@
   gEfiGraphicsDeviceInfoHobGuid\r
 \r
 [Pcd]\r
-  gUefiPayloadPkgTokenSpaceGuid.PcdPayloadStackTop\r
+  gUefiPayloadPkgTokenSpaceGuid.PcdBootloaderParameter\r
diff --git a/UefiPayloadPkg/Library/UniversalPayloadPlatformHookLib/PlatformHookLib.c b/UefiPayloadPkg/Library/UniversalPayloadPlatformHookLib/PlatformHookLib.c
deleted file mode 100644 (file)
index 004fcd8..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/** @file\r
-  Platform Hook Library instance for UART device.\r
-\r
-  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>\r
-  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#include <Base.h>\r
-#include <PiDxe.h>\r
-#include <UniversalPayload/SerialPortInfo.h>\r
-#include <Library/PlatformHookLib.h>\r
-#include <Library/PcdLib.h>\r
-#include <Library/HobLib.h>\r
-\r
-\r
-/** Library Constructor\r
-\r
-  @retval RETURN_SUCCESS  Success.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-PlatformHookSerialPortConstructor (\r
-  VOID\r
-  )\r
-{\r
-  // Nothing to do here. This constructor is added to\r
-  // enable the chain of constructor invocation for\r
-  // dependent libraries.\r
-  return RETURN_SUCCESS;\r
-}\r
-\r
-/**\r
-  Performs platform specific initialization required for the CPU to access\r
-  the hardware associated with a SerialPortLib instance.  This function does\r
-  not initialize the serial port hardware itself.  Instead, it initializes\r
-  hardware devices that are required for the CPU to access the serial port\r
-  hardware.  This function may be called more than once.\r
-\r
-  @retval RETURN_SUCCESS       The platform specific initialization succeeded.\r
-  @retval RETURN_DEVICE_ERROR  The platform specific initialization could not be completed.\r
-\r
-**/\r
-RETURN_STATUS\r
-EFIAPI\r
-PlatformHookSerialPortInitialize (\r
-  VOID\r
-  )\r
-{\r
-  RETURN_STATUS                       Status;\r
-  UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO  *SerialPortInfo;\r
-  UINT8                               *GuidHob;\r
-  UNIVERSAL_PAYLOAD_GENERIC_HEADER    *GenericHeader;\r
-\r
-  GuidHob = GetFirstGuidHob (&gUniversalPayloadSerialPortInfoGuid);\r
-  if (GuidHob == NULL) {\r
-    return EFI_NOT_FOUND;\r
-  }\r
-\r
-  GenericHeader = (UNIVERSAL_PAYLOAD_GENERIC_HEADER *) GET_GUID_HOB_DATA (GuidHob);\r
-  if ((sizeof (UNIVERSAL_PAYLOAD_GENERIC_HEADER) > GET_GUID_HOB_DATA_SIZE (GuidHob)) || (GenericHeader->Length > GET_GUID_HOB_DATA_SIZE (GuidHob))) {\r
-    return EFI_NOT_FOUND;\r
-  }\r
-\r
-  if (GenericHeader->Revision == UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO_REVISION) {\r
-    SerialPortInfo = (UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO *) GET_GUID_HOB_DATA (GuidHob);\r
-    if (GenericHeader->Length < UNIVERSAL_PAYLOAD_SIZEOF_THROUGH_FIELD (UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO, RegisterBase)) {\r
-      //\r
-      // Return if can't find the Serial Port Info Hob with enough length\r
-      //\r
-      return EFI_NOT_FOUND;\r
-    }\r
-\r
-    Status = PcdSetBoolS (PcdSerialUseMmio, SerialPortInfo->UseMmio);\r
-    if (RETURN_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-    Status = PcdSet64S (PcdSerialRegisterBase, SerialPortInfo->RegisterBase);\r
-    if (RETURN_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-    Status = PcdSet32S (PcdSerialRegisterStride, SerialPortInfo->RegisterStride);\r
-    if (RETURN_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-    Status = PcdSet32S (PcdSerialBaudRate, SerialPortInfo->BaudRate);\r
-    if (RETURN_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-\r
-    return RETURN_SUCCESS;\r
-  }\r
-\r
-  return EFI_NOT_FOUND;\r
-}\r
diff --git a/UefiPayloadPkg/Library/UniversalPayloadPlatformHookLib/PlatformHookLib.inf b/UefiPayloadPkg/Library/UniversalPayloadPlatformHookLib/PlatformHookLib.inf
deleted file mode 100644 (file)
index 7ac6bfa..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-## @file\r
-#  Platform Hook Library instance for UART device for Universal Payload.\r
-#\r
-#  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>\r
-#\r
-#  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-#\r
-##\r
-\r
-[Defines]\r
-  INF_VERSION                    = 0x00010005\r
-  BASE_NAME                      = PlatformHookLib\r
-  FILE_GUID                      = 807E05AB-9411-429F-97F0-FE425BF6B094\r
-  MODULE_TYPE                    = BASE\r
-  VERSION_STRING                 = 1.0\r
-  LIBRARY_CLASS                  = PlatformHookLib\r
-  CONSTRUCTOR                    = PlatformHookSerialPortConstructor\r
-\r
-[Sources]\r
-  PlatformHookLib.c\r
-\r
-[LibraryClasses]\r
-  PcdLib\r
-  BaseLib\r
-  HobLib\r
-  DxeHobListLib\r
-\r
-[Packages]\r
-  MdePkg/MdePkg.dec\r
-  MdeModulePkg/MdeModulePkg.dec\r
-  UefiPayloadPkg/UefiPayloadPkg.dec\r
-\r
-[Guids]\r
-  gUniversalPayloadSerialPortInfoGuid\r
-\r
-[Pcd]\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseMmio         ## PRODUCES\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase    ## PRODUCES\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialBaudRate        ## PRODUCES\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterStride  ## PRODUCES\r
diff --git a/UefiPayloadPkg/UefiPayloadEntry/Ia32/SecEntry.nasm b/UefiPayloadPkg/UefiPayloadEntry/Ia32/SecEntry.nasm
deleted file mode 100644 (file)
index fa5ed15..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-;------------------------------------------------------------------------------\r
-;*\r
-;*   Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.<BR>\r
-;*   SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-;------------------------------------------------------------------------------\r
-\r
-#include <Base.h>\r
-\r
-SECTION .text\r
-\r
-extern ASM_PFX(PayloadEntry)\r
-extern  ASM_PFX(PcdGet32 (PcdPayloadStackTop))\r
-\r
-;\r
-; SecCore Entry Point\r
-;\r
-; Processor is in flat protected mode\r
-\r
-global ASM_PFX(_ModuleEntryPoint)\r
-ASM_PFX(_ModuleEntryPoint):\r
-\r
-  ;\r
-  ; Disable all the interrupts\r
-  ;\r
-  cli\r
-\r
-  ;\r
-  ; Save the bootloader parameter base address\r
-  ;\r
-  mov   eax, [esp + 4]\r
-\r
-  mov   esp, FixedPcdGet32 (PcdPayloadStackTop)\r
-\r
-  ;\r
-  ; Push the bootloader parameter address onto new stack\r
-  ;\r
-  push  0\r
-  push  eax\r
-\r
-  ;\r
-  ; Call into C code\r
-  ;\r
-  call  ASM_PFX(PayloadEntry)\r
-  jmp   $\r
-\r
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
index 9922b56b39918e9c774fe5d789070e520022252a..de51c2fba9d3f5a3352745f5625dd6016e859ef3 100644 (file)
@@ -35,6 +35,7 @@
 #include <UniversalPayload/AcpiTable.h>\r
 #include <UniversalPayload/UniversalPayload.h>\r
 #include <UniversalPayload/ExtraData.h>\r
+#include <UniversalPayload/SerialPortInfo.h>\r
 #include <Guid/PcdDataBaseSignatureGuid.h>\r
 \r
 #define LEGACY_8259_MASK_REGISTER_MASTER  0x21\r
index 4c5170d9cc17a7d997b6e10e7a587a2fb3de540f..96e4bb81f4c25a87d7e372efbc2a004e46f93597 100644 (file)
   X64/VirtualMemory.c\r
   Ia32/DxeLoadFunc.c\r
   Ia32/IdtVectorAsm.nasm\r
-  Ia32/SecEntry.nasm\r
 \r
 [Sources.X64]\r
   X64/VirtualMemory.h\r
   X64/VirtualMemory.c\r
   X64/DxeLoadFunc.c\r
-  X64/SecEntry.nasm\r
 \r
 [Packages]\r
   MdePkg/MdePkg.dec\r
@@ -67,6 +65,7 @@
   gUefiAcpiBoardInfoGuid\r
   gUniversalPayloadSmbiosTableGuid\r
   gUniversalPayloadAcpiTableGuid\r
+  gUniversalPayloadSerialPortInfoGuid\r
 \r
 [FeaturePcd.IA32]\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode      ## CONSUMES\r
@@ -87,7 +86,7 @@
 \r
   gUefiPayloadPkgTokenSpaceGuid.PcdPayloadFdMemBase\r
   gUefiPayloadPkgTokenSpaceGuid.PcdPayloadFdMemSize\r
-  gUefiPayloadPkgTokenSpaceGuid.PcdPayloadStackTop\r
+  gUefiPayloadPkgTokenSpaceGuid.PcdBootloaderParameter\r
   gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize\r
 \r
   gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack               ## SOMETIMES_CONSUMES\r
index e7e05b744a8dad66e1c4b11a8a60b25632e12107..928bd2e42b70799fdb7f1a5bb2ea7d813c0a7616 100644 (file)
@@ -92,7 +92,6 @@
 \r
   gUefiPayloadPkgTokenSpaceGuid.PcdPayloadFdMemBase\r
   gUefiPayloadPkgTokenSpaceGuid.PcdPayloadFdMemSize\r
-  gUefiPayloadPkgTokenSpaceGuid.PcdPayloadStackTop\r
   gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize\r
 \r
   gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack               ## SOMETIMES_CONSUMES\r
diff --git a/UefiPayloadPkg/UefiPayloadEntry/X64/SecEntry.nasm b/UefiPayloadPkg/UefiPayloadEntry/X64/SecEntry.nasm
deleted file mode 100644 (file)
index 974cf77..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-;------------------------------------------------------------------------------\r
-;*\r
-;*   Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.<BR>\r
-;*   SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-;------------------------------------------------------------------------------\r
-\r
-#include <Base.h>\r
-\r
-DEFAULT REL\r
-SECTION .text\r
-\r
-extern ASM_PFX(PayloadEntry)\r
-extern  ASM_PFX(PcdGet32 (PcdPayloadStackTop))\r
-\r
-;\r
-; SecCore Entry Point\r
-;\r
-; Processor is in flat protected mode\r
-\r
-global ASM_PFX(_ModuleEntryPoint)\r
-ASM_PFX(_ModuleEntryPoint):\r
-\r
-  ;\r
-  ; Disable all the interrupts\r
-  ;\r
-  cli\r
-\r
-\r
-  mov   rsp, FixedPcdGet32 (PcdPayloadStackTop)\r
-\r
-  ;\r
-  ; Push the bootloader parameter address onto new stack\r
-  ;\r
-  push  rcx\r
-  mov   rax, 0\r
-  push  rax ; shadow space\r
-  push  rax\r
-  push  rax\r
-  push  rax\r
-\r
-  ;\r
-  ; Call into C code\r
-  ;\r
-  call  ASM_PFX(PayloadEntry)\r
-  jmp   $\r
-\r
index 8f0a7e3f95c851be0ba10293b38a0bcec4f84085..e5e8db8863d6413b22fc662f180e1d1e22718127 100644 (file)
@@ -60,8 +60,8 @@
 gUefiPayloadPkgTokenSpaceGuid.PcdPayloadFdMemBase|0|UINT32|0x10000001\r
 ## Provides the size of the payload binary in memory\r
 gUefiPayloadPkgTokenSpaceGuid.PcdPayloadFdMemSize|0|UINT32|0x10000002\r
-## Payload stack top\r
-gUefiPayloadPkgTokenSpaceGuid.PcdPayloadStackTop|0x90000|UINT32|0x10000004\r
+## Save bootloader parameter\r
+gUefiPayloadPkgTokenSpaceGuid.PcdBootloaderParameter|0|UINT64|0x10000004\r
 \r
 ## FFS filename to find the shell application.\r
 gUefiPayloadPkgTokenSpaceGuid.PcdShellFile|{ 0x83, 0xA5, 0x04, 0x7C, 0x3E, 0x9E, 0x1c, 0x4f, 0xAD, 0x65, 0xE0, 0x52, 0x68, 0xD0, 0xB4, 0xD1 }|VOID*|0x10000005\r
index a81b083f59581b074044830496f0392b3d1a4f1b..9319422efe4b993fe1c757debb912b5e681edbd0 100644 (file)
   IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf\r
   OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf\r
   RngLib|MdePkg/Library/BaseRngLib/BaseRngLib.inf\r
-\r
-!if $(UNIVERSAL_PAYLOAD) == TRUE\r
   HobLib|UefiPayloadPkg/Library/DxeHobLib/DxeHobLib.inf\r
-!else\r
-  HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf\r
-!endif\r
 \r
   #\r
   # UEFI & PI\r
   TimerLib|UefiPayloadPkg/Library/AcpiTimerLib/AcpiTimerLib.inf\r
   ResetSystemLib|UefiPayloadPkg/Library/ResetSystemLib/ResetSystemLib.inf\r
   SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf\r
-!if $(UNIVERSAL_PAYLOAD) == TRUE\r
-  PlatformHookLib|UefiPayloadPkg/Library/UniversalPayloadPlatformHookLib/PlatformHookLib.inf\r
-!else\r
   PlatformHookLib|UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.inf\r
-!endif\r
   PlatformBootManagerLib|UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf\r
   IoApicLib|PcAtChipsetPkg/Library/BaseIoApicLib/BaseIoApicLib.inf\r
 \r
 \r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber|$(MAX_LOGICAL_PROCESSORS)\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuNumberOfReservedVariableMtrrs|0\r
+  gUefiPayloadPkgTokenSpaceGuid.PcdBootloaderParameter|0\r
 \r
 ################################################################################\r
 #\r