Home | History | Annotate | Download | only in linux
      1 /* SPDX-License-Identifier: GPL-2.0+ */
      2 /*
      3  * U-Boot - linkage.h
      4  *
      5  * Copyright (c) 2005-2007 Analog Devices Inc.
      6  */
      7 
      8 #ifndef _LINUX_LINKAGE_H
      9 #define _LINUX_LINKAGE_H
     10 
     11 #include <asm/linkage.h>
     12 
     13 /* Some toolchains use other characters (e.g. '`') to mark new line in macro */
     14 #ifndef ASM_NL
     15 #define ASM_NL		 ;
     16 #endif
     17 
     18 #ifdef __cplusplus
     19 #define CPP_ASMLINKAGE		extern "C"
     20 #else
     21 #define CPP_ASMLINKAGE
     22 #endif
     23 
     24 #ifndef asmlinkage
     25 #define asmlinkage CPP_ASMLINKAGE
     26 #endif
     27 
     28 #define SYMBOL_NAME_STR(X)	#X
     29 #define SYMBOL_NAME(X)		X
     30 #ifdef __STDC__
     31 #define SYMBOL_NAME_LABEL(X)	X##:
     32 #else
     33 #define SYMBOL_NAME_LABEL(X)	X:
     34 #endif
     35 
     36 #ifndef __ALIGN
     37 #define __ALIGN .align		4
     38 #endif
     39 
     40 #ifndef __ALIGN_STR
     41 #define __ALIGN_STR		".align 4"
     42 #endif
     43 
     44 #ifdef __ASSEMBLY__
     45 
     46 #define ALIGN			__ALIGN
     47 #define ALIGN_STR		__ALIGN_STR
     48 
     49 #define LENTRY(name) \
     50 	ALIGN ASM_NL \
     51 	SYMBOL_NAME_LABEL(name)
     52 
     53 #define ENTRY(name) \
     54 	.globl SYMBOL_NAME(name) ASM_NL \
     55 	LENTRY(name)
     56 
     57 #define WEAK(name) \
     58 	.weak SYMBOL_NAME(name) ASM_NL \
     59 	LENTRY(name)
     60 
     61 #ifndef END
     62 #define END(name) \
     63 	.size name, .-name
     64 #endif
     65 
     66 #ifndef ENDPROC
     67 #define ENDPROC(name) \
     68 	.type name STT_FUNC ASM_NL \
     69 	END(name)
     70 #endif
     71 
     72 #endif
     73 
     74 #endif
     75