summaryrefslogtreecommitdiffstats
path: root/IntelFsp2Pkg/FspSecCore/SecFsp.c
diff options
context:
space:
mode:
authorChasel Chiu <chasel.chiu@intel.com>2020-04-30 09:28:35 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2020-05-14 12:34:01 +0000
commitf2cdb268ef04eeec51948b5d81eeca5cab5ed9af (patch)
tree989349555cc3b783737d9aa2a6a56a67f7e63eac /IntelFsp2Pkg/FspSecCore/SecFsp.c
parentceacd9e992cd12f3c07ae1a28a75a6b8750718aa (diff)
downloadedk2-f2cdb268ef04eeec51948b5d81eeca5cab5ed9af.tar.gz
edk2-f2cdb268ef04eeec51948b5d81eeca5cab5ed9af.tar.bz2
edk2-f2cdb268ef04eeec51948b5d81eeca5cab5ed9af.zip
IntelFsp2Pkg: Support Multi-Phase SiInit and debug handlers.
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2698 To enhance FSP silicon initialization flexibility an optional Multi-Phase API is introduced and FSP header needs update for new API offset. Also new SecCore module created for FspMultiPhaseSiInit API New ARCH_UPD introduced for enhancing FSP debug message flexibility now bootloader can pass its own debug handler function pointer and FSP will call the function to handle debug message. To support calling bootloader functions, a FspGlobalData field added to indicate if FSP needs to switch stack when FSP running on separate stack from bootloader. Cc: Maurice Ma <maurice.ma@intel.com> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com> Cc: Star Zeng <star.zeng@intel.com> Signed-off-by: Chasel Chiu <chasel.chiu@intel.com> Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
Diffstat (limited to 'IntelFsp2Pkg/FspSecCore/SecFsp.c')
-rw-r--r--IntelFsp2Pkg/FspSecCore/SecFsp.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/IntelFsp2Pkg/FspSecCore/SecFsp.c b/IntelFsp2Pkg/FspSecCore/SecFsp.c
index 446d1730e9..216f7bb6c5 100644
--- a/IntelFsp2Pkg/FspSecCore/SecFsp.c
+++ b/IntelFsp2Pkg/FspSecCore/SecFsp.c
@@ -1,6 +1,6 @@
/** @file
- Copyright (c) 2014 - 2019, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2014 - 2020, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -161,6 +161,16 @@ FspGlobalDataInit (
SetFspSiliconInitUpdDataPointer (NULL);
//
+ // Initialize OnSeparateStack value.
+ //
+ if (PcdGet8 (PcdFspHeapSizePercentage) != 0) {
+ //
+ // FSP is running on its own stack and may need switching stack when calling bootloader functions.
+ //
+ GetFspGlobalDataPointer ()->OnSeparateStack = 1;
+ }
+
+ //
// Initialize serial port
// It might have been done in ProcessLibraryConstructorList(), however,
// the FSP global data is not initialized at that time. So do it again