aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common/kexec.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-02-28 10:46:27 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-02-28 10:46:27 +0000
commite9b916ec23f5dd64d187bace1532eeebb95a1d51 (patch)
treea2da6f06d707ebd87ba7268bef4023c076d38ee5 /xen/common/kexec.c
parent2b982798afc5a3184851cdecc87d12511b58746d (diff)
downloadxen-e9b916ec23f5dd64d187bace1532eeebb95a1d51.tar.gz
xen-e9b916ec23f5dd64d187bace1532eeebb95a1d51.tar.bz2
xen-e9b916ec23f5dd64d187bace1532eeebb95a1d51.zip
kexec: Add machine_kexec_get()
Introduce machine_kexec_get to allow architecture-specific handling of the xen region. x86_64 is currently different to x86_32 and ia64. Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'xen/common/kexec.c')
-rw-r--r--xen/common/kexec.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/xen/common/kexec.c b/xen/common/kexec.c
index f1aa784e93..fcaebbbebc 100644
--- a/xen/common/kexec.c
+++ b/xen/common/kexec.c
@@ -20,6 +20,7 @@
#include <xen/spinlock.h>
#include <xen/version.h>
#include <xen/console.h>
+#include <xen/kexec.h>
#include <public/elfnote.h>
#include <xsm/xsm.h>
@@ -164,17 +165,6 @@ static int kexec_get_reserve(xen_kexec_range_t *range)
return 0;
}
-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;
-}
-
static int kexec_get_cpu(xen_kexec_range_t *range)
{
int nr = range->nr;
@@ -228,12 +218,12 @@ static int kexec_get_range_internal(xen_kexec_range_t *range)
case KEXEC_RANGE_MA_CRASH:
ret = kexec_get_reserve(range);
break;
- case KEXEC_RANGE_MA_XEN:
- ret = kexec_get_xen(range);
- break;
case KEXEC_RANGE_MA_CPU:
ret = kexec_get_cpu(range);
break;
+ default:
+ ret = machine_kexec_get(range);
+ break;
}
return ret;