Enable caching and buffering for all of physical RAM in the decompressor.

Old method is to enable caching and buffering only for the 256 MB at the
start of the decompressor image.  This makes a hardboot-kexec'd kernel very
slow to decompress since the decompressor is located far above the kernel
destination.  This patch reduces boot time from 35 to 8 seconds.

Change-Id: Ie37fd5092301bcf930652983a9cd8217e6312a74
Support copying of kernel tagged list (atags) in the decompressor.

This is needed to hardboot kexec a kernel with a new tags list (including a
new kernel command line), since the new atags would otherwise be lost with
the limited kernel memory mapping.  Without this patch, a hardboot-kexec'd
kernel uses the atags provided by the bootloader.

Change-Id: Ifafb9713952de7fb749a7bc64d20849649359a1f
Enable kexec syscall and fix support for ARMv7.

Essentially a backport of the relevant functions from Linux 3.1-rc4.  In
particular, it now actually disables the MMU in preparation for
soft boot.  Without this, relocate_new_kernel() would hang for an unknown
reason.  Although, it's known that there's no safe way to execute that
function with the MMU on as it may overwrite active page tables.

The suggestion to call cpu_reset by its physical address comes from an
earlier kexec support patch by Will Deacon [1].

[1] W. Deacon. [4/6] ARM: reset: add reset functionality for jumping to a
    physical address, Jun. 2011. https://patchwork.kernel.org/patch/852802/

Change-Id: Ib41728a1b4a5d02241266feed8e4bb75e35123c4
Support hard booting to a kexec kernel.

See KEXEC_HARDBOOT config option help for details.

Change-Id: If1a45732f1f10f28c44d179e0c7589968e146ac7