diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-02-28 10:46:27 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-02-28 10:46:27 +0000 |
commit | e9b916ec23f5dd64d187bace1532eeebb95a1d51 (patch) | |
tree | a2da6f06d707ebd87ba7268bef4023c076d38ee5 /xen/common/kexec.c | |
parent | 2b982798afc5a3184851cdecc87d12511b58746d (diff) | |
download | xen-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.c | 18 |
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; |