5
//Copyright (c) 1999 Intel Corporation
13
// Main SAL interface routins for IA-64 calls.
20
// return value that mimicks r8,r9,r10 & r11 registers
28
#define SAL_PCI_CONFIG_READ 0x01000010
29
#define SAL_PCI_CONFIG_WRITE 0x01000011
31
typedef VOID (*PFN)();
32
typedef rArg (*PFN_SAL_PROC)(UINT64,UINT64,UINT64,UINT64,UINT64,UINT64,UINT64,UINT64);
33
typedef rArg (*PFN_SAL_CALLBACK)(UINT64,UINT64,UINT64,UINT64,UINT64,UINT64,UINT64,UINT64);
35
typedef struct _PLABEL {
36
UINT64 ProcEntryPoint;
40
typedef struct tagIA32_BIOS_REGISTER_STATE {
57
// instruction pointer
70
} IA32_BIOS_REGISTER_STATE;
72
VOID EFIInitMsg(VOID);
75
PlRegisterAndStartTimer(
80
PlDeRegisterAndCancelTimer(VOID);
92
OUT rArg *Results OPTIONAL
105
OUT rArg *Results OPTIONAL
119
OUT rArg *Results OPTIONAL
123
extern PLABEL RtGlobalSalProcEntry;
124
extern PLABEL RtGlobalSALCallBack;
142
} SAL_SYSTEM_TABLE_HDR;
144
#define SAL_ST_ENTRY_POINT 0
145
#define SAL_ST_MEMORY_DESCRIPTOR 1
146
#define SAL_ST_PLATFORM_FEATURES 2
147
#define SAL_ST_TR_USAGE 3
149
#define SAL_ST_AP_WAKEUP 5
152
UINT8 Type; // Type == 0
156
UINT64 GlobalDataPointer;
158
} SAL_ST_ENTRY_POINT_DESCRIPTOR;
161
UINT8 Type; // Type == 1
162
UINT8 NeedVirtualRegistration;
163
UINT8 MemoryAttributes;
164
UINT8 PageAccessRights;
165
UINT8 SupportedAttributes;
168
UINT64 PhysicalMemoryAddress;
172
} SAL_ST_MEMORY_DESCRIPTOR_ENTRY;
177
#define SAL_SAPIC_IPI_BLOCK 0x0002
178
#define SAL_IO_PORT_MAPPING 0x0003
181
UINT8 Type; // Type == 2
182
UINT8 PlatformFeatures;
184
} SAL_ST_MEMORY_DECRIPTOR;
187
UINT8 Type; // Type == 3
191
UINT64 VirtualAddress;
192
UINT64 EncodedPageSize;
194
} SAL_ST_TR_DECRIPTOR;
197
UINT64 NumberOfProcessors;
198
UINT64 LocalIDRegister;
199
} SAL_COHERENCE_DOMAIN_INFO;
202
UINT8 Type; // Type == 4
204
UINT32 NumberOfDomains;
205
SAL_COHERENCE_DOMAIN_INFO *DomainInformation;
206
} SAL_ST_CACHE_COHERENCE_DECRIPTOR;
209
UINT8 Type; // Type == 5
212
UINT64 ExternalInterruptVector;
213
} SAL_ST_AP_WAKEUP_DECRIPTOR;
216
SAL_SYSTEM_TABLE_HDR Header;
217
SAL_ST_ENTRY_POINT_DESCRIPTOR Entry0;
218
} SAL_SYSTEM_TABLE_ASCENDING_ORDER;
220
#define FIT_ENTRY_PTR (0x100000000 - 32) // 4GB - 24
221
#define FIT_PALA_ENTRY (0x100000000 - 48) // 4GB - 32
222
#define FIT_PALB_TYPE 01
230
UINT8 CheckSumValid:1;
258
extern CALL_SAL_PROC GlobalSalProc;
259
extern CALL_PAL_PROC GlobalPalProc;
260
extern PLABEL SalProcPlabel;
261
extern PLABEL PalProcPlabel;