diff options
Diffstat (limited to 'board/nokia/rx51/lowlevel_init.S')
-rw-r--r-- | board/nokia/rx51/lowlevel_init.S | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/board/nokia/rx51/lowlevel_init.S b/board/nokia/rx51/lowlevel_init.S deleted file mode 100644 index 44f32f114e..0000000000 --- a/board/nokia/rx51/lowlevel_init.S +++ /dev/null @@ -1,97 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0+ */ -/* - * (C) Copyright 2011-2012 - * Pali Rohár <pali@kernel.org> - */ - -#include <config.h> -#include <linux/linkage.h> - -kernoffs: /* offset of kernel image from this address */ - .word . - CONFIG_TEXT_BASE - KERNEL_OFFSET - -kernaddr: /* address of kernel after copying */ - .word KERNEL_ADDRESS - -kernsize: /* maximal size of kernel image */ - .word KERNEL_MAXSIZE - -imagesize: /* maximal size of image */ - .word IMAGE_MAXSIZE - -ih_magic: /* IH_MAGIC in big endian from include/image.h */ - .word 0x56190527 - -z_magic: /* LINUX_ARM_ZIMAGE_MAGIC */ - .word 0x016f2818 - -/* - * Routine: save_boot_params (called after reset from start.S) - * Description: Copy attached kernel to address KERNEL_ADDRESS - */ - -ENTRY(save_boot_params) - -/* - * Copy valid attached kernel to absolute address KERNEL_ADDRESS - * - * Nokia X-Loader is loading secondary image to address 0x80400000. - * NOLO is loading boot image to random place, so it doesn't really - * matter what is set in CONFIG_TEXT_BASE. We have to detect - * KERNEL_OFFSET from the current execution address and copy it to - * absolute address KERNEL_ADDRESS. - * - * Note that U-Boot has to be compiled with CONFIG_POSITION_INDEPENDENT - * because it is loaded at random address and not to the fixed address - * (CONFIG_TEXT_BASE). - */ - - /* r0 - start of kernel before */ - adr r0, kernoffs /* r0 - current address of kernoffs section */ - ldr r1, kernoffs /* r1 - offset of kernel image from kernoffs section */ - sub r0, r0, r1 - - /* r3 - start of kernel after */ - ldr r3, kernaddr - - /* r2 - end of kernel after */ - ldr r1, kernsize - add r2, r3, r1 - - /* r1 - end of kernel before */ - add r1, r0, r1 - - /* remove header in target kernel */ - mov r5, #0 - str r5, [r3] /* remove 4 bytes header of kernel uImage */ - str r5, [r3, #36] /* remove 4 bytes header of kernel zImage */ - - /* check for valid kernel uImage */ - ldr r4, [r0] /* r4 - 4 bytes header of kernel */ - ldr r5, ih_magic /* r5 - IH_MAGIC */ - cmp r4, r5 - beq copy_kernel_loop - - /* check for valid kernel zImage */ - ldr r4, [r0, #36] /* r4 - 4 bytes header of kernel at offset 36 */ - ldr r5, z_magic /* r5 - LINUX_ARM_ZIMAGE_MAGIC */ - cmp r4, r5 - bne skip_copy /* skip if invalid image */ - -copy_kernel_loop: - ldmdb r1!, {r3 - r10} - stmdb r2!, {r3 - r10} - cmp r1, r0 - bhi copy_kernel_loop - - /* remove header in source kernel image */ - mov r5, #0 - str r5, [r0] /* remove 4 bytes header of kernel uImage */ - str r5, [r0, #36] /* remove 4 bytes header of kernel zImage */ - -skip_copy: - - /* Returns */ - b save_boot_params_ret - -ENDPROC(save_boot_params) |