|
|
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: * @OSF_COPYRIGHT@
24: */
25: /*
26: * HISTORY
27: *
28: * Revision 1.1.1.1 1998/09/22 21:05:31 wsanchez
29: * Import of Mac OS X kernel (~semeria)
30: *
31: * Revision 1.1.1.1 1998/03/07 02:25:45 wsanchez
32: * Import of OSF Mach kernel (~mburg)
33: *
34: * Revision 1.2.16.4 1996/01/09 19:21:29 devrcs
35: * Added bootstrap map for alpha.
36: * This probably should be moved to some MD include file.
37: * It's not really machine dependent, just a different
38: * way of doing things.
39: * [1995/12/01 19:49:04 jfraser]
40: *
41: * Merged '64-bit safe' changes from DEC alpha port.
42: * [1995/11/21 18:08:36 jfraser]
43: *
44: * Revision 1.2.16.3 1995/01/06 19:50:04 devrcs
45: * mk6 CR668 - 1.3b26 merge
46: * Added region_desc structure;
47: * [1994/10/14 03:42:28 dwm]
48: *
49: * Revision 1.2.16.2 1994/09/23 02:34:18 ezf
50: * change marker to not FREE
51: * [1994/09/22 21:39:03 ezf]
52: *
53: * Revision 1.2.16.1 1994/06/13 20:49:19 dlb
54: * Merge MK6 and NMK17
55: * [1994/06/13 20:24:22 dlb]
56: *
57: * Revision 1.2.14.1 1994/02/08 11:01:06 bernadat
58: * Checked in NMK16_1 changes
59: * [94/02/04 bernadat]
60: *
61: * Revision 1.2.12.1 1993/12/23 08:56:06 bernadat
62: * Added COFF_F.
63: * [93/11/29 bernadat]
64: *
65: * Revision 1.2.3.2 1993/06/24 16:14:07 gm
66: * CR9371: Moved here from default_pager.
67: * [1993/06/24 16:08:52 gm]
68: *
69: * Revision 1.2.3.2 1993/06/09 02:10:53 gm
70: * Added to OSF/1 R1.3 from NMK15.0.
71: * [1993/06/02 20:41:54 gm]
72: *
73: * Revision 1.2 1993/04/19 16:31:50 devrcs
74: * Added ROSE support: we need several symbol table entries since ROSE
75: * can have up to 3 symbol section.
76: * [93/03/24 bruel]
77: *
78: * Use free copyright
79: * [1993/03/03 12:12:37 bernadat]
80: *
81: * Fixed History Revision Comments
82: * [93/02/24 bernadat]
83: *
84: * Created for external default pager.
85: * [1993/02/09 15:40:42 bruel]
86: *
87: * $EndLog$
88: */
89: /* CMU_HIST */
90: /*
91: * Revision 2.2 92/01/03 20:19:42 dbg
92: * Created.
93: * [91/09/06 dbg]
94: *
95: */
96: /* CMU_ENDHIST */
97: /*
98: */
99: /*
100: * Mach Operating System
101: * Copyright (c) 1991 Carnegie Mellon University
102: * All Rights Reserved.
103: *
104: * Permission to use, copy, modify and distribute this software and its
105: * documentation is hereby granted, provided that both the copyright
106: * notice and this permission notice appear in all copies of the
107: * software, derivative works or modified versions, and any portions
108: * thereof, and that both notices appear in supporting documentation.
109: *
110: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
111: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
112: * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
113: *
114: * Carnegie Mellon requests users of this software to return to
115: *
116: * Software Distribution Coordinator or [email protected]
117: * School of Computer Science
118: * Carnegie Mellon University
119: * Pittsburgh PA 15213-3890
120: *
121: * any improvements or extensions that they make and grant Carnegie Mellon
122: * the rights to redistribute these changes.
123: */
124:
125: #ifndef _MACH_BOOT_INFO_H_
126: #define _MACH_BOOT_INFO_H_
127:
128: #include <mach/machine/vm_types.h>
129: #include <mach/vm_prot.h>
130: #include <mach/boolean.h>
131:
132: /*
133: * The boot loader uses several instances of the following structure to
134: * provide a description of the bootstrap task virtual address space,
135: * consisting of memory regions that need to be mapped from physical pages
136: * filled by the boot loader, or regions that need to be allocated in the
137: * new address space.
138: */
139: struct region_desc {
140: vm_offset_t addr; /* virtual address */
141: vm_offset_t offset; /* offset within object */
142: vm_size_t size; /* size */
143: vm_prot_t prot; /* protection */
144: boolean_t mapped; /* mapped or zero-filled */
145: };
146:
147: #ifdef __alpha
148: typedef long physaddr_t;
149: #define NBOOT_REGIONS 5
150:
151: #define TEXT 0
152: #define DATA 1
153: #define BSS 2
154: #define STACK 3
155: #define SYMS 4
156:
157: struct bootstrap_map {
158: physaddr_t boot_location;
159: long boot_size;
160: long boot_entry;
161: long boot_gp_value;
162: long boot_region_count;
163: struct region_desc boot_regions[NBOOT_REGIONS];
164: };
165:
166: #endif /* __alpha */
167:
168: #define BOOT_INFO_COMPAT 1
169: #if BOOT_INFO_COMPAT
170: /*
171: * Old compat code for makeboot produced images
172: */
173:
174: /*
175: * Structure of Mach kernel boot file.
176: */
177: #include <mach/machine/vm_types.h>
178:
179: /*
180: * A Mach kernel boot file consists of the Mach
181: * kernel image and the bootstrap image, glued
182: * together.
183: *
184: * The first part of the file is a normal executable
185: * (bootable) file: a.out, coff, or whatever. The
186: * text and data sizes are set to include the entire
187: * file. (Some machines do not allow a zero-length
188: * data segment).
189: *
190: * The rest of the file sits where the kernel BSS
191: * should be. A boot_info record describes the
192: * sizes of the next 3 sections. Following this
193: * are the kernel symbol table, the bootstrap image
194: * (including its symbol table), and the loader
195: * information for the bootstrap image. Each
196: * of these sections is padded to an integer (4-byte)
197: * boundary.
198: *
199: * When the file is loaded into memory, the kernel
200: * text and data segments are at their normal locations.
201: *
202: * The boot_info structure appears at the start of
203: * the bss (at 'edata[]'):
204: */
205:
206: struct boot_info {
207: vm_size_t sym_size; /* size of kernel symbols */
208: vm_size_t boot_size; /* size of bootstrap image */
209: vm_size_t load_info_size; /* size of loader information
210: for bootstrap image */
211: };
212:
213: /*
214: * The 3 sections must be moved out of BSS for the kernel to run:
215: *
216: * The kernel symbol table follows the BSS (at 'end[]').
217: *
218: * The bootstrap image is on the first page boundary (machine page
219: * size) following the kernel symbol table.
220: *
221: * The loader information immediately follows the bootstrap image.
222: */
223:
224: /*
225: * Loader information for bootstrap image:
226: */
227:
228: #define AOUT_F 1
229: #define ROSE_F 2
230: #define COFF_F 3
231:
232: struct loader_info {
233: int format; /* symbol table format (A.OUT or ROSE) */
234: vm_offset_t text_start; /* text start in memory */
235: vm_size_t text_size; /* text size */
236: vm_offset_t text_offset; /* text offset in file */
237: vm_offset_t data_start; /* data+bss start in memory */
238: vm_size_t data_size; /* data size */
239: vm_offset_t data_offset; /* data offset in file */
240: vm_size_t bss_size; /* BSS size */
241: vm_offset_t str_offset; /* strings table offset in file */
242: vm_size_t str_size; /* strings table size */
243: vm_offset_t sym_offset[4]; /* symbol table offset in file */
244: vm_size_t sym_size[4]; /* symbol table size */
245: vm_offset_t entry_1; /* 2 words for entry address */
246: vm_offset_t entry_2;
247: } ;
248:
249: #define EX_NOT_EXECUTABLE 6000
250:
251: #endif /* BOOT_INFO_COMPAT */
252:
253: #endif /* _MACH_BOOT_INFO_H_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.