1b738c106SHuacai Chen /* SPDX-License-Identifier: GPL-2.0 */ 2b738c106SHuacai Chen #ifndef __ASM_LINKAGE_H 3b738c106SHuacai Chen #define __ASM_LINKAGE_H 4b738c106SHuacai Chen 5b738c106SHuacai Chen #define __ALIGN .align 2 6b738c106SHuacai Chen #define __ALIGN_STR __stringify(__ALIGN) 7b738c106SHuacai Chen 8b738c106SHuacai Chen #define SYM_FUNC_START(name) \ 9b738c106SHuacai Chen SYM_START(name, SYM_L_GLOBAL, SYM_A_ALIGN) \ 10b738c106SHuacai Chen .cfi_startproc; 11b738c106SHuacai Chen 12b738c106SHuacai Chen #define SYM_FUNC_START_NOALIGN(name) \ 13b738c106SHuacai Chen SYM_START(name, SYM_L_GLOBAL, SYM_A_NONE) \ 14b738c106SHuacai Chen .cfi_startproc; 15b738c106SHuacai Chen 16b738c106SHuacai Chen #define SYM_FUNC_START_LOCAL(name) \ 17b738c106SHuacai Chen SYM_START(name, SYM_L_LOCAL, SYM_A_ALIGN) \ 18b738c106SHuacai Chen .cfi_startproc; 19b738c106SHuacai Chen 20b738c106SHuacai Chen #define SYM_FUNC_START_LOCAL_NOALIGN(name) \ 21b738c106SHuacai Chen SYM_START(name, SYM_L_LOCAL, SYM_A_NONE) \ 22b738c106SHuacai Chen .cfi_startproc; 23b738c106SHuacai Chen 24b738c106SHuacai Chen #define SYM_FUNC_START_WEAK(name) \ 25b738c106SHuacai Chen SYM_START(name, SYM_L_WEAK, SYM_A_ALIGN) \ 26b738c106SHuacai Chen .cfi_startproc; 27b738c106SHuacai Chen 28b738c106SHuacai Chen #define SYM_FUNC_START_WEAK_NOALIGN(name) \ 29b738c106SHuacai Chen SYM_START(name, SYM_L_WEAK, SYM_A_NONE) \ 30b738c106SHuacai Chen .cfi_startproc; 31b738c106SHuacai Chen 32b738c106SHuacai Chen #define SYM_FUNC_END(name) \ 33b738c106SHuacai Chen .cfi_endproc; \ 34b738c106SHuacai Chen SYM_END(name, SYM_T_FUNC) 35b738c106SHuacai Chen 36*00c2ca84STiezhu Yang #define SYM_CODE_START(name) \ 37*00c2ca84STiezhu Yang SYM_START(name, SYM_L_GLOBAL, SYM_A_ALIGN) \ 38*00c2ca84STiezhu Yang .cfi_startproc; 39*00c2ca84STiezhu Yang 40*00c2ca84STiezhu Yang #define SYM_CODE_END(name) \ 41*00c2ca84STiezhu Yang .cfi_endproc; \ 42*00c2ca84STiezhu Yang SYM_END(name, SYM_T_NONE) 43*00c2ca84STiezhu Yang 44b738c106SHuacai Chen #endif 45