|
|
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.