2 * relocate_kernel.S - put the kernel image in place to boot
5 #include <linux/linkage.h>
6 #include <asm/assembler.h>
9 .align 3 /* not needed for this code, but keeps fncpy() happy */
11 ENTRY(relocate_new_kernel)
13 ldr r0,kexec_indirection_page
14 ldr r1,kexec_start_address
17 * If there is no indirection page (we are doing crashdumps)
18 * skip any relocation.
23 0: /* top, read another word for the indirection page */
26 /* Is it a destination page. Put destination address to r4 */
32 /* Is it an indirection page */
58 /* Jump to relocated kernel */
61 ldr r1,kexec_mach_type
62 ldr r2,kexec_boot_atags
68 .globl kexec_start_address
72 .globl kexec_indirection_page
73 kexec_indirection_page:
76 .globl kexec_mach_type
80 /* phy addr of the atags for the new kernel */
81 .globl kexec_boot_atags
85 ENDPROC(relocate_new_kernel)
87 relocate_new_kernel_end:
89 .globl relocate_new_kernel_size
90 relocate_new_kernel_size:
91 .long relocate_new_kernel_end - relocate_new_kernel