aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/ldscripts/exe.ld
diff options
context:
space:
mode:
Diffstat (limited to 'libpsn00b/ldscripts/exe.ld')
-rw-r--r--libpsn00b/ldscripts/exe.ld11
1 files changed, 6 insertions, 5 deletions
diff --git a/libpsn00b/ldscripts/exe.ld b/libpsn00b/ldscripts/exe.ld
index c6b9f29..583d76a 100644
--- a/libpsn00b/ldscripts/exe.ld
+++ b/libpsn00b/ldscripts/exe.ld
@@ -82,6 +82,11 @@ SECTIONS {
/* BSS sections, i.e. uninitialized variables */
+ /*
+ * Align all BSS sections to 4 bytes to ensure _start() doesn't perform
+ * unaligned memory accesses when clearing them.
+ */
+ . = ALIGN((. != 0) ? 4 : 1);
__bss_start = .;
.sbss (NOLOAD) : {
@@ -91,13 +96,9 @@ SECTIONS {
.bss (NOLOAD) : {
*(.bss .bss.* .gnu.linkonce.b.*)
*(COMMON)
-
- /*
- * This crap was in the stock GCC linker script.
- */
- . = ALIGN((. != 0) ? 4 : 1);
} > APP_RAM
+ . = ALIGN((. != 0) ? 4 : 1);
_end = .;
/* Dummy section */