X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=cpu%2Farm%2Fscripts%2Fsam7s256_rom.ld;h=6dc69c75f18cdeb95958ffdb3b22fcffa058e6df;hb=71956bedd3a3b40d5e2b1fed01ef921b81f8ba0f;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..6dc69c75 100644 --- a/cpu/arm/scripts/sam7s256_rom.ld +++ b/cpu/arm/scripts/sam7s256_rom.ld @@ -38,19 +38,74 @@ * */ +/** + * \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 stack size here + */ +FIQ_STACK_SIZE = 0x0100; +IRQ_STACK_SIZE = 0x0100; +ABT_STACK_SIZE = 0x0100; +UND_STACK_SIZE = 0x0100; +SVC_STACK_SIZE = 0x0400; + +/* + * Define memory configuration for AT91SAM7S + */ MEMORY { rom(rx) : org = 0x00000000, len = 256k ram(rw) : org = 0x00200000, len = 64k } +/* + * Allocate section memory + */ SECTIONS { .text : @@ -59,14 +114,9 @@ SECTIONS . = ALIGN ( 4 ); * ( .init ); . = ALIGN ( 4 ); - * ( .rodata ); - . = ALIGN ( 4 ); - * ( .rodata* ); - . = ALIGN ( 4 ); } > rom . = ALIGN ( 4 ); - _etext = .; PROVIDE ( __etext = . ); @@ -75,24 +125,54 @@ SECTIONS PROVIDE ( __data_start = . ); * ( .data ) . = ALIGN ( 4 ); - * ( .ramfunc ) _edata = .; PROVIDE ( __data_end = . ); } > ram +/* + * Allocate bss section and stack. + */ .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 = .); + + . = ALIGN(256); + + 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 = .); } > ram }