Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/i386/include/bootinfo.h
39507 views
1
/*-
2
* SPDX-License-Identifier: BSD-4-Clause
3
*
4
* Copyright (C) 1994 by Rodney W. Grimes, Milwaukie, Oregon 97222
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
* 1. Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer as
12
* the first lines of this file unmodified.
13
* 2. Redistributions in binary form must reproduce the above copyright
14
* notice, this list of conditions and the following disclaimer in the
15
* documentation and/or other materials provided with the distribution.
16
* 3. All advertising materials mentioning features or use of this software
17
* must display the following acknowledgement:
18
* This product includes software developed by Rodney W. Grimes.
19
* 4. The name of the author may not be used to endorse or promote products
20
* derived from this software without specific prior written permission.
21
*
22
* THIS SOFTWARE IS PROVIDED BY RODNEY W. GRIMES ``AS IS'' AND
23
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25
* ARE DISCLAIMED. IN NO EVENT SHALL RODNEY W. GRIMES BE LIABLE
26
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32
* SUCH DAMAGE.
33
*/
34
35
#ifndef _MACHINE_BOOTINFO_H_
36
#define _MACHINE_BOOTINFO_H_
37
38
/* Only change the version number if you break compatibility. */
39
#define BOOTINFO_VERSION 1
40
41
#define _WAS_N_BIOS_GEOM 8
42
43
/*
44
* A zero bootinfo field often means that there is no info available.
45
* Assumes booting with a boot loader from FreeBSD 2.1 or newer and
46
* that bi_size is always valid when bi_version == 1.
47
*/
48
struct bootinfo {
49
u_int32_t bi_version; /* Must be 1 */
50
u_int32_t bi_kernelname; /* represents a char * */
51
u_int32_t bi_nfs_diskless; /* struct nfs_diskless * */
52
u_int32_t _was_bi_n_bios_used;
53
u_int32_t _was_bi_bios_geom[_WAS_N_BIOS_GEOM];
54
u_int32_t bi_size;
55
u_int8_t bi_memsizes_valid;
56
u_int8_t bi_bios_dev; /* bootdev BIOS unit number (bootX -> loader only) */
57
u_int8_t bi_pad[2];
58
u_int32_t bi_basemem;
59
u_int32_t bi_extmem;
60
u_int32_t bi_symtab; /* struct symtab * */
61
u_int32_t bi_esymtab; /* struct symtab * */
62
/* Items below only from advanced bootloader */
63
u_int32_t bi_kernend; /* end of kernel space */
64
u_int32_t bi_envp; /* environment */
65
u_int32_t bi_modulep; /* preloaded modules */
66
};
67
68
#ifdef _KERNEL
69
extern struct bootinfo bootinfo;
70
#endif
71
72
/*
73
* Constants for converting boot-style device number to type,
74
* adaptor (uba, mba, etc), unit number and partition number.
75
* Type (== major device number) is in the low byte
76
* for backward compatibility. Except for that of the "magic
77
* number", each mask applies to the shifted value.
78
* Format:
79
* (4) (8) (4) (8) (8)
80
* --------------------------------
81
* |MA | SLICE | UN| PART | TYPE |
82
* --------------------------------
83
*/
84
#define B_SLICESHIFT 20
85
#define B_SLICEMASK 0xff
86
#define B_SLICE(val) (((val)>>B_SLICESHIFT) & B_SLICEMASK)
87
#define B_UNITSHIFT 16
88
#define B_UNITMASK 0xf
89
#define B_UNIT(val) (((val) >> B_UNITSHIFT) & B_UNITMASK)
90
#define B_PARTITIONSHIFT 8
91
#define B_PARTITIONMASK 0xff
92
#define B_PARTITION(val) (((val) >> B_PARTITIONSHIFT) & B_PARTITIONMASK)
93
#define B_TYPESHIFT 0
94
#define B_TYPEMASK 0xff
95
#define B_TYPE(val) (((val) >> B_TYPESHIFT) & B_TYPEMASK)
96
97
#define B_MAGICMASK 0xf0000000
98
#define B_DEVMAGIC 0xa0000000
99
100
#define MAKEBOOTDEV(type, slice, unit, partition) \
101
(((type) << B_TYPESHIFT) | ((slice) << B_SLICESHIFT) | \
102
((unit) << B_UNITSHIFT) | ((partition) << B_PARTITIONSHIFT) | \
103
B_DEVMAGIC)
104
105
#define BASE_SLICE 2
106
#define COMPATIBILITY_SLICE 0
107
#define MAX_SLICES 32
108
#define WHOLE_DISK_SLICE 1
109
110
#endif /* !_MACHINE_BOOTINFO_H_ */
111
112