mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-19 11:44:24 +02:00
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>
97 lines
2.4 KiB
C
97 lines
2.4 KiB
C
/** @file
|
|
|
|
Copyright (c) 2015 - 2020, Intel Corporation. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#ifndef _FSP_SEC_PLATFORM_LIB_H_
|
|
#define _FSP_SEC_PLATFORM_LIB_H_
|
|
|
|
/**
|
|
This function performs platform level initialization.
|
|
|
|
This function must be in ASM file, because stack is not established yet.
|
|
This function is optional. If a library instance does not provide this function, the default empty one will be used.
|
|
|
|
The callee should not use XMM6/XMM7.
|
|
The return address is saved in MM7.
|
|
|
|
@retval in saved in EAX - 0 means platform initialization success.
|
|
other means platform initialization fail.
|
|
**/
|
|
UINT32
|
|
EFIAPI
|
|
SecPlatformInit (
|
|
VOID
|
|
);
|
|
|
|
/**
|
|
This function loads Microcode.
|
|
|
|
This function must be in ASM file, because stack is not established yet.
|
|
This function is optional. If a library instance does not provide this function, the default one will be used.
|
|
|
|
The callee should not use XMM6/XMM7.
|
|
The return address is saved in MM7.
|
|
|
|
@param[in] FsptUpdDataPtr Address pointer to the FSPT_UPD data structure. It is saved in ESP.
|
|
|
|
@retval in saved in EAX - 0 means Microcode is loaded successfully.
|
|
other means Microcode is not loaded successfully.
|
|
**/
|
|
UINT32
|
|
EFIAPI
|
|
LoadMicrocode (
|
|
IN VOID *FsptUpdDataPtr
|
|
);
|
|
|
|
/**
|
|
This function initializes the CAR.
|
|
|
|
This function must be in ASM file, because stack is not established yet.
|
|
|
|
The callee should not use XMM6/XMM7.
|
|
The return address is saved in MM7.
|
|
|
|
@param[in] FsptUpdDataPtr Address pointer to the FSPT_UPD data structure. It is saved in ESP.
|
|
|
|
@retval in saved in EAX - 0 means CAR initialization success.
|
|
other means CAR initialization fail.
|
|
**/
|
|
UINT32
|
|
EFIAPI
|
|
SecCarInit (
|
|
IN VOID *FsptUpdDataPtr
|
|
);
|
|
|
|
/**
|
|
This function check the signature of UPD.
|
|
|
|
@param[in] ApiIdx Internal index of the FSP API.
|
|
@param[in] ApiParam Parameter of the FSP API.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
FspUpdSignatureCheck (
|
|
IN UINT32 ApiIdx,
|
|
IN VOID *ApiParam
|
|
);
|
|
|
|
/**
|
|
This function handles FspMultiPhaseSiInitApi.
|
|
|
|
@param[in] ApiIdx Internal index of the FSP API.
|
|
@param[in] ApiParam Parameter of the FSP API.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
FspMultiPhaseSiInitApiHandler (
|
|
IN UINT32 ApiIdx,
|
|
IN VOID *ApiParam
|
|
);
|
|
|
|
#endif
|