15#ifndef BOOT_COMPAT_INTERNAL_H
16#define BOOT_COMPAT_INTERNAL_H
28#include <Protocol/LoadedImage.h>
48#define RT_RELOC_PROTECT_MAX_NUM ((UINTN) 64)
54#define RT_DESC_ENTRY_NUM ((UINTN) 64)
59#define KERNEL_STATIC_VADDR ((UINT64) 0xFFFFFF8000000000ULL)
64#define KERNEL_HIB_VADDR ((UINTN) (0xFFFFFF8000100000ULL & MAX_UINTN))
69#define KERNEL_TEXT_VADDR ((UINTN) (0xFFFFFF8000200000ULL & MAX_UINTN))
74#define KERNEL_TEXT_VADDR_LEGACY 0x111000
79#define KERNEL_BASE_PADDR ((UINT32) (KERNEL_HIB_VADDR & MAX_UINT32))
84#define KERNEL_TEXT_PADDR ((UINT32) (KERNEL_TEXT_VADDR & MAX_UINT32))
89#define KERNEL_TEXT_PADDR_LEGACY (KERNEL_TEXT_VADDR_LEGACY)
94#define SLIDE_GRANULARITY ((UINTN) SIZE_2MB)
99#define TOTAL_SLIDE_NUM ((UINTN) 0x100)
104#define SLIDE_ERRATA_NUM ((UINTN) 0x80)
109#define SLIDE_ERRATA_SKIP_RANGE ((UINTN) 0x10200000)
117#define ESTIMATED_KERNEL_SIZE ((UINTN) (200 * SIZE_1MB))
125#define ESTIMATED_CALL_GATE_SIZE 256
130#define CALL_GATE_JUMP_SIZE (sizeof (CALL_GATE_JUMP))
135#define CALL_GATE_MIN_SIZE (ESTIMATED_CALL_GATE_SIZE + CALL_GATE_JUMP_SIZE)
173 IN EFI_PHYSICAL_ADDRESS Source,
501 IN OUT EFI_LOADED_IMAGE *LoadedImage,
502 IN EFI_GET_MEMORY_MAP GetMemoryMap OPTIONAL
526 IN EFI_PHYSICAL_ADDRESS CallGate,
539 IN OUT VOID *BootArgs
551 IN UINTN ImageHeaderPage
566 IN UINTN MemoryMapSize,
567 IN UINTN DescriptorSize,
568 IN UINT32 DescriptorVersion,
569 IN EFI_MEMORY_DESCRIPTOR *MemoryMap
615 IN UINTN SystemTable,
650 IN OUT UINT8 *ImageBase,
675 IN EFI_GET_VARIABLE GetVariable,
676 IN EFI_GET_MEMORY_MAP GetMemoryMap OPTIONAL,
678 IN VOID *FilterMapContext OPTIONAL,
679 IN CHAR16 *VariableName,
680 IN EFI_GUID *VendorGuid,
681 OUT UINT32 *Attributes OPTIONAL,
682 IN OUT UINTN *DataSize,
730 IN EFI_GET_MEMORY_MAP GetMemoryMap,
731 IN EFI_ALLOCATE_PAGES AllocatePages,
732 IN UINTN NumberOfPages,
733 IN OUT EFI_PHYSICAL_ADDRESS *Memory
EFI_STATUS EFIAPI AppleMapPrepareKernelStateNew64(IN UINTN SystemTable, IN OUT APPLE_EFI_BOOT_RT_KCG_ARGS *KcgArguments, IN KERNEL_CALL_GATE CallGate)
UINTN EFIAPI AppleMapPrepareKernelState32(IN UINTN Args)
EFI_STATUS AppleRelocationRelease(IN OUT BOOT_COMPAT_CONTEXT *BootCompat)
VOID AppleSlideRestore(IN OUT BOOT_COMPAT_CONTEXT *BootCompat, IN OUT OC_BOOT_ARGUMENTS *BootArgs)
#define RT_RELOC_PROTECT_MAX_NUM
struct RT_RELOC_PROTECT_INFO_ RT_RELOC_PROTECT_INFO
EFI_STATUS AppleRelocationVirtualize(IN OUT BOOT_COMPAT_CONTEXT *BootCompat, IN OUT OC_BOOT_ARGUMENTS *BA)
UINTN(EFIAPI * KERNEL_CALL_GATE)(IN UINTN Arg1, IN UINTN Arg2)
VOID AppleRelocationRebase(IN OUT BOOT_COMPAT_CONTEXT *BootCompat, IN OUT OC_BOOT_ARGUMENTS *BA)
struct RT_RELOC_PROTECT_DATA_ RT_RELOC_PROTECT_DATA
BOOT_COMPAT_CONTEXT * GetBootCompatContext(VOID)
STATIC_ASSERT(sizeof(CALL_GATE_JUMP)==7+14, "Invalid CALL_GATE_JUMP size")
struct KERNEL_SUPPORT_STATE_ KERNEL_SUPPORT_STATE
VOID AppleSlideUnlockForSafeMode(IN OUT UINT8 *ImageBase, IN UINTN ImageSize)
VOID AppleMapPrepareForHibernateWake(IN OUT BOOT_COMPAT_CONTEXT *BootCompat, IN UINTN ImageHeaderPage)
VOID AppleRelocationCallGate64(IN OUT UINTN *Args, IN BOOT_COMPAT_CONTEXT *BootCompat, IN KERNEL_CALL_GATE CallGate, IN UINTN *KcgArg1, IN UINTN KcgArg2)
VOID InstallServiceOverrides(IN OUT BOOT_COMPAT_CONTEXT *BootCompat)
UINTN(EFIAPI * RELOCATION_CALL_GATE)(IN UINTN QWordCount, IN UINTN EntryPoint, IN EFI_PHYSICAL_ADDRESS Source, IN UINTN Args)
struct CALL_GATE_JUMP_ CALL_GATE_JUMP
VOID AppleMapPrepareBooterState(IN OUT BOOT_COMPAT_CONTEXT *BootCompat, IN OUT EFI_LOADED_IMAGE *LoadedImage, IN EFI_GET_MEMORY_MAP GetMemoryMap OPTIONAL)
VOID AppleMapPrepareKernelJump32(IN OUT BOOT_COMPAT_CONTEXT *BootCompat)
UINTN EFIAPI AppleMapPrepareKernelStateOld64(IN UINTN Args, IN UINTN EntryPoint, IN KERNEL_CALL_GATE CallGate)
#define RT_DESC_ENTRY_NUM
EFI_STATUS AppleMapPrepareMemState(IN OUT BOOT_COMPAT_CONTEXT *BootCompat, IN UINTN MemoryMapSize, IN UINTN DescriptorSize, IN UINT32 DescriptorVersion, IN EFI_MEMORY_DESCRIPTOR *MemoryMap)
VOID AppleMapPrepareMemoryPool(IN OUT BOOT_COMPAT_CONTEXT *BootCompat)
EFI_STATUS AppleRelocationAllocatePages(IN OUT BOOT_COMPAT_CONTEXT *BootCompat, IN EFI_GET_MEMORY_MAP GetMemoryMap, IN EFI_ALLOCATE_PAGES AllocatePages, IN UINTN NumberOfPages, IN OUT EFI_PHYSICAL_ADDRESS *Memory)
UINTN AppleSlideGetRelocationSize(IN OUT BOOT_COMPAT_CONTEXT *BootCompat)
VOID AppleMapPrepareKernelJump64(IN OUT BOOT_COMPAT_CONTEXT *BootCompat, IN EFI_PHYSICAL_ADDRESS CallGate, IN UINTN HookAddress)
struct UEFI_SERVICES_POINTERS_ UEFI_SERVICES_POINTERS
struct BOOT_COMPAT_CONTEXT_ BOOT_COMPAT_CONTEXT
VOID AsmAppleMapPrepareKernelState32(VOID)
EFI_STATUS AppleSlideGetVariable(IN OUT BOOT_COMPAT_CONTEXT *BootCompat, IN EFI_GET_VARIABLE GetVariable, IN EFI_GET_MEMORY_MAP GetMemoryMap OPTIONAL, IN OC_MEMORY_FILTER FilterMap OPTIONAL, IN VOID *FilterMapContext OPTIONAL, IN CHAR16 *VariableName, IN EFI_GUID *VendorGuid, OUT UINT32 *Attributes OPTIONAL, IN OUT UINTN *DataSize, OUT VOID *Data)
struct SERVICES_OVERRIDE_STATE_ SERVICES_OVERRIDE_STATE
VOID AppleMapPrepareForBooting(IN OUT BOOT_COMPAT_CONTEXT *BootCompat, IN OUT VOID *BootArgs)
struct SLIDE_SUPPORT_STATE_ SLIDE_SUPPORT_STATE
VOID(* OC_MEMORY_FILTER)(IN VOID *Context OPTIONAL, IN UINTN MemoryMapSize, IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap, IN UINTN DescriptorSize)
SLIDE_SUPPORT_STATE SlideSupport
SERVICES_OVERRIDE_STATE ServiceState
RT_RELOC_PROTECT_DATA RtReloc
UEFI_SERVICES_POINTERS ServicePtrs
KERNEL_SUPPORT_STATE KernelState
struct CALL_GATE_JUMP_::@79 Jmp
struct CALL_GATE_JUMP_::@78 LeaRip
EFI_PHYSICAL_ADDRESS RelocationBlock
BOOLEAN RelocationBlockLegacy
EFI_PHYSICAL_ADDRESS SysTableRtArea
UINTN RelocationBlockUsed
EFI_CONFIGURATION_TABLE * ConfigurationTable
EFI_MEMORY_DESCRIPTOR VmMap[RT_DESC_ENTRY_NUM]
OC_VMEM_CONTEXT VmContext
RT_RELOC_PROTECT_INFO RelocInfo[RT_RELOC_PROTECT_MAX_NUM]
EFI_PHYSICAL_ADDRESS PhysicalStart
EFI_PHYSICAL_ADDRESS PhysicalEnd
EFI_LOADED_IMAGE_PROTOCOL * LastAppleBootImage
OC_FIRMWARE_RUNTIME_PROTOCOL * FwRuntime
UINTN AppleBootNestedCount
BOOLEAN AppleHibernateWake
BOOLEAN AwaitingPerfAlloc
EFI_PHYSICAL_ADDRESS OldKernelCallGate
EFI_EVENT GetVariableEvent
UINTN MemoryMapDescriptorSize
UINT8 ValidSlides[TOTAL_SLIDE_NUM]
CHAR8 BootArgs[BOOT_LINE_LENGTH]
BOOLEAN HasCsrActiveConfig
BOOLEAN HasMemoryMapAnalysis
UINTN EstimatedKernelArea
EFI_EXIT_BOOT_SERVICES ExitBootServices
EFI_IMAGE_START StartImage
EFI_ALLOCATE_POOL AllocatePool
EFI_ALLOCATE_PAGES AllocatePages
EFI_GET_VARIABLE GetVariable
EFI_GET_MEMORY_MAP GetMemoryMap