Commit | Line | Data |
---|---|---|
fa96b57c HC |
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> | |
ead384d9 | 15 | #include "image-vars.h" |
fa96b57c HC |
16 | |
17 | /* | |
18 | * Max avaliable Page Size is 64K, so we set SectionAlignment | |
19 | * field of EFI application to 64K. | |
20 | */ | |
21 | PECOFF_FILE_ALIGN = 0x200; | |
22 | PECOFF_SEGMENT_ALIGN = 0x10000; | |
23 | ||
24 | OUTPUT_ARCH(loongarch) | |
25 | ENTRY(kernel_entry) | |
26 | PHDRS { | |
27 | text PT_LOAD FLAGS(7); /* RWX */ | |
28 | note PT_NOTE FLAGS(4); /* R__ */ | |
29 | } | |
30 | ||
31 | jiffies = jiffies_64; | |
32 | ||
33 | SECTIONS | |
34 | { | |
35 | . = VMLINUX_LOAD_ADDRESS; | |
36 | ||
37 | _text = .; | |
38 | HEAD_TEXT_SECTION | |
39 | ||
40 | . = ALIGN(PECOFF_SEGMENT_ALIGN); | |
92264f2d | 41 | _stext = .; |
fa96b57c HC |
42 | .text : { |
43 | TEXT_TEXT | |
44 | SCHED_TEXT | |
45 | CPUIDLE_TEXT | |
46 | LOCK_TEXT | |
47 | KPROBES_TEXT | |
48 | IRQENTRY_TEXT | |
49 | SOFTIRQENTRY_TEXT | |
50 | *(.fixup) | |
51 | *(.gnu.warning) | |
52 | } :text = 0 | |
53 | . = ALIGN(PECOFF_SEGMENT_ALIGN); | |
54 | _etext = .; | |
55 | ||
56 | EXCEPTION_TABLE(16) | |
57 | ||
11cd8a64 XR |
58 | .got : ALIGN(16) { *(.got) } |
59 | .plt : ALIGN(16) { *(.plt) } | |
60 | .got.plt : ALIGN(16) { *(.got.plt) } | |
61 | ||
fa96b57c HC |
62 | . = ALIGN(PECOFF_SEGMENT_ALIGN); |
63 | __init_begin = .; | |
64 | __inittext_begin = .; | |
65 | ||
66 | INIT_TEXT_SECTION(PAGE_SIZE) | |
67 | .exit.text : { | |
68 | EXIT_TEXT | |
69 | } | |
70 | ||
71 | . = ALIGN(PECOFF_SEGMENT_ALIGN); | |
72 | __inittext_end = .; | |
73 | ||
74 | __initdata_begin = .; | |
75 | ||
76 | INIT_DATA_SECTION(16) | |
77 | .exit.data : { | |
78 | EXIT_DATA | |
79 | } | |
80 | ||
46859ac8 HC |
81 | #ifdef CONFIG_SMP |
82 | PERCPU_SECTION(1 << CONFIG_L1_CACHE_SHIFT) | |
83 | #endif | |
84 | ||
1429cfde AB |
85 | .rela.dyn : ALIGN(8) { *(.rela.dyn) *(.rela*) } |
86 | ||
fa96b57c HC |
87 | .init.bss : { |
88 | *(.init.bss) | |
89 | } | |
90 | . = ALIGN(PECOFF_SEGMENT_ALIGN); | |
91 | __initdata_end = .; | |
92 | ||
93 | __init_end = .; | |
94 | ||
95 | _sdata = .; | |
96 | RO_DATA(4096) | |
97 | RW_DATA(1 << CONFIG_L1_CACHE_SHIFT, PAGE_SIZE, THREAD_SIZE) | |
98 | ||
99 | .sdata : { | |
100 | *(.sdata) | |
101 | } | |
102 | .edata_padding : { BYTE(0); . = ALIGN(PECOFF_FILE_ALIGN); } | |
103 | _edata = .; | |
104 | ||
105 | BSS_SECTION(0, SZ_64K, 8) | |
106 | . = ALIGN(PECOFF_SEGMENT_ALIGN); | |
107 | ||
108 | _end = .; | |
109 | ||
110 | STABS_DEBUG | |
111 | DWARF_DEBUG | |
b672332e | 112 | ELF_DETAILS |
fa96b57c HC |
113 | |
114 | .gptab.sdata : { | |
115 | *(.gptab.data) | |
116 | *(.gptab.sdata) | |
117 | } | |
118 | .gptab.sbss : { | |
119 | *(.gptab.bss) | |
120 | *(.gptab.sbss) | |
121 | } | |
122 | ||
123 | DISCARDS | |
124 | /DISCARD/ : { | |
125 | *(.gnu.attributes) | |
126 | *(.options) | |
127 | *(.eh_frame) | |
128 | } | |
129 | } |