#ifndef _PEXPERT_I386_BOOT_H
#define _PEXPERT_I386_BOOT_H
#include <stdint.h>
enum {
kBootDriverTypeInvalid = 0,
kBootDriverTypeKEXT = 1,
kBootDriverTypeMKEXT = 2
};
struct boot_video {
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_video boot_video;
#define VGA_TEXT_MODE 0
#define GRAPHICS_MODE 1
#define FB_TEXT_MODE 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_Video {
uint32_t v_baseAddr;
uint32_t v_display;
uint32_t v_rowBytes;
uint32_t v_width;
uint32_t v_height;
uint32_t v_depth;
} __attribute__((aligned(4)));
typedef struct Boot_Video Boot_Video;
#define kBootArgsRevision 4
#define kBootArgsVersion 1
#define kBootArgsEfiMode32 32
#define kBootArgsEfiMode64 64
typedef struct boot_args {
uint16_t Revision;
uint16_t Version;
char CommandLine[BOOT_LINE_LENGTH];
uint32_t MemoryMap;
uint32_t MemoryMapSize;
uint32_t MemoryMapDescriptorSize;
uint32_t MemoryMapDescriptorVersion;
Boot_Video Video;
uint32_t deviceTreeP;
uint32_t deviceTreeLength;
uint32_t kaddr;
uint32_t ksize;
uint32_t efiRuntimeServicesPageStart;
uint32_t efiRuntimeServicesPageCount;
uint32_t efiSystemTable;
uint8_t efiMode;
uint8_t __reserved1[3];
uint32_t __reserved2[7];
} __attribute__((aligned(4))) boot_args;
#endif