|
|
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:
1.1.1.2 ! root 28: #ifndef __ASSEMBLER__
1.1 root 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:
1.1.1.2 ! root 68: #endif !__ASSEMBLER__
1.1 root 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.