X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=cpu%2Farm%2Fscripts%2Fsam7s256_rom.ld;h=15776ef1497d51cf6860050c6d01f9a4fc271734;hb=d8dc110fb113323f6def8bd5aeee650072a8a12c;hp=9ab818580e59463a1296e162e253baa307717fc7;hpb=8452be6e5251c44f53b1f520e9f1ce9ac1549f4a;p=bertos.git diff --git a/cpu/arm/scripts/sam7s256_rom.ld b/cpu/arm/scripts/sam7s256_rom.ld index 9ab81858..15776ef1 100644 --- a/cpu/arm/scripts/sam7s256_rom.ld +++ b/cpu/arm/scripts/sam7s256_rom.ld @@ -38,61 +38,143 @@ * */ +/** + * \file + * + * + * \version $Id: sysirq_at91.c 18273 2007-10-11 14:53:02Z batt $ + * + * \author Daniele Basile + * + * \brief Script linker for Atmel AT91 SAM7S256 processors. + * + */ + ENTRY(ResetHandler) -STARTUP(crtat91sam7x256_rom.o) /* DA SOSTITUIRE */ SEARCH_DIR(.) OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) +/* + * Define memory configuration for AT91SAM7S + */ MEMORY { rom(rx) : org = 0x00000000, len = 256k ram(rw) : org = 0x00200000, len = 64k } + +/* + * Define stack size here + */ +FIQ_STACK_SIZE = 0x0100; +IRQ_STACK_SIZE = 0x0100; +ABT_STACK_SIZE = 0x0100; +UND_STACK_SIZE = 0x0100; +SVC_STACK_SIZE = 0x0400; + +/* + * Allocate section memory + */ SECTIONS { .text : { - * ( .vectors ); - . = ALIGN ( 4 ); - * ( .init ); - . = ALIGN ( 4 ); - * ( .rodata ); - . = ALIGN ( 4 ); - * ( .rodata* ); - . = ALIGN ( 4 ); + * (.vectors); + . = ALIGN (4); + * (.init); + . = ALIGN (4); + * (.rodata); + . = ALIGN (4); + * (.rodata*); + . = ALIGN (4); } > rom - . = ALIGN ( 4 ); - + . = ALIGN (4); _etext = .; - PROVIDE ( __etext = . ); + PROVIDE (__etext = .); - .data : AT ( __etext ) + .data : AT (__etext) { - PROVIDE ( __data_start = . ); - * ( .data ) - . = ALIGN ( 4 ); - * ( .ramfunc ) + PROVIDE (__data_start = .); + * (.data) + . = ALIGN (4); _edata = .; - PROVIDE ( __data_end = . ); - } - > ram + PROVIDE (__data_end = .); + } > ram .bss : { - PROVIDE ( __bss_start = . ); - * ( .bss ) - * ( COMMON ) - . = ALIGN ( 4 ); - PROVIDE ( __bss_end = . ); - . += 0x400; - PROVIDE ( __exp_stack = . ); - . += 0x400; - PROVIDE ( __stack = . ); - PROVIDE ( __heap_start = . ); + PROVIDE (__bss_start = .); + *(.bss) + *(COMMON) + . = ALIGN(4); + PROVIDE (__bss_end = .); } > ram +/* + * Allocate stack at the end of bss section. + * Data heap is allocate at end of stack. + */ + PROVIDE (__stack_start = .); + + PROVIDE (__stack_fiq_start = .); + . += FIQ_STACK_SIZE; + . = ALIGN(4); + PROVIDE (__stack_fiq_end = .); + + PROVIDE (__stack_irq_start = .); + . += IRQ_STACK_SIZE; + . = ALIGN(4); + PROVIDE (__stack_irq_end = .); + + PROVIDE (__stack_abt_start = .); + . += ABT_STACK_SIZE; + . = ALIGN(4); + PROVIDE (__stack_abt_end = .); + + PROVIDE (__stack_und_start = .); + . += UND_STACK_SIZE; + . = ALIGN(4); + PROVIDE (__stack_und_end = .); + + PROVIDE (__stack_svc_start = .); + . += SVC_STACK_SIZE; + . = ALIGN(4); + PROVIDE (__stack_svc_end = .); + + PROVIDE (__stack_end = .); + + PROVIDE (__heap_start = .); + }