Nokia RX-51: Simplify calculation of attached kernel image address

Now when board starup code does not copy image to CONFIG_SYS_TEXT_BASE
address there is no need to calculate all addresses from base address at
runtime. The only address which needs to be calculated is attached kernel
image address which can be simplified at compile time without need to know
CONFIG_SYS_TEXT_BASE address or relocation address at the runtime.

Signed-off-by: Pali Rohár <pali@kernel.org>
This commit is contained in:
Pali Rohár
2022-08-11 22:27:24 +02:00
committed by Tom Rini
parent 04bd87c24c
commit 0ba6ce4b78

View File

@@ -6,11 +6,8 @@
#include <config.h> #include <config.h>
relocaddr: /* address of this relocaddr section after coping */ kernoffs: /* offset of kernel image from this address */
.word . /* address of section (calculated at compile time) */ .word KERNEL_OFFSET - (. - CONFIG_SYS_TEXT_BASE)
startaddr: /* address of u-boot after copying */
.word CONFIG_SYS_TEXT_BASE
kernaddr: /* address of kernel after copying */ kernaddr: /* address of kernel after copying */
.word KERNEL_ADDRESS .word KERNEL_ADDRESS
@@ -18,9 +15,6 @@ kernaddr: /* address of kernel after copying */
kernsize: /* maximal size of kernel image */ kernsize: /* maximal size of kernel image */
.word KERNEL_MAXSIZE .word KERNEL_MAXSIZE
kernoffs: /* offset of kernel image in loaded u-boot */
.word KERNEL_OFFSET
imagesize: /* maximal size of image */ imagesize: /* maximal size of image */
.word IMAGE_MAXSIZE .word IMAGE_MAXSIZE
@@ -53,16 +47,9 @@ save_boot_params:
*/ */
copy_kernel_start: copy_kernel_start:
adr r0, relocaddr /* r0 - address of section relocaddr */
ldr r1, relocaddr /* r1 - address of relocaddr after relocation */
/* r4 - calculated offset */
sub r4, r0, r1
/* r0 - start of kernel before */ /* r0 - start of kernel before */
ldr r0, startaddr adr r0, kernoffs /* r0 - current address of kernoffs section */
add r0, r0, r4 ldr r1, kernoffs /* r1 - offset of kernel image from kernoffs section */
ldr r1, kernoffs
add r0, r0, r1 add r0, r0, r1
/* r3 - start of kernel after */ /* r3 - start of kernel after */