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