ARM: Make TEXT_OFFSET more flexible

arch/arm/kernel/head.S:181: Error: invalid constant (608000) after fixup
arch/arm/boot/compressed/head.S:209: Error: invalid constant (608000) after fixup

Signed-off-by: Tao Huang <huangtao@rock-chips.com>
Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
Change-Id: I1efb510817d02732e76976058e5af97586ea0147
This commit is contained in:
Sugar Zhang
2020-03-31 15:36:49 +08:00
committed by Tao Huang
parent a411a983a6
commit 65a0c70ca0
2 changed files with 6 additions and 3 deletions

View File

@@ -276,7 +276,8 @@ not_angel:
mov r4, pc
and r4, r4, #0xf8000000
/* Determine final kernel image address. */
add r4, r4, #TEXT_OFFSET
add r4, r4, #(TEXT_OFFSET & 0xffff0000)
add r4, r4, #(TEXT_OFFSET & 0x0000ffff)
#else
ldr r4, =zreladdr
#endif
@@ -378,7 +379,8 @@ restart: adr r0, LC1
* of RAM and hope for the best.
*/
cmp r0, #1
sub r0, r4, #TEXT_OFFSET
sub r0, r4, #(TEXT_OFFSET & 0xffff0000)
sub r0, r0, #(TEXT_OFFSET & 0x0000ffff)
bic r0, r0, #1
add r0, r0, #0x100
mov r1, r6

View File

@@ -49,7 +49,8 @@
.equ swapper_pg_dir, KERNEL_RAM_VADDR - PG_DIR_SIZE
.macro pgtbl, rd, phys
add \rd, \phys, #TEXT_OFFSET
add \rd, \phys, #(TEXT_OFFSET & 0xffff0000)
add \rd, \rd, #(TEXT_OFFSET & 0x0000ffff)
sub \rd, \rd, #PG_DIR_SIZE
.endm