testing regnual
[gnuk/gnuk.git] / regnual / regnual.ld.in
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     flash : org = @ORIGIN@, len = @FLASH_SIZE@k
11     ram0 : org = 0x20000000, len = @REGNUAL_START@
12     ram1 : org = 0x20001300, len = 20k - @REGNUAL_START@
13 }
14
15 _flash_start = 0x08000000;
16 _flash_end   = @FLASH_END@;
17
18 __ram_start__           = ORIGIN(ram0);
19 __ram_size__            = 20k;
20 __ram_end__             = __ram_start__ + __ram_size__;
21
22 SECTIONS
23 {
24     . = 0;
25
26     .bss :
27     {
28         _bss_start = .;
29         *(.bss)
30         . = ALIGN(4);
31         *(.bss.*)
32         . = ALIGN(4);
33         *(COMMON)
34         . = ALIGN(4);
35         _bss_end = .;
36     } > ram0
37
38     .text : ALIGN(16) SUBALIGN(16)
39     {
40         _text = .;
41         KEEP(*(vectors))
42         *(.text)
43         *(.text.*)
44         *(.rodata)
45         *(.rodata.*)
46         *(.glue_7t)
47         *(.glue_7)
48         *(.gcc*)
49     } > ram1
50
51     .ctors :
52     {
53         PROVIDE(_ctors_start_ = .);
54         KEEP(*(SORT(.ctors.*)))
55         KEEP(*(.ctors))
56         PROVIDE(_ctors_end_ = .);
57     } > ram1
58
59     .dtors :
60     {
61         PROVIDE(_dtors_start_ = .);
62         KEEP(*(SORT(.dtors.*)))
63         KEEP(*(.dtors))
64         PROVIDE(_dtors_end_ = .);
65     } > ram1
66
67     .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)}
68
69     __exidx_start = .;
70     .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > ram1
71     __exidx_end = .;
72
73     .eh_frame_hdr : {*(.eh_frame_hdr)}
74
75     .eh_frame : ONLY_IF_RO {*(.eh_frame)}
76
77     . = ALIGN(4);
78     _etext = .;
79     _textdata = _etext;
80
81     .data :
82     {
83         _data = .;
84         *(.data)
85         . = ALIGN(4);
86         *(.data.*)
87         . = ALIGN(4);
88         *(.ramtext)
89         . = ALIGN(4);
90         _edata = .;
91     } > ram1
92
93     PROVIDE(end = .);
94     _end            = .;
95 }
96
97 __heap_base__   = _end;
98 __heap_end__    = __ram_end__ - __stacks_total_size__;