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

TOMOYO Linux Cross Reference
Linux/include/linux/linkage.h

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 /include/linux/linkage.h (Version linux-6.12-rc7) and /include/linux/linkage.h (Version linux-5.15.169)


** Warning: Cannot open xref database.

  1 /* SPDX-License-Identifier: GPL-2.0 */              1 
  2 #ifndef _LINUX_LINKAGE_H                          
  3 #define _LINUX_LINKAGE_H                          
  4                                                   
  5 #include <linux/compiler_types.h>                 
  6 #include <linux/stringify.h>                      
  7 #include <linux/export.h>                         
  8 #include <asm/linkage.h>                          
  9                                                   
 10 /* Some toolchains use other characters (e.g.     
 11 #ifndef ASM_NL                                    
 12 #define ASM_NL           ;                        
 13 #endif                                            
 14                                                   
 15 #ifdef __cplusplus                                
 16 #define CPP_ASMLINKAGE extern "C"                 
 17 #else                                             
 18 #define CPP_ASMLINKAGE                            
 19 #endif                                            
 20                                                   
 21 #ifndef asmlinkage                                
 22 #define asmlinkage CPP_ASMLINKAGE                 
 23 #endif                                            
 24                                                   
 25 #ifndef cond_syscall                              
 26 #define cond_syscall(x) asm(                      
 27         ".weak " __stringify(x) "\n\t"            
 28         ".set  " __stringify(x) ","               
 29                  __stringify(sys_ni_syscall))     
 30 #endif                                            
 31                                                   
 32 #ifndef SYSCALL_ALIAS                             
 33 #define SYSCALL_ALIAS(alias, name) asm(           
 34         ".globl " __stringify(alias) "\n\t"       
 35         ".set   " __stringify(alias) ","          
 36                   __stringify(name))              
 37 #endif                                            
 38                                                   
 39 #define __page_aligned_data     __section(".da    
 40 #define __page_aligned_bss      __section(".bs    
 41                                                   
 42 /*                                                
 43  * For assembly routines.                         
 44  *                                                
 45  * Note when using these that you must specify    
 46  * alignment directives yourself                  
 47  */                                               
 48 #define __PAGE_ALIGNED_DATA     .section ".dat    
 49 #define __PAGE_ALIGNED_BSS      .section ".bss    
 50                                                   
 51 /*                                                
 52  * This is used by architectures to keep argum    
 53  * untouched by the compiler by keeping them l    
 54  * The argument stack may be owned by the asse    
 55  * caller, not the callee, and gcc doesn't alw    
 56  * that.                                          
 57  *                                                
 58  * We have the return value, and a maximum of     
 59  *                                                
 60  * This should always be followed by a "return    
 61  * protection to work (ie no more work that th    
 62  * end up needing stack temporaries for).         
 63  */                                               
 64 /* Assembly files may be compiled with -tradit    
 65 #ifndef __ASSEMBLY__                              
 66 #ifndef asmlinkage_protect                        
 67 # define asmlinkage_protect(n, ret, args...)      
 68 #endif                                            
 69 #endif                                            
 70                                                   
 71 #ifndef __ALIGN                                   
 72 #define __ALIGN                 .balign CONFIG    
 73 #define __ALIGN_STR             __stringify(__    
 74 #endif                                            
 75                                                   
 76 #ifdef __ASSEMBLY__                               
 77                                                   
 78 /* SYM_T_FUNC -- type used by assembler to mar    
 79 #ifndef SYM_T_FUNC                                
 80 #define SYM_T_FUNC                                
 81 #endif                                            
 82                                                   
 83 /* SYM_T_OBJECT -- type used by assembler to m    
 84 #ifndef SYM_T_OBJECT                              
 85 #define SYM_T_OBJECT                              
 86 #endif                                            
 87                                                   
 88 /* SYM_T_NONE -- type used by assembler to mar    
 89 #ifndef SYM_T_NONE                                
 90 #define SYM_T_NONE                                
 91 #endif                                            
 92                                                   
 93 /* SYM_A_* -- align the symbol? */                
 94 #define SYM_A_ALIGN                               
 95 #define SYM_A_NONE                                
 96                                                   
 97 /* SYM_L_* -- linkage of symbols */               
 98 #define SYM_L_GLOBAL(name)                        
 99 #define SYM_L_WEAK(name)                          
100 #define SYM_L_LOCAL(name)                         
101                                                   
102 #ifndef LINKER_SCRIPT                             
103 #define ALIGN __ALIGN                             
104 #define ALIGN_STR __ALIGN_STR                     
105                                                   
106 /* === DEPRECATED annotations === */              
107                                                   
108 #ifndef CONFIG_ARCH_USE_SYM_ANNOTATIONS           
109 #ifndef GLOBAL                                    
110 /* deprecated, use SYM_DATA*, SYM_ENTRY, or si    
111 #define GLOBAL(name) \                            
112         .globl name ASM_NL \                      
113         name:                                     
114 #endif                                            
115                                                   
116 #ifndef ENTRY                                     
117 /* deprecated, use SYM_FUNC_START */              
118 #define ENTRY(name) \                             
119         SYM_FUNC_START(name)                      
120 #endif                                            
121 #endif /* CONFIG_ARCH_USE_SYM_ANNOTATIONS */      
122 #endif /* LINKER_SCRIPT */                        
123                                                   
124 #ifndef CONFIG_ARCH_USE_SYM_ANNOTATIONS           
125 #ifndef WEAK                                      
126 /* deprecated, use SYM_FUNC_START_WEAK* */        
127 #define WEAK(name)         \                      
128         SYM_FUNC_START_WEAK(name)                 
129 #endif                                            
130                                                   
131 #ifndef END                                       
132 /* deprecated, use SYM_FUNC_END, SYM_DATA_END,    
133 #define END(name) \                               
134         .size name, .-name                        
135 #endif                                            
136                                                   
137 /* If symbol 'name' is treated as a subroutine    
138  * then please use ENDPROC to mark 'name' as S    
139  * static analysis tools such as stack depth a    
140  */                                               
141 #ifndef ENDPROC                                   
142 /* deprecated, use SYM_FUNC_END */                
143 #define ENDPROC(name) \                           
144         SYM_FUNC_END(name)                        
145 #endif                                            
146 #endif /* CONFIG_ARCH_USE_SYM_ANNOTATIONS */      
147                                                   
148 /* === generic annotations === */                 
149                                                   
150 /* SYM_ENTRY -- use only if you have to for no    
151 #ifndef SYM_ENTRY                                 
152 #define SYM_ENTRY(name, linkage, align...)        
153         linkage(name) ASM_NL                      
154         align ASM_NL                              
155         name:                                     
156 #endif                                            
157                                                   
158 /* SYM_START -- use only if you have to */        
159 #ifndef SYM_START                                 
160 #define SYM_START(name, linkage, align...)        
161         SYM_ENTRY(name, linkage, align)           
162 #endif                                            
163                                                   
164 /* SYM_END -- use only if you have to */          
165 #ifndef SYM_END                                   
166 #define SYM_END(name, sym_type)                   
167         .type name sym_type ASM_NL                
168         .set .L__sym_size_##name, .-name ASM_N    
169         .size name, .L__sym_size_##name           
170 #endif                                            
171                                                   
172 /* SYM_ALIAS -- use only if you have to */        
173 #ifndef SYM_ALIAS                                 
174 #define SYM_ALIAS(alias, name, linkage)           
175         linkage(alias) ASM_NL                     
176         .set alias, name ASM_NL                   
177 #endif                                            
178                                                   
179 /* === code annotations === */                    
180                                                   
181 /*                                                
182  * FUNC -- C-like functions (proper stack fram    
183  * CODE -- non-C code (e.g. irq handlers with     
184  *                                                
185  * Objtool validates stack for FUNC, but not f    
186  * Objtool generates debug info for both FUNC     
187  * annotations for each CODE's start (to descr    
188  *                                                
189  * Objtool requires that all code must be cont    
190  * names that have a  .L prefix do not emit sy    
191  * prefixed symbols can be used within a code     
192  * denoting a range of code via ``SYM_*_START/    
193  *                                                
194  * ALIAS -- does not generate debug info -- th    
195  */                                               
196                                                   
197 /* SYM_INNER_LABEL_ALIGN -- only for labels in    
198 #ifndef SYM_INNER_LABEL_ALIGN                     
199 #define SYM_INNER_LABEL_ALIGN(name, linkage)      
200         .type name SYM_T_NONE ASM_NL              
201         SYM_ENTRY(name, linkage, SYM_A_ALIGN)     
202 #endif                                            
203                                                   
204 /* SYM_INNER_LABEL -- only for labels in the m    
205 #ifndef SYM_INNER_LABEL                           
206 #define SYM_INNER_LABEL(name, linkage)            
207         .type name SYM_T_NONE ASM_NL              
208         SYM_ENTRY(name, linkage, SYM_A_NONE)      
209 #endif                                            
210                                                   
211 /* SYM_FUNC_START -- use for global functions     
212 #ifndef SYM_FUNC_START                            
213 #define SYM_FUNC_START(name)                      
214         SYM_START(name, SYM_L_GLOBAL, SYM_A_AL    
215 #endif                                            
216                                                   
217 /* SYM_FUNC_START_NOALIGN -- use for global fu    
218 #ifndef SYM_FUNC_START_NOALIGN                    
219 #define SYM_FUNC_START_NOALIGN(name)              
220         SYM_START(name, SYM_L_GLOBAL, SYM_A_NO    
221 #endif                                            
222                                                   
223 /* SYM_FUNC_START_LOCAL -- use for local funct    
224 #ifndef SYM_FUNC_START_LOCAL                      
225 #define SYM_FUNC_START_LOCAL(name)                
226         SYM_START(name, SYM_L_LOCAL, SYM_A_ALI    
227 #endif                                            
228                                                   
229 /* SYM_FUNC_START_LOCAL_NOALIGN -- use for loc    
230 #ifndef SYM_FUNC_START_LOCAL_NOALIGN              
231 #define SYM_FUNC_START_LOCAL_NOALIGN(name)        
232         SYM_START(name, SYM_L_LOCAL, SYM_A_NON    
233 #endif                                            
234                                                   
235 /* SYM_FUNC_START_WEAK -- use for weak functio    
236 #ifndef SYM_FUNC_START_WEAK                       
237 #define SYM_FUNC_START_WEAK(name)                 
238         SYM_START(name, SYM_L_WEAK, SYM_A_ALIG    
239 #endif                                            
240                                                   
241 /* SYM_FUNC_START_WEAK_NOALIGN -- use for weak    
242 #ifndef SYM_FUNC_START_WEAK_NOALIGN               
243 #define SYM_FUNC_START_WEAK_NOALIGN(name)         
244         SYM_START(name, SYM_L_WEAK, SYM_A_NONE    
245 #endif                                            
246                                                   
247 /*                                                
248  * SYM_FUNC_END -- the end of SYM_FUNC_START_L    
249  * SYM_FUNC_START_WEAK, ...                       
250  */                                               
251 #ifndef SYM_FUNC_END                              
252 #define SYM_FUNC_END(name)                        
253         SYM_END(name, SYM_T_FUNC)                 
254 #endif                                            
255                                                   
256 /*                                                
257  * SYM_FUNC_ALIAS -- define a global alias for    
258  */                                               
259 #ifndef SYM_FUNC_ALIAS                            
260 #define SYM_FUNC_ALIAS(alias, name)               
261         SYM_ALIAS(alias, name, SYM_L_GLOBAL)      
262 #endif                                            
263                                                   
264 /*                                                
265  * SYM_FUNC_ALIAS_LOCAL -- define a local alia    
266  */                                               
267 #ifndef SYM_FUNC_ALIAS_LOCAL                      
268 #define SYM_FUNC_ALIAS_LOCAL(alias, name)         
269         SYM_ALIAS(alias, name, SYM_L_LOCAL)       
270 #endif                                            
271                                                   
272 /*                                                
273  * SYM_FUNC_ALIAS_WEAK -- define a weak global    
274  */                                               
275 #ifndef SYM_FUNC_ALIAS_WEAK                       
276 #define SYM_FUNC_ALIAS_WEAK(alias, name)          
277         SYM_ALIAS(alias, name, SYM_L_WEAK)        
278 #endif                                            
279                                                   
280 /* SYM_CODE_START -- use for non-C (special) f    
281 #ifndef SYM_CODE_START                            
282 #define SYM_CODE_START(name)                      
283         SYM_START(name, SYM_L_GLOBAL, SYM_A_AL    
284 #endif                                            
285                                                   
286 /* SYM_CODE_START_NOALIGN -- use for non-C (sp    
287 #ifndef SYM_CODE_START_NOALIGN                    
288 #define SYM_CODE_START_NOALIGN(name)              
289         SYM_START(name, SYM_L_GLOBAL, SYM_A_NO    
290 #endif                                            
291                                                   
292 /* SYM_CODE_START_LOCAL -- use for local non-C    
293 #ifndef SYM_CODE_START_LOCAL                      
294 #define SYM_CODE_START_LOCAL(name)                
295         SYM_START(name, SYM_L_LOCAL, SYM_A_ALI    
296 #endif                                            
297                                                   
298 /*                                                
299  * SYM_CODE_START_LOCAL_NOALIGN -- use for loc    
300  * w/o alignment                                  
301  */                                               
302 #ifndef SYM_CODE_START_LOCAL_NOALIGN              
303 #define SYM_CODE_START_LOCAL_NOALIGN(name)        
304         SYM_START(name, SYM_L_LOCAL, SYM_A_NON    
305 #endif                                            
306                                                   
307 /* SYM_CODE_END -- the end of SYM_CODE_START_L    
308 #ifndef SYM_CODE_END                              
309 #define SYM_CODE_END(name)                        
310         SYM_END(name, SYM_T_NONE)                 
311 #endif                                            
312                                                   
313 /* === data annotations === */                    
314                                                   
315 /* SYM_DATA_START -- global data symbol */        
316 #ifndef SYM_DATA_START                            
317 #define SYM_DATA_START(name)                      
318         SYM_START(name, SYM_L_GLOBAL, SYM_A_NO    
319 #endif                                            
320                                                   
321 /* SYM_DATA_START -- local data symbol */         
322 #ifndef SYM_DATA_START_LOCAL                      
323 #define SYM_DATA_START_LOCAL(name)                
324         SYM_START(name, SYM_L_LOCAL, SYM_A_NON    
325 #endif                                            
326                                                   
327 /* SYM_DATA_END -- the end of SYM_DATA_START s    
328 #ifndef SYM_DATA_END                              
329 #define SYM_DATA_END(name)                        
330         SYM_END(name, SYM_T_OBJECT)               
331 #endif                                            
332                                                   
333 /* SYM_DATA_END_LABEL -- the labeled end of SY    
334 #ifndef SYM_DATA_END_LABEL                        
335 #define SYM_DATA_END_LABEL(name, linkage, labe    
336         linkage(label) ASM_NL                     
337         .type label SYM_T_OBJECT ASM_NL           
338         label:                                    
339         SYM_END(name, SYM_T_OBJECT)               
340 #endif                                            
341                                                   
342 /* SYM_DATA -- start+end wrapper around simple    
343 #ifndef SYM_DATA                                  
344 #define SYM_DATA(name, data...)                   
345         SYM_DATA_START(name) ASM_NL               
346         data ASM_NL                               
347         SYM_DATA_END(name)                        
348 #endif                                            
349                                                   
350 /* SYM_DATA_LOCAL -- start+end wrapper around     
351 #ifndef SYM_DATA_LOCAL                            
352 #define SYM_DATA_LOCAL(name, data...)             
353         SYM_DATA_START_LOCAL(name) ASM_NL         
354         data ASM_NL                               
355         SYM_DATA_END(name)                        
356 #endif                                            
357                                                   
358 #endif /* __ASSEMBLY__ */                         
359                                                   
360 #endif /* _LINUX_LINKAGE_H */                     
361                                                   

~ [ 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