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_ARM_KERNEL_ARGS_H 6 #define KERNEL_ARCH_ARM_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 13 #include <util/FixedWidthPointer.h> 14 #include <boot/interrupt_controller.h> 15 #include <boot/timer.h> 16 #include <boot/uart.h> 17 18 19 #define _PACKED __attribute__((packed)) 20 21 #define MAX_VIRTUAL_RANGES_TO_KEEP 32 22 23 24 // kernel args 25 typedef struct { 26 int cpu_type; 27 int fpu_type; 28 int mmu_type; 29 int platform; 30 int machine; // platform specific machine type 31 32 // architecture specific 33 uint32 phys_pgdir; 34 uint32 vir_pgdir; 35 uint32 next_pagetable; 36 uint32 last_pagetable; 37 38 // The virtual ranges we want to keep in the kernel. 39 uint32 num_virtual_ranges_to_keep; 40 addr_range virtual_ranges_to_keep[MAX_VIRTUAL_RANGES_TO_KEEP]; 41 42 // needed for UEFI, otherwise kernel acpi support can't find ACPI root 43 FixedWidthPointer<void> acpi_root; 44 FixedWidthPointer<void> fdt; 45 46 uart_info uart; 47 intc_info interrupt_controller; 48 boot_timer_info timer; 49 } _PACKED arch_kernel_args; 50 51 #endif /* KERNEL_ARCH_ARM_KERNEL_ARGS_H */ 52