REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3867 Add BaseFspCommonLib Support for X64. Cc: Chasel Chiu <chasel.chiu@intel.com> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Ashraf Ali S <ashraf.ali.s@intel.com> Signed-off-by: Ted Kuo <ted.kuo@intel.com> Reviewed-by: Chasel Chiu <chasel.chiu@intel.com>
		
			
				
	
	
		
			309 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			309 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
| 
 | |
|   Copyright (c) 2014 - 2019, Intel Corporation. All rights reserved.<BR>
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef _FSP_COMMON_LIB_H_
 | |
| #define _FSP_COMMON_LIB_H_
 | |
| 
 | |
| #include <FspGlobalData.h>
 | |
| #include <FspMeasurePointId.h>
 | |
| 
 | |
| /**
 | |
|   This function sets the FSP global data pointer.
 | |
| 
 | |
|   @param[in] FspData       Fsp global data pointer.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| SetFspGlobalDataPointer (
 | |
|   IN FSP_GLOBAL_DATA  *FspData
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function gets the FSP global data pointer.
 | |
| 
 | |
| **/
 | |
| FSP_GLOBAL_DATA *
 | |
| EFIAPI
 | |
| GetFspGlobalDataPointer (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function gets back the FSP API first parameter passed by the bootloader.
 | |
| 
 | |
|   @retval ApiParameter FSP API first parameter passed by the bootloader.
 | |
| **/
 | |
| UINTN
 | |
| EFIAPI
 | |
| GetFspApiParameter (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function gets back the FSP API second parameter passed by the bootloader.
 | |
| 
 | |
|   @retval ApiParameter FSP API second parameter passed by the bootloader.
 | |
| **/
 | |
| UINTN
 | |
| EFIAPI
 | |
| GetFspApiParameter2 (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function returns the FSP entry stack pointer from address of the first API parameter.
 | |
| 
 | |
|   @retval FSP entry stack pointer.
 | |
| **/
 | |
| VOID *
 | |
| EFIAPI
 | |
| GetFspEntryStack (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function sets the FSP API parameter in the stack.
 | |
| 
 | |
|    @param[in] Value       New parameter value.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| SetFspApiParameter (
 | |
|   IN UINT32  Value
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function set the API status code returned to the BootLoader.
 | |
| 
 | |
|   @param[in] ReturnStatus       Status code to return.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| SetFspApiReturnStatus (
 | |
|   IN UINTN  ReturnStatus
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function sets the context switching stack to a new stack frame.
 | |
| 
 | |
|   @param[in] NewStackTop       New core stack to be set.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| SetFspCoreStackPointer (
 | |
|   IN VOID  *NewStackTop
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function sets the platform specific data pointer.
 | |
| 
 | |
|   @param[in] PlatformData       Fsp platform specific data pointer.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| SetFspPlatformDataPointer (
 | |
|   IN VOID  *PlatformData
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function gets the platform specific data pointer.
 | |
| 
 | |
|    @param[in] PlatformData       Fsp platform specific data pointer.
 | |
| 
 | |
| **/
 | |
| VOID *
 | |
| EFIAPI
 | |
| GetFspPlatformDataPointer (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function sets the UPD data pointer.
 | |
| 
 | |
|   @param[in] UpdDataPtr   UPD data pointer.
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| SetFspUpdDataPointer (
 | |
|   IN VOID  *UpdDataPtr
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function gets the UPD data pointer.
 | |
| 
 | |
|   @return UpdDataPtr   UPD data pointer.
 | |
| **/
 | |
| VOID *
 | |
| EFIAPI
 | |
| GetFspUpdDataPointer (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function sets the memory init UPD data pointer.
 | |
| 
 | |
|   @param[in] MemoryInitUpdPtr   memory init UPD data pointer.
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| SetFspMemoryInitUpdDataPointer (
 | |
|   IN VOID  *MemoryInitUpdPtr
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function gets the memory init UPD data pointer.
 | |
| 
 | |
|   @return memory init UPD data pointer.
 | |
| **/
 | |
| VOID *
 | |
| EFIAPI
 | |
| GetFspMemoryInitUpdDataPointer (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function sets the silicon init UPD data pointer.
 | |
| 
 | |
|   @param[in] SiliconInitUpdPtr   silicon init UPD data pointer.
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| SetFspSiliconInitUpdDataPointer (
 | |
|   IN VOID  *SiliconInitUpdPtr
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function gets the silicon init UPD data pointer.
 | |
| 
 | |
|   @return silicon init UPD data pointer.
 | |
| **/
 | |
| VOID *
 | |
| EFIAPI
 | |
| GetFspSiliconInitUpdDataPointer (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Set FSP measurement point timestamp.
 | |
| 
 | |
|   @param[in] Id       Measurement point ID.
 | |
| 
 | |
|   @return performance timestamp.
 | |
| **/
 | |
| UINT64
 | |
| EFIAPI
 | |
| SetFspMeasurePoint (
 | |
|   IN UINT8  Id
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function gets the FSP info header pointer.
 | |
| 
 | |
|   @retval FspInfoHeader   FSP info header pointer
 | |
| **/
 | |
| FSP_INFO_HEADER *
 | |
| EFIAPI
 | |
| GetFspInfoHeader (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function sets the FSP info header pointer.
 | |
| 
 | |
|   @param[in] FspInfoHeader   FSP info header pointer
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| SetFspInfoHeader (
 | |
|   FSP_INFO_HEADER  *FspInfoHeader
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function gets the FSP info header pointer from the API context.
 | |
| 
 | |
|   @retval FspInfoHeader   FSP info header pointer
 | |
| **/
 | |
| FSP_INFO_HEADER *
 | |
| EFIAPI
 | |
| GetFspInfoHeaderFromApiContext (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function gets the CfgRegion data pointer.
 | |
| 
 | |
|   @return CfgRegion data pointer.
 | |
| **/
 | |
| VOID *
 | |
| EFIAPI
 | |
| GetFspCfgRegionDataPointer (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function gets FSP API calling mode.
 | |
| 
 | |
|   @retval API calling mode
 | |
| **/
 | |
| UINT8
 | |
| EFIAPI
 | |
| GetFspApiCallingIndex (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function sets FSP API calling mode.
 | |
| 
 | |
|   @param[in] Index     API calling index
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| SetFspApiCallingIndex (
 | |
|   UINT8  Index
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function gets FSP Phase StatusCode.
 | |
| 
 | |
|   @retval StatusCode
 | |
| **/
 | |
| UINT32
 | |
| EFIAPI
 | |
| GetPhaseStatusCode (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function sets FSP Phase StatusCode.
 | |
| 
 | |
|   @param[in] Mode     Phase StatusCode
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| SetPhaseStatusCode (
 | |
|   UINT32  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 UINT32  FspResetType
 | |
|   );
 | |
| 
 | |
| #endif
 |