1 /*++ 2 3 Copyright (c) 2004, Intel Corporation. All rights reserved.<BR> 4 This program and the accompanying materials 5 are licensed and made available under the terms and conditions of the BSD License 6 which accompanies this distribution. The full text of the license may be found at 7 http://opensource.org/licenses/bsd-license.php 8 9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11 12 Module Name: 13 14 ExtendedSalBootService.h 15 16 Abstract: 17 18 --*/ 19 20 #ifndef _EXTENDED_SAL_PROTOCOL_H_ 21 #define _EXTENDED_SAL_PROTOCOL_H_ 22 23 #include "SalApi.h" 24 #include "LinkedList.h" 25 #include EFI_PROTOCOL_CONSUMER (CpuIo) 26 27 28 #define EXTENDED_SAL_BOOT_SERVICE_PROTOCOL_GUID \ 29 {0xde0ee9a4,0x3c7a,0x44f2,{0xb7,0x8b,0xe3,0xcc,0xd6,0x9c,0x3a,0xf7}} 30 31 #define EXTENDED_SAL_SIGNATURE EFI_SIGNATURE_32('e', 's', 'a', 'l') 32 33 #define SAL_MIN_STATE_SIZE 0x400 * 1 34 #define PAL_SCARTCH_SIZE 0x400 * 3 35 #define ALIGN_MINSTATE_SIZE 512 36 #define MAX_SAL_RECORD_SIZE 8*1024 37 38 #define SAL_RUNTIMESERVICE 39 40 typedef UINT16 EFI_SAL_PROCESSOR_ID; 41 42 EFI_FORWARD_DECLARATION (EXTENDED_SAL_BOOT_SERVICE_PROTOCOL); 43 44 typedef 45 SAL_RUNTIMESERVICE 46 SAL_RETURN_REGS 47 (EFIAPI *SAL_EXTENDED_SAL_PROC) ( 48 IN EFI_GUID *ClassGuid, 49 IN UINT64 FunctionId, 50 IN UINT64 Arg2, 51 IN UINT64 Arg3, 52 IN UINT64 Arg4, 53 IN UINT64 Arg5, 54 IN UINT64 Arg6, 55 IN UINT64 Arg7, 56 IN UINT64 Arg8 57 ); 58 59 typedef 60 SAL_RUNTIMESERVICE 61 SAL_RETURN_REGS 62 (EFIAPI *SAL_INTERNAL_EXTENDED_SAL_PROC) ( 63 IN UINT64 FunctionId, 64 IN UINT64 Arg2, 65 IN UINT64 Arg3, 66 IN UINT64 Arg4, 67 IN UINT64 Arg5, 68 IN UINT64 Arg6, 69 IN UINT64 Arg7, 70 IN UINT64 Arg8, 71 IN SAL_EXTENDED_SAL_PROC ExtendedSalProc, 72 IN BOOLEAN VirtualMode, 73 IN VOID *ModuleGlobal 74 ); 75 76 typedef 77 EFI_STATUS 78 (EFIAPI *EXTENDED_SAL_ADD_SST_INFO) ( 79 IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This, 80 IN UINT16 SalAVersion, 81 IN UINT16 SalBVersion, 82 IN CHAR8 *OemId, 83 IN CHAR8 *ProductId 84 ); 85 86 typedef 87 EFI_STATUS 88 (EFIAPI *EXTENDED_SAL_ADD_SST_ENTRY) ( 89 IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This, 90 IN UINT8 EntryType, 91 IN UINT8 *TableEntry, 92 IN UINTN EntrySize 93 ); 94 95 typedef 96 EFI_STATUS 97 (EFIAPI *EXTENDED_SAL_REGISTER_INTERNAL_PROC) ( 98 IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This, 99 IN EFI_GUID *ClassGuid, 100 IN UINT64 FunctionId, 101 IN SAL_INTERNAL_EXTENDED_SAL_PROC InternalSalProc, 102 IN VOID *PhysicalModuleGlobal 103 ); 104 105 // 106 // Extended Sal Boot Service Protocol Interface 107 // 108 struct _EXTENDED_SAL_BOOT_SERVICE_PROTOCOL { 109 EXTENDED_SAL_ADD_SST_INFO AddSalSystemTableInfo; 110 EXTENDED_SAL_ADD_SST_ENTRY AddSalSystemTableEntry; 111 EXTENDED_SAL_REGISTER_INTERNAL_PROC AddExtendedSalProc; 112 SAL_EXTENDED_SAL_PROC ExtendedSalProc; 113 SAL_PROC SalProc; 114 }; 115 116 extern EFI_GUID gEfiExtendedSalBootServiceProtocolGuid; 117 118 #endif 119