#define NDRIVERS 500
enum {
kBootDriverTypeInvalid = 0,
kBootDriverTypeKEXT = 1,
kBootDriverTypeMKEXT = 2
};
typedef struct {
unsigned long address; unsigned long size; unsigned long type; } driver_config_t;
typedef struct {
unsigned short major_vers; unsigned short minor_vers;
unsigned long cs32_base;
unsigned long cs16_base;
unsigned long ds_base;
unsigned long cs_length;
unsigned long ds_length;
unsigned long entry_offset;
union {
struct {
unsigned long mode_16 :1;
unsigned long mode_32 :1;
unsigned long idle_slows_cpu :1;
unsigned long reserved :29;
} f;
unsigned long data;
} flags;
unsigned long connected;
} APM_config_t;
typedef struct _PCI_bus_info_t {
union {
struct {
unsigned char configMethod1 :1;
unsigned char configMethod2 :1;
unsigned char :2;
unsigned char specialCycle1 :1;
unsigned char specialCycle2 :1;
} s;
unsigned char d;
} u_bus;
unsigned char maxBusNum;
unsigned char majorVersion;
unsigned char minorVersion;
unsigned char BIOSPresent;
} PCI_bus_info_t;
struct boot_video {
unsigned long v_baseAddr; unsigned long v_display; unsigned long v_rowBytes; unsigned long v_width; unsigned long v_height; unsigned long v_depth; };
typedef struct boot_video boot_video;
#define GRAPHICS_MODE 1
#define TEXT_MODE 0
#define BOOT_STRING_LEN 160
#define CONFIG_SIZE (12 * 4096)
typedef struct {
short version;
char bootString[BOOT_STRING_LEN]; int magicCookie; int numIDEs; int rootdev; int convmem; int extmem; char bootFile[128]; int firstAddr0; int diskInfo[4]; int graphicsMode; int kernDev; int numBootDrivers; char * configEnd; int kaddr; int ksize; driver_config_t driverConfig[NDRIVERS];
char _reserved[2052];
boot_video video;
PCI_bus_info_t pciInfo;
APM_config_t apmConfig;
char config[CONFIG_SIZE];
} KERNBOOTSTRUCT;
#define KERNSTRUCT_ADDR ((KERNBOOTSTRUCT *) 0x11000)
#define KERNBOOTMAGIC 0xa7a7a7a7
#ifndef KERNEL
extern KERNBOOTSTRUCT * kernBootStruct;
#endif