Annotation of XNU/osfmk/mach/boot_info.h, revision 1.1.1.1

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_ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.