1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _LINUX_FRAME_H
3 #define _LINUX_FRAME_H
4 
5 #ifdef CONFIG_STACK_VALIDATION
6 /*
7  * This macro marks the given function's stack frame as "non-standard", which
8  * tells objtool to ignore the function when doing stack metadata validation.
9  * It should only be used in special cases where you're 100% sure it won't
10  * affect the reliability of frame pointers and kernel stack traces.
11  *
12  * For more information, see tools/objtool/Documentation/stack-validation.txt.
13  */
14 #define STACK_FRAME_NON_STANDARD(func) \
15 	static void __used __section(.discard.func_stack_frame_non_standard) \
16 		*__func_stack_frame_non_standard_##func = func
17 
18 #else /* !CONFIG_STACK_VALIDATION */
19 
20 #define STACK_FRAME_NON_STANDARD(func)
21 
22 #endif /* CONFIG_STACK_VALIDATION */
23 
24 #endif /* _LINUX_FRAME_H */
25