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