[PATCH v2 23/29] ARM: kernel: refer to swapper_pg_dir via its symbol
Ard Biesheuvel
ard.biesheuvel at linaro.org
Mon Sep 4 12:26:34 PDT 2017
On 4 September 2017 at 19:30, Nicolas Pitre <nicolas.pitre at linaro.org> wrote:
> On Sun, 3 Sep 2017, Ard Biesheuvel wrote:
>
>> The location of swapper_pg_dir is relative to the kernel, not to
>> PAGE_OFFSET or PHYS_OFFSET. So define the symbol relative to the
>> start of the kernel image, and refer to it via its name.
>
> Could it cause a section access mismatch if defined in the __HEAD
> section?
>
No, I never saw any mismatch warnings building this code, and I don't
think .head.text is treated as an __init section.
> Otherwise
>
> Acked-by: Nicolas Pitre <nico at linaro.org>
>
Thanks
>>
>> Cc: Russell King <linux at armlinux.org.uk>
>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel at linaro.org>
>> ---
>> arch/arm/kernel/head.S | 13 ++++---------
>> 1 file changed, 4 insertions(+), 9 deletions(-)
>>
>> diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
>> index 5d685e86148c..71bc0d037bc9 100644
>> --- a/arch/arm/kernel/head.S
>> +++ b/arch/arm/kernel/head.S
>> @@ -48,14 +48,6 @@
>> #define PMD_ORDER 2
>> #endif
>>
>> - .globl swapper_pg_dir
>> - .equ swapper_pg_dir, KERNEL_RAM_VADDR - PG_DIR_SIZE
>> -
>> - .macro pgtbl, rd, phys
>> - add \rd, \phys, #TEXT_OFFSET
>> - sub \rd, \rd, #PG_DIR_SIZE
>> - .endm
>> -
>> /*
>> * Kernel startup entry point.
>> * ---------------------------
>> @@ -77,6 +69,9 @@
>> .arm
>>
>> __HEAD
>> + .globl swapper_pg_dir
>> + .equ swapper_pg_dir, . - PG_DIR_SIZE
>> +
>> ENTRY(stext)
>> ARM_BE8(setend be ) @ ensure we are in BE8 mode
>>
>> @@ -172,7 +167,7 @@ ENDPROC(stext)
>> * r4 = physical page table address
>> */
>> __create_page_tables:
>> - pgtbl r4, r8 @ page table address
>> + adr_l r4, swapper_pg_dir @ page table address
>>
>> /*
>> * Clear the swapper page table
>> --
>> 2.11.0
>>
>>
More information about the linux-arm-kernel
mailing list