]>
Commit | Line | Data |
---|---|---|
1c79356b A |
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 |