This is needed so the kernel knows what are all the memory ranges that need to
be mapped in the paging tables.
. = 0x100000;
__KERNEL_BASE__ = .;
- .text : ALIGN(4K) {
+ .text : ALIGN(4K) {
+ __TEXT_BASE__ = .;
kernel/entry.o (.text)
- *(.text)
+ *(.text)
+ __TEXT_END__ = .;
+ }
+ .rodata : ALIGN(4K) {
+ __RODATA_BASE__ = .;
+ *(.rodata)
+ __RODATA_END__ = .;
}
- .rodata : ALIGN(4K) { *(.rodata) }
/* .rodata is put after .text so that the read-only entry in the program
* header covers .rodata as well. When .rodata is after .data, that entry
* matter yet because we (currently) assume that the NX bit is not
* supported anyway. */
- .data : ALIGN(4K) { *(.data) }
- .bss : ALIGN(4K) {
+ .data : ALIGN(4K) {
+ __DATA_BASE__ = .;
+ *(.data)
+ __DATA_END__ = .;
+ }
+ .bss : ALIGN(4K) {
+ __BSS_BASE__ = .;
*(.bss)
/* Reserving 16KiB for the stack. A __STACK_TOP__ is not really
* needed (yet). */
- . += 16K;
+ . += 16K;
__STACK_BOTTOM__ = .;
+ __BSS_END__ = .;
}
}