From 65a0c70ca07fc9d2ecd8de89ef48d2de1c5eb87c Mon Sep 17 00:00:00 2001 From: Sugar Zhang Date: Tue, 31 Mar 2020 15:36:49 +0800 Subject: [PATCH] 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 Signed-off-by: Sugar Zhang Change-Id: I1efb510817d02732e76976058e5af97586ea0147 --- arch/arm/boot/compressed/head.S | 6 ++++-- arch/arm/kernel/head.S | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index df7e4f8c8287..43d319af85cf 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S @@ -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 diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index 4af5c7679624..f68454c63edb 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S @@ -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