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