diff --git a/headers/private/kernel/boot/kernel_args.h b/headers/private/kernel/boot/kernel_args.h new file mode 100644 index 0000000000..98f61b28d4 --- /dev/null +++ b/headers/private/kernel/boot/kernel_args.h @@ -0,0 +1,48 @@ +/* +** Copyright 2001-2002, Travis Geiselbrecht. All rights reserved. +** Distributed under the terms of the NewOS License. +*/ +#ifndef KERNEL_BOOT_KERNEL_ARGS_H +#define KERNEL_BOOT_KERNEL_ARGS_H + + +#include +#include + + +typedef struct address_range { + uint32 start; + uint32 size; +} addr_range; + +typedef struct kernel_args { + uint32 cons_line; + char *str; + addr_range bootdir_addr; + addr_range kernel_seg0_addr; + addr_range kernel_seg1_addr; + addr_range kernel_dynamic_section_addr; + + uint32 num_physical_memory_ranges; + addr_range physical_memory_range[MAX_PHYSICAL_MEMORY_RANGE]; + uint32 num_physical_allocated_ranges; + addr_range physical_allocated_range[MAX_PHYSICAL_ALLOCATED_RANGE]; + uint32 num_virtual_allocated_ranges; + addr_range virtual_allocated_range[MAX_VIRTUAL_ALLOCATED_RANGE]; + + uint32 num_cpus; + addr_range cpu_kstack[MAX_BOOT_CPUS]; + + platform_kernel_args platform_args; + + struct framebuffer { + int enabled; + int x_size; + int y_size; + int bit_depth; + int already_mapped; + addr_range mapping; + } fb; +} kernel_args; + +#endif /* KERNEL_BOOT_KERNEL_ARGS_H */ diff --git a/headers/private/kernel/boot/stage2.h b/headers/private/kernel/boot/stage2.h index d832dc8f54..75b98a0a1a 100644 --- a/headers/private/kernel/boot/stage2.h +++ b/headers/private/kernel/boot/stage2.h @@ -6,39 +6,22 @@ #ifndef KERNEL_BOOT_STAGE2_H #define KERNEL_BOOT_STAGE2_H -// this file declares stuff like addr_range, MAX_*, etc. -#include -#include + +#include -// kernel args -typedef struct kernel_args { - uint32 cons_line; - char *str; - addr_range bootdir_addr; - addr_range kernel_seg0_addr; - addr_range kernel_seg1_addr; - addr_range kernel_dynamic_section_addr; - uint32 num_phys_mem_ranges; +struct stage2_args; +extern struct kernel_args gKernelArgs; - addr_range phys_mem_range[MAX_PHYS_MEM_ADDR_RANGE]; - uint32 num_phys_alloc_ranges; - addr_range phys_alloc_range[MAX_PHYS_ALLOC_ADDR_RANGE]; - uint32 num_virt_alloc_ranges; - addr_range virt_alloc_range[MAX_VIRT_ALLOC_ADDR_RANGE]; - uint32 num_cpus; - addr_range cpu_kstack[MAX_BOOT_CPUS]; - arch_kernel_args arch_args; +#ifdef __cplusplus +extern "C" { +#endif - struct framebuffer { - int enabled; - int x_size; - int y_size; - int bit_depth; - int already_mapped; - addr_range mapping; - } fb; -} kernel_args; +extern int main(struct stage2_args *args); + +#ifdef __cplusplus +} +#endif #endif /* KERNEL_BOOT_STAGE2_H */