| /* 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 |