--- /dev/null
+/*++\r
+\r
+Copyright (c) 2004, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+\r
+ ExtendedSalBootService.h\r
+\r
+Abstract:\r
+\r
+--*/\r
+\r
+#ifndef _EXTENDED_SAL_PROTOCOL_H_\r
+#define _EXTENDED_SAL_PROTOCOL_H_\r
+\r
+#include "SalApi.h"\r
+#include "LinkedList.h"\r
+#include EFI_PROTOCOL_CONSUMER (CpuIo)\r
+\r
+\r
+#define EXTENDED_SAL_BOOT_SERVICE_PROTOCOL_GUID \\r
+ {0xde0ee9a4,0x3c7a,0x44f2,0xb7,0x8b,0xe3,0xcc,0xd6,0x9c,0x3a,0xf7}\r
+\r
+#define EXTENDED_SAL_SIGNATURE EFI_SIGNATURE_32('e', 's', 'a', 'l')\r
+\r
+#define SAL_MIN_STATE_SIZE 0x400 * 1\r
+#define PAL_SCARTCH_SIZE 0x400 * 3\r
+#define ALIGN_MINSTATE_SIZE 512\r
+#define MAX_SAL_RECORD_SIZE 8*1024\r
+\r
+#define SAL_RUNTIMESERVICE\r
+\r
+typedef UINT16 EFI_SAL_PROCESSOR_ID;\r
+\r
+EFI_FORWARD_DECLARATION (EXTENDED_SAL_BOOT_SERVICE_PROTOCOL);\r
+\r
+typedef\r
+SAL_RUNTIMESERVICE\r
+SAL_RETURN_REGS\r
+(EFIAPI *SAL_EXTENDED_SAL_PROC) (\r
+ IN EFI_GUID *ClassGuid,\r
+ IN UINT64 FunctionId,\r
+ IN UINT64 Arg2,\r
+ IN UINT64 Arg3,\r
+ IN UINT64 Arg4,\r
+ IN UINT64 Arg5,\r
+ IN UINT64 Arg6,\r
+ IN UINT64 Arg7,\r
+ IN UINT64 Arg8\r
+ );\r
+\r
+typedef\r
+SAL_RUNTIMESERVICE\r
+SAL_RETURN_REGS\r
+(EFIAPI *SAL_INTERNAL_EXTENDED_SAL_PROC) (\r
+ IN UINT64 FunctionId,\r
+ IN UINT64 Arg2,\r
+ IN UINT64 Arg3,\r
+ IN UINT64 Arg4,\r
+ IN UINT64 Arg5,\r
+ IN UINT64 Arg6,\r
+ IN UINT64 Arg7,\r
+ IN UINT64 Arg8,\r
+ IN SAL_EXTENDED_SAL_PROC ExtendedSalProc,\r
+ IN BOOLEAN VirtualMode,\r
+ IN VOID *ModuleGlobal\r
+ ); \r
+\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EXTENDED_SAL_ADD_SST_INFO) (\r
+ IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This,\r
+ IN UINT16 SalAVersion,\r
+ IN UINT16 SalBVersion,\r
+ IN CHAR8 *OemId,\r
+ IN CHAR8 *ProductId\r
+ );\r
+\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EXTENDED_SAL_ADD_SST_ENTRY) (\r
+ IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This,\r
+ IN UINT8 EntryType,\r
+ IN UINT8 *TableEntry,\r
+ IN UINTN EntrySize\r
+ );\r
+\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EXTENDED_SAL_REGISTER_INTERNAL_PROC) (\r
+ IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This,\r
+ IN EFI_GUID *ClassGuid,\r
+ IN UINT64 FunctionId,\r
+ IN SAL_INTERNAL_EXTENDED_SAL_PROC InternalSalProc,\r
+ IN VOID *PhysicalModuleGlobal\r
+ );\r
+\r
+//\r
+// Extended Sal Boot Service Protocol Interface\r
+//\r
+typedef struct _EXTENDED_SAL_BOOT_SERVICE_PROTOCOL{\r
+ EXTENDED_SAL_ADD_SST_INFO AddSalSystemTableInfo;\r
+ EXTENDED_SAL_ADD_SST_ENTRY AddSalSystemTableEntry;\r
+ EXTENDED_SAL_REGISTER_INTERNAL_PROC AddExtendedSalProc; \r
+ SAL_EXTENDED_SAL_PROC ExtendedSalProc;\r
+ SAL_PROC SalProc;\r
+} EXTENDED_SAL_BOOT_SERVICE_PROTOCOL;\r
+\r
+extern EFI_GUID gEfiExtendedSalBootServiceProtocolGuid;\r
+\r
+#endif\r