xref: /haiku/headers/private/kernel/boot/kernel_args.h (revision 4f00613311d0bd6b70fa82ce19931c41f071ea4e)
1 /*
2  * Copyright 2002-2005, Axel Dörfler, axeld@pinc-software.de.
3  * Distributed under the terms of the MIT License.
4  *
5  * Copyright 2001-2002, Travis Geiselbrecht. All rights reserved.
6  * Distributed under the terms of the NewOS License.
7  */
8 #ifndef KERNEL_BOOT_KERNEL_ARGS_H
9 #define KERNEL_BOOT_KERNEL_ARGS_H
10 
11 
12 #include <SupportDefs.h>
13 
14 #include <boot/elf.h>
15 #include <boot/disk_identifier.h>
16 #include <boot/driver_settings.h>
17 
18 #include <platform_kernel_args.h>
19 #include <arch_kernel_args.h>
20 
21 
22 #define CURRENT_KERNEL_ARGS_VERSION	1
23 #define MAX_KERNEL_ARGS_RANGE		8
24 
25 typedef struct kernel_args {
26 	uint32		kernel_args_size;
27 	uint32		version;
28 
29 	uint32		cons_line;
30 	addr_range	bootdir_addr;
31 
32 	struct preloaded_image kernel_image;
33 	struct preloaded_image *preloaded_images;
34 
35 	uint32		num_physical_memory_ranges;
36 	addr_range	physical_memory_range[MAX_PHYSICAL_MEMORY_RANGE];
37 	uint32		num_physical_allocated_ranges;
38 	addr_range	physical_allocated_range[MAX_PHYSICAL_ALLOCATED_RANGE];
39 	uint32		num_virtual_allocated_ranges;
40 	addr_range	virtual_allocated_range[MAX_VIRTUAL_ALLOCATED_RANGE];
41 	uint32		num_kernel_args_ranges;
42 	addr_range	kernel_args_range[MAX_KERNEL_ARGS_RANGE];
43 
44 	uint32		num_cpus;
45 	addr_range	cpu_kstack[MAX_BOOT_CPUS];
46 
47 	struct {
48 		disk_identifier identifier;
49 		off_t	partition_offset;
50 		bool	user_selected;
51 		bool	booted_from_image;
52 		bool	cd;
53 	} boot_disk;
54 
55 	struct driver_settings_file *driver_settings;
56 
57 	struct {
58 		bool	enabled;
59 		int32	width;
60 		int32	height;
61 		int32	depth;
62 		addr_range physical_buffer;
63 	} frame_buffer;
64 
65 	platform_kernel_args platform_args;
66 	arch_kernel_args arch_args;
67 } kernel_args;
68 
69 #endif	/* KERNEL_BOOT_KERNEL_ARGS_H */
70