Prepare v2023.10
[platform/kernel/u-boot.git] / arch / mips / cpu / u-boot-spl.lds
1 /* SPDX-License-Identifier: GPL-2.0+ */
2
3 MEMORY { .spl_mem : ORIGIN = IMAGE_TEXT_BASE, \
4                 LENGTH = IMAGE_MAX_SIZE }
5 MEMORY { .bss_mem : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
6                 LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
7
8 OUTPUT_ARCH(mips)
9 ENTRY(_start)
10 SECTIONS
11 {
12         . = 0x00000000;
13
14         . = ALIGN(4);
15         .text : {
16                 __text_start = .;
17                 *(.text*)
18                 __text_end = .;
19         } > .spl_mem
20
21         . = ALIGN(4);
22         .rodata : {
23                 *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
24         } > .spl_mem
25
26         . = ALIGN(4);
27         .data : {
28                 *(SORT_BY_ALIGNMENT(.data*))
29                 *(SORT_BY_ALIGNMENT(.sdata*))
30         } > .spl_mem
31
32 #if defined(CONFIG_SPL_DM) || defined(CONFIG_SPL_LOADER_SUPPORT)
33         . = ALIGN(4);
34         __u_boot_list : {
35                 KEEP(*(SORT(__u_boot_list*)));
36         } > .spl_mem
37 #endif
38
39         . = ALIGN(4);
40         __image_copy_end = .;
41         __image_copy_len = __image_copy_end - __text_start;
42
43         _image_binary_end = .;
44
45         .bss (NOLOAD) : {
46                 __bss_start = .;
47                 *(.bss*)
48                 *(.sbss*)
49                 *(COMMON)
50                 . = ALIGN(4);
51                 __bss_end = .;
52         } > .bss_mem
53
54         /* These mark the ABI of U-Boot for debuggers. */
55         .mdebug.abi32 : {
56                 KEEP(*(.mdebug.abi32))
57         }
58         .mdebug.abi64 : {
59                 KEEP(*(.mdebug.abi64))
60         }
61
62         /* This is the MIPS specific mdebug section. */
63         .mdebug : { *(.mdebug) }
64
65         /* Stabs debugging sections.  */
66         .stab 0 : { *(.stab) }
67         .stabstr 0 : { *(.stabstr) }
68         .stab.excl 0 : { *(.stab.excl) }
69         .stab.exclstr 0 : { *(.stab.exclstr) }
70         .stab.index 0 : { *(.stab.index) }
71         .stab.indexstr 0 : { *(.stab.indexstr) }
72         .comment 0 : { *(.comment) }
73
74         /*
75          * DWARF debug sections.
76          * Symbols in the DWARF debugging sections are relative to
77          * the beginning of the section so we begin them at 0.
78          */
79         /* DWARF 1 */
80         .debug 0 : { *(.debug) }
81         .line 0 : { *(.line) }
82         /* GNU DWARF 1 extensions */
83         .debug_srcinfo 0 : { *(.debug_srcinfo) }
84         .debug_sfnames 0 : { *(.debug_sfnames) }
85         /* DWARF 1.1 and DWARF 2 */
86         .debug_aranges 0 : { *(.debug_aranges) }
87         .debug_pubnames 0 : { *(.debug_pubnames) }
88         /* DWARF 2 */
89         .debug_info 0 : {
90                 *(.debug_info
91                 .gnu.linkonce.wi.*)
92         }
93         .debug_abbrev 0 : { *(.debug_abbrev) }
94         .debug_line 0 : { *(.debug_line) }
95         .debug_frame 0 : { *(.debug_frame) }
96         .debug_str 0 : { *(.debug_str) }
97         .debug_loc 0 : { *(.debug_loc) }
98         .debug_macinfo 0 : { *(.debug_macinfo) }
99         .debug_pubtypes 0 : { *(.debug_pubtypes) }
100         /* DWARF 3 */
101         .debug_ranges 0 : { *(.debug_ranges) }
102         /* SGI/MIPS DWARF 2 extensions */
103         .debug_weaknames 0 : { *(.debug_weaknames) }
104         .debug_funcnames 0 : { *(.debug_funcnames) }
105         .debug_typenames 0 : { *(.debug_typenames) }
106         .debug_varnames 0 : { *(.debug_varnames) }
107         /* GNU DWARF 2 extensions */
108         .debug_gnu_pubnames 0 : { *(.debug_gnu_pubnames) }
109         .debug_gnu_pubtypes 0 : { *(.debug_gnu_pubtypes) }
110         /* DWARF 4 */
111         .debug_types 0 : { *(.debug_types) }
112         /* DWARF 5 */
113         .debug_macro 0 : { *(.debug_macro) }
114         .debug_addr 0 : { *(.debug_addr) }
115
116         /DISCARD/ : {
117                 /* ABI crap starts here */
118                 *(.MIPS.abiflags)
119                 *(.MIPS.options)
120                 *(.options)
121                 *(.pdr)
122                 *(.reginfo)
123                 *(.eh_frame)
124         }
125 }