summaryrefslogtreecommitdiffstats
path: root/IntelFsp2Pkg
diff options
context:
space:
mode:
authorAshraf Ali <ashraf.ali.s@intel.com>2024-09-08 20:45:00 +0530
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2024-09-30 08:15:35 +0000
commita6b472131e6f49ec6ec309a06fed3b70b97a8602 (patch)
tree72c433dbe32f29d22813aa10b3801ccc1472d38e /IntelFsp2Pkg
parent21e1fc5400c0d916ef9023a08b62eaf708727def (diff)
downloadedk2-a6b472131e6f49ec6ec309a06fed3b70b97a8602.tar.gz
edk2-a6b472131e6f49ec6ec309a06fed3b70b97a8602.tar.bz2
edk2-a6b472131e6f49ec6ec309a06fed3b70b97a8602.zip
IntelFsp2Pkg : Refactor BaseFspCommonLib to reduce binary size
Moved FspApiReturnStatusReset API to a separate file to eliminate unnecessary inclusion of FspApiReturnStatusReset APIs in driver binary. When the compiler linking the Object files it may not remove all the unused from NASM OBJs. This change is to reorganize the C files to minimize the impact of the NASM behavior resulting is code size reduction. Signed-off-by: Ashraf Ali <ashraf.ali.s@intel.com>
Diffstat (limited to 'IntelFsp2Pkg')
-rw-r--r--IntelFsp2Pkg/Library/BaseFspCommonLib/BaseFspCommonLib.inf1
-rw-r--r--IntelFsp2Pkg/Library/BaseFspCommonLib/FspCommonLib.c30
-rw-r--r--IntelFsp2Pkg/Library/BaseFspCommonLib/ReturnStatus.c42
3 files changed, 43 insertions, 30 deletions
diff --git a/IntelFsp2Pkg/Library/BaseFspCommonLib/BaseFspCommonLib.inf b/IntelFsp2Pkg/Library/BaseFspCommonLib/BaseFspCommonLib.inf
index 8badd924dc..52fe0f8ec6 100644
--- a/IntelFsp2Pkg/Library/BaseFspCommonLib/BaseFspCommonLib.inf
+++ b/IntelFsp2Pkg/Library/BaseFspCommonLib/BaseFspCommonLib.inf
@@ -16,6 +16,7 @@
[Sources]
FspCommonLib.c
+ ReturnStatus.c
[Packages]
MdePkg/MdePkg.dec
diff --git a/IntelFsp2Pkg/Library/BaseFspCommonLib/FspCommonLib.c b/IntelFsp2Pkg/Library/BaseFspCommonLib/FspCommonLib.c
index 3ecc5bd265..663f9b3c0a 100644
--- a/IntelFsp2Pkg/Library/BaseFspCommonLib/FspCommonLib.c
+++ b/IntelFsp2Pkg/Library/BaseFspCommonLib/FspCommonLib.c
@@ -551,33 +551,3 @@ SetPhaseStatusCode (
FspData = GetFspGlobalDataPointer ();
FspData->StatusCode = StatusCode;
}
-
-/**
- This function updates the return status of the FSP API with requested reset type and returns to Boot Loader.
-
- @param[in] FspResetType Reset type that needs to returned as API return status
-
-**/
-VOID
-EFIAPI
-FspApiReturnStatusReset (
- IN EFI_STATUS FspResetType
- )
-{
- volatile BOOLEAN LoopUntilReset;
-
- LoopUntilReset = TRUE;
- DEBUG ((DEBUG_INFO, "FSP returning control to Bootloader with reset required return status %x\n", FspResetType));
- if (GetFspGlobalDataPointer ()->FspMode == FSP_IN_API_MODE) {
- ///
- /// Below code is not an infinite loop.The control will go back to API calling function in BootLoader each time BootLoader
- /// calls the FSP API without honoring the reset request by FSP
- ///
- do {
- SetFspApiReturnStatus (FspResetType);
- Pei2LoaderSwitchStack ();
- DEBUG ((DEBUG_ERROR, "!!!ERROR: FSP has requested BootLoader for reset. But BootLoader has not honored the reset\n"));
- DEBUG ((DEBUG_ERROR, "!!!ERROR: Please add support in BootLoader to honor the reset request from FSP\n"));
- } while (LoopUntilReset);
- }
-}
diff --git a/IntelFsp2Pkg/Library/BaseFspCommonLib/ReturnStatus.c b/IntelFsp2Pkg/Library/BaseFspCommonLib/ReturnStatus.c
new file mode 100644
index 0000000000..1854e8c99c
--- /dev/null
+++ b/IntelFsp2Pkg/Library/BaseFspCommonLib/ReturnStatus.c
@@ -0,0 +1,42 @@
+/** @file
+ Copyright (c) 2014 - 2022, Intel Corporation. All rights reserved.<BR>
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#include <PiPei.h>
+#include <Library/BaseLib.h>
+#include <Library/DebugLib.h>
+#include <Library/PcdLib.h>
+#include <Library/FspCommonLib.h>
+#include <FspEas.h>
+#include <Library/FspSwitchStackLib.h>
+
+/**
+ This function updates the return status of the FSP API with requested reset type and returns to Boot Loader.
+
+ @param[in] FspResetType Reset type that needs to returned as API return status
+
+**/
+VOID
+EFIAPI
+FspApiReturnStatusReset (
+ IN EFI_STATUS FspResetType
+ )
+{
+ volatile BOOLEAN LoopUntilReset;
+
+ LoopUntilReset = TRUE;
+ DEBUG ((DEBUG_INFO, "FSP returning control to Bootloader with reset required return status %x\n", FspResetType));
+ if (GetFspGlobalDataPointer ()->FspMode == FSP_IN_API_MODE) {
+ ///
+ /// Below code is not an infinite loop.The control will go back to API calling function in BootLoader each time BootLoader
+ /// calls the FSP API without honoring the reset request by FSP
+ ///
+ do {
+ SetFspApiReturnStatus (FspResetType);
+ Pei2LoaderSwitchStack ();
+ DEBUG ((DEBUG_ERROR, "!!!ERROR: FSP has requested BootLoader for reset. But BootLoader has not honored the reset\n"));
+ DEBUG ((DEBUG_ERROR, "!!!ERROR: Please add support in BootLoader to honor the reset request from FSP\n"));
+ } while (LoopUntilReset);
+ }
+}