diff options
author | Wojtek Kosior <kwojtus@protonmail.com> | 2019-12-26 18:21:29 +0100 |
---|---|---|
committer | Wojtek Kosior <kwojtus@protonmail.com> | 2019-12-26 18:21:29 +0100 |
commit | 93a1c704c99a48803d118f66ac4fe08510fb4b89 (patch) | |
tree | 3fc6991345bec979ccae1c68925f47a791a204ae | |
parent | 6a5684927d5a6d201b407ff30340307fe9813677 (diff) | |
download | rpi-MMU-example-93a1c704c99a48803d118f66ac4fe08510fb4b89.tar.gz rpi-MMU-example-93a1c704c99a48803d118f66ac4fe08510fb4b89.zip |
simplify linker script; rely on initially-zero memory to be included in binary image (no bss zeroing in assembly code)
-rw-r--r-- | boot.S | 20 | ||||
-rw-r--r-- | linker.ld | 36 |
2 files changed, 8 insertions, 48 deletions
@@ -1,7 +1,7 @@ // armv7 mode // To keep this in the first portion of the binary. -.section ".text.boot" +.section ".boot" //.org 0x8000 @@ -30,24 +30,6 @@ _start: ldr r5, =__start mov sp, r5 - // Clear out bss. - ldr r4, =__bss_start - ldr r9, =__bss_end - mov r5, #0 - mov r6, #0 - mov r7, #0 - mov r8, #0 - b 2f - -1: - // store multiple at r4. - stmia r4!, {r5-r8} - - // If we are still below bss_end, loop. -2: - cmp r4, r9 - blo 1b - // Call kernel_main ldr r3, =kernel_main bx r3 @@ -18,40 +18,18 @@ SECTIONS /* For AArch64, use . = 0x80000 */ __start = .; - __text_start = .; - .text : + .boot : { - KEEP(*(.text.boot)) - *(EXCLUDE_FILE (libkernel.o) .text) + boot.o } - . = ALIGN(4096); /* align to page size */ - __text_end = .; - - __rodata_start = .; - .rodata : - { - *(EXCLUDE_FILE (libkernel.o) .rodata) - } - . = ALIGN(4096); /* align to page size */ - __rodata_end = .; - - __data_start = .; - .data : - { - *(EXCLUDE_FILE (libkernel.o) .data) - } - . = ALIGN(4096); /* align to page size */ - __data_end = .; - - __bss_start = .; - .bss : + __kernel_start = .; + .kernel : { - bss = .; - *(EXCLUDE_FILE (libkernel.o) .bss) + *(EXCLUDE_FILE (libkernel.o interrupt_vector.o interrupts.o) *) } . = ALIGN(4096); /* align to page size */ - __bss_end = .; - __bss_size = __bss_end - __bss_start; + __kernel_end = .; + __kernel_size = __kernel_end - __kernel_start; /* libkernel */ |