2 * relocate_kernel.S - put the kernel image in place to boot
5 #include <linux/linkage.h>
8 .align 3 /* not needed for this code, but keeps fncpy() happy */
10 ENTRY(relocate_new_kernel)
12 ldr r0,kexec_indirection_page
13 ldr r1,kexec_start_address
16 * If there is no indirection page (we are doing crashdumps)
17 * skip any relocation.
22 0: /* top, read another word for the indirection page */
25 /* Is it a destination page. Put destination address to r4 */
31 /* Is it an indirection page */
57 /* Jump to relocated kernel */
60 ldr r1,kexec_mach_type
61 ldr r2,kexec_boot_atags
67 .globl kexec_start_address
71 .globl kexec_indirection_page
72 kexec_indirection_page:
75 .globl kexec_mach_type
79 /* phy addr of the atags for the new kernel */
80 .globl kexec_boot_atags
84 ENDPROC(relocate_new_kernel)
86 relocate_new_kernel_end:
88 .globl relocate_new_kernel_size
89 relocate_new_kernel_size:
90 .long relocate_new_kernel_end - relocate_new_kernel