Chameleon

Chameleon Svn Source Tree

Root/branches/Bungo/i386/libsaio/bootargs.h

1/*
2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. The rights granted to you under the License
10 * may not be used to create, or enable the creation or redistribution of,
11 * unlawful or unlicensed copies of an Apple operating system, or to
12 * circumvent, violate, or enable the circumvention or violation of, any
13 * terms of an Apple operating system software license agreement.
14 *
15 * Please obtain a copy of the License at
16 * http://www.opensource.apple.com/apsl/ and read it before using this file.
17 *
18 * The Original Code and all software distributed under the License are
19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23 * Please see the License for the specific language governing rights and
24 * limitations under the License.
25 *
26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27 */
28#ifndef _PEXPERT_I386_BOOT_H
29#define _PEXPERT_I386_BOOT_H
30
31#include <stdint.h>
32
33/*
34 * What the booter leaves behind for the kernel.
35 */
36
37/*
38 * Types of boot driver that may be loaded by the booter.
39 */
40enum {
41 kBootDriverTypeInvalid = 0,
42 kBootDriverTypeKEXT = 1,
43 kBootDriverTypeMKEXT = 2
44};
45
46enum {
47 kEfiReservedMemoryType = 0,
48 kEfiLoaderCode = 1,
49 kEfiLoaderData = 2,
50 kEfiBootServicesCode = 3,
51 kEfiBootServicesData = 4,
52 kEfiRuntimeServicesCode = 5,
53 kEfiRuntimeServicesData = 6,
54 kEfiConventionalMemory = 7,
55 kEfiUnusableMemory = 8,
56 kEfiACPIReclaimMemory = 9,
57 kEfiACPIMemoryNVS = 10,
58 kEfiMemoryMappedIO = 11,
59 kEfiMemoryMappedIOPortSpace = 12,
60 kEfiPalCode = 13,
61 kEfiMaxMemoryType = 14
62};
63
64/*
65 * Memory range descriptor.
66 */
67typedef struct EfiMemoryRange {
68 uint32_t Type;
69 uint32_t Pad;
70 uint64_t PhysicalStart;
71 uint64_t VirtualStart;
72 uint64_t NumberOfPages;
73 uint64_t Attribute;
74} EfiMemoryRange;
75
76#define BOOT_LINE_LENGTH 1024
77#define BOOT_STRING_LEN BOOT_LINE_LENGTH
78
79/*
80 * Video information..
81 */
82
83struct Boot_Video {
84uint32_tv_baseAddr;/* Base address of video memory */
85uint32_tv_display;/* Display Code (if Applicable */
86uint32_tv_rowBytes;/* Number of bytes per pixel row */
87uint32_tv_width;/* Width */
88uint32_tv_height;/* Height */
89uint32_tv_depth;/* Pixel Depth */
90};
91
92typedef struct Boot_VideoBoot_Video;
93
94/* Values for v_display */
95
96#define GRAPHICS_MODE1
97#define FB_TEXT_MODE2
98
99
100/* Struct describing an image passed in by the booter */
101struct boot_icon_element {
102 unsigned int width;
103 unsigned int height;
104 int y_offset_from_center;
105 unsigned int data_size;
106 unsigned int __reserved1[4];
107 unsigned char data[0];
108};
109typedef struct boot_icon_element boot_icon_element;
110
111/* Boot argument structure - passed into Mach kernel at boot time.
112 * "Revision" can be incremented for compatible changes
113 */
114// Lion
115#define kBootArgsRevision0
116#define kBootArgsVersion2
117
118// Snow Leopard and older
119#define kBootArgsPreLionRevision6
120#define kBootArgsPreLionVersion1
121
122/* Snapshot constants of previous revisions that are supported */
123#define kBootArgsVersion11
124#define kBootArgsVersion22
125#define kBootArgsRevision2_00
126
127#define kBootArgsEfiMode3232
128#define kBootArgsEfiMode6464
129
130/* Bitfields for boot_args->flags */
131#define kBootArgsFlagRebootOnPanic(1 << 0)
132#define kBootArgsFlagHiDPI(1 << 1)
133#define kBootArgsFlagBlack(1 << 2)
134#define kBootArgsFlagCSRActiveConfig(1 << 3)
135#define kBootArgsFlagCSRPendingConfig(1 << 4)
136#define kBootArgsFlagCSRBoot(1 << 5)
137#define kBootArgsFlagBlackBg(1 << 6)
138#define kBootArgsFlagLoginUI(1 << 7)
139
140typedef struct boot_args
141{
142 uint16_t Revision;/* Revision of boot_args structure */
143 uint16_t Version;/* Version of boot_args structure */
144
145 uint8_t efiMode; /* 32 means 32-bit mode, 64 means 64-bit mode */
146 uint8_t debugMode; /* Bit field with behavior changes */
147 uint16_t flags;
148
149 char CommandLine[BOOT_LINE_LENGTH];/* Passed in command line */
150
151 uint32_t MemoryMap; /* Physical address of memory map */
152 uint32_t MemoryMapSize;
153 uint32_t MemoryMapDescriptorSize;
154 uint32_t MemoryMapDescriptorVersion;
155
156 Boot_VideoVideo;/* Video Information */
157
158 uint32_t deviceTreeP; /* Physical address of flattened device tree */
159 uint32_t deviceTreeLength; /* Length of flattened tree */
160
161 uint32_t kaddr; /* Physical address of beginning of kernel text */
162 uint32_t ksize; /* Size of combined kernel text+data+efi */
163
164 uint32_t efiRuntimeServicesPageStart; /* physical address of defragmented runtime pages */
165 uint32_t efiRuntimeServicesPageCount;
166 uint64_t efiRuntimeServicesVirtualPageStart; /* virtual address of defragmented runtime pages */
167
168 uint32_t efiSystemTable; /* physical address of system table in runtime area */
169 uint32_t kslide;
170
171 uint32_t performanceDataStart; /* physical address of log */
172 uint32_t performanceDataSize;
173
174 uint32_t keyStoreDataStart; /* physical address of key store data */
175 uint32_t keyStoreDataSize;
176 uint64_tbootMemStart;
177 uint64_tbootMemSize;
178 uint64_t PhysicalMemorySize;
179 uint64_t FSBFrequency;
180
181 uint64_t pciConfigSpaceBaseAddress;
182 uint32_t pciConfigSpaceStartBusNumber;
183 uint32_t pciConfigSpaceEndBusNumber;
184 uint32_tcsrActiveConfig;
185 uint32_tcsrPendingConfig;
186 uint32_t __reserved4[728];
187
188} boot_args;
189
190typedef struct boot_args_pre_lion
191{
192 uint16_t Revision;/* Revision of boot_args structure */
193 uint16_t Version;/* Version of boot_args structure */
194
195 char CommandLine[BOOT_LINE_LENGTH];/* Passed in command line */
196
197 uint32_t MemoryMap; /* Physical address of memory map */
198 uint32_t MemoryMapSize;
199 uint32_t MemoryMapDescriptorSize;
200 uint32_t MemoryMapDescriptorVersion;
201
202 Boot_VideoVideo;/* Video Information */
203
204 uint32_t deviceTreeP; /* Physical address of flattened device tree */
205 uint32_t deviceTreeLength; /* Length of flattened tree */
206
207 uint32_t kaddr; /* Physical address of beginning of kernel text */
208 uint32_t ksize; /* Size of combined kernel text+data+efi */
209
210 uint32_t efiRuntimeServicesPageStart; /* physical address of defragmented runtime pages */
211 uint32_t efiRuntimeServicesPageCount;
212 uint32_t efiSystemTable; /* physical address of system table in runtime area */
213
214 uint8_t efiMode; /* 32 means 32-bit mode, 64 means 64-bit mode */
215 uint8_t __reserved1[3];
216 uint32_t __reserved2[1];
217 uint32_t performanceDataStart; /* physical address of log */
218 uint32_t performanceDataSize;
219 uint64_t efiRuntimeServicesVirtualPageStart; /* virtual address of defragmented runtime pages */
220 uint32_t __reserved3[2];
221
222} boot_args_pre_lion;
223
224#endif /* _PEXPERT_I386_BOOT_H */
225

Archive Download this file

Revision: 2537