~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/powerpc/kernel/vmlinux.lds.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/powerpc/kernel/vmlinux.lds.S (Architecture sparc) and /arch/i386/kernel/vmlinux.lds.S (Architecture i386)


  1 /* SPDX-License-Identifier: GPL-2.0 */            
  2 #ifdef CONFIG_PPC64                               
  3 #define PROVIDE32(x)    PROVIDE(__unused__##x)    
  4 #else                                             
  5 #define PROVIDE32(x)    PROVIDE(x)                
  6 #endif                                            
  7                                                   
  8 #define BSS_FIRST_SECTIONS *(.bss.prominit)       
  9 #define EMITS_PT_NOTE                             
 10 #define RO_EXCEPTION_TABLE_ALIGN        0         
 11 #define RUNTIME_DISCARD_EXIT                      
 12                                                   
 13 #define SOFT_MASK_TABLE(align)                    
 14         . = ALIGN(align);                         
 15         __soft_mask_table : AT(ADDR(__soft_mas    
 16                 __start___soft_mask_table = .;    
 17                 KEEP(*(__soft_mask_table))        
 18                 __stop___soft_mask_table = .;     
 19         }                                         
 20                                                   
 21 #define RESTART_TABLE(align)                      
 22         . = ALIGN(align);                         
 23         __restart_table : AT(ADDR(__restart_ta    
 24                 __start___restart_table = .;      
 25                 KEEP(*(__restart_table))          
 26                 __stop___restart_table = .;       
 27         }                                         
 28                                                   
 29 #include <asm/page.h>                             
 30 #include <asm-generic/vmlinux.lds.h>              
 31 #include <asm/cache.h>                            
 32 #include <asm/thread_info.h>                      
 33                                                   
 34 #define STRICT_ALIGN_SIZE       (1 << CONFIG_D    
 35                                                   
 36 #if STRICT_ALIGN_SIZE < PAGE_SIZE                 
 37 #error "CONFIG_DATA_SHIFT must be >= PAGE_SHIF    
 38 #endif                                            
 39                                                   
 40 ENTRY(_stext)                                     
 41                                                   
 42 PHDRS {                                           
 43         text PT_LOAD FLAGS(7); /* RWX */          
 44         note PT_NOTE FLAGS(0);                    
 45 }                                                 
 46                                                   
 47 #ifdef CONFIG_PPC64                               
 48 OUTPUT_ARCH(powerpc:common64)                     
 49 jiffies = jiffies_64;                             
 50 #else                                             
 51 OUTPUT_ARCH(powerpc:common)                       
 52 jiffies = jiffies_64 + 4;                         
 53 #endif                                            
 54 SECTIONS                                          
 55 {                                                 
 56         . = KERNELBASE;                           
 57                                                   
 58 /*                                                
 59  * Text, read only data and other permanent re    
 60  */                                               
 61                                                   
 62         _text = .;                                
 63         _stext = .;                               
 64                                                   
 65         /*                                        
 66          * Head text.                             
 67          * This needs to be in its own output     
 68          * branch trampoline stubs randomly th    
 69          * which it will do (even if the branc    
 70          * in order to optimize stub generatio    
 71          */                                       
 72         .head.text : AT(ADDR(.head.text) - LOA    
 73 #ifdef CONFIG_PPC64                               
 74                 KEEP(*(.head.text.first_256B))    
 75 #ifdef CONFIG_PPC_BOOK3E_64                       
 76 #else                                             
 77                 KEEP(*(.head.text.real_vectors    
 78                 *(.head.text.real_trampolines)    
 79                 KEEP(*(.head.text.virt_vectors    
 80                 *(.head.text.virt_trampolines)    
 81 # if defined(CONFIG_PPC_PSERIES) || defined(CO    
 82                 KEEP(*(.head.data.fwnmi_page))    
 83 # endif                                           
 84 #endif                                            
 85 #else /* !CONFIG_PPC64 */                         
 86                 HEAD_TEXT                         
 87 #endif                                            
 88         } :text                                   
 89                                                   
 90         __head_end = .;                           
 91                                                   
 92 #ifdef CONFIG_PPC64                               
 93         /*                                        
 94          * ALIGN(0) overrides the default outp    
 95          * this needs to start right after .he    
 96          * section placement to work.             
 97          */                                       
 98         .text ALIGN(0) : AT(ADDR(.text) - LOAD    
 99 #ifdef CONFIG_LD_HEAD_STUB_CATCH                  
100                 KEEP(*(.linker_stub_catch));      
101                 . = . ;                           
102 #endif                                            
103                                                   
104 #else                                             
105         .text : AT(ADDR(.text) - LOAD_OFFSET)     
106                 ALIGN_FUNCTION();                 
107 #endif                                            
108                 /* careful! __ftr_alt_* sectio    
109                 *(.text.hot .text.hot.* TEXT_M    
110                 *(.tramp.ftrace.text);            
111                 NOINSTR_TEXT                      
112                 SCHED_TEXT                        
113                 LOCK_TEXT                         
114                 KPROBES_TEXT                      
115                 IRQENTRY_TEXT                     
116                 SOFTIRQENTRY_TEXT                 
117                 /*                                
118                  * -Os builds call FP save/res    
119                  * linker generates those on d    
120                  * .sfpr gets placed at the be    
121                  * sections, which can break s    
122                  * included with the main text    
123                  */                               
124                 *(.sfpr);                         
125                 *(.text.asan.* .text.tsan.*)      
126         } :text                                   
127                                                   
128         . = ALIGN(PAGE_SIZE);                     
129         _etext = .;                               
130         PROVIDE32 (etext = .);                    
131                                                   
132         /* Read-only data */                      
133         RO_DATA(PAGE_SIZE)                        
134                                                   
135 #ifdef CONFIG_PPC32                               
136         .sdata2 : AT(ADDR(.sdata2) - LOAD_OFFS    
137                 *(.sdata2)                        
138         }                                         
139 #endif                                            
140                                                   
141         .data.rel.ro : AT(ADDR(.data.rel.ro) -    
142                 *(.data.rel.ro .data.rel.ro.*)    
143         }                                         
144                                                   
145         .branch_lt : AT(ADDR(.branch_lt) - LOA    
146                 *(.branch_lt)                     
147         }                                         
148                                                   
149 #ifdef CONFIG_PPC32                               
150         .got1 : AT(ADDR(.got1) - LOAD_OFFSET)     
151                 *(.got1)                          
152         }                                         
153         .got2 : AT(ADDR(.got2) - LOAD_OFFSET)     
154                 __got2_start = .;                 
155                 *(.got2)                          
156                 __got2_end = .;                   
157         }                                         
158         .got : AT(ADDR(.got) - LOAD_OFFSET) {     
159                 *(.got)                           
160                 *(.got.plt)                       
161         }                                         
162         .plt : AT(ADDR(.plt) - LOAD_OFFSET) {     
163                 /* XXX: is .plt (and .got.plt)    
164                 *(.plt)                           
165         }                                         
166                                                   
167 #else /* CONFIG_PPC32 */                          
168 #ifndef CONFIG_PPC_KERNEL_PCREL                   
169         .toc1 : AT(ADDR(.toc1) - LOAD_OFFSET)     
170                 *(.toc1)                          
171         }                                         
172 #endif                                            
173                                                   
174         .got : AT(ADDR(.got) - LOAD_OFFSET) AL    
175 #ifdef CONFIG_PPC_KERNEL_PCREL                    
176                 *(.got)                           
177 #else                                             
178                 *(.got .toc)                      
179 #endif                                            
180         }                                         
181                                                   
182         SOFT_MASK_TABLE(8)                        
183         RESTART_TABLE(8)                          
184                                                   
185 #ifdef CONFIG_PPC64_ELF_ABI_V1                    
186         .opd : AT(ADDR(.opd) - LOAD_OFFSET) {     
187                 __start_opd = .;                  
188                 KEEP(*(.opd))                     
189                 __end_opd = .;                    
190         }                                         
191 #endif                                            
192                                                   
193         . = ALIGN(8);                             
194         __stf_entry_barrier_fixup : AT(ADDR(__    
195                 __start___stf_entry_barrier_fi    
196                 *(__stf_entry_barrier_fixup)      
197                 __stop___stf_entry_barrier_fix    
198         }                                         
199                                                   
200         . = ALIGN(8);                             
201         __uaccess_flush_fixup : AT(ADDR(__uacc    
202                 __start___uaccess_flush_fixup     
203                 *(__uaccess_flush_fixup)          
204                 __stop___uaccess_flush_fixup =    
205         }                                         
206                                                   
207         . = ALIGN(8);                             
208         __entry_flush_fixup : AT(ADDR(__entry_    
209                 __start___entry_flush_fixup =     
210                 *(__entry_flush_fixup)            
211                 __stop___entry_flush_fixup = .    
212         }                                         
213                                                   
214         . = ALIGN(8);                             
215         __scv_entry_flush_fixup : AT(ADDR(__sc    
216                 __start___scv_entry_flush_fixu    
217                 *(__scv_entry_flush_fixup)        
218                 __stop___scv_entry_flush_fixup    
219         }                                         
220                                                   
221         . = ALIGN(8);                             
222         __stf_exit_barrier_fixup : AT(ADDR(__s    
223                 __start___stf_exit_barrier_fix    
224                 *(__stf_exit_barrier_fixup)       
225                 __stop___stf_exit_barrier_fixu    
226         }                                         
227                                                   
228         . = ALIGN(8);                             
229         __rfi_flush_fixup : AT(ADDR(__rfi_flus    
230                 __start___rfi_flush_fixup = .;    
231                 *(__rfi_flush_fixup)              
232                 __stop___rfi_flush_fixup = .;     
233         }                                         
234 #endif /* CONFIG_PPC32 */                         
235                                                   
236 #ifdef CONFIG_PPC_BARRIER_NOSPEC                  
237         . = ALIGN(8);                             
238         __spec_barrier_fixup : AT(ADDR(__spec_    
239                 __start___barrier_nospec_fixup    
240                 *(__barrier_nospec_fixup)         
241                 __stop___barrier_nospec_fixup     
242         }                                         
243 #endif /* CONFIG_PPC_BARRIER_NOSPEC */            
244                                                   
245 #ifdef CONFIG_PPC_E500                            
246         . = ALIGN(8);                             
247         __spec_btb_flush_fixup : AT(ADDR(__spe    
248                 __start__btb_flush_fixup = .;     
249                 *(__btb_flush_fixup)              
250                 __stop__btb_flush_fixup = .;      
251         }                                         
252 #endif                                            
253                                                   
254         /*                                        
255          * Various code relies on __init_begin    
256          */                                       
257         . = ALIGN(STRICT_ALIGN_SIZE);             
258         __srwx_boundary = .;                      
259         __end_rodata = .;                         
260         __init_begin = .;                         
261                                                   
262 /*                                                
263  * Init sections discarded at runtime             
264  */                                               
265         .init.text : AT(ADDR(.init.text) - LOA    
266                 _sinittext = .;                   
267                 INIT_TEXT                         
268                                                   
269                 /*                                
270                  *.init.text might be RO so we    
271                  * a page boundary.               
272                  */                               
273                 . = ALIGN(PAGE_SIZE);             
274                 _einittext = .;                   
275                 *(.tramp.ftrace.init);            
276         } :text                                   
277                                                   
278         /* .exit.text is discarded at runtime,    
279          * to deal with references from __bug_    
280          */                                       
281         .exit.text : AT(ADDR(.exit.text) - LOA    
282                 __exittext_begin = .;             
283                 EXIT_TEXT                         
284                 __exittext_end = .;               
285         }                                         
286                                                   
287         . = ALIGN(PAGE_SIZE);                     
288                                                   
289         INIT_DATA_SECTION(16)                     
290                                                   
291         . = ALIGN(8);                             
292         __ftr_fixup : AT(ADDR(__ftr_fixup) - L    
293                 __start___ftr_fixup = .;          
294                 KEEP(*(__ftr_fixup))              
295                 __stop___ftr_fixup = .;           
296         }                                         
297         . = ALIGN(8);                             
298         __mmu_ftr_fixup : AT(ADDR(__mmu_ftr_fi    
299                 __start___mmu_ftr_fixup = .;      
300                 KEEP(*(__mmu_ftr_fixup))          
301                 __stop___mmu_ftr_fixup = .;       
302         }                                         
303         . = ALIGN(8);                             
304         __lwsync_fixup : AT(ADDR(__lwsync_fixu    
305                 __start___lwsync_fixup = .;       
306                 KEEP(*(__lwsync_fixup))           
307                 __stop___lwsync_fixup = .;        
308         }                                         
309 #ifdef CONFIG_PPC64                               
310         . = ALIGN(8);                             
311         __fw_ftr_fixup : AT(ADDR(__fw_ftr_fixu    
312                 __start___fw_ftr_fixup = .;       
313                 KEEP(*(__fw_ftr_fixup))           
314                 __stop___fw_ftr_fixup = .;        
315         }                                         
316 #endif                                            
317                                                   
318         PERCPU_SECTION(L1_CACHE_BYTES)            
319                                                   
320         . = ALIGN(8);                             
321         .machine.desc : AT(ADDR(.machine.desc)    
322                 __machine_desc_start = . ;        
323                 KEEP(*(.machine.desc))            
324                 __machine_desc_end = . ;          
325         }                                         
326 #ifdef CONFIG_RELOCATABLE                         
327         . = ALIGN(8);                             
328         .dynsym : AT(ADDR(.dynsym) - LOAD_OFFS    
329         {                                         
330                 __dynamic_symtab = .;             
331                 *(.dynsym)                        
332         }                                         
333         .dynstr : AT(ADDR(.dynstr) - LOAD_OFFS    
334         .dynamic : AT(ADDR(.dynamic) - LOAD_OF    
335         {                                         
336                 __dynamic_start = .;              
337                 *(.dynamic)                       
338         }                                         
339         .hash : AT(ADDR(.hash) - LOAD_OFFSET)     
340         .gnu.hash : AT(ADDR(.gnu.hash) - LOAD_    
341         .interp : AT(ADDR(.interp) - LOAD_OFFS    
342         .rela.dyn : AT(ADDR(.rela.dyn) - LOAD_    
343         {                                         
344                 __rela_dyn_start = .;             
345                 *(.rela*)                         
346         }                                         
347 #endif                                            
348         /* .exit.data is discarded at runtime,    
349          * to deal with references from .exit.    
350          */                                       
351         .exit.data : AT(ADDR(.exit.data) - LOA    
352                 EXIT_DATA                         
353         }                                         
354                                                   
355         /* freed after init ends here */          
356         . = ALIGN(PAGE_SIZE);                     
357         __init_end = .;                           
358                                                   
359 /*                                                
360  * And now the various read/write data            
361  */                                               
362                                                   
363         . = ALIGN(PAGE_SIZE);                     
364         _sdata = .;                               
365                                                   
366         .data : AT(ADDR(.data) - LOAD_OFFSET)     
367                 DATA_DATA                         
368                 *(.data.rel*)                     
369 #ifdef CONFIG_PPC32                               
370                 *(SDATA_MAIN)                     
371 #endif                                            
372         }                                         
373                                                   
374         /* The initial task and kernel stack *    
375         INIT_TASK_DATA_SECTION(THREAD_ALIGN)      
376                                                   
377         .data..page_aligned : AT(ADDR(.data..p    
378                 PAGE_ALIGNED_DATA(PAGE_SIZE)      
379         }                                         
380                                                   
381         .data..cacheline_aligned : AT(ADDR(.da    
382                 CACHELINE_ALIGNED_DATA(L1_CACH    
383         }                                         
384                                                   
385         .data..read_mostly : AT(ADDR(.data..re    
386                 READ_MOSTLY_DATA(L1_CACHE_BYTE    
387         }                                         
388                                                   
389         . = ALIGN(PAGE_SIZE);                     
390         .data_nosave : AT(ADDR(.data_nosave) -    
391                 NOSAVE_DATA                       
392         }                                         
393                                                   
394         BUG_TABLE                                 
395                                                   
396         . = ALIGN(PAGE_SIZE);                     
397         _edata  =  .;                             
398         PROVIDE32 (edata = .);                    
399                                                   
400 /*                                                
401  * And finally the bss                            
402  */                                               
403                                                   
404         BSS_SECTION(0, 0, 0)                      
405                                                   
406         . = ALIGN(PAGE_SIZE);                     
407         _end = . ;                                
408         PROVIDE32 (end = .);                      
409                                                   
410         DWARF_DEBUG                               
411         ELF_DETAILS                               
412                                                   
413         DISCARDS                                  
414         /DISCARD/ : {                             
415                 *(*.EMB.apuinfo)                  
416                 *(.glink .iplt .plt)              
417                 *(.gnu.version*)                  
418                 *(.gnu.attributes)                
419                 *(.eh_frame)                      
420 #ifndef CONFIG_RELOCATABLE                        
421                 *(.rela*)                         
422 #endif                                            
423         }                                         
424 }                                                 
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php