.. | .. |
---|
18 | 18 | *(.data..vm0.pgd) \ |
---|
19 | 19 | *(.data..vm0.pte) |
---|
20 | 20 | |
---|
| 21 | +#define CC_USING_PATCHABLE_FUNCTION_ENTRY |
---|
| 22 | +#define RO_EXCEPTION_TABLE_ALIGN 8 |
---|
| 23 | + |
---|
21 | 24 | #include <asm-generic/vmlinux.lds.h> |
---|
22 | 25 | |
---|
23 | 26 | /* needed for the processor specific cache alignment size */ |
---|
.. | .. |
---|
35 | 38 | OUTPUT_ARCH(hppa:hppa2.0w) |
---|
36 | 39 | #endif |
---|
37 | 40 | |
---|
| 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 | + |
---|
38 | 50 | ENTRY(parisc_kernel_start) |
---|
39 | 51 | #ifndef CONFIG_64BIT |
---|
40 | 52 | jiffies = jiffies_64 + 4; |
---|
.. | .. |
---|
47 | 59 | |
---|
48 | 60 | __init_begin = .; |
---|
49 | 61 | HEAD_TEXT_SECTION |
---|
50 | | - INIT_TEXT_SECTION(8) |
---|
| 62 | + MLONGCALL_DISCARD(INIT_TEXT_SECTION(8)) |
---|
51 | 63 | |
---|
52 | 64 | . = ALIGN(PAGE_SIZE); |
---|
53 | 65 | 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()) |
---|
59 | 67 | .exit.data : |
---|
60 | 68 | { |
---|
61 | 69 | EXIT_DATA |
---|
62 | 70 | } |
---|
63 | 71 | PERCPU_SECTION(8) |
---|
| 72 | + . = ALIGN(4); |
---|
| 73 | + .altinstructions : { |
---|
| 74 | + __alt_instructions = .; |
---|
| 75 | + *(.altinstructions) |
---|
| 76 | + __alt_instructions_end = .; |
---|
| 77 | + } |
---|
64 | 78 | . = ALIGN(HUGEPAGE_SIZE); |
---|
65 | 79 | __init_end = .; |
---|
66 | 80 | /* freed after init ends here */ |
---|
67 | 81 | |
---|
68 | 82 | _text = .; /* Text and read-only data */ |
---|
69 | 83 | _stext = .; |
---|
| 84 | + MLONGCALL_KEEP(INIT_TEXT_SECTION(8)) |
---|
70 | 85 | .text ALIGN(PAGE_SIZE) : { |
---|
71 | 86 | TEXT_TEXT |
---|
| 87 | + LOCK_TEXT |
---|
72 | 88 | SCHED_TEXT |
---|
73 | 89 | CPUIDLE_TEXT |
---|
74 | | - LOCK_TEXT |
---|
75 | 90 | KPROBES_TEXT |
---|
76 | 91 | IRQENTRY_TEXT |
---|
77 | 92 | SOFTIRQENTRY_TEXT |
---|
.. | .. |
---|
86 | 101 | *(.lock.text) /* out-of-line lock text */ |
---|
87 | 102 | *(.gnu.warning) |
---|
88 | 103 | } |
---|
| 104 | + MLONGCALL_KEEP(EXIT_TEXT_SECTIONS()) |
---|
89 | 105 | . = ALIGN(PAGE_SIZE); |
---|
90 | 106 | _etext = .; |
---|
91 | 107 | /* End of text section */ |
---|
.. | .. |
---|
94 | 110 | _sdata = .; |
---|
95 | 111 | |
---|
96 | 112 | /* 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 |
---|
98 | 114 | * and ftrace symbols. */ |
---|
99 | 115 | #ifdef CONFIG_64BIT |
---|
100 | 116 | . = ALIGN(16); |
---|
.. | .. |
---|
112 | 128 | } |
---|
113 | 129 | #endif |
---|
114 | 130 | |
---|
115 | | - RO_DATA_SECTION(8) |
---|
116 | | - |
---|
117 | | - /* RO because of BUILDTIME_EXTABLE_SORT */ |
---|
118 | | - EXCEPTION_TABLE(8) |
---|
119 | | - NOTES |
---|
| 131 | + RO_DATA(8) |
---|
120 | 132 | |
---|
121 | 133 | /* unwind info */ |
---|
122 | 134 | .PARISC.unwind : { |
---|
.. | .. |
---|
134 | 146 | data_start = .; |
---|
135 | 147 | |
---|
136 | 148 | /* Data */ |
---|
137 | | - RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, PAGE_SIZE) |
---|
| 149 | + RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, PAGE_SIZE) |
---|
138 | 150 | |
---|
139 | 151 | /* PA-RISC locks requires 16-byte alignment */ |
---|
140 | 152 | . = ALIGN(16); |
---|
.. | .. |
---|
152 | 164 | _end = . ; |
---|
153 | 165 | |
---|
154 | 166 | STABS_DEBUG |
---|
| 167 | + ELF_DETAILS |
---|
155 | 168 | .note 0 : { *(.note) } |
---|
156 | 169 | |
---|
157 | 170 | /* Sections to be discarded */ |
---|