From 4dffc92abf8f6a6e9b503c9809caaa99795d7a00 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sun, 19 Sep 2021 17:46:26 +0300 Subject: Added basic awareness of kernel size/bounds --- arch/riscv/conf/init-link.S | 21 +++++++++++++++++++++ arch/riscv/conf/kernel-link.S | 16 ++++++++++++++++ 2 files changed, 37 insertions(+) (limited to 'arch/riscv/conf') diff --git a/arch/riscv/conf/init-link.S b/arch/riscv/conf/init-link.S index 2bb904b..86e692e 100644 --- a/arch/riscv/conf/init-link.S +++ b/arch/riscv/conf/init-link.S @@ -5,8 +5,29 @@ ENTRY(_start) SECTIONS { . = ABSOLUTE(PM_KERN); + __init_start = .; + + /* objcopy only copies these three sections (as far as I'm aware) into the + produces binary, so __init_end should point to the correct location in the + final binary + */ .text ALIGN(4K) : AT(0) { *(.init.start) *(.text*); } + + .rodata : { + *(.rodata*) + } + + .data : { + *(.data*) + } + + .bss : { + *(.bss*) *(COMMON) + } + + __kernel_size = ; + __init_end = . ; } diff --git a/arch/riscv/conf/kernel-link.S b/arch/riscv/conf/kernel-link.S index 4592086..1ccdc77 100644 --- a/arch/riscv/conf/kernel-link.S +++ b/arch/riscv/conf/kernel-link.S @@ -5,8 +5,24 @@ ENTRY(main) SECTIONS { . = ABSOLUTE(VM_KERN); + __kernel_start = .; + .text ALIGN(4K) : AT(0) { *(.kernel.start); *(.text*); } + + .rodata : { + *(.rodata*) + } + + .data : { + *(.data*) + } + + .bss : { + *(.bss*) *(COMMON) + } + + __kernel_end = .; } -- cgit v1.3