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