contrib: replace the BSD-3-Clause license tag
[fw/openocd] / contrib / loaders / flash / msp432 / msp432e4x / msp432e4x.lds
1 /* SPDX-License-Identifier: BSD-3-Clause */
2
3 /******************************************************************************
4 *
5 * Copyright (C) 2017-2018 Texas Instruments Incorporated - http://www.ti.com/
6 *
7 ******************************************************************************/
8
9 MEMORY {
10         MAIN_FLASH (RX) : ORIGIN = 0x00000000, LENGTH = 0x00100000
11         SRAM_CODE_0(RWX): ORIGIN = 0x20000000, LENGTH = 0x00000110
12         SRAM_CODE_1(RWX): ORIGIN = 0x20000110, LENGTH = 0x00000030
13         SRAM_CODE_2(RWX): ORIGIN = 0x20000150, LENGTH = 0x00000040
14         SRAM_CODE_3(RWX): ORIGIN = 0x20000190, LENGTH = 0x00000F70
15         SRAM_CODE_4(RWX): ORIGIN = 0x20001170, LENGTH = 0x00000200
16         SRAM_DATA  (RW) : ORIGIN = 0x20002000, LENGTH = 0x00001000
17 }
18
19 REGION_ALIAS("REGION_INTVECT", SRAM_CODE_0);
20 REGION_ALIAS("REGION_RESET", SRAM_CODE_1);
21 REGION_ALIAS("REGION_DESCRIPTOR", SRAM_CODE_2);
22 REGION_ALIAS("REGION_TEXT", SRAM_CODE_3);
23 REGION_ALIAS("REGION_BSS", SRAM_CODE_3);
24 REGION_ALIAS("REGION_DATA", SRAM_DATA);
25 REGION_ALIAS("REGION_STACK", SRAM_CODE_4);
26 REGION_ALIAS("REGION_HEAP", SRAM_DATA);
27 REGION_ALIAS("REGION_ARM_EXIDX", SRAM_CODE_3);
28 REGION_ALIAS("REGION_ARM_EXTAB", SRAM_CODE_3);
29
30 SECTIONS {
31         /* section for the interrupt vector area */
32         .intvecs : {
33                 KEEP (*(.intvecs))
34         } > REGION_INTVECT
35
36         PROVIDE (_vtable_base_address =
37                 DEFINED(_vtable_base_address) ? _vtable_base_address : 0x20000000);
38
39         .vtable (_vtable_base_address) : AT (_vtable_base_address) {
40                 KEEP (*(.vtable))
41         } > REGION_DATA
42
43         .descriptor :{
44                 FILL(0x00000000);
45                 . = ORIGIN(REGION_DESCRIPTOR) + LENGTH(REGION_DESCRIPTOR) - 1;
46                 BYTE(0x00);
47                 __ROM_AT = .;
48         } > REGION_DESCRIPTOR
49
50         .reset : {
51                 KEEP(*(.reset))
52         } > REGION_RESET AT> REGION_RESET
53
54         .text : {
55                 CREATE_OBJECT_SYMBOLS
56                 KEEP (*(.text))
57                 *(.text.*)
58                 . = ALIGN(0x4);
59                 KEEP (*(.ctors))
60                 . = ALIGN(0x4);
61                 KEEP (*(.dtors))
62                 . = ALIGN(0x4);
63                 __init_array_start = .;
64                 KEEP (*(.init_array*))
65                 __init_array_end = .;
66                 KEEP (*(.init))
67                 KEEP (*(.fini*))
68         } > REGION_TEXT AT> REGION_TEXT
69
70         .rodata : {
71                 *(.rodata)
72                 *(.rodata.*)
73         } > REGION_TEXT AT> REGION_TEXT
74
75         .ARM.exidx : {
76                 __exidx_start = .;
77                 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
78                 __exidx_end = .;
79         } > REGION_ARM_EXIDX AT> REGION_ARM_EXIDX
80
81         .ARM.extab : {
82                 KEEP (*(.ARM.extab* .gnu.linkonce.armextab.*))
83         } > REGION_ARM_EXTAB AT> REGION_ARM_EXTAB
84
85         __etext = .;
86
87         .data : {
88                 __data_load__ = LOADADDR (.data);
89                 __data_start__ = .;
90                 KEEP (*(.data))
91                 KEEP (*(.data*))
92                 . = ALIGN (4);
93                 __data_end__ = .;
94         } > REGION_DATA AT> REGION_TEXT
95
96         .bss : {
97                 __bss_start__ = .;
98                 *(.shbss)
99                 KEEP (*(.bss))
100                 *(.bss.*)
101                 *(COMMON)
102                 . = ALIGN (4);
103                 __bss_end__ = .;
104         } > REGION_BSS AT> REGION_BSS
105
106         .heap : {
107                 __heap_start__ = .;
108                 end = __heap_start__;
109                 _end = end;
110                 __end = end;
111                 KEEP (*(.heap))
112                 __heap_end__ = .;
113                 __HeapLimit = __heap_end__;
114         } > REGION_HEAP AT> REGION_HEAP
115
116         .stack (NOLOAD) : ALIGN(0x8) {
117                 _stack = .;
118                 KEEP(*(.stack))
119         } > REGION_STACK AT> REGION_STACK
120
121         __stack_top = ORIGIN(REGION_STACK) + LENGTH(REGION_STACK);
122         PROVIDE(__stack = __stack_top);
123 }