hc
2024-02-19 1c055e55a242a33e574e48be530e06770a210dcd
kernel/arch/parisc/kernel/vmlinux.lds.S
....@@ -18,6 +18,9 @@
1818 *(.data..vm0.pgd) \
1919 *(.data..vm0.pte)
2020
21
+#define CC_USING_PATCHABLE_FUNCTION_ENTRY
22
+#define RO_EXCEPTION_TABLE_ALIGN 8
23
+
2124 #include <asm-generic/vmlinux.lds.h>
2225
2326 /* needed for the processor specific cache alignment size */
....@@ -35,6 +38,15 @@
3538 OUTPUT_ARCH(hppa:hppa2.0w)
3639 #endif
3740
41
+#define EXIT_TEXT_SECTIONS() .exit.text : { EXIT_TEXT }
42
+#if !defined(CONFIG_64BIT) || defined(CONFIG_MLONGCALLS)
43
+#define MLONGCALL_KEEP(x)
44
+#define MLONGCALL_DISCARD(x) x
45
+#else
46
+#define MLONGCALL_KEEP(x) x
47
+#define MLONGCALL_DISCARD(x)
48
+#endif
49
+
3850 ENTRY(parisc_kernel_start)
3951 #ifndef CONFIG_64BIT
4052 jiffies = jiffies_64 + 4;
....@@ -47,31 +59,34 @@
4759
4860 __init_begin = .;
4961 HEAD_TEXT_SECTION
50
- INIT_TEXT_SECTION(8)
62
+ MLONGCALL_DISCARD(INIT_TEXT_SECTION(8))
5163
5264 . = ALIGN(PAGE_SIZE);
5365 INIT_DATA_SECTION(PAGE_SIZE)
54
- /* we have to discard exit text and such at runtime, not link time */
55
- .exit.text :
56
- {
57
- EXIT_TEXT
58
- }
66
+ MLONGCALL_DISCARD(EXIT_TEXT_SECTIONS())
5967 .exit.data :
6068 {
6169 EXIT_DATA
6270 }
6371 PERCPU_SECTION(8)
72
+ . = ALIGN(4);
73
+ .altinstructions : {
74
+ __alt_instructions = .;
75
+ *(.altinstructions)
76
+ __alt_instructions_end = .;
77
+ }
6478 . = ALIGN(HUGEPAGE_SIZE);
6579 __init_end = .;
6680 /* freed after init ends here */
6781
6882 _text = .; /* Text and read-only data */
6983 _stext = .;
84
+ MLONGCALL_KEEP(INIT_TEXT_SECTION(8))
7085 .text ALIGN(PAGE_SIZE) : {
7186 TEXT_TEXT
87
+ LOCK_TEXT
7288 SCHED_TEXT
7389 CPUIDLE_TEXT
74
- LOCK_TEXT
7590 KPROBES_TEXT
7691 IRQENTRY_TEXT
7792 SOFTIRQENTRY_TEXT
....@@ -86,6 +101,7 @@
86101 *(.lock.text) /* out-of-line lock text */
87102 *(.gnu.warning)
88103 }
104
+ MLONGCALL_KEEP(EXIT_TEXT_SECTIONS())
89105 . = ALIGN(PAGE_SIZE);
90106 _etext = .;
91107 /* End of text section */
....@@ -94,7 +110,7 @@
94110 _sdata = .;
95111
96112 /* Architecturally we need to keep __gp below 0x1000000 and thus
97
- * in front of RO_DATA_SECTION() which stores lots of tracepoint
113
+ * in front of RO_DATA() which stores lots of tracepoint
98114 * and ftrace symbols. */
99115 #ifdef CONFIG_64BIT
100116 . = ALIGN(16);
....@@ -112,11 +128,7 @@
112128 }
113129 #endif
114130
115
- RO_DATA_SECTION(8)
116
-
117
- /* RO because of BUILDTIME_EXTABLE_SORT */
118
- EXCEPTION_TABLE(8)
119
- NOTES
131
+ RO_DATA(8)
120132
121133 /* unwind info */
122134 .PARISC.unwind : {
....@@ -134,7 +146,7 @@
134146 data_start = .;
135147
136148 /* Data */
137
- RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, PAGE_SIZE)
149
+ RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, PAGE_SIZE)
138150
139151 /* PA-RISC locks requires 16-byte alignment */
140152 . = ALIGN(16);
....@@ -152,6 +164,7 @@
152164 _end = . ;
153165
154166 STABS_DEBUG
167
+ ELF_DETAILS
155168 .note 0 : { *(.note) }
156169
157170 /* Sections to be discarded */