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