xen/arch/arm/Makefile | 1 + xen/arch/arm/kexec.c | 27 + xen/arch/x86/Makefile | 2 + xen/arch/x86/bzimage.c | 40 +- xen/arch/x86/kexec.c | 125 +++++ xen/arch/x86/purgatory/.gitignore | 3 + xen/arch/x86/purgatory/Makefile | 64 +++ xen/arch/x86/purgatory/config.h | 37 ++ xen/arch/x86/purgatory/entry64.S | 108 ++++ xen/arch/x86/purgatory/purgatory.c | 59 +++ xen/arch/x86/purgatory/setup-x86_64.S | 63 +++ xen/arch/x86/purgatory/stack.S | 21 + xen/common/Kconfig | 1 + xen/common/kexec.c | 33 +- xen/common/kimage.c | 703 ++++++++++++++++++++++++-- xen/include/public/kexec.h | 23 +- xen/include/xen/kimage.h | 57 ++- xen/include/xen/sha2.h | 10 + xen/include/xen/x86-linux.h | 62 +++ xen/lib/sha2-256.c | 16 +- 20 files changed, 1344 insertions(+), 111 deletions(-) create mode 100644 xen/arch/arm/kexec.c create mode 100644 xen/arch/x86/kexec.c create mode 100644 xen/arch/x86/purgatory/.gitignore create mode 100644 xen/arch/x86/purgatory/Makefile create mode 100644 xen/arch/x86/purgatory/config.h create mode 100644 xen/arch/x86/purgatory/entry64.S create mode 100644 xen/arch/x86/purgatory/purgatory.c create mode 100644 xen/arch/x86/purgatory/setup-x86_64.S create mode 100644 xen/arch/x86/purgatory/stack.S create mode 100644 xen/include/xen/x86-linux.h