aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common/kexec.c
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@xensource.com>2007-06-19 15:03:55 +0100
committerIan Campbell <ian.campbell@xensource.com>2007-06-19 15:03:55 +0100
commit3f945b103c430aa733f17d72194635d213247584 (patch)
tree3afd402a5b1af4e1d499035befbe7f763e726271 /xen/common/kexec.c
parentb3318d3351cf4d87b70f69c10978e949b31de010 (diff)
downloadxen-3f945b103c430aa733f17d72194635d213247584.tar.gz
xen-3f945b103c430aa733f17d72194635d213247584.tar.bz2
xen-3f945b103c430aa733f17d72194635d213247584.zip
Further fixes for 32on64 bit kexec.
* switch to a suitable stack before jumping to compatibility mode. * return the correct range for KEXEC_RANGE_MA_XEN. Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
Diffstat (limited to 'xen/common/kexec.c')
-rw-r--r--xen/common/kexec.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/xen/common/kexec.c b/xen/common/kexec.c
index 577492fec0..2437799d63 100644
--- a/xen/common/kexec.c
+++ b/xen/common/kexec.c
@@ -169,7 +169,11 @@ static int kexec_get(reserve)(xen_kexec_range_t *range)
static int kexec_get(xen)(xen_kexec_range_t *range)
{
+#ifdef CONFIG_X86_64
+ range->start = xenheap_phys_start;
+#else
range->start = virt_to_maddr(_start);
+#endif
range->size = (unsigned long)xenheap_phys_end - (unsigned long)range->start;
return 0;
}