|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1994 The University of Utah and ! 3: * the Computer Systems Laboratory at the University of Utah (CSL). ! 4: * All rights reserved. ! 5: * ! 6: * Permission to use, copy, modify and distribute this software is hereby ! 7: * granted provided that (1) source code retains these copyright, permission, ! 8: * and disclaimer notices, and (2) redistributions including binaries ! 9: * reproduce the notices in supporting documentation, and (3) all advertising ! 10: * materials mentioning features or use of this software display the following ! 11: * acknowledgement: ``This product includes software developed by the ! 12: * Computer Systems Laboratory at the University of Utah.'' ! 13: * ! 14: * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS ! 15: * IS" CONDITION. THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF ! 16: * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. ! 17: * ! 18: * CSL requests users of this software to return to [email protected] any ! 19: * improvements that they make and grant CSL redistribution rights. ! 20: * ! 21: * Author: Bryan Ford, University of Utah CSL ! 22: */ ! 23: #ifndef _MACH_BOOT_ ! 24: #define _MACH_BOOT_ ! 25: ! 26: #include <mach/machine/boot.h> ! 27: ! 28: #ifndef ASSEMBLER ! 29: ! 30: #include <mach/machine/vm_types.h> ! 31: ! 32: struct boot_image_info ! 33: { ! 34: /* First of the chain of boot modules in the boot image. */ ! 35: struct boot_module *first_bmod; ! 36: ! 37: /* List of rendezvous points: ! 38: starts out 0; and bmods can add nodes as needed. */ ! 39: struct boot_rendezvous *first_rzv; ! 40: ! 41: /* These register the total virtual address extent of the boot image. */ ! 42: vm_offset_t start, end; ! 43: ! 44: /* Machine-dependent boot information. */ ! 45: struct machine_boot_image_info mboot; ! 46: }; ! 47: ! 48: struct boot_module ! 49: { ! 50: int magic; ! 51: int (*init)(struct boot_image_info *bii); ! 52: vm_offset_t text; ! 53: vm_offset_t etext; ! 54: vm_offset_t data; ! 55: vm_offset_t edata; ! 56: vm_offset_t bss; ! 57: vm_offset_t ebss; ! 58: }; ! 59: #define BMOD_VALID(bmod) ((bmod)->magic == BMOD_MAGIC) ! 60: #define BMOD_NEXT(bmod) ((struct boot_module*)((bmod)->edata)) ! 61: ! 62: struct boot_rendezvous ! 63: { ! 64: struct boot_rendezvous *next; ! 65: int code; ! 66: }; ! 67: ! 68: #endif !ASSEMBLER ! 69: ! 70: ! 71: /* This is the magic value that must appear in boot_module.magic. */ ! 72: #define BMOD_MAGIC 0x424d4f44 /* 'BMOD' */ ! 73: ! 74: ! 75: /* Following are the codes for boot_rendezvous.code. */ ! 76: ! 77: /* This rendezvous is used for choosing a microkernel to start. ! 78: XX not used yet */ ! 79: #define BRZV_KERNEL 'K' ! 80: ! 81: /* Once the microkernel is fully initialized, ! 82: it starts one or more bootstrap services... */ ! 83: #define BRZV_BOOTSTRAP 'B' ! 84: ! 85: /* The bootstrap services might need other OS-dependent data, ! 86: such as initial programs to run, filesystem snapshots, etc. ! 87: These generic chunks of data are packaged up by the microkernel ! 88: and provided to the bootstrap services upon request. ! 89: XX When can they be deallocated? */ ! 90: #define BRZV_DATA 'D' ! 91: ! 92: ! 93: #endif _MACH_BOOT_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.