|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * The contents of this file constitute Original Code as defined in and ! 7: * are subject to the Apple Public Source License Version 1.1 (the ! 8: * "License"). You may not use this file except in compliance with the ! 9: * License. Please obtain a copy of the License at ! 10: * http://www.apple.com/publicsource and read it before using this file. ! 11: * ! 12: * This Original Code and all software distributed under the License are ! 13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 17: * License for the specific language governing rights and limitations ! 18: * under the License. ! 19: * ! 20: * @APPLE_LICENSE_HEADER_END@ ! 21: */ ! 22: /* ! 23: * kernBootStruct.h ! 24: * What the booter leaves behind for the kernel. ! 25: */ ! 26: ! 27: /* The config table has room for 13 drivers if their config files ! 28: * are the maximum size allowed. ! 29: */ ! 30: #define CONFIG_SIZE (13 * 4096) ! 31: ! 32: /* Maximum number of boot drivers supported, assuming their ! 33: * config files fit in the bootstruct. ! 34: */ ! 35: #define NDRIVERS 64 ! 36: ! 37: typedef struct { ! 38: char *address; // address where driver was loaded ! 39: int size; // entry point for driver ! 40: } driver_config_t; ! 41: ! 42: typedef struct { ! 43: unsigned short major_vers; // == 0 if not present ! 44: unsigned short minor_vers; ! 45: unsigned long cs32_base; ! 46: unsigned long cs16_base; ! 47: unsigned long ds_base; ! 48: unsigned long cs_length; ! 49: unsigned long ds_length; ! 50: unsigned long entry_offset; ! 51: union { ! 52: struct { ! 53: unsigned long mode_16 :1; ! 54: unsigned long mode_32 :1; ! 55: unsigned long idle_slows_cpu :1; ! 56: unsigned long reserved :29; ! 57: } f; ! 58: unsigned long data; ! 59: } flags; ! 60: unsigned long connected; ! 61: } APM_config_t; ! 62: ! 63: typedef struct _EISA_slot_info_t { ! 64: union { ! 65: struct { ! 66: unsigned char duplicateID :4; ! 67: unsigned char slotType :1; ! 68: unsigned char prodIDPresent :1; ! 69: unsigned char dupIDPresent :1; ! 70: } s; ! 71: unsigned char d; ! 72: } u_ID; ! 73: unsigned char configMajor; ! 74: unsigned char configMinor; ! 75: unsigned short checksum; ! 76: unsigned char numFunctions; ! 77: union { ! 78: struct { ! 79: unsigned char fnTypesPresent :1; ! 80: unsigned char memoryPresent :1; ! 81: unsigned char irqPresent :1; ! 82: unsigned char dmaPresent :1; ! 83: unsigned char portRangePresent:1; ! 84: unsigned char portInitPresent :1; ! 85: unsigned char freeFormPresent :1; ! 86: unsigned char reserved:1; ! 87: } s; ! 88: unsigned char d; ! 89: } u_resources; ! 90: unsigned char id[8]; ! 91: } EISA_slot_info_t; ! 92: ! 93: typedef struct _EISA_func_info_t { ! 94: unsigned char slot; ! 95: unsigned char function; ! 96: unsigned char reserved[2]; ! 97: unsigned char data[320]; ! 98: } EISA_func_info_t; ! 99: ! 100: #define NUM_EISA_SLOTS 64 ! 101: ! 102: typedef struct _PCI_bus_info_t { ! 103: union { ! 104: struct { ! 105: unsigned char configMethod1 :1; ! 106: unsigned char configMethod2 :1; ! 107: unsigned char :2; ! 108: unsigned char specialCycle1 :1; ! 109: unsigned char specialCycle2 :1; ! 110: } s; ! 111: unsigned char d; ! 112: } u_bus; ! 113: unsigned char maxBusNum; ! 114: unsigned char majorVersion; ! 115: unsigned char minorVersion; ! 116: unsigned char BIOSPresent; ! 117: } PCI_bus_info_t; ! 118: ! 119: /* ! 120: * Video information.. ! 121: */ ! 122: ! 123: struct boot_video { ! 124: unsigned long v_baseAddr; /* Base address of video memory */ ! 125: unsigned long v_display; /* Display Code (if Applicable */ ! 126: unsigned long v_rowBytes; /* Number of bytes per pixel row */ ! 127: unsigned long v_width; /* Width */ ! 128: unsigned long v_height; /* Height */ ! 129: unsigned long v_depth; /* Pixel Depth */ ! 130: }; ! 131: ! 132: typedef struct boot_video boot_video; ! 133: ! 134: #define BOOT_STRING_LEN 160 ! 135: ! 136: typedef struct { ! 137: short version; ! 138: char bootString[BOOT_STRING_LEN];// string we booted with ! 139: int magicCookie; // KERNBOOTMAGIC if struct valid ! 140: int numIDEs; // how many IDE drives ! 141: int rootdev; // booters guess as to rootdev ! 142: int convmem; // conventional memory ! 143: int extmem; // extended memory ! 144: char boot_file[128]; // name of the kernel we booted ! 145: int first_addr0; // first address for kern convmem ! 146: int diskInfo[4]; // bios info for bios dev 80-83 ! 147: int graphicsMode; // did we boot in graphics mode? ! 148: int kernDev; // device kernel was fetched from ! 149: int numBootDrivers; // number of drivers loaded by booter ! 150: char *configEnd; // pointer to end of config files ! 151: int kaddr; // kernel load address ! 152: int ksize; // size of kernel ! 153: void *rld_entry; // entry point for standalone rld ! 154: ! 155: driver_config_t driverConfig[NDRIVERS]; ! 156: APM_config_t apm_config; ! 157: ! 158: char _reserved[7500]; ! 159: ! 160: boot_video video; ! 161: ! 162: PCI_bus_info_t pciInfo; ! 163: ! 164: int eisaConfigFunctions; ! 165: EISA_slot_info_t eisaSlotInfo[NUM_EISA_SLOTS];// EISA slot information ! 166: ! 167: char config[CONFIG_SIZE]; // the config file contents ! 168: } KERNBOOTSTRUCT; ! 169: ! 170: #define GRAPHICS_MODE 1 ! 171: #define TEXT_MODE 0 ! 172: ! 173: #define KERNSTRUCT_ADDR ((KERNBOOTSTRUCT *)0x11000) ! 174: #define KERNBOOTMAGIC 0xa7a7a7a7 ! 175: ! 176: #ifndef EISA_CONFIG_ADDR ! 177: #define EISA_CONFIG_ADDR 0x20000 ! 178: #define EISA_CONFIG_LEN 0x10000 ! 179: #endif ! 180: ! 181: #ifndef KERNEL ! 182: extern KERNBOOTSTRUCT *kernBootStruct; ! 183: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.