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
17typedef 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