Merge tag 'block-6.1-2022-10-20' of git://git.kernel.dk/linux
[linux-block.git] / arch / loongarch / kernel / vmlinux.lds.S
CommitLineData
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 */
21PECOFF_FILE_ALIGN = 0x200;
22PECOFF_SEGMENT_ALIGN = 0x10000;
23
24OUTPUT_ARCH(loongarch)
25ENTRY(kernel_entry)
26PHDRS {
27 text PT_LOAD FLAGS(7); /* RWX */
28 note PT_NOTE FLAGS(4); /* R__ */
29}
30
31jiffies = jiffies_64;
32
33SECTIONS
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}