2 * relocate_kernel.S - put the kernel image in place to boot
7 .globl relocate_new_kernel
10 /* Move boot params back to where the kernel expects them */
12 ldr r0,kexec_boot_params_address
16 ldr r1,kexec_boot_params_copy
17 mov r6,#KEXEC_BOOT_PARAMS_SIZE/4
25 /* Boot params moved, now go on with the kernel */
27 ldr r0,kexec_indirection_page
28 ldr r1,kexec_start_address
31 0: /* top, read another word for the indirection page */
34 /* Is it a destination page. Put destination address to r4 */
40 /* Is it an indirection page */
66 /* Jump to relocated kernel */
69 ldr r1,kexec_mach_type
70 ldr r2,kexec_boot_params_address
73 .globl kexec_start_address
77 .globl kexec_indirection_page
78 kexec_indirection_page:
81 .globl kexec_mach_type
85 /* phy addr where new kernel will expect to find boot params */
86 .globl kexec_boot_params_address
87 kexec_boot_params_address:
90 /* phy addr where old kernel put a copy of orig boot params */
91 .globl kexec_boot_params_copy
92 kexec_boot_params_copy:
95 relocate_new_kernel_end:
97 .globl relocate_new_kernel_size
98 relocate_new_kernel_size:
99 .long relocate_new_kernel_end - relocate_new_kernel