Initial commit for the "Lyre prototype 1" port by Jorge Pinto from FS#10045.
[kugel-rb.git] / firmware / target / arm / at91sam / boot.lds
blobc638511e4751480ba9a8c430f585c74e30141c22
1 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
2 OUTPUT_ARCH(arm)
3 ENTRY(reset_handler)
4 STARTUP(target/arm/at91sam/lyre_proto1/crt0.o)
6 #define DRAMSIZE    (MEMORYSIZE * 0x100000)
7 #define DRAMORIG    0x20000000
8 #define IRAM0ORIG   0x200000
9 #define IRAM0SIZE   4K
10 #define IRAM1ORIG   0x300000
11 #define IRAM1SIZE   4K
12 #define STACKSIZE   2k
14 MEMORY
16     DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
17     IRAM0 : ORIGIN = IRAM0ORIG, LENGTH = IRAM0SIZE
20 SECTIONS
22     /* We will put Rockbox bootloader at the last 1MByte of the  SDRAM. */
24     /* Example of a section:
25     * .section VMA(Virtual Memory Address) : LMA(Load Memory Address).
26     * VMA and LMA addresses can be verified by doing:
27     * "arm-elf-objdump -h bootloader.elf". */
29     .vectors 0 : AT (DRAMORIG + DRAMSIZE - 1M)
30     {
31         _start_vectors_section = .;
32         *(.vectors)
33         *(.glue_7)
34         *(.glue_7t)
35         . = ALIGN(4);
36         _end_vectors_section = .;
37     }
39     .text (DRAMORIG + DRAMSIZE -1M + SIZEOF(.vectors)) : \
40     AT (DRAMORIG + DRAMSIZE -1M + SIZEOF(.vectors))
41     {
42         *(.text)
43         *(.text*)
44         *(.icode)
45         *(.icode*)
46         *(.rodata)
47         *(.rodata*)
48         . = ALIGN(4);
49     }
51     /* Initialized variables are placed on SDRAM, right after .vectors section. */
52     /* Data section: VMA is the same as the LMA, right after the end of .vector */
53     .data . :
54     {
55         *(.data)
56         *(.data*)
57         . = ALIGN(4);
58         _end_data_section = .;
59     }
61     /* Uninitialized variables are placed at SDRAM, right after .text section. */
62     .bss (NOLOAD) :
63     
64     { 
65         _start_bss_section = .;
66         *(.bss) /* Bss section contains all uninitialized data generated by the compiler. */
67         *(.bss*)
68         *(COMMON)
69         . = ALIGN(4);
70         _end_bss_section = .;
71     }
73     /* Stack is placed at SDRAM, right after .bss section. */
74     .stack . :
75     {
76        *(.stack)
77        stackbegin = .;
78        . += STACKSIZE;
79        stackend = .;
80     }