1MEMORY {
2    zero_memory  : ORIGIN = 0xffff8000, LENGTH = 64K
3
4    dram_rsvd1   : ORIGIN = 0x80000000, LENGTH = 0
5    vector_0x000 : ORIGIN = .           LENGTH = 0x100
6    vector_0x100 : ORIGIN = .           LENGTH = 0x080
7    vector_0x180 : ORIGIN = .           LENGTH = 0x080
8    vector_0x200 : ORIGIN = .           LENGTH = 0x080
9    vector_0x280 : ORIGIN = .           LENGTH = 0x080
10    vector_0x300 : ORIGIN = .           LENGTH = 0x080
11    monitor      : ORIGIN = .           LENGTH = 1M - 0x380
12    dram_memory  : ORIGIN = .          LENGTH = 10M - 1M
13    dram_rsvd2   : ORIGIN = .,          LENGTH = 0
14
15    flash_rsvd1  : ORIGIN = 0xbfc00000, LENGTH = 32K
16    flash_memory : ORIGIN = .,          LENGTH = 10M - 32K
17    flash_rsvd2  : ORIGIN = .,          LENGTH = 0
18}
19DEFAULTS {
20
21    heap_reserve = 2M
22    stack_reserve = 512K
23
24}
25//
26// Program layout for running out of RAM.
27//
28//
29
30SECTIONS
31{
32    .zdata                      ABS : > zero_memory
33    .zbss                       ABS : > .
34    .rozdata                            ABS : > .
35
36    .vector_0x000   : > vector_0x000
37    .vector_0x100   : > vector_0x100
38    .vector_0x180   : > vector_0x180
39    .vector_0x200   : > vector_0x200
40    .vector_0x280   : > vector_0x280
41    .vector_0x300   : > vector_0x300
42    .text       : { "start.o(.text) *(.text)" } > dram_memory
43    .syscall                            : > .
44    .secinfo                            : > .
45    .fixaddr                            : > .
46    .fixtype                            : > .
47    .robase                         ALIGN(8) : > .
48    .rodata                         ALIGN(8) : > .
49
50    .sdabase                        ALIGN(8) : > .
51    .sdata                          ALIGN(8) : > .
52_start_sbss = . ;
53    .sbss                           ALIGN(8) : > .
54_end_sbss = . ;
55    .rosdata                        ALIGN(8) : > .
56    .data                           ALIGN(8) : > .
57    .profile                        ALIGN(8) : > .
58_start_bss = . ;
59    .bss                            ALIGN(8) : > .
60_end_bss = . ;
61    .heap                           ALIGN(8) PAD(heap_reserve)  : > .
62    .stack                          ALIGN(8) PAD(stack_reserve) : > .
63    .eventlog align(16)             pad(0x10000) :
64    .free_mem align(16)             pad(0x10000) :
65
66//
67// These special symbols mark the bounds of RAM and ROM memory.
68// They are used by the MULTI debugger.
69//
70    __ghs_ramstart  = MEMADDR(dram_rsvd1);
71    __ghs_ramend    = MEMENDADDR(dram_rsvd2);
72    __ghs_romstart  = MEMADDR(flash_rsvd1);
73    __ghs_romend    = MEMENDADDR(flash_rsvd2);
74
75}
76