diff options
author | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-05-19 16:52:52 +0100 |
---|---|---|
committer | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-05-19 16:52:52 +0100 |
commit | 0306a3dcf80671190f188e9c9d3e4c98ba433113 (patch) | |
tree | 2d63ed08ad791cfff6194035ebc433a4b931d31b /extras/mini-os/kernel.c | |
parent | 71fd91f9bacb0d3a625e12f959c0fa1e922fdd99 (diff) | |
download | xen-0306a3dcf80671190f188e9c9d3e4c98ba433113.tar.gz xen-0306a3dcf80671190f188e9c9d3e4c98ba433113.tar.bz2 xen-0306a3dcf80671190f188e9c9d3e4c98ba433113.zip |
[MINIOS] PAE support.
Signed-off-by: Aravindh Puthiyaparambil <aravindh.puthiyaparambil@unisys.com>
Diffstat (limited to 'extras/mini-os/kernel.c')
-rw-r--r-- | extras/mini-os/kernel.c | 11 |
1 files changed, 10 insertions, 1 deletions
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); |