| /* SPDX-License-Identifier: GPL-2.0 */ |
| /* Copyright (c) 2019 Facebook */ |
| #ifndef __ASM_GOTO_WORKAROUND_H |
| #define __ASM_GOTO_WORKAROUND_H |
| |
| /* |
| * This will bring in asm_volatile_goto and asm_inline macro definitions |
| * if enabled by compiler and config options. |
| */ |
| #include <linux/types.h> |
| |
| #ifdef asm_volatile_goto |
| #undef asm_volatile_goto |
| #define asm_volatile_goto(x...) asm volatile("invalid use of asm_volatile_goto") |
| #endif |
| |
| /* |
| * asm_inline is defined as asm __inline in "include/linux/compiler_types.h" |
| * if supported by the kernel's CC (i.e CONFIG_CC_HAS_ASM_INLINE) which is not |
| * supported by CLANG. |
| */ |
| #ifdef asm_inline |
| #undef asm_inline |
| #define asm_inline asm |
| #endif |
| |
| #define volatile(x...) volatile("") |
| #endif |