Update reGNUal wrt sys 3.0
[gnuk/gnuk.git] / regnual / regnual.ld
1 /*
2  * ST32F103 memory setup.
3  */
4 __main_stack_size__     = 0x0400;
5 __process_stack_size__  = 0x0200;
6 __stacks_total_size__   = __main_stack_size__ + __process_stack_size__;
7
8 MEMORY
9 {
10     ram0 : org = 0x20000000, len = 0x1400
11     ram1 : org = 0x20001400, len = 20k - 0x1400
12 }
13
14 vector = 0x08000000;
15
16 __ram_start__           = ORIGIN(ram0);
17 __ram_size__            = 20k;
18 __ram_end__             = __ram_start__ + __ram_size__;
19
20 SECTIONS
21 {
22     . = 0;
23
24     .text : ALIGN(16) SUBALIGN(16)
25     {
26         _text = .;
27         KEEP(*(.vectors))
28         *(.text.entry)
29         *(.text)
30         *(.text.*)
31         *(.rodata)
32         *(.rodata.*)
33         *(.glue_7t)
34         *(.glue_7)
35         *(.gcc*)
36     } > ram1
37
38     .got :
39     {
40         *(.got)
41         *(.got.*)
42     } > ram1
43
44     .ctors :
45     {
46         PROVIDE(_ctors_start_ = .);
47         KEEP(*(SORT(.ctors.*)))
48         KEEP(*(.ctors))
49         PROVIDE(_ctors_end_ = .);
50     } > ram1
51
52     .dtors :
53     {
54         PROVIDE(_dtors_start_ = .);
55         KEEP(*(SORT(.dtors.*)))
56         KEEP(*(.dtors))
57         PROVIDE(_dtors_end_ = .);
58     } > ram1
59
60     .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)}
61
62     __exidx_start = .;
63     .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > ram1
64     __exidx_end = .;
65
66     .eh_frame_hdr : {*(.eh_frame_hdr)}
67
68     .eh_frame : ONLY_IF_RO {*(.eh_frame)}
69
70     . = ALIGN(4);
71     _etext = .;
72     _textdata = _etext;
73
74     .data :
75     {
76         _data = .;
77         *(.data)
78         . = ALIGN(4);
79         *(.data.*)
80         . = ALIGN(4);
81         *(.ramtext)
82         . = ALIGN(4);
83         _edata = .;
84     } > ram1
85
86     .bss :
87     {
88         _bss_start = .;
89         *(.bss)
90         . = ALIGN(4);
91         *(.bss.*)
92         . = ALIGN(4);
93         *(COMMON)
94         . = ALIGN(4);
95         _bss_end = .;
96     } > ram1
97
98     PROVIDE(end = .);
99     _end            = .;
100 }
101
102 __heap_base__   = _end;
103 __heap_end__    = __ram_end__ - __stacks_total_size__;