#define _FSP_API_H_\r
\r
#include <Pi/PiStatusCode.h>\r
+#include <Base.h>\r
\r
///\r
/// FSP Reset Status code\r
-/// These are defined in FSP EAS v2.0 section 11.2.2 - OEM Status Code\r
+/// These are defined in FSP EAS v2.4 section 13.2.2 - OEM Status Code\r
/// @{\r
-#define FSP_STATUS_RESET_REQUIRED_COLD 0x40000001\r
-#define FSP_STATUS_RESET_REQUIRED_WARM 0x40000002\r
-#define FSP_STATUS_RESET_REQUIRED_3 0x40000003\r
-#define FSP_STATUS_RESET_REQUIRED_4 0x40000004\r
-#define FSP_STATUS_RESET_REQUIRED_5 0x40000005\r
-#define FSP_STATUS_RESET_REQUIRED_6 0x40000006\r
-#define FSP_STATUS_RESET_REQUIRED_7 0x40000007\r
-#define FSP_STATUS_RESET_REQUIRED_8 0x40000008\r
+\r
+#define ENCODE_RESET_REQUEST(ResetType) \\r
+ ((EFI_STATUS)((MAX_BIT >> 1) | (ResetType)))\r
+#define FSP_STATUS_RESET_REQUIRED_COLD ENCODE_RESET_REQUEST(1)\r
+#define FSP_STATUS_RESET_REQUIRED_WARM ENCODE_RESET_REQUEST(2)\r
+#define FSP_STATUS_RESET_REQUIRED_3 ENCODE_RESET_REQUEST(3)\r
+#define FSP_STATUS_RESET_REQUIRED_4 ENCODE_RESET_REQUEST(4)\r
+#define FSP_STATUS_RESET_REQUIRED_5 ENCODE_RESET_REQUEST(5)\r
+#define FSP_STATUS_RESET_REQUIRED_6 ENCODE_RESET_REQUEST(6)\r
+#define FSP_STATUS_RESET_REQUIRED_7 ENCODE_RESET_REQUEST(7)\r
+#define FSP_STATUS_RESET_REQUIRED_8 ENCODE_RESET_REQUEST(8)\r
+#define FSP_STATUS_VARIABLE_REQUEST ENCODE_RESET_REQUEST(10)\r
/// @}\r
\r
///\r
///\r
/// Revision of the structure is 2 for this version of the specification.\r
///\r
- UINT8 Revision;\r
- UINT8 Reserved[3];\r
+ UINT8 Revision;\r
+ UINT8 Reserved[3];\r
///\r
/// Length of the structure in bytes. The current value for this field is 32.\r
///\r
- UINT32 Length;\r
+ UINT32 Length;\r
///\r
/// FspDebugHandler Optional debug handler for the bootloader to receive debug messages\r
/// occurring during FSP execution.\r
///\r
- EFI_PHYSICAL_ADDRESS FspDebugHandler;\r
- UINT8 Reserved1[16];\r
+ EFI_PHYSICAL_ADDRESS FspDebugHandler;\r
+ UINT8 Reserved1[16];\r
} FSPT_ARCH2_UPD;\r
\r
///\r
///\r
/// Revision of the structure is 3 for this version of the specification.\r
///\r
- UINT8 Revision;\r
- UINT8 Reserved[3];\r
+ UINT8 Revision;\r
+ UINT8 Reserved[3];\r
///\r
/// Length of the structure in bytes. The current value for this field is 64.\r
///\r
- UINT32 Length;\r
+ UINT32 Length;\r
///\r
/// Pointer to the temporary stack base address to be\r
/// consumed inside FspMemoryInit() API.\r
///\r
- EFI_PHYSICAL_ADDRESS StackBase;\r
+ EFI_PHYSICAL_ADDRESS StackBase;\r
///\r
/// Temporary stack size to be consumed inside\r
/// FspMemoryInit() API.\r
///\r
- UINT64 StackSize;\r
+ UINT64 StackSize;\r
///\r
/// Size of memory to be reserved by FSP below "top\r
/// of low usable memory" for bootloader usage.\r
///\r
- UINT32 BootLoaderTolumSize;\r
+ UINT32 BootLoaderTolumSize;\r
///\r
/// Current boot mode.\r
///\r
- UINT32 BootMode;\r
+ UINT32 BootMode;\r
///\r
/// Optional event handler for the bootloader to be informed of events occurring during FSP execution.\r
/// This value is only valid if Revision is >= 2.\r
///\r
- EFI_PHYSICAL_ADDRESS FspEventHandler;\r
- UINT8 Reserved1[24];\r
+ EFI_PHYSICAL_ADDRESS FspEventHandler;\r
+ UINT8 Reserved1[24];\r
} FSPM_ARCH2_UPD;\r
\r
///\r
///\r
/// Revision of the structure is 2 for this version of the specification.\r
///\r
- UINT8 Revision;\r
- UINT8 Reserved[3];\r
+ UINT8 Revision;\r
+ UINT8 Reserved[3];\r
///\r
/// Length of the structure in bytes. The current value for this field is 32.\r
///\r
- UINT32 Length;\r
+ UINT32 Length;\r
///\r
/// FspEventHandler Optional event handler for the bootloader to be informed of events\r
/// occurring during FSP execution.\r
///\r
- EFI_PHYSICAL_ADDRESS FspEventHandler;\r
- UINT8 Reserved1[16];\r
+ EFI_PHYSICAL_ADDRESS FspEventHandler;\r
+ UINT8 Reserved1[16];\r
} FSPS_ARCH2_UPD;\r
\r
///\r
UINT32 StackContextLen;\r
\r
FspData = GetFspGlobalDataPointer ();\r
- StackContextLen = sizeof(CONTEXT_STACK) / sizeof(UINTN);\r
+ StackContextLen = sizeof (CONTEXT_STACK) / sizeof (UINTN);\r
\r
//\r
// Reserve space for the ContinuationFunc two parameters\r
//\r
- OldStack = (UINTN *)FspData->CoreStack;\r
- NewStack = (UINTN *)NewStackTop - StackContextLen - 2;\r
+ OldStack = (UINTN *)FspData->CoreStack;\r
+ NewStack = (UINTN *)NewStackTop - StackContextLen - 2;\r
FspData->CoreStack = (UINTN)NewStack;\r
while (StackContextLen-- != 0) {\r
*NewStack++ = *OldStack++;\r
VOID\r
EFIAPI\r
FspApiReturnStatusReset (\r
- IN UINT32 FspResetType\r
+ IN EFI_STATUS FspResetType\r
)\r
{\r
volatile BOOLEAN LoopUntilReset;\r
/// calls the FSP API without honoring the reset request by FSP\r
///\r
do {\r
- SetFspApiReturnStatus ((EFI_STATUS)FspResetType);\r
+ SetFspApiReturnStatus (FspResetType);\r
Pei2LoaderSwitchStack ();\r
DEBUG ((DEBUG_ERROR, "!!!ERROR: FSP has requested BootLoader for reset. But BootLoader has not honored the reset\n"));\r
DEBUG ((DEBUG_ERROR, "!!!ERROR: Please add support in BootLoader to honor the reset request from FSP\n"));\r