Thread (83 messages) 83 messages, 4 authors, 2017-09-12
STALE3189d

[PATCH v2 23/29] ARM: kernel: refer to swapper_pg_dir via its symbol

From: Ard Biesheuvel <hidden>
Date: 2017-09-04 19:26:34

On 4 September 2017 at 19:30, Nicolas Pitre [off-list ref] wrote:
On Sun, 3 Sep 2017, Ard Biesheuvel wrote:
quoted
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 <redacted>
Thanks
quoted
Cc: Russell King <linux@armlinux.org.uk>
Signed-off-by: Ard Biesheuvel <redacted>
---
 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help