From 0306a3dcf80671190f188e9c9d3e4c98ba433113 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Fri, 19 May 2006 16:52:52 +0100 Subject: [MINIOS] PAE support. Signed-off-by: Aravindh Puthiyaparambil --- extras/mini-os/kernel.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'extras/mini-os/kernel.c') diff --git a/extras/mini-os/kernel.c b/extras/mini-os/kernel.c index 49dbf6034b..52e919e9a4 100644 --- a/extras/mini-os/kernel.c +++ b/extras/mini-os/kernel.c @@ -63,7 +63,12 @@ void failsafe_callback(void); extern char shared_info[PAGE_SIZE]; +#if !defined(CONFIG_X86_PAE) #define __pte(x) ((pte_t) { (x) } ) +#else +#define __pte(x) ({ unsigned long long _x = (x); \ + ((pte_t) {(unsigned long)(_x), (unsigned long)(_x>>32)}); }) +#endif static shared_info_t *map_shared_info(unsigned long pa) { @@ -71,7 +76,7 @@ static shared_info_t *map_shared_info(unsigned long pa) (unsigned long)shared_info, __pte(pa | 7), UVMF_INVLPG) ) { printk("Failed to map shared_info!!\n"); - *(int*)0=0; + do_exit(); } return (shared_info_t *)shared_info; } @@ -126,6 +131,10 @@ void start_kernel(start_info_t *si) /* WARN: don't do printk before here, it uses information from shared_info. Use xprintk instead. */ memcpy(&start_info, si, sizeof(*si)); + + /* set up minimal memory infos */ + phys_to_machine_mapping = (unsigned long *)start_info.mfn_list; + /* Grab the shared_info pointer and put it in a safe place. */ HYPERVISOR_shared_info = map_shared_info(start_info.shared_info); -- cgit v1.2.3