sh: add kexec jump support
authorMagnus Damm <damm@igel.co.jp>
Wed, 18 Mar 2009 08:51:29 +0000 (08:51 +0000)
committerPaul Mundt <lethal@linux-sh.org>
Wed, 18 Mar 2009 09:57:43 +0000 (18:57 +0900)
commitb7cf6ddc13186f9272438a97aa75972d496d0b0a
treef0b7e65b92a573dd10fc97b9bad0d832ed45f64b
parente4e063d0c288bd65c56dd855337780a541ed928d
sh: add kexec jump support

Add kexec jump support to the SuperH architecture.

Similar to the x86 implementation, with the following
exceptions:

- Instead of separating the assembly code flow into
two parts for regular kexec and kexec jump we use a
single code path. In the assembly snippet regular
kexec is just kexec jump that never comes back.

- Instead of using a swap page when moving data between
pages the page copy assembly routine has been modified
to exchange the data between the pages using registers.

- We walk the page list twice in machine_kexec() to
do and undo physical to virtual address conversion.

Signed-off-by: Magnus Damm <damm@igel.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/Kconfig
arch/sh/kernel/machine_kexec.c
arch/sh/kernel/relocate_kernel.S