xref: /haiku/headers/private/kernel/arch/m68k/arch_kernel_args.h (revision 5ac9b506412b11afb993bb52d161efe7666958a5)
1 /*
2 ** Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
3 ** Distributed under the terms of the MIT License.
4 */
5 #ifndef KERNEL_ARCH_M68K_KERNEL_ARGS_H
6 #define KERNEL_ARCH_M68K_KERNEL_ARGS_H
7 
8 #ifndef KERNEL_BOOT_KERNEL_ARGS_H
9 #	error This file is included from <boot/kernel_args.h> only
10 #endif
11 
12 #define _PACKED __attribute__((packed))
13 
14 //#define MAX_VIRTUAL_RANGES_TO_KEEP	32
15 
16 // kernel args
17 typedef struct {
18 	int			cpu_type; // decimal: 68030, ...
19 	int			fpu_type; // decimal: 68030, ...
20 	int			mmu_type; // decimal: 68030, ...
21 	int			platform; // M68K_PLATFORM_*
22 	int			machine;  // platform specific machine type
23 	bool			has_lpstop; //XXX: use bit flags
24 	// architecture specific
25 	uint64		cpu_frequency;
26 	uint64		bus_frequency;
27 	uint64		time_base_frequency;
28 
29 	// page root table
30 	uint32	phys_pgroot;
31 	uint32	vir_pgroot;
32 	// interrupt vector table (VBR)
33 	uint32	phys_vbr;
34 	uint32	vir_vbr;
35 //XXX:
36 	addr_range	page_table;		// virtual address and size of the page table
37 	addr_range	exception_handlers;
38 	addr_range	framebuffer;		// maps where the framebuffer is located, in physical memory
39 	int 		screen_x, screen_y, screen_depth;
40 
41 	// The virtual ranges we want to keep in the kernel. E.g. those belonging
42 	// to the Open Firmware.
43 //	uint32		num_virtual_ranges_to_keep;
44 //	addr_range	virtual_ranges_to_keep[MAX_VIRTUAL_RANGES_TO_KEEP];
45 
46 	// platform specific
47 	union {
48 		struct {
49 			struct {
50 				//XXX: are those meant to be used by physical
51 				// or virtual address ?
52 				uint32 (*nf_get_id)(const char *);
53 				int32 (*nf_call)(uint32, ...);
54 				addr_t nf_page;
55 				uint32 nf_dprintf_id;
56 			} nat_feat;
57 		} atari;
58 	} plat_args;
59 } arch_kernel_args;
60 
61 #endif	/* KERNEL_ARCH_M68K_KERNEL_ARGS_H */
62