3cb99215ae
Add yet another set of assembly symbol annotations, this time for the borderline-absurd situation of a function aliasing to a weak symbol which itself also wants a position-independent alias. Signed-off-by: Robin Murphy <robin.murphy@arm.com> Link: https://lore.kernel.org/r/75545b3c4129b20b887474bb58a9cf302bf2132b.1622128527.git.robin.murphy@arm.com Signed-off-by: Will Deacon <will@kernel.org> Signed-off-by: UtsavBalar1231 <utsavbalar1231@gmail.com> Change-Id: Id85cc2f2dae3edb6076a4d956a83505ebf670869
32 lines
734 B
C
32 lines
734 B
C
#ifndef __ASM_LINKAGE_H
|
|
#define __ASM_LINKAGE_H
|
|
|
|
#define __ALIGN .align 2
|
|
#define __ALIGN_STR ".align 2"
|
|
|
|
/*
|
|
* Annotate a function as position independent, i.e., safe to be called before
|
|
* the kernel virtual mapping is activated.
|
|
*/
|
|
#define SYM_FUNC_START_PI(x) \
|
|
SYM_FUNC_START_ALIAS(__pi_##x); \
|
|
SYM_FUNC_START(x)
|
|
|
|
#define SYM_FUNC_START_WEAK_PI(x) \
|
|
SYM_FUNC_START_ALIAS(__pi_##x); \
|
|
SYM_FUNC_START_WEAK(x)
|
|
|
|
#define SYM_FUNC_START_WEAK_ALIAS_PI(x) \
|
|
SYM_FUNC_START_ALIAS(__pi_##x); \
|
|
SYM_START(x, SYM_L_WEAK, SYM_A_ALIGN)
|
|
|
|
#define SYM_FUNC_END_PI(x) \
|
|
SYM_FUNC_END(x); \
|
|
SYM_FUNC_END_ALIAS(__pi_##x)
|
|
|
|
#define SYM_FUNC_END_ALIAS_PI(x) \
|
|
SYM_FUNC_END_ALIAS(x); \
|
|
SYM_FUNC_END_ALIAS(__pi_##x)
|
|
|
|
#endif
|