Merge tag 'xfs-5.19-fixes-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
[platform/kernel/linux-starfive.git] / arch / loongarch / kernel / vmlinux.lds.S
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #include <linux/sizes.h>
3 #include <asm/asm-offsets.h>
4 #include <asm/thread_info.h>
5
6 #define PAGE_SIZE _PAGE_SIZE
7
8 /*
9  * Put .bss..swapper_pg_dir as the first thing in .bss. This will
10  * ensure that it has .bss alignment (64K).
11  */
12 #define BSS_FIRST_SECTIONS *(.bss..swapper_pg_dir)
13
14 #include <asm-generic/vmlinux.lds.h>
15
16 /*
17  * Max avaliable Page Size is 64K, so we set SectionAlignment
18  * field of EFI application to 64K.
19  */
20 PECOFF_FILE_ALIGN = 0x200;
21 PECOFF_SEGMENT_ALIGN = 0x10000;
22
23 OUTPUT_ARCH(loongarch)
24 ENTRY(kernel_entry)
25 PHDRS {
26         text PT_LOAD FLAGS(7);  /* RWX */
27         note PT_NOTE FLAGS(4);  /* R__ */
28 }
29
30 jiffies  = jiffies_64;
31
32 SECTIONS
33 {
34         . = VMLINUX_LOAD_ADDRESS;
35
36         _text = .;
37         HEAD_TEXT_SECTION
38
39         . = ALIGN(PECOFF_SEGMENT_ALIGN);
40         .text : {
41                 TEXT_TEXT
42                 SCHED_TEXT
43                 CPUIDLE_TEXT
44                 LOCK_TEXT
45                 KPROBES_TEXT
46                 IRQENTRY_TEXT
47                 SOFTIRQENTRY_TEXT
48                 *(.fixup)
49                 *(.gnu.warning)
50         } :text = 0
51         . = ALIGN(PECOFF_SEGMENT_ALIGN);
52         _etext = .;
53
54         EXCEPTION_TABLE(16)
55
56         . = ALIGN(PECOFF_SEGMENT_ALIGN);
57         __init_begin = .;
58         __inittext_begin = .;
59
60         INIT_TEXT_SECTION(PAGE_SIZE)
61         .exit.text : {
62                 EXIT_TEXT
63         }
64
65         . = ALIGN(PECOFF_SEGMENT_ALIGN);
66         __inittext_end = .;
67
68         __initdata_begin = .;
69
70         INIT_DATA_SECTION(16)
71         .exit.data : {
72                 EXIT_DATA
73         }
74
75 #ifdef CONFIG_SMP
76         PERCPU_SECTION(1 << CONFIG_L1_CACHE_SHIFT)
77 #endif
78
79         .init.bss : {
80                 *(.init.bss)
81         }
82         . = ALIGN(PECOFF_SEGMENT_ALIGN);
83         __initdata_end = .;
84
85         __init_end = .;
86
87         _sdata = .;
88         RO_DATA(4096)
89         RW_DATA(1 << CONFIG_L1_CACHE_SHIFT, PAGE_SIZE, THREAD_SIZE)
90
91         .sdata : {
92                 *(.sdata)
93         }
94         .edata_padding : { BYTE(0); . = ALIGN(PECOFF_FILE_ALIGN); }
95         _edata =  .;
96
97         BSS_SECTION(0, SZ_64K, 8)
98         . = ALIGN(PECOFF_SEGMENT_ALIGN);
99
100         _end = .;
101
102         STABS_DEBUG
103         DWARF_DEBUG
104         ELF_DETAILS
105
106         .gptab.sdata : {
107                 *(.gptab.data)
108                 *(.gptab.sdata)
109         }
110         .gptab.sbss : {
111                 *(.gptab.bss)
112                 *(.gptab.sbss)
113         }
114
115         DISCARDS
116         /DISCARD/ : {
117                 *(.gnu.attributes)
118                 *(.options)
119                 *(.eh_frame)
120         }
121 }