summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2010-12-03 10:49:50 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2010-12-03 10:49:50 +0000
commitf2d1c4db2fd2b30b9e9dd2f93fc42cfc6a4d15f6 (patch)
treee2179769a8e5735291e4f6bdb919beb41fa52571 /c
parent2010-12-03 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-f2d1c4db2fd2b30b9e9dd2f93fc42cfc6a4d15f6.tar.bz2
2010-12-03 Sebastian Huber <sebastian.huber@embedded-brains.de>
* startup/bspgetworkarea.c: Removed file. * Makefile.am, bsp_specs, start/start.S, startup/bspstart.c, libnds/include/nds/jtypes.h, libnds/source/arm9/gurumeditation.c, libnds/source/common/interruptDispatcher.S, libnds/source/common/interrupts.c, startup/linkcmds: Use linker command base file.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/arm/nds/ChangeLog9
-rw-r--r--c/src/lib/libbsp/arm/nds/Makefile.am2
-rw-r--r--c/src/lib/libbsp/arm/nds/bsp_specs3
-rw-r--r--c/src/lib/libbsp/arm/nds/libnds/include/nds/jtypes.h4
-rw-r--r--c/src/lib/libbsp/arm/nds/libnds/source/arm9/gurumeditation.c5
-rw-r--r--c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S2
-rw-r--r--c/src/lib/libbsp/arm/nds/libnds/source/common/interrupts.c2
-rw-r--r--c/src/lib/libbsp/arm/nds/start/start.S30
-rw-r--r--c/src/lib/libbsp/arm/nds/startup/bspgetworkarea.c36
-rw-r--r--c/src/lib/libbsp/arm/nds/startup/bspstart.c6
-rw-r--r--c/src/lib/libbsp/arm/nds/startup/linkcmds277
11 files changed, 71 insertions, 305 deletions
diff --git a/c/src/lib/libbsp/arm/nds/ChangeLog b/c/src/lib/libbsp/arm/nds/ChangeLog
index 8a149994ec..8e0bd36bdb 100644
--- a/c/src/lib/libbsp/arm/nds/ChangeLog
+++ b/c/src/lib/libbsp/arm/nds/ChangeLog
@@ -1,3 +1,12 @@
+2010-12-03 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * startup/bspgetworkarea.c: Removed file.
+ * Makefile.am, bsp_specs, start/start.S, startup/bspstart.c,
+ libnds/include/nds/jtypes.h, libnds/source/arm9/gurumeditation.c,
+ libnds/source/common/interruptDispatcher.S,
+ libnds/source/common/interrupts.c, startup/linkcmds: Use linker
+ command base file.
+
2010-05-20 Sebastian Huber <sebastian.huber@embedded-brains.de>
* make/dswifi/arm9/makefile: Workaround for GCC bug 38644.
diff --git a/c/src/lib/libbsp/arm/nds/Makefile.am b/c/src/lib/libbsp/arm/nds/Makefile.am
index c4448056e2..7e6661c68a 100644
--- a/c/src/lib/libbsp/arm/nds/Makefile.am
+++ b/c/src/lib/libbsp/arm/nds/Makefile.am
@@ -37,7 +37,7 @@ include_nds_HEADERS = touchscreen/touchscreen.h sound/sound.h
noinst_PROGRAMS += startup.rel
startup_rel_SOURCES = ../../shared/bsplibc.c ../../shared/bsppost.c \
startup/bspstart.c ../../shared/bspclean.c startup/bspreset.c \
- startup/bspgetworkarea.c ../../shared/bsppredriverhook.c \
+ ../../shared/bspgetworkarea.c ../../shared/bsppredriverhook.c \
../../shared/bsppretaskinghook.c ../../shared/bootcard.c
startup_rel_CPPFLAGS = $(AM_CPPFLAGS) -DARM9 -I$(srcdir)/libnds/include
startup_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
diff --git a/c/src/lib/libbsp/arm/nds/bsp_specs b/c/src/lib/libbsp/arm/nds/bsp_specs
index 5a51d82d2d..082653ad22 100644
--- a/c/src/lib/libbsp/arm/nds/bsp_specs
+++ b/c/src/lib/libbsp/arm/nds/bsp_specs
@@ -7,8 +7,7 @@
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
*link:
-%{!qrtems: %(old_link)} %{qrtems: -dc -dp -Bstatic -N}
+%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
*endfile:
%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }
-
diff --git a/c/src/lib/libbsp/arm/nds/libnds/include/nds/jtypes.h b/c/src/lib/libbsp/arm/nds/libnds/include/nds/jtypes.h
index ba8388afef..1c64a5abe3 100644
--- a/c/src/lib/libbsp/arm/nds/libnds/include/nds/jtypes.h
+++ b/c/src/lib/libbsp/arm/nds/libnds/include/nds/jtypes.h
@@ -38,9 +38,9 @@
//---------------------------------------------------------------------------------
// libgba compatible section macros
//---------------------------------------------------------------------------------
-#define ITCM_CODE __attribute__((section(".itcm"), long_call))
+#define ITCM_CODE __attribute__((section(".bsp_fast_text"), long_call))
-#define DTCM_DATA __attribute__((section(".dtcm")))
+#define DTCM_DATA __attribute__((section(".bsp_fast_data")))
#define DTCM_BSS __attribute__((section(".sbss")))
#define ALIGN(m) __attribute__((aligned (m)))
diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/gurumeditation.c b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/gurumeditation.c
index 5420de9d12..b58c5782a3 100644
--- a/c/src/lib/libbsp/arm/nds/libnds/source/arm9/gurumeditation.c
+++ b/c/src/lib/libbsp/arm/nds/libnds/source/arm9/gurumeditation.c
@@ -34,6 +34,8 @@
#include <stdio.h>
#include <inttypes.h>
+#include <bsp/linker-symbols.h>
+
//---------------------------------------------------------------------------------
unsigned long ARMShift(unsigned long value,unsigned char shift) {
//---------------------------------------------------------------------------------
@@ -205,7 +207,6 @@ static const char *registerNames[] =
{ "r0","r1","r2","r3","r4","r5","r6","r7",
"r8 ","r9 ","r10","r11","r12","sp ","lr ","pc " };
-extern const char __itcm_start[];
//---------------------------------------------------------------------------------
static void defaultHandler(void) {
//---------------------------------------------------------------------------------
@@ -232,7 +233,7 @@ static void defaultHandler(void) {
iprintf ("\x1b[10Cdata abort!\n\n");
codeAddress = exceptionRegisters[15] - offset;
if ( (codeAddress > 0x02000000 && codeAddress < 0x02400000) ||
- (codeAddress > (u32)__itcm_start && codeAddress < (u32)(__itcm_start + 32768)) )
+ (codeAddress > (u32)bsp_section_fast_text_begin && codeAddress < (u32)(bsp_section_fast_text_begin + 32768)) )
exceptionAddress = getExceptionAddress( codeAddress, thumbState);
else
exceptionAddress = codeAddress;
diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S b/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S
index 4866d0a05d..45d1bfc1f7 100644
--- a/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S
+++ b/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S
@@ -28,7 +28,7 @@
#endif
#ifdef ARM9
- .section .itcm,"ax",%progbits
+ .section .bsp_fast_text,"ax",%progbits
#endif
.extern irqTable
diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/common/interrupts.c b/c/src/lib/libbsp/arm/nds/libnds/source/common/interrupts.c
index 4f32b3a741..426b976761 100644
--- a/c/src/lib/libbsp/arm/nds/libnds/source/common/interrupts.c
+++ b/c/src/lib/libbsp/arm/nds/libnds/source/common/interrupts.c
@@ -34,7 +34,7 @@ void irqDummy(void) {}
#ifdef ARM9
-#define INT_TABLE_SECTION __attribute__((section(".itcm")))
+#define INT_TABLE_SECTION __attribute__((section(".bsp_fast_text")))
#else
#define INT_TABLE_SECTION
#endif
diff --git a/c/src/lib/libbsp/arm/nds/start/start.S b/c/src/lib/libbsp/arm/nds/start/start.S
index 7ecd69ab35..b924449a6c 100644
--- a/c/src/lib/libbsp/arm/nds/start/start.S
+++ b/c/src/lib/libbsp/arm/nds/start/start.S
@@ -1,3 +1,5 @@
+#include <bsp/linker-symbols.h>
+
@---------------------------------------------------------------------------------
@ DS processor selection
@---------------------------------------------------------------------------------
@@ -73,9 +75,9 @@ _start:
@ Wait for write buffer to empty
mcr p15, 0, r0, c7, c10, 4
- ldr r0, =__dtcm_start
+ ldr r0, =bsp_section_fast_data_begin
orr r0,r0,#0x0a
- mcr p15, 0, r0, c9, c1,0 @ DTCM base = __dtcm_start, size = 16 KB
+ mcr p15, 0, r0, c9, c1,0 @ DTCM base = bsp_section_fast_data_begin, size = 16 KB
mov r0,#0x20
mcr p15, 0, r0, c9, c1,1 @ ITCM base = 0 , size = 32 MB
@@ -111,14 +113,14 @@ _start:
@-------------------------------------------------------------------------
@ Region 4 - DTCM
@-------------------------------------------------------------------------
- ldr r0,=__dtcm_start
+ ldr r0,=bsp_section_fast_data_begin
orr r0,r0,#(PAGE_16K | 1)
mcr p15, 0, r0, c6, c4, 0
@-------------------------------------------------------------------------
@ Region 5 - ITCM
@-------------------------------------------------------------------------
- ldr r0,=__itcm_start
+ ldr r0,=bsp_section_fast_text_begin
orr r0,r0,#(PAGE_32K | 1)
mcr p15, 0, r0, c6, c5, 0
@@ -169,24 +171,24 @@ _start:
mov r0, #0x12 @ Switch to IRQ Mode
msr cpsr, r0
- ldr sp, =__sp_irq @ Set IRQ stack
+ ldr sp, =bsp_stack_irq_end @ Set IRQ stack
mov r0, #0x1f @ Switch to SVC Mode
msr cpsr, r0
- ldr sp, =__sp_usr @ Set user stack
+ ldr sp, =bsp_stack_svc_end @ Set user stack
- ldr r1, =__itcm_lma @ Copy instruction tightly coupled memory (itcm section) from LMA to VMA (ROM to RAM)
- ldr r2, =__itcm_start
- ldr r4, =__itcm_end
+ ldr r1, =bsp_section_fast_text_load_begin @ Copy instruction tightly coupled memory (itcm section) from LMA to VMA (ROM to RAM)
+ ldr r2, =bsp_section_fast_text_begin
+ ldr r4, =bsp_section_fast_text_end
bl CopyMemCheck
- ldr r1, =__dtcm_lma @ Copy data tightly coupled memory (dtcm section) from LMA to VMA (ROM to RAM)
- ldr r2, =__dtcm_start
- ldr r4, =__dtcm_end
+ ldr r1, =bsp_section_fast_data_load_begin @ Copy data tightly coupled memory (dtcm section) from LMA to VMA (ROM to RAM)
+ ldr r2, =bsp_section_fast_data_begin
+ ldr r4, =bsp_section_fast_data_end
bl CopyMemCheck
- ldr r0, =__bss_start @ Clear BSS section
- ldr r1, =__bss_end
+ ldr r0, =bsp_section_bss_begin @ Clear BSS section
+ ldr r1, =bsp_section_bss_end
sub r1, r1, r0
bl ClearMem
diff --git a/c/src/lib/libbsp/arm/nds/startup/bspgetworkarea.c b/c/src/lib/libbsp/arm/nds/startup/bspgetworkarea.c
deleted file mode 100644
index f337d7874f..0000000000
--- a/c/src/lib/libbsp/arm/nds/startup/bspgetworkarea.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-
-#include <bsp.h>
-#include <bsp/bootcard.h>
-#include <stdint.h>
-
-/*
- * These are from the linker script.
- */
-extern void * _end;
-extern void *__ewram_end;
-
-/*
- * This method returns the base address and size of the area which
- * is to be allocated between the RTEMS Workspace and the C Program
- * Heap.
- */
-void bsp_get_work_area(
- void **work_area_start,
- uintptr_t *work_area_size,
- void **heap_start,
- uintptr_t *heap_size
-)
-{
- *work_area_start = &_end;
- *work_area_size = (void *)&__ewram_end - (void *)&_end;
- *heap_start = BSP_BOOTCARD_HEAP_USES_WORK_AREA;
- *heap_size = BSP_BOOTCARD_HEAP_SIZE_DEFAULT;
-}
-
diff --git a/c/src/lib/libbsp/arm/nds/startup/bspstart.c b/c/src/lib/libbsp/arm/nds/startup/bspstart.c
index 5fefe0785a..37aba842b3 100644
--- a/c/src/lib/libbsp/arm/nds/startup/bspstart.c
+++ b/c/src/lib/libbsp/arm/nds/startup/bspstart.c
@@ -13,6 +13,7 @@
#include <bsp.h>
#include <bsp/bootcard.h>
+#include <bsp/linker-symbols.h>
#include <nds.h>
extern void BSP_rtems_irq_mngt_init (void);
@@ -50,14 +51,11 @@ void bsp_start (void)
* reset bss area.
*/
-extern uint8_t __bss_start;
-extern uint8_t __bss_end;
-
void
bss_reset (void)
{
- memset (&__bss_start, 0, (uint32_t) & __bss_end - (uint32_t) & __bss_start);
+ memset (bsp_section_bss_begin, 0, (size_t) bsp_section_bss_size);
}
/*
diff --git a/c/src/lib/libbsp/arm/nds/startup/linkcmds b/c/src/lib/libbsp/arm/nds/startup/linkcmds
index 332a401f86..f9d863c337 100644
--- a/c/src/lib/libbsp/arm/nds/startup/linkcmds
+++ b/c/src/lib/libbsp/arm/nds/startup/linkcmds
@@ -1,246 +1,39 @@
-OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-
MEMORY {
-
- rom : ORIGIN = 0x08000000, LENGTH = 32M
- ewram : ORIGIN = 0x02000000, LENGTH = 4M - 4k
- dtcm : ORIGIN = 0x0b000000, LENGTH = 16K
- itcm : ORIGIN = 0x01000000, LENGTH = 32K
+ ROM : ORIGIN = 0x08000000, LENGTH = 32M
+ EWRAM : ORIGIN = 0x02000000, LENGTH = 4M - 4k
+ DTCM : ORIGIN = 0x0b000000, LENGTH = 16k
+ ITCM : ORIGIN = 0x01000000, LENGTH = 16k
+ NIRVANA : ORIGIN = 0, LENGTH = 0
}
-__itcm_start = ORIGIN(itcm);
-__ewram_end = ORIGIN(ewram) + LENGTH(ewram);
-__eheap_end = ORIGIN(ewram) + LENGTH(ewram);
-__dtcm_start = ORIGIN(dtcm);
-__dtcm_top = ORIGIN(dtcm) + LENGTH(dtcm);
-__irq_flags = __dtcm_top - 0x08;
-__irq_vector = __dtcm_top - 0x04;
-
-__sp_svc = __dtcm_top - 0x100;
-__sp_irq = __sp_svc - 0x100;
-__sp_usr = __sp_irq - 0x100;
-
-SECTIONS
-{
- .init :
- {
- __text_start = . ;
- KEEP (*(.init))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >ewram = 0xff
-
- .plt : { *(.plt) } >ewram = 0xff
-
- .text : /* ALIGN (4): */
- {
- *(EXCLUDE_FILE (*.itcm*) .text)
-
- *(.text.*)
- *(.stub)
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- *(.glue_7)
- *(.glue_7t)
-
- /*
- * Special FreeBSD sysctl sections.
- */
- . = ALIGN (16);
- __start_set_sysctl_set = .;
- *(set_sysctl_*);
- __stop_set_sysctl_set = ABSOLUTE(.);
- *(set_domain_*);
- *(set_pseudo_*);
-
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >ewram = 0xff
-
- .fini :
- {
- KEEP (*(.fini))
- } >ewram =0xff
-
- __text_end = . ;
-
- .rodata :
- {
- *(.rodata)
- *all.rodata*(*)
- *(.roda)
- *(.rodata.*)
- *(.gnu.linkonce.r*)
- SORT(CONSTRUCTORS)
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >ewram = 0xff
-
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >ewram
- __exidx_start = .;
- .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } >ewram
- __exidx_end = .;
- /* Ensure the __preinit_array_start label is properly aligned. We
- could instead move the label definition inside the section, but
- the linker would then create the section even if it turns out to
- be empty, which isn't pretty. */
- . = ALIGN(32 / 8);
- PROVIDE (__preinit_array_start = .);
- .preinit_array : { KEEP (*(.preinit_array)) } >ewram = 0xff
- PROVIDE (__preinit_array_end = .);
- PROVIDE (__init_array_start = .);
- .init_array : { KEEP (*(.init_array)) } >ewram = 0xff
- PROVIDE (__init_array_end = .);
- PROVIDE (__fini_array_start = .);
- .fini_array : { KEEP (*(.fini_array)) } >ewram = 0xff
- PROVIDE (__fini_array_end = .);
-
- .ctors :
- {
- /* gcc uses crtbegin.o to find the start of the constructors, so
- we make sure it is first. Because this is a wildcard, it
- doesn't matter if the user does not actually link against
- crtbegin.o; the linker won't look for a file to match a
- wildcard. The wildcard also means that it doesn't matter which
- directory crtbegin.o is in. */
- KEEP (*crtbegin.o(.ctors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
- KEEP (*(SORT(.ctors.*)))
- KEEP (*(.ctors))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >ewram = 0xff
-
- .dtors :
- {
- KEEP (*crtbegin.o(.dtors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
- KEEP (*(SORT(.dtors.*)))
- KEEP (*(.dtors))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >ewram = 0xff
-
- .eh_frame :
- {
- KEEP (*(.eh_frame))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >ewram = 0xff
-
- .gcc_except_table :
- {
- *(.gcc_except_table)
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >ewram = 0xff
- .jcr : { KEEP (*(.jcr)) } >ewram = 0
- .got : { *(.got.plt) *(.got) *(.rel.got) } >ewram = 0
-
- .ewram ALIGN(4) :
- {
- __ewram_start = ABSOLUTE(.) ;
- *(.ewram)
- *ewram.*(.text)
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >ewram = 0xff
-
-
- .data ALIGN(4) :
- {
- __data_start = ABSOLUTE(.);
- *(.data)
- *(.data.*)
- *(.gnu.linkonce.d*)
- CONSTRUCTORS
- . = ALIGN(4);
- __data_end = ABSOLUTE(.) ;
- } >ewram = 0xff
-
-
- __dtcm_lma = . ;
-
- .dtcm __dtcm_start : AT (__dtcm_lma)
- {
- *(.dtcm)
- *(.dtcm.*)
- . = ALIGN(4);
- __dtcm_end = ABSOLUTE(.);
- } >dtcm = 0xff
-
-
- __itcm_lma = __dtcm_lma + SIZEOF(.dtcm);
-
- .itcm __itcm_start : AT (__itcm_lma)
- {
- *(.itcm)
- *itcm.*(.text)
- . = ALIGN(4);
- __itcm_end = ABSOLUTE(.);
- } >itcm = 0xff
-
- .sbss __dtcm_end :
- {
- __sbss_start = ABSOLUTE(.);
- __sbss_start__ = ABSOLUTE(.);
- *(.sbss)
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- __sbss_end = ABSOLUTE(.);
- } >dtcm
-
-
-
- __bss_lma = __itcm_lma + SIZEOF(.itcm) ;
- __appended_data = __itcm_lma + SIZEOF(.itcm) ;
- .bss __bss_lma : AT (__bss_lma)
- {
- __bss_start = ABSOLUTE(.);
- __bss_start__ = ABSOLUTE(.);
- *(.dynbss)
- *(.gnu.linkonce.b*)
- *(.bss*)
- *(COMMON)
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- __bss_end = ABSOLUTE(.) ;
- __bss_end__ = __bss_end ;
- } >ewram
-
-
- _end = . ;
- __end__ = . ;
- PROVIDE (end = _end);
-
-
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
- .stack 0x80000 : { _stack = .; *(.stack) }
- /* These must appear regardless of . */
+REGION_ALIAS ("REGION_START", EWRAM);
+REGION_ALIAS ("REGION_VECTOR", DTCM);
+REGION_ALIAS ("REGION_TEXT", EWRAM);
+REGION_ALIAS ("REGION_TEXT_LOAD", EWRAM);
+REGION_ALIAS ("REGION_RODATA", EWRAM);
+REGION_ALIAS ("REGION_RODATA_LOAD", EWRAM);
+REGION_ALIAS ("REGION_DATA", EWRAM);
+REGION_ALIAS ("REGION_DATA_LOAD", EWRAM);
+REGION_ALIAS ("REGION_FAST_TEXT", ITCM);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", EWRAM);
+REGION_ALIAS ("REGION_FAST_DATA", DTCM);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", EWRAM);
+REGION_ALIAS ("REGION_BSS", EWRAM);
+REGION_ALIAS ("REGION_WORK", EWRAM);
+REGION_ALIAS ("REGION_STACK", EWRAM);
+
+__dtcm_top = ORIGIN (DTCM) + LENGTH (DTCM);
+__irq_flags = __dtcm_top - 0x08;
+__irq_vector = __dtcm_top - 0x04;
+
+SECTIONS {
+ .sbss : {
+ __sbss_start = ABSOLUTE(.);
+ __sbss_start__ = ABSOLUTE(.);
+ *(.sbss)
+ . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
+ __sbss_end = ABSOLUTE(.);
+ } > DTCM
}
+
+INCLUDE linkcmds.armv4