]>
code.delx.au - refind/blob - EfiLib/Platform.h
2 Headers collection for procedures
5 #ifndef __REFIT_PLATFORM_H__
6 #define __REFIT_PLATFORM_H__
11 #include <Guid/Acpi.h>
12 #include <Guid/EventGroup.h>
13 #include <Guid/SmBios.h>
16 #include <Library/BaseLib.h>
17 #include <Library/BaseMemoryLib.h>
18 #include <Library/DebugLib.h>
19 #include <Library/HiiLib.h>
20 #include <Library/MemoryAllocationLib.h>
21 #include <Library/PcdLib.h>
22 #include <Library/PerformanceLib.h>
23 #include <Library/PeCoffGetEntryPointLib.h>
24 #include <Library/TimerLib.h>
25 #include <Library/UefiBootServicesTableLib.h>
26 #include <Library/UefiDriverEntryPoint.h>
27 #include <Library/UefiLib.h>
28 #include <Library/UefiRuntimeServicesTableLib.h>
29 #include <Library/UefiRuntimeLib.h>
31 #include <Framework/FrameworkInternalFormRepresentation.h>
33 #include <IndustryStandard/Acpi10.h>
34 #include <IndustryStandard/Acpi20.h>
36 #include <Protocol/Cpu.h>
37 #include <Protocol/CpuIo.h>
38 #include <Protocol/DataHub.h>
39 #include <Protocol/DevicePathToText.h>
40 #include <Protocol/FrameworkHii.h>
41 #include <Protocol/Smbios.h>
42 #include <Protocol/VariableWrite.h>
43 #include <Protocol/Variable.h>
45 //#include <Protocol/FSInjectProtocol.h>
46 //#include <Protocol/MsgLog.h>
50 //#include "BiosVideo.h"
51 #include "../include/Bmp.h"
52 #include "efiConsoleControl.h"
54 #include "EfiLib/GenericBdsLib.h"
55 //#include "device_inject.h"
56 //#include "UsbMass.h"
58 #include "../refind/global.h"
61 // #define kilo (1000ULL)
62 // #define Mega (kilo * kilo)
63 // #define Giga (kilo * Mega)
64 // #define Tera (kilo * Giga)
65 // #define Peta (kilo * Tera)
67 // #define IS_COMMA(a) ((a) == L',')
68 // #define IS_HYPHEN(a) ((a) == L'-')
69 // #define IS_DOT(a) ((a) == L'.')
70 // #define IS_LEFT_PARENTH(a) ((a) == L'(')
71 // #define IS_RIGHT_PARENTH(a) ((a) == L')')
72 // #define IS_SLASH(a) ((a) == L'/')
73 // #define IS_NULL(a) ((a) == L'\0')
74 // #define IS_DIGIT(a) (((a) >= '0') && ((a) <= '9'))
75 // #define IS_HEX(a) (((a) >= 'a') && ((a) <= 'f'))
76 // #define IS_UPPER(a) (((a) >= 'A') && ((a) <= 'Z'))
77 // #define IS_ALFA(x) (((x >= 'a') && (x <='z')) || ((x >= 'A') && (x <='Z')))
78 // #define IS_ASCII(x) ((x>=0x20) && (x<=0x7F))
79 // #define IS_PUNCT(x) ((x == '.') || (x == '-'))
82 // #define EBDA_BASE_ADDRESS 0x40E
83 // #define EFI_SYSTEM_TABLE_MAX_ADDRESS 0xFFFFFFFF
84 // #define ROUND_PAGE(x) ((((unsigned)(x)) + EFI_PAGE_SIZE - 1) & ~(EFI_PAGE_SIZE - 1))
87 // Max bytes needed to represent ID of a SCSI device
89 //#define EFI_SCSI_TARGET_MAX_BYTES (0x10)
92 // bit5..7 are for Logical unit number
95 //#define EFI_SCSI_LOGICAL_UNIT_NUMBER_MASK 0xe0
98 // Scsi Command Length
100 //#define EFI_SCSI_OP_LENGTH_SIX 0x6
101 //#define EFI_SCSI_OP_LENGTH_TEN 0xa
102 //#define EFI_SCSI_OP_LENGTH_SIXTEEN 0x10
104 // #define SAFE_LOG_SIZE 80
106 // #define MSG_LOG_SIZE (64 * 1024)
107 // #define MsgLog(x...) {AsciiSPrint(msgCursor, MSG_LOG_SIZE, x); while(*msgCursor){msgCursor++;}}
109 // #define CPU_MODEL_DOTHAN 0x0D
110 // #define CPU_MODEL_YONAH 0x0E
111 // #define CPU_MODEL_MEROM 0x0F /* same as CONROE but mobile */
112 // #define CPU_MODEL_CONROE 0x0F
113 // #define CPU_MODEL_CELERON 0x16 /* ever see? */
114 // #define CPU_MODEL_PENRYN 0x17
115 // #define CPU_MODEL_WOLFDALE 0x17
116 // #define CPU_MODEL_NEHALEM 0x1A
117 // #define CPU_MODEL_ATOM 0x1C
118 // #define CPU_MODEL_XEON_MP 0x1D /* ever see? */
119 // #define CPU_MODEL_FIELDS 0x1E
120 // #define CPU_MODEL_DALES 0x1F
121 // #define CPU_MODEL_CLARKDALE 0x25
122 // #define CPU_MODEL_LINCROFT 0x27
123 // #define CPU_MODEL_SANDY_BRIDGE 0x2A
124 // #define CPU_MODEL_WESTMERE 0x2C
125 // #define CPU_MODEL_JAKETOWN 0x2D /* ever see? */
126 // #define CPU_MODEL_NEHALEM_EX 0x2E
127 // #define CPU_MODEL_WESTMERE_EX 0x2F
129 // #define CPU_VENDOR_INTEL 0x756E6547
130 // #define CPU_VENDOR_AMD 0x68747541
132 // #define CPU_STRING_UNKNOWN "Unknown CPU Type"
134 //definitions from Apple XNU
137 // #define bit(n) (1UL << (n))
138 // #define _Bit(n) (1ULL << n)
139 // #define _HBit(n) (1ULL << ((n)+32))
141 // #define bitmask(h,l) ((bit(h)|(bit(h)-1)) & ~(bit(l)-1))
142 // #define bitfield(x,h,l) (((x) & bitmask(h,l)) >> l)
143 // #define quad(hi,lo) (((UINT64)(hi)) << 32 | (lo))
146 * The CPUID_FEATURE_XXX values define 64-bit values
147 * returned in %ecx:%edx to a CPUID request with %eax of 1:
149 // #define CPUID_FEATURE_FPU _Bit(0) /* Floating point unit on-chip */
150 // #define CPUID_FEATURE_VME _Bit(1) /* Virtual Mode Extension */
151 // #define CPUID_FEATURE_DE _Bit(2) /* Debugging Extension */
152 // #define CPUID_FEATURE_PSE _Bit(3) /* Page Size Extension */
153 // #define CPUID_FEATURE_TSC _Bit(4) /* Time Stamp Counter */
154 // #define CPUID_FEATURE_MSR _Bit(5) /* Model Specific Registers */
155 // #define CPUID_FEATURE_PAE _Bit(6) /* Physical Address Extension */
156 // #define CPUID_FEATURE_MCE _Bit(7) /* Machine Check Exception */
157 // #define CPUID_FEATURE_CX8 _Bit(8) /* CMPXCHG8B */
158 // #define CPUID_FEATURE_APIC _Bit(9) /* On-chip APIC */
159 // #define CPUID_FEATURE_SEP _Bit(11) /* Fast System Call */
160 // #define CPUID_FEATURE_MTRR _Bit(12) /* Memory Type Range Register */
161 // #define CPUID_FEATURE_PGE _Bit(13) /* Page Global Enable */
162 // #define CPUID_FEATURE_MCA _Bit(14) /* Machine Check Architecture */
163 // #define CPUID_FEATURE_CMOV _Bit(15) /* Conditional Move Instruction */
164 // #define CPUID_FEATURE_PAT _Bit(16) /* Page Attribute Table */
165 // #define CPUID_FEATURE_PSE36 _Bit(17) /* 36-bit Page Size Extension */
166 // #define CPUID_FEATURE_PSN _Bit(18) /* Processor Serial Number */
167 // #define CPUID_FEATURE_CLFSH _Bit(19) /* CLFLUSH Instruction supported */
168 // #define CPUID_FEATURE_DS _Bit(21) /* Debug Store */
169 // #define CPUID_FEATURE_ACPI _Bit(22) /* Thermal monitor and Clock Ctrl */
170 // #define CPUID_FEATURE_MMX _Bit(23) /* MMX supported */
171 // #define CPUID_FEATURE_FXSR _Bit(24) /* Fast floating pt save/restore */
172 // #define CPUID_FEATURE_SSE _Bit(25) /* Streaming SIMD extensions */
173 // #define CPUID_FEATURE_SSE2 _Bit(26) /* Streaming SIMD extensions 2 */
174 // #define CPUID_FEATURE_SS _Bit(27) /* Self-Snoop */
175 // #define CPUID_FEATURE_HTT _Bit(28) /* Hyper-Threading Technology */
176 // #define CPUID_FEATURE_TM _Bit(29) /* Thermal Monitor (TM1) */
177 // #define CPUID_FEATURE_PBE _Bit(31) /* Pend Break Enable */
179 // #define CPUID_FEATURE_SSE3 _HBit(0) /* Streaming SIMD extensions 3 */
180 // #define CPUID_FEATURE_PCLMULQDQ _HBit(1) /* PCLMULQDQ Instruction */
182 // #define CPUID_FEATURE_MONITOR _HBit(3) /* Monitor/mwait */
183 // #define CPUID_FEATURE_DSCPL _HBit(4) /* Debug Store CPL */
184 // #define CPUID_FEATURE_VMX _HBit(5) /* VMX */
185 // #define CPUID_FEATURE_SMX _HBit(6) /* SMX */
186 // #define CPUID_FEATURE_EST _HBit(7) /* Enhanced SpeedsTep (GV3) */
187 // #define CPUID_FEATURE_TM2 _HBit(8) /* Thermal Monitor 2 */
188 // #define CPUID_FEATURE_SSSE3 _HBit(9) /* Supplemental SSE3 instructions */
189 // #define CPUID_FEATURE_CID _HBit(10) /* L1 Context ID */
191 // #define CPUID_FEATURE_CX16 _HBit(13) /* CmpXchg16b instruction */
192 // #define CPUID_FEATURE_xTPR _HBit(14) /* Send Task PRiority msgs */
193 // #define CPUID_FEATURE_PDCM _HBit(15) /* Perf/Debug Capability MSR */
195 // #define CPUID_FEATURE_DCA _HBit(18) /* Direct Cache Access */
196 // #define CPUID_FEATURE_SSE4_1 _HBit(19) /* Streaming SIMD extensions 4.1 */
197 // #define CPUID_FEATURE_SSE4_2 _HBit(20) /* Streaming SIMD extensions 4.2 */
198 // #define CPUID_FEATURE_xAPIC _HBit(21) /* Extended APIC Mode */
199 // #define CPUID_FEATURE_POPCNT _HBit(23) /* POPCNT instruction */
200 // #define CPUID_FEATURE_AES _HBit(25) /* AES instructions */
201 // #define CPUID_FEATURE_VMM _HBit(31) /* VMM (Hypervisor) present */
204 // * The CPUID_EXTFEATURE_XXX values define 64-bit values
205 // * returned in %ecx:%edx to a CPUID request with %eax of 0x80000001:
207 // #define CPUID_EXTFEATURE_SYSCALL _Bit(11) /* SYSCALL/sysret */
208 // #define CPUID_EXTFEATURE_XD _Bit(20) /* eXecute Disable */
209 // #define CPUID_EXTFEATURE_1GBPAGE _Bit(26) /* 1G-Byte Page support */
210 // #define CPUID_EXTFEATURE_RDTSCP _Bit(27) /* RDTSCP */
211 // #define CPUID_EXTFEATURE_EM64T _Bit(29) /* Extended Mem 64 Technology */
213 // //#define CPUID_EXTFEATURE_LAHF _HBit(20) /* LAFH/SAHF instructions */
214 // // New definition with Snow kernel
215 // #define CPUID_EXTFEATURE_LAHF _HBit(0) /* LAHF/SAHF instructions */
217 // * The CPUID_EXTFEATURE_XXX values define 64-bit values
218 // * returned in %ecx:%edx to a CPUID request with %eax of 0x80000007:
220 // #define CPUID_EXTFEATURE_TSCI _Bit(8) /* TSC Invariant */
222 // #define CPUID_CACHE_SIZE 16 /* Number of descriptor values */
224 // #define CPUID_MWAIT_EXTENSION _Bit(0) /* enumeration of WMAIT extensions */
225 // #define CPUID_MWAIT_BREAK _Bit(1) /* interrupts are break events */
227 // /* Known MSR registers */
228 // #define MSR_IA32_PLATFORM_ID 0x0017
229 // #define MSR_CORE_THREAD_COUNT 0x0035 /* limited use - not for Penryn or older */
230 // #define MSR_IA32_BIOS_SIGN_ID 0x008B /* microcode version */
231 // #define MSR_FSB_FREQ 0x00CD /* limited use - not for i7 */
232 // #define MSR_PLATFORM_INFO 0x00CE /* limited use - MinRatio for i7 but Max for Yonah */
233 // /* turbo for penryn */
234 // #define MSR_IA32_EXT_CONFIG 0x00EE /* limited use - not for i7 */
235 // #define MSR_FLEX_RATIO 0x0194 /* limited use - not for Penryn or older */
236 // //see no value on most CPUs
237 // #define MSR_IA32_PERF_STATUS 0x0198
238 // #define MSR_IA32_PERF_CONTROL 0x0199
239 // #define MSR_IA32_CLOCK_MODULATION 0x019A
240 // #define MSR_THERMAL_STATUS 0x019C
241 // #define MSR_IA32_MISC_ENABLE 0x01A0
242 // #define MSR_THERMAL_TARGET 0x01A2 /* limited use - not for Penryn or older */
243 // #define MSR_TURBO_RATIO_LIMIT 0x01AD /* limited use - not for Penryn or older */
246 // //Copied from revogirl
247 // #define IA32_ENERGY_PERF_BIAS 0x01B0
248 // //MSR 000001B0 0000-0000-0000-0005
249 // //MSR 000001B1 0000-0000-8838-0000
250 // #define IA32_PLATFORM_DCA_CAP 0x01F8
251 // //MSR 000001FC 0000-0000-0004-005F
254 // // Sandy Bridge & JakeTown specific 'Running Average Power Limit' MSR's.
255 // #define MSR_RAPL_POWER_UNIT 0x606
256 // //MSR 00000606 0000-0000-000A-1003
257 // //MSR 0000060B 0000-0000-0000-8854
258 // //MSR 0000060C 0000-0000-0000-8854
260 // #define MSR_PKG_RAPL_POWER_LIMIT 0x610
261 // //MSR 00000610 0000-A580-0000-8960
262 // #define MSR_PKG_ENERGY_STATUS 0x611
263 // //MSR 00000611 0000-0000-3212-A857
264 // #define MSR_PKG_PERF_STATUS 0x613
265 // #define MSR_PKG_POWER_INFO 0x614
266 // //MSR 00000614 0000-0000-01E0-02F8
267 // // Sandy Bridge IA (Core) domain MSR's.
268 // #define MSR_PP0_POWER_LIMIT 0x638
269 // #define MSR_PP0_ENERGY_STATUS 0x639
270 // #define MSR_PP0_POLICY 0x63A
271 // #define MSR_PP0_PERF_STATUS 0x63B
273 // // Sandy Bridge Uncore (IGPU) domain MSR's (Not on JakeTown).
274 // #define MSR_PP1_POWER_LIMIT 0x640
275 // #define MSR_PP1_ENERGY_STATUS 0x641
276 // //MSR 00000641 0000-0000-0000-0000
277 // #define MSR_PP1_POLICY 0x642
279 // // JakeTown only Memory MSR's.
280 // #define MSR_DRAM_POWER_LIMIT 0x618
281 // #define MSR_DRAM_ENERGY_STATUS 0x619
282 // #define MSR_DRAM_PERF_STATUS 0x61B
283 // #define MSR_DRAM_POWER_INFO 0x61C
287 // #define K8_FIDVID_STATUS 0xC0010042
288 // #define K10_COFVID_STATUS 0xC0010071
289 // #define DEFAULT_FSB 100000 /* for now, hardcoding 100MHz for old CPUs */
298 // #define CPUID_80 5
299 // #define CPUID_81 6
300 // #define CPUID_87 7
301 // #define CPUID_MAX 8
309 // #define MAX_CACHE_COUNT 4
310 // #define CPU_CACHE_LEVEL 3
313 // #define PCI_BASE_ADDRESS_0 0x10 /* 32 bits */
314 // #define PCI_BASE_ADDRESS_1 0x14 /* 32 bits [htype 0,1 only] */
315 // #define PCI_BASE_ADDRESS_2 0x18 /* 32 bits [htype 0 only] */
316 // #define PCI_BASE_ADDRESS_3 0x1c /* 32 bits */
317 // #define PCI_BASE_ADDRESS_4 0x20 /* 32 bits */
318 // #define PCI_BASE_ADDRESS_5 0x24 /* 32 bits */
320 // #define PCI_CLASS_MEDIA_HDA 0x03
322 // #define GEN_PMCON_1 0xA0
324 // #define PCIADDR(bus, dev, func) ((1 << 31) | (bus << 16) | (dev << 11) | (func << 8))
325 // #define REG8(base, reg) ((volatile UINT8 *)(UINTN)base)[(reg)]
326 // #define REG16(base, reg) ((volatile UINT16 *)(UINTN)base)[(reg) >> 1]
327 // #define REG32(base, reg) ((volatile UINT32 *)(UINTN)base)[(reg) >> 2]
328 // #define WRITEREG32(base, reg, value) REG32(base, reg) = value
330 #define EFI_HANDLE_TYPE_UNKNOWN 0x000
331 #define EFI_HANDLE_TYPE_IMAGE_HANDLE 0x001
332 #define EFI_HANDLE_TYPE_DRIVER_BINDING_HANDLE 0x002
333 #define EFI_HANDLE_TYPE_DEVICE_DRIVER 0x004
334 #define EFI_HANDLE_TYPE_BUS_DRIVER 0x008
335 #define EFI_HANDLE_TYPE_DRIVER_CONFIGURATION_HANDLE 0x010
336 #define EFI_HANDLE_TYPE_DRIVER_DIAGNOSTICS_HANDLE 0x020
337 #define EFI_HANDLE_TYPE_COMPONENT_NAME_HANDLE 0x040
338 #define EFI_HANDLE_TYPE_DEVICE_HANDLE 0x080
339 #define EFI_HANDLE_TYPE_PARENT_HANDLE 0x100
340 #define EFI_HANDLE_TYPE_CONTROLLER_HANDLE 0x200
341 #define EFI_HANDLE_TYPE_CHILD_HANDLE 0x400
343 // #define AML_CHUNK_NONE 0xff
344 // #define AML_CHUNK_ZERO 0x00
345 // #define AML_CHUNK_ONE 0x01
346 // #define AML_CHUNK_ALIAS 0x06
347 // #define AML_CHUNK_NAME 0x08
348 // #define AML_CHUNK_BYTE 0x0A
349 // #define AML_CHUNK_WORD 0x0B
350 // #define AML_CHUNK_DWORD 0x0C
351 // #define AML_CHUNK_STRING 0x0D
352 // #define AML_CHUNK_QWORD 0x0E
353 // #define AML_CHUNK_SCOPE 0x10
354 // #define AML_CHUNK_PACKAGE 0x12
355 // #define AML_CHUNK_METHOD 0x14
356 // #define AML_CHUNK_RETURN 0xA4
357 // #define AML_LOCAL0 0x60
358 // #define AML_STORE_OP 0x70
368 // struct aml_chunk* Next;
369 // struct aml_chunk* First;
370 // struct aml_chunk* Last;
373 // typedef struct aml_chunk AML_CHUNK;
382 // UINT8 VID; // Voltage ID
383 // UINT8 FID; // Frequency ID
387 // UINT32 CID; // Compare ID
391 // typedef struct p_state P_STATE;
410 // struct Symbol *next;
414 // typedef struct Symbol Symbol, *SymbolPtr;
428 // EFI_ACPI_DESCRIPTION_HEADER Header;
435 // EFI_ACPI_DESCRIPTION_HEADER Header;
443 // CHAR8 VendorName[64];
444 // CHAR8 RomVersion[64];
445 // CHAR8 ReleaseDate[64];
447 // CHAR8 ManufactureName[64];
448 // CHAR8 ProductName[64];
449 // CHAR8 VersionNr[64];
450 // CHAR8 SerialNr[64];
451 // // CHAR8 Uuid[64];
452 // // CHAR8 SKUNumber[64];
453 // CHAR8 FamilyName[64];
454 // CHAR8 OEMProduct[64];
456 // CHAR8 BoardManufactureName[64];
457 // CHAR8 BoardSerialNumber[64];
458 // CHAR8 BoardNumber[64]; //Board-ID
459 // CHAR8 LocationInChassis[64];
460 // CHAR8 BoardVersion[64];
461 // CHAR8 OEMBoard[64];
464 // CHAR8 ChassisManufacturer[64];
465 // CHAR8 ChassisAssetTag[64];
467 // UINT16 CpuFreqMHz;
468 // UINT32 BusSpeed; //in kHz
472 // CHAR8 MemoryManufacturer[64];
473 // CHAR8 MemorySerialNumber[64];
474 // CHAR8 MemoryPartNumber[64];
475 // CHAR8 MemorySpeed[64];
482 // CHAR8 Language[16];
483 // CHAR8 BootArgs[256];
484 // CHAR16 CustomUuid[40];
485 // CHAR16 DefaultBoot[40];
493 // BOOLEAN UseDSDTmini;
495 // BOOLEAN GeneratePStates;
496 // BOOLEAN GenerateCStates;
498 // UINT8 UnderVoltStep;
503 // BOOLEAN EnableISS;
506 // CHAR16 DsdtName[60];
509 // BOOLEAN StringInjector;
510 // BOOLEAN InjectSystemID;
512 // UINT16 PCIRootUID;
513 // BOOLEAN GraphicsInjector;
514 // BOOLEAN LoadVBios;
515 // BOOLEAN PatchVBios;
516 // CHAR16 FBName[16];
517 // UINT16 VideoPorts;
523 // BOOLEAN HDAInjection;
524 // UINTN HDALayoutId;
529 // //values from CPUID
530 // UINT32 CPUID[CPUID_MAX][4];
540 // UINT64 ExtFeatures;
541 // UINT32 CoresPerPackage;
542 // UINT32 LogicalPerPackage;
543 // CHAR8 BrandString[48];
545 // //values from BIOS
546 // UINT32 ExternalClock; //keep this values as kHz
547 // UINT32 MaxSpeed; //MHz
548 // UINT32 CurrentSpeed; //MHz
551 // //calculated from MSR
553 // UINT64 ProcessorFlag;
555 // UINT32 SubDivider;
558 // UINT64 ProcessorInterconnectSpeed;
559 // UINT64 FSBFrequency; //Hz
560 // UINT64 CPUFrequency;
561 // UINT64 TSCFrequency;
563 // UINT8 EnabledCores;
565 // UINT8 Mobile; //not for i3-i7
568 // UINT16 Turbo1; //1 Core
569 // UINT16 Turbo2; //2 Core
570 // UINT16 Turbo3; //3 Core
571 // UINT16 Turbo4; //4 Core
599 // UINT8 BankConnections;
600 // UINT8 BankConnectionCount;
601 // UINT32 ModuleSize;
610 // #define MAX_SLOT_COUNT 8
611 // #define MAX_RAM_SLOTS 16
624 // RAM_SLOT_INFO DIMM[MAX_RAM_SLOTS];
629 // UINT8 MaxMemorySlots; // number of memory slots polulated by SMBIOS
630 // UINT8 CntMemorySlots; // number of memory slots counted
631 // UINT16 MemoryModules; // number of memory modules installed
632 // UINT32 DIMM[MAX_RAM_SLOTS]; // Information and SPD mapping for each slot
639 // //something else? add, please
648 // } GFX_MANUFACTERER;
651 // GFX_MANUFACTERER Vendor;
658 // BOOLEAN LoadVBios;
661 //extern CHAR8 *msgbuf;
662 //extern CHAR8 *msgCursor;
663 //extern SMBIOS_STRUCTURE_POINTER SmbiosTable;
664 //extern GFX_PROPERTIES gGraphics[];
666 //extern BOOLEAN gMobile;
667 //extern UINT32 gCpuSpeed; //kHz
668 //extern UINT16 gCPUtype;
669 //extern UINT64 TurboMsr;
670 //extern CHAR8* BiosVendor;
671 /*extern UINT32 mPropSize;
672 extern UINT8* mProperties;
673 extern CHAR8 gSelectedUUID[];
674 extern CHAR8* AppleSystemVersion[];
675 extern CHAR8* AppleFirmwareVersion[];
676 extern CHAR8* AppleReleaseDate[];
677 extern CHAR8* AppleManufacturer;
678 extern CHAR8* AppleProductName[];
679 extern CHAR8* AppleSystemVersion[];
680 extern CHAR8* AppleSerialNumber[];
681 extern CHAR8* AppleFamilies[];
682 extern CHAR8* AppleBoardID[];
683 extern CHAR8* AppleChassisAsset[];
684 extern CHAR8* AppleBoardSN;
685 extern CHAR8* AppleBoardLocation; */
686 // extern EFI_SYSTEM_TABLE* gST;
687 // extern EFI_BOOT_SERVICES* gBS;
688 // extern SETTINGS_DATA gSettings;
689 // extern LANGUAGES gLanguage;
690 // //extern BOOLEAN gFirmwareClover;
691 // extern CPU_STRUCTURE gCPUStructure;
692 //extern EFI_GUID gUuid;
693 //extern EFI_EDID_DISCOVERED_PROTOCOL* EdidDiscovered;
694 //extern UINT8 *gEDID;
695 //extern CHAR8* gDeviceProperties;
696 //extern CHAR8* cDeviceProperties;
697 //extern INPUT_ITEM *InputItems;
699 extern EFI_GUID gEfiAppleBootGuid;
700 extern EFI_GUID gEfiAppleNvramGuid;
701 extern EFI_GUID AppleSystemInfoProducerName;
702 extern EFI_GUID AppleDevicePropertyProtocolGuid;
703 extern EFI_GUID gEfiAppleScreenInfoGuid;
704 extern EFI_GUID gEfiAppleVendorGuid;
705 extern EFI_GUID gEfiPartTypeSystemPartGuid;
706 extern EFI_GUID gMsgLogProtocolGuid;
707 extern EFI_GUID gEfiLegacy8259ProtocolGuid;
709 extern EFI_EVENT mVirtualAddressChangeEvent;
710 extern EFI_EVENT OnReadyToBootEvent;
711 extern EFI_EVENT ExitBootServiceEvent;
712 extern EFI_EVENT mSimpleFileSystemChangeEvent;
715 VOID WaitForSts(VOID);
717 VOID InitBooterLog(VOID);
718 EFI_STATUS SetupBooterLog(VOID);
719 VOID GetDefaultSettings(VOID);
720 VOID FillInputs(VOID);
721 VOID ApplyInputs(VOID);
723 // EFI_STATUS StrToGuid (IN CHAR16 *Str, OUT EFI_GUID *Guid);
724 // EFI_STATUS StrToGuidLE (IN CHAR16 *Str, OUT EFI_GUID *Guid);
725 // BOOLEAN hex2bin(IN CHAR8 *hex, OUT UINT8 *bin, INT32 len);
726 // UINT8 hexstrtouint8 (CHAR8* buf); //one or two hex letters to one byte
728 EFI_STATUS EFIAPI
InitializeConsoleSim (VOID
);
729 //EFI_STATUS GuiEventsInitialize (VOID);
731 // UINT32 GetCrc32(UINT8 *Buffer, UINTN Size);
732 // VOID GetCPUProperties (VOID);
733 // VOID GetDevices(VOID);
734 // MACHINE_TYPES GetDefaultModel(VOID);
735 // UINT16 GetAdvancedCpuType(VOID);
736 // //EFI_STATUS GetOSVersion(IN REFIT_VOLUME *Volume);
737 // EFI_STATUS GetUserSettings(IN EFI_FILE *RootDir);
738 // EFI_STATUS GetNVRAMSettings(IN EFI_FILE *RootDir, CHAR16* NVRAMPlistPath);
739 // EFI_STATUS GetEdid(VOID);
740 // //EFI_STATUS SetFSInjection(IN LOADER_ENTRY *Entry);
744 // EFI_GUID *TypeGuid,
749 // EFI_STATUS SetVariablesForOSX();
750 // VOID SetupDataForOSX();
751 // EFI_STATUS SetPrivateVarProto(VOID);
752 // VOID SetDevices(VOID);
754 //BOOLEAN setup_ati_devprop(pci_dt_t *ati_dev);
755 //BOOLEAN setup_gma_devprop(pci_dt_t *gma_dev);
756 //CHAR8* get_gma_model(IN UINT16 DeviceID);
757 //BOOLEAN setup_nvidia_devprop(pci_dt_t *nvda_dev);
758 //CHAR8* get_nvidia_model(IN UINT16 DeviceID);
761 //EG_IMAGE * egDecodePNG(IN UINT8 *FileData, IN UINTN FileDataLength, IN UINTN IconSize, IN BOOLEAN WantAlpha);
763 //EFI_STATUS PatchACPI(IN REFIT_VOLUME *Volume);
764 //EFI_STATUS PatchACPI_OtherOS(CHAR16* OsSubdir, BOOLEAN DropSSDT);
765 //UINT8 Checksum8(VOID * startPtr, UINT32 len);
766 //BOOLEAN tableSign(CHAR8 *table, CONST CHAR8 *sgn);
767 //VOID SaveOemDsdt(VOID);
769 //EFI_STATUS EventsInitialize(VOID);
770 //EFI_STATUS EjectVolume(IN REFIT_VOLUME *Volume);
772 //EFI_STATUS bootElTorito(IN REFIT_VOLUME* volume);
773 //EFI_STATUS bootMBR(IN REFIT_VOLUME* volume);
774 //EFI_STATUS bootPBR(IN REFIT_VOLUME* volume);
776 //CHAR8* XMLDecode(const CHAR8* src);
777 //EFI_STATUS ParseXML(const CHAR8* buffer, TagPtr * dict);
778 //TagPtr GetProperty( TagPtr dict, const CHAR8* key );
779 //EFI_STATUS XMLParseNextTag(CHAR8* buffer, TagPtr * tag, UINT32* lenPtr);
780 //VOID FreeTag( TagPtr tag );
781 //EFI_STATUS GetNextTag( UINT8* buffer, CHAR8** tag, UINT32* start,UINT32* length);
783 //EFI_STATUS SaveSettings(VOID);
785 // UINTN iStrLen(CHAR8* String, UINTN MaxLen);
786 // EFI_STATUS PrepatchSmbios(VOID);
787 // VOID PatchSmbios(VOID);
788 // VOID FinalizeSmbios(VOID);
790 // EFI_STATUS DisableUsbLegacySupport(VOID);