2 * Copyright (c) 2002-2003 Apple Computer, Inc. All rights reserved.
4 * @APPLE_LICENSE_HEADER_START@
6 * Portions Copyright (c) 2002-2003 Apple Computer, Inc. All Rights
7 * Reserved. This file contains Original Code and/or Modifications of
8 * Original Code as defined in and that are subject to the Apple Public
9 * Source License Version 2.0 (the "License"). You may not use this file
10 * except in compliance with the License. Please obtain a copy of the
11 * License at http://www.apple.com/publicsource and read it before using
14 * The Original Code and all software distributed under the License are
15 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT. Please see the
19 * License for the specific language governing rights and limitations
22 * @APPLE_LICENSE_HEADER_END@
25 #ifndef __BOOTSTRUCT_H
26 #define __BOOTSTRUCT_H
28 #include <pexpert/i386/boot.h>
31 #include "device_tree.h"
33 extern boot_args
*bootArgs
;
34 extern Node
*gMemoryMapNode
;
37 * Maximum number of boot drivers that can be loaded.
41 #define CONFIG_SIZE (12 * 4096)
43 #define kMemoryMapCountMax 40
46 * PCI bus information.
48 typedef struct _PCI_bus_info_t
{
51 unsigned char configMethod1
:1;
52 unsigned char configMethod2
:1;
54 unsigned char specialCycle1
:1;
55 unsigned char specialCycle2
:1;
59 unsigned char maxBusNum
;
60 unsigned char majorVersion
;
61 unsigned char minorVersion
;
62 unsigned char BIOSPresent
;
66 unsigned long address
; // address where driver was loaded
67 unsigned long size
; // number of bytes
68 unsigned long type
; // driver type
72 * INT15, E820h - Query System Address Map.
74 * Documented in ACPI Specification Rev 2.0,
75 * Chapter 15 (System Address Map Interfaces).
79 * ACPI defined memory range types.
82 kMemoryRangeUsable
= 1, // RAM usable by the OS.
83 kMemoryRangeReserved
= 2, // Reserved. (Do not use)
84 kMemoryRangeACPI
= 3, // ACPI tables. Can be reclaimed.
85 kMemoryRangeNVS
= 4, // ACPI NVS memory. (Do not use)
87 /* Undefined types should be treated as kMemoryRangeReserved */
90 typedef struct PrivateBootInfo
{
91 int kernDev
; // device kernel was fetched from
93 int convmem
; // conventional memory
94 int extmem
; // extended memory
95 int numBootDrivers
; // number of drivers loaded
96 char bootFile
[128]; // kernel file name
98 unsigned long memoryMapCount
;
99 MemoryRange memoryMap
[kMemoryMapCountMax
];
101 PCI_bus_info_t pciInfo
;
103 driver_config_t driverConfig
[NDRIVERS
];
104 char * configEnd
; // pointer to end of config files
105 char config
[CONFIG_SIZE
];
108 extern PrivateBootInfo_t
*bootInfo
;
110 #endif /* __BOOTSTRUCT_H */