#ifndef _PEXPERT_I386_BOOT_H
#define _PEXPERT_I386_BOOT_H
#include <stdint.h>
enum {
kBootDriverTypeInvalid = 0,
kBootDriverTypeKEXT = 1,
kBootDriverTypeMKEXT = 2
};
enum {
kEfiReservedMemoryType = 0,
kEfiLoaderCode = 1,
kEfiLoaderData = 2,
kEfiBootServicesCode = 3,
kEfiBootServicesData = 4,
kEfiRuntimeServicesCode = 5,
kEfiRuntimeServicesData = 6,
kEfiConventionalMemory = 7,
kEfiUnusableMemory = 8,
kEfiACPIReclaimMemory = 9,
kEfiACPIMemoryNVS = 10,
kEfiMemoryMappedIO = 11,
kEfiMemoryMappedIOPortSpace = 12,
kEfiPalCode = 13,
kEfiMaxMemoryType = 14
};
typedef struct EfiMemoryRange {
uint32_t Type;
uint32_t Pad;
uint64_t PhysicalStart;
uint64_t VirtualStart;
uint64_t NumberOfPages;
uint64_t Attribute;
} EfiMemoryRange;
#define BOOT_LINE_LENGTH 1024
#define BOOT_STRING_LEN BOOT_LINE_LENGTH
struct Boot_VideoV1 {
uint32_t v_baseAddr;
uint32_t v_display;
uint32_t v_rowBytes;
uint32_t v_width;
uint32_t v_height;
uint32_t v_depth;
};
typedef struct Boot_VideoV1 Boot_VideoV1;
struct Boot_Video {
uint32_t v_display;
uint32_t v_rowBytes;
uint32_t v_width;
uint32_t v_height;
uint32_t v_depth;
uint32_t v_resv[7];
uint64_t v_baseAddr;
};
typedef struct Boot_Video Boot_Video;
#define GRAPHICS_MODE 1
#define FB_TEXT_MODE 2
struct boot_icon_element {
unsigned int width;
unsigned int height;
int y_offset_from_center;
unsigned int data_size;
unsigned int __reserved1[4];
unsigned char data[0];
};
typedef struct boot_icon_element boot_icon_element;
#define kBootArgsRevision 0
#define kBootArgsVersion 2
#define kBootArgsVersion1 1
#define kBootArgsVersion2 2
#define kBootArgsRevision2_0 0
#define kBootArgsEfiMode32 32
#define kBootArgsEfiMode64 64
#define kBootArgsFlagRebootOnPanic (1 << 0)
#define kBootArgsFlagHiDPI (1 << 1)
#define kBootArgsFlagBlack (1 << 2)
#define kBootArgsFlagCSRActiveConfig (1 << 3)
#define kBootArgsFlagCSRConfigMode (1 << 4)
#define kBootArgsFlagCSRBoot (1 << 5)
#define kBootArgsFlagBlackBg (1 << 6)
#define kBootArgsFlagLoginUI (1 << 7)
#define kBootArgsFlagInstallUI (1 << 8)
typedef struct boot_args {
uint16_t Revision;
uint16_t Version;
uint8_t efiMode;
uint8_t debugMode;
uint16_t flags;
char CommandLine[BOOT_LINE_LENGTH];
uint32_t MemoryMap;
uint32_t MemoryMapSize;
uint32_t MemoryMapDescriptorSize;
uint32_t MemoryMapDescriptorVersion;
Boot_VideoV1 VideoV1;
uint32_t deviceTreeP;
uint32_t deviceTreeLength;
uint32_t kaddr;
uint32_t ksize;
uint32_t efiRuntimeServicesPageStart;
uint32_t efiRuntimeServicesPageCount;
uint64_t efiRuntimeServicesVirtualPageStart;
uint32_t efiSystemTable;
uint32_t kslide;
uint32_t performanceDataStart;
uint32_t performanceDataSize;
uint32_t keyStoreDataStart;
uint32_t keyStoreDataSize;
uint64_t bootMemStart;
uint64_t bootMemSize;
uint64_t PhysicalMemorySize;
uint64_t FSBFrequency;
uint64_t pciConfigSpaceBaseAddress;
uint32_t pciConfigSpaceStartBusNumber;
uint32_t pciConfigSpaceEndBusNumber;
uint32_t csrActiveConfig;
uint32_t csrCapabilities;
uint32_t boot_SMC_plimit;
uint16_t bootProgressMeterStart;
uint16_t bootProgressMeterEnd;
Boot_Video Video;
uint32_t __reserved4[712];
} boot_args;
extern char assert_boot_args_size_is_4096[sizeof(boot_args) == 4096 ? 1 : -1];
#endif