blob: 7048bb3594d65be6d132d4103ee801fadf087b7e [file] [log] [blame]
Yonghong Song6bf3bbe2019-01-12 15:04:30 -08001/* SPDX-License-Identifier: GPL-2.0 */
2/* Copyright (c) 2019 Facebook */
3#ifndef __ASM_GOTO_WORKAROUND_H
4#define __ASM_GOTO_WORKAROUND_H
5
KP Singh98beb3e2019-10-02 21:16:52 +02006/*
7 * This will bring in asm_volatile_goto and asm_inline macro definitions
Yonghong Song6bf3bbe2019-01-12 15:04:30 -08008 * if enabled by compiler and config options.
9 */
10#include <linux/types.h>
11
12#ifdef asm_volatile_goto
13#undef asm_volatile_goto
14#define asm_volatile_goto(x...) asm volatile("invalid use of asm_volatile_goto")
15#endif
16
KP Singh98beb3e2019-10-02 21:16:52 +020017/*
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
Alexei Starovoitov636e78b2019-04-04 14:37:14 -070027#define volatile(x...) volatile("")
Yonghong Song6bf3bbe2019-01-12 15:04:30 -080028#endif