mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

As described in include/linux/linkage.h, FUNC -- C-like functions (proper stack frame etc.) CODE -- non-C code (e.g. irq handlers with different, special stack etc.) SYM_FUNC_{START, END} -- use for global functions SYM_CODE_{START, END} -- use for non-C (special) functions So use SYM_CODE_* to annotate exception handlers. Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
44 lines
1 KiB
C
44 lines
1 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __ASM_LINKAGE_H
|
|
#define __ASM_LINKAGE_H
|
|
|
|
#define __ALIGN .align 2
|
|
#define __ALIGN_STR __stringify(__ALIGN)
|
|
|
|
#define SYM_FUNC_START(name) \
|
|
SYM_START(name, SYM_L_GLOBAL, SYM_A_ALIGN) \
|
|
.cfi_startproc;
|
|
|
|
#define SYM_FUNC_START_NOALIGN(name) \
|
|
SYM_START(name, SYM_L_GLOBAL, SYM_A_NONE) \
|
|
.cfi_startproc;
|
|
|
|
#define SYM_FUNC_START_LOCAL(name) \
|
|
SYM_START(name, SYM_L_LOCAL, SYM_A_ALIGN) \
|
|
.cfi_startproc;
|
|
|
|
#define SYM_FUNC_START_LOCAL_NOALIGN(name) \
|
|
SYM_START(name, SYM_L_LOCAL, SYM_A_NONE) \
|
|
.cfi_startproc;
|
|
|
|
#define SYM_FUNC_START_WEAK(name) \
|
|
SYM_START(name, SYM_L_WEAK, SYM_A_ALIGN) \
|
|
.cfi_startproc;
|
|
|
|
#define SYM_FUNC_START_WEAK_NOALIGN(name) \
|
|
SYM_START(name, SYM_L_WEAK, SYM_A_NONE) \
|
|
.cfi_startproc;
|
|
|
|
#define SYM_FUNC_END(name) \
|
|
.cfi_endproc; \
|
|
SYM_END(name, SYM_T_FUNC)
|
|
|
|
#define SYM_CODE_START(name) \
|
|
SYM_START(name, SYM_L_GLOBAL, SYM_A_ALIGN) \
|
|
.cfi_startproc;
|
|
|
|
#define SYM_CODE_END(name) \
|
|
.cfi_endproc; \
|
|
SYM_END(name, SYM_T_NONE)
|
|
|
|
#endif
|