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;