From b9b8c519574740e5b4101018242bd2b5fb523057 Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Fri, 7 Mar 2025 20:52:22 +0100 Subject: [PATCH] updates and unifies linkerscript --- env/ehrenberg/link.lds | 14 +++++++------- env/ehrenberg/ram.lds | 18 ++++++++++++------ env/ehrenberg/rom.lds | 21 ++++++++++++--------- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/env/ehrenberg/link.lds b/env/ehrenberg/link.lds index 2f70aeb..171ff27 100644 --- a/env/ehrenberg/link.lds +++ b/env/ehrenberg/link.lds @@ -131,6 +131,13 @@ SECTIONS *(.gnu.linkonce.d.*) } >ram AT>flash :ram_init + .sdata : + { + __SDATA_BEGIN__ = .; + *(.sdata .sdata.*) + *(.gnu.linkonce.s.*) + } >ram AT>flash :ram_init + .srodata : { *(.srodata.cst16) @@ -140,13 +147,6 @@ SECTIONS *(.srodata .srodata.*) } >ram AT>flash :ram_init - .sdata : - { - __SDATA_BEGIN__ = .; - *(.sdata .sdata.*) - *(.gnu.linkonce.s.*) - } >ram AT>flash :ram_init - . = ALIGN(4); PROVIDE( _edata = . ); PROVIDE( edata = . ); diff --git a/env/ehrenberg/ram.lds b/env/ehrenberg/ram.lds index 082e1d1..70c4b66 100644 --- a/env/ehrenberg/ram.lds +++ b/env/ehrenberg/ram.lds @@ -118,10 +118,18 @@ SECTIONS .data : { + __DATA_BEGIN__ = .; *(.data .data.*) *(.gnu.linkonce.d.*) } >ram AT>rom :ram_init + .sdata : + { + __SDATA_BEGIN__ = .; + *(.sdata .sdata.*) + *(.gnu.linkonce.s.*) + } >ram AT>rom :ram_init + .srodata : { PROVIDE( __global_pointer$ = . + 0x800 ); @@ -132,12 +140,6 @@ SECTIONS *(.srodata .srodata.*) } >ram AT>rom :ram_init - .sdata : - { - *(.sdata .sdata.*) - *(.gnu.linkonce.s.*) - } >ram AT>rom :ram_init - . = ALIGN(4); PROVIDE( _edata = . ); PROVIDE( edata = . ); @@ -155,6 +157,7 @@ SECTIONS } >ram AT>ram :ram . = ALIGN(8); + __BSS_END__ = .; PROVIDE( _end = . ); PROVIDE( end = . ); @@ -164,4 +167,7 @@ SECTIONS . = __stack_size; PROVIDE( _sp = . ); } >ram AT>ram :ram + + PROVIDE( tohost = 0xfffffff0 ); + PROVIDE( fromhost = 0xfffffff8 ); } diff --git a/env/ehrenberg/rom.lds b/env/ehrenberg/rom.lds index 0bf37f6..83763d7 100644 --- a/env/ehrenberg/rom.lds +++ b/env/ehrenberg/rom.lds @@ -4,8 +4,8 @@ ENTRY( _start ) MEMORY { - rom (rxai!w) : ORIGIN = 0xF0080000, LENGTH = 4k - ram (wxa!ri) : ORIGIN = 0xC0000000, LENGTH = 32k + rom (rxai!w) : ORIGIN = 0xF0080000, LENGTH = 2k + ram (wxa!ri) : ORIGIN = 0xC0000000, LENGTH = 128k } PHDRS @@ -118,13 +118,20 @@ SECTIONS .data : { + __DATA_BEGIN__ = .; *(.data .data.*) *(.gnu.linkonce.d.*) } >ram AT>rom :ram_init + .sdata : + { + __SDATA_BEGIN__ = .; + *(.sdata .sdata.*) + *(.gnu.linkonce.s.*) + } >ram AT>rom :ram_init + .srodata : { - PROVIDE( __global_pointer$ = . + 0x800 ); *(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) @@ -132,12 +139,6 @@ SECTIONS *(.srodata .srodata.*) } >ram AT>rom :ram_init - .sdata : - { - *(.sdata .sdata.*) - *(.gnu.linkonce.s.*) - } >ram AT>rom :ram_init - . = ALIGN(4); PROVIDE( _edata = . ); PROVIDE( edata = . ); @@ -155,6 +156,8 @@ SECTIONS } >ram AT>ram :ram . = ALIGN(8); + __BSS_END__ = .; + __global_pointer$ = MIN(__SDATA_BEGIN__ + 0x800, MAX(__DATA_BEGIN__ + 0x800, __BSS_END__ - 0x800)); PROVIDE( _end = . ); PROVIDE( end = . );