1/* 2** Copyright 2001, Travis Geiselbrecht. All rights reserved. 3** Distributed under the terms of the NewOS License. 4*/ 5#ifndef _STAGE2_H 6#define _STAGE2_H 7 8#include <boot.h> 9 10// must match SMP_MAX_CPUS in arch_smp.h 11#define MAX_BOOT_CPUS 1 12 13#define MAX_PHYS_MEM_ADDR_RANGE 4 14#define MAX_VIRT_ALLOC_ADDR_RANGE 4 15#define MAX_PHYS_ALLOC_ADDR_RANGE 4 16 17typedef struct { 18 unsigned int start; 19 unsigned int size; 20} addr_range; 21 22// kernel args 23typedef struct { 24 unsigned int cons_line; 25 char *str; 26 addr_range bootdir_addr; 27 addr_range kernel_seg0_addr; 28 addr_range kernel_seg1_addr; 29 unsigned int num_phys_mem_ranges; 30 addr_range phys_mem_range[MAX_PHYS_MEM_ADDR_RANGE]; 31 unsigned int num_phys_alloc_ranges; 32 addr_range phys_alloc_range[MAX_PHYS_ALLOC_ADDR_RANGE]; 33 unsigned int num_virt_alloc_ranges; 34 addr_range virt_alloc_range[MAX_VIRT_ALLOC_ADDR_RANGE]; 35 unsigned int num_cpus; 36 addr_range cpu_kstack[MAX_BOOT_CPUS]; 37 // architecture specific 38} kernel_args; 39 40#endif 41 42