1  /* SPDX-License-Identifier: GPL-2.0 */
2  /* Copyright (c) 2019 Facebook */
3  #ifndef __ASM_GOTO_WORKAROUND_H
4  #define __ASM_GOTO_WORKAROUND_H
5  
6  /*
7   * This will bring in asm_goto_output and asm_inline macro definitions
8   * if enabled by compiler and config options.
9   */
10  #include <linux/types.h>
11  
12  #ifdef asm_goto_output
13  #undef asm_goto_output
14  #define asm_goto_output(x...) asm volatile("invalid use of asm_goto_output")
15  #endif
16  
17  /*
18   * asm_inline is defined as asm __inline in "include/linux/compiler_types.h"
19   * if supported by the kernel's CC (i.e CONFIG_CC_HAS_ASM_INLINE) which is not
20   * supported by CLANG.
21   */
22  #ifdef asm_inline
23  #undef asm_inline
24  #define asm_inline asm
25  #endif
26  
27  #define volatile(x...) volatile("")
28  #endif
29