178a20541SKenta Tada /* SPDX-License-Identifier: GPL-2.0 */
278a20541SKenta Tada #ifndef __BPF_MISC_H__
378a20541SKenta Tada #define __BPF_MISC_H__
478a20541SKenta Tada 
5537c3f66SAndrii Nakryiko #define __msg(msg)		__attribute__((btf_decl_tag("comment:test_expect_msg=" msg)))
6537c3f66SAndrii Nakryiko #define __failure		__attribute__((btf_decl_tag("comment:test_expect_failure")))
7537c3f66SAndrii Nakryiko #define __success		__attribute__((btf_decl_tag("comment:test_expect_success")))
8537c3f66SAndrii Nakryiko #define __log_level(lvl)	__attribute__((btf_decl_tag("comment:test_log_level="#lvl)))
9537c3f66SAndrii Nakryiko 
10*91b875a5SEduard Zingerman /* Convenience macro for use with 'asm volatile' blocks */
11*91b875a5SEduard Zingerman #define __naked __attribute__((naked))
12*91b875a5SEduard Zingerman #define __clobber_all "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "memory"
13*91b875a5SEduard Zingerman #define __clobber_common "r0", "r1", "r2", "r3", "r4", "r5", "memory"
14*91b875a5SEduard Zingerman #define __imm(name) [name]"i"(name)
15*91b875a5SEduard Zingerman #define __imm_addr(name) [name]"i"(&name)
16*91b875a5SEduard Zingerman 
1778a20541SKenta Tada #if defined(__TARGET_ARCH_x86)
1878a20541SKenta Tada #define SYSCALL_WRAPPER 1
1978a20541SKenta Tada #define SYS_PREFIX "__x64_"
2078a20541SKenta Tada #elif defined(__TARGET_ARCH_s390)
2178a20541SKenta Tada #define SYSCALL_WRAPPER 1
2278a20541SKenta Tada #define SYS_PREFIX "__s390x_"
2378a20541SKenta Tada #elif defined(__TARGET_ARCH_arm64)
2478a20541SKenta Tada #define SYSCALL_WRAPPER 1
2578a20541SKenta Tada #define SYS_PREFIX "__arm64_"
2678a20541SKenta Tada #else
2778a20541SKenta Tada #define SYSCALL_WRAPPER 0
28046b841eSNaveen N. Rao #define SYS_PREFIX "__se_"
2978a20541SKenta Tada #endif
3078a20541SKenta Tada 
3178a20541SKenta Tada #endif
32