17#include <Library/BaseOverflowLib.h>
33#define OPEN_CORE_VERSION "1.0.4"
38#if defined (OC_TARGET_RELEASE)
39#define OPEN_CORE_TARGET "REL"
40#elif defined (OC_TARGET_DEBUG)
41#define OPEN_CORE_TARGET "DBG"
42#elif defined (OC_TARGET_NOOPT)
43#define OPEN_CORE_TARGET "NPT"
45 #error "Unknown target definition"
48#define OPEN_CORE_ROOT_PATH L"EFI\\OC"
50#define OPEN_CORE_APP_PATH L"OpenCore.efi"
52#define OPEN_CORE_CONFIG_PATH L"config.plist"
54#define OPEN_CORE_LOG_PREFIX_PATH L"opencore"
56#define OPEN_CORE_ACPI_PATH L"ACPI\\"
58#define OPEN_CORE_UEFI_DRIVER_PATH L"Drivers\\"
60#define OPEN_CORE_KEXT_PATH L"Kexts\\"
62#define OPEN_CORE_TOOL_PATH L"Tools\\"
85 IN OC_GLOBAL_CONFIG *Config
95 IN OC_GLOBAL_CONFIG *Config
109 IN OC_GLOBAL_CONFIG *Config,
110 OUT EFI_HANDLE **DriversToConnect OPTIONAL,
124 IN OC_GLOBAL_CONFIG *Config,
135 IN UINT32 DarwinVersion,
136 IN OUT VOID *Context,
145 IN OC_GLOBAL_CONFIG *Config,
148 IN UINT32 DarwinVersion,
150 IN UINT32 LinkedExpansion,
151 IN UINT32 ReservedExeSize
159 IN OC_GLOBAL_CONFIG *Config,
161 IN UINT32 DarwinVersion,
165 IN OUT UINT8 *Kernel,
174 IN OC_GLOBAL_CONFIG *Config,
175 IN UINT32 DarwinVersion,
186 IN OC_GLOBAL_CONFIG *Config,
187 IN UINT32 DarwinVersion,
189 IN OUT UINT8 *Kernel,
190 IN UINT32 *KernelSize,
191 IN UINT32 AllocatedSize,
192 IN UINT32 LinkedExpansion,
193 IN UINT32 ReservedExeSize
213 IN OC_GLOBAL_CONFIG *Config
224 IN OC_GLOBAL_CONFIG *Config,
237 IN OC_GLOBAL_CONFIG *Config,
249 IN OC_GLOBAL_CONFIG *Config,
264 IN OC_GLOBAL_CONFIG *Config,
276 IN OC_GLOBAL_CONFIG *Config
288 IN OC_GLOBAL_CONFIG *Config
300 IN OC_GLOBAL_CONFIG *Config
311 IN EFI_EVENT_NOTIFY Handler,
337 OUT OC_GLOBAL_CONFIG *Config,
356 IN OC_GLOBAL_CONFIG *Config,
357 IN CONST CHAR16 *RootPath,
358 IN EFI_DEVICE_PATH_PROTOCOL *LoadPath,
359 IN EFI_HANDLE StorageHandle,
374 IN OC_GLOBAL_CONFIG *Config
386 IN OC_GLOBAL_CONFIG *Config,
387 IN EFI_HANDLE LoadHandle OPTIONAL
403 IN OC_GLOBAL_CONFIG *Config,
406 IN BOOLEAN CustomBootGuid,
407 IN EFI_HANDLE LoadHandle
417 IN OC_GLOBAL_CONFIG *Config
438 IN OC_GLOBAL_CONFIG *Config
450 IN EFI_FILE_PROTOCOL *Root
STATIC UINT32 KernelVersion
DMG_SIZE_DEVICE_PATH Size
enum KERNEL_CACHE_TYPE_ KERNEL_CACHE_TYPE
EFI_STATUS(EFIAPI * OC_IMAGE_START)(IN OC_BOOT_ENTRY *ChosenEntry, IN EFI_HANDLE ImageHandle, OUT UINTN *ExitDataSize, OUT CHAR16 **ExitData OPTIONAL, IN BOOLEAN LaunchInText)
VOID OcKernelApplyPatches(IN OC_GLOBAL_CONFIG *Config, IN OC_CPU_INFO *CpuInfo, IN UINT32 DarwinVersion, IN BOOLEAN Is32Bit, IN KERNEL_CACHE_TYPE CacheType, IN VOID *Context, IN OUT UINT8 *Kernel, IN UINT32 Size)
VOID OcLoadDrivers(IN OC_STORAGE_CONTEXT *Storage, IN OC_GLOBAL_CONFIG *Config, OUT EFI_HANDLE **DriversToConnect OPTIONAL, IN BOOLEAN LoadEarly)
VOID OcMiscBoot(IN OC_STORAGE_CONTEXT *Storage, IN OC_GLOBAL_CONFIG *Config, IN OC_PRIVILEGE_CONTEXT *Privilege OPTIONAL, IN OC_IMAGE_START StartImage, IN BOOLEAN CustomBootGuid, IN EFI_HANDLE LoadHandle)
VOID OcUnloadKernelSupport(VOID)
EFI_STATUS OcMiscEarlyInit(IN OC_STORAGE_CONTEXT *Storage, OUT OC_GLOBAL_CONFIG *Config, IN OC_RSA_PUBLIC_KEY *VaultKey OPTIONAL)
CONST CHAR8 * OcMiscGetVersionString(VOID)
VOID OcScheduleExitBootServices(IN EFI_EVENT_NOTIFY Handler, IN VOID *Context)
VOID OcLoadPlatformSupport(IN OC_GLOBAL_CONFIG *Config, IN OC_CPU_INFO *CpuInfo)
BOOLEAN OcPlatformIs64BitSupported(IN UINT32 KernelVersion)
VOID OcLoadUefiSupport(IN OC_STORAGE_CONTEXT *Storage, IN OC_GLOBAL_CONFIG *Config, IN OC_CPU_INFO *CpuInfo, IN UINT8 *Signature)
CONST CHAR8 * OcGetDefaultSecureBootModel(IN OC_GLOBAL_CONFIG *Config, IN OC_CPU_INFO *CpuInfo)
VOID OcLoadUefiInputSupport(IN OC_GLOBAL_CONFIG *Config)
VOID OcKernelBlockKexts(IN OC_GLOBAL_CONFIG *Config, IN UINT32 DarwinVersion, IN BOOLEAN Is32Bit, IN KERNEL_CACHE_TYPE CacheType, IN VOID *Context)
EFI_STATUS OcMiscLateInit(IN OC_STORAGE_CONTEXT *Storage, IN OC_GLOBAL_CONFIG *Config)
VOID OcUnloadDrivers(IN OC_GLOBAL_CONFIG *Config)
VOID OcKernelInjectKexts(IN OC_GLOBAL_CONFIG *Config, IN KERNEL_CACHE_TYPE CacheType, IN VOID *Context, IN UINT32 DarwinVersion, IN BOOLEAN Is32Bit, IN UINT32 LinkedExpansion, IN UINT32 ReservedExeSize)
VOID OcLoadUefiAudioSupport(IN OC_STORAGE_CONTEXT *Storage, IN OC_GLOBAL_CONFIG *Config)
VOID OcLoadNvramSupport(IN OC_STORAGE_CONTEXT *Storage, IN OC_GLOBAL_CONFIG *Config)
VOID OcMiscLoadSystemReport(IN OC_GLOBAL_CONFIG *Config, IN EFI_HANDLE LoadHandle OPTIONAL)
VOID OcGetLegacySecureBootECID(IN OC_GLOBAL_CONFIG *Config, OUT UINT64 *ApECID)
EFI_STATUS OcKernelProcessPrelinked(IN OC_GLOBAL_CONFIG *Config, IN UINT32 DarwinVersion, IN BOOLEAN Is32Bit, IN OUT UINT8 *Kernel, IN UINT32 *KernelSize, IN UINT32 AllocatedSize, IN UINT32 LinkedExpansion, IN UINT32 ReservedExeSize)
VOID OcLoadUefiOutputSupport(IN OC_STORAGE_CONTEXT *Storage, IN OC_GLOBAL_CONFIG *Config)
EFI_STATUS OcDriverInfoDump(IN EFI_FILE_PROTOCOL *Root)
VOID OcMiscMiddleInit(IN OC_STORAGE_CONTEXT *Storage, IN OC_GLOBAL_CONFIG *Config, IN CONST CHAR16 *RootPath, IN EFI_DEVICE_PATH_PROTOCOL *LoadPath, IN EFI_HANDLE StorageHandle, OUT UINT8 *Signature OPTIONAL)
VOID OcLoadKernelSupport(IN OC_STORAGE_CONTEXT *Storage, IN OC_GLOBAL_CONFIG *Config, IN OC_CPU_INFO *CpuInfo)
OC_RSA_PUBLIC_KEY * OcGetVaultKey(VOID)
EFI_STATUS OcKernelApplyQuirk(IN KERNEL_QUIRK_NAME Quirk, IN KERNEL_CACHE_TYPE CacheType, IN UINT32 DarwinVersion, IN OUT VOID *Context, IN OUT PATCHER_CONTEXT *KernelPatcher)
VOID OcLoadAcpiSupport(IN OC_STORAGE_CONTEXT *Storage, IN OC_GLOBAL_CONFIG *Config)
VOID OcLoadDevPropsSupport(IN OC_GLOBAL_CONFIG *Config)
VOID OcMiscUefiQuirksLoaded(IN OC_GLOBAL_CONFIG *Config)