[Skiboot] [PATCH 09/16] skiboot.lds.S: introduce PAGE_SIZE, use it to lay out sections
Nicholas Piggin
npiggin at gmail.com
Mon Apr 27 21:08:06 AEST 2020
Separate code, data, read-only data, and other significant sections
with PAGE_SIZE alignment. This enables memory protection for these
sections with a later patch.
Signed-off-by: Nicholas Piggin <npiggin at gmail.com>
---
include/config.h | 3 +++
skiboot.lds.S | 22 ++++++++++++++--------
2 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/include/config.h b/include/config.h
index cb88edbc7..fd9521fa2 100644
--- a/include/config.h
+++ b/include/config.h
@@ -4,6 +4,9 @@
#ifndef __CONFIG_H
#define __CONFIG_H
+/* Alignment to which skiboot lays out memory. */
+#define PAGE_SIZE 0x10000
+
#define HAVE_TYPEOF 1
#define HAVE_BUILTIN_TYPES_COMPATIBLE_P 1
diff --git a/skiboot.lds.S b/skiboot.lds.S
index eed26eab0..b136e4004 100644
--- a/skiboot.lds.S
+++ b/skiboot.lds.S
@@ -75,6 +75,7 @@ SECTIONS
}
_head_end = .;
+ . = ALIGN(PAGE_SIZE);
/*
* The following sections are read-write at runtime. We need
@@ -107,14 +108,14 @@ SECTIONS
}
/* ...and back to RO */
-
- . = ALIGN(0x10);
+ . = ALIGN(PAGE_SIZE);
_stext = .;
.text : {
*(.text*)
*(.sfpr .glink)
}
_etext = .;
+ . = ALIGN(PAGE_SIZE);
.rodata : {
__rodata_start = .;
@@ -177,6 +178,7 @@ SECTIONS
*(.rela*)
__rela_dyn_end = .;
}
+
.hash : { *(.hash) }
.gnu.hash : { *(.gnu.hash) }
.gnu.version : { *(.gnu.version) }
@@ -196,22 +198,26 @@ SECTIONS
*/
_romem_end = .;
+ . = ALIGN(PAGE_SIZE);
+
+ _sdata = .;
.data : {
/*
* A couple of things that need to be 4K aligned and
* to reside in their own pages for the sake of TCE
- * mappings
+ * mappings, so use PAGE_SIZE alignment.
*/
- . = ALIGN(0x1000);
+ . = ALIGN(PAGE_SIZE);
*(.data.memcons);
- . = ALIGN(0x10000);
+ . = ALIGN(PAGE_SIZE);
*(.data.boot_trace);
- . = ALIGN(0x10000);
+ . = ALIGN(PAGE_SIZE);
*(.data*)
*(.force.data)
*(.toc1)
*(.branch_lt)
}
+ _edata = .;
/* We locate the BSS at 4M to leave room for the symbol map */
. = 0x400000;
@@ -221,7 +227,7 @@ SECTIONS
*(.dynbss)
*(.bss*)
}
- . = ALIGN(0x10000);
+ . = ALIGN(PAGE_SIZE);
_ebss = .;
_end = .;
@@ -230,7 +236,7 @@ SECTIONS
DEBUG_SECTIONS
/* Optional kernel image */
- . = ALIGN(0x10000);
+ . = ALIGN(PAGE_SIZE);
.builtin_kernel : {
__builtin_kernel_start = .;
KEEP(*(.builtin_kernel))
--
2.23.0
More information about the Skiboot
mailing list