.sdata2 is a readonly small data section for ppc32, and .data.rel.ro
is data that needs relocating but is read-only after that so these
can both be moved to the read only memory region.

Signed-off-by: Nicholas Piggin <npig...@gmail.com>
---
 arch/powerpc/kernel/vmlinux.lds.S | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/kernel/vmlinux.lds.S 
b/arch/powerpc/kernel/vmlinux.lds.S
index 16c4389d498d..ae0814063900 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -131,6 +131,16 @@ SECTIONS
        /* Read-only data */
        RO_DATA(PAGE_SIZE)
 
+#ifdef CONFIG_PPC32
+       .sdata2 : AT(ADDR(.sdata2) - LOAD_OFFSET) {
+               *(.sdata2)
+       }
+#endif
+
+       .data.rel.ro : AT(ADDR(.data.rel.ro) - LOAD_OFFSET) {
+               *(.data.rel.ro*)
+       }
+
        .branch_lt : AT(ADDR(.branch_lt) - LOAD_OFFSET) {
                *(.branch_lt)
        }
@@ -348,19 +358,13 @@ SECTIONS
        . = ALIGN(PAGE_SIZE);
        _sdata = .;
 
-#ifdef CONFIG_PPC32
        .data : AT(ADDR(.data) - LOAD_OFFSET) {
                DATA_DATA
                *(.data.rel*)
+#ifdef CONFIG_PPC32
                *(SDATA_MAIN)
-               *(.sdata2)
-       }
-#else
-       .data : AT(ADDR(.data) - LOAD_OFFSET) {
-               DATA_DATA
-               *(.data.rel*)
-       }
 #endif
+       }
 
        /* The initial task and kernel stack */
        INIT_TASK_DATA_SECTION(THREAD_ALIGN)
-- 
2.37.2

Reply via email to