1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Copyright (C) 2018 Linaro, Ltd. <ard.biesheuvel@linaro.org>
4 */
5
6#ifndef __ASM_NEON_INTRINSICS_H
7#define __ASM_NEON_INTRINSICS_H
8
9#include <asm-generic/int-ll64.h>
10
11/*
12 * In the kernel, u64/s64 are [un]signed long long, not [un]signed long.
13 * So by redefining these macros to the former, we can force gcc-stdint.h
14 * to define uint64_t / in64_t in a compatible manner.
15 */
16
17#ifdef __INT64_TYPE__
18#undef __INT64_TYPE__
19#define __INT64_TYPE__		long long
20#endif
21
22#ifdef __UINT64_TYPE__
23#undef __UINT64_TYPE__
24#define __UINT64_TYPE__		unsigned long long
25#endif
26
27/*
28 * genksyms chokes on the ARM NEON instrinsics system header, but we
29 * don't export anything it defines anyway, so just disregard when
30 * genksyms execute.
31 */
32#ifndef __GENKSYMS__
33#include <arm_neon.h>
34#endif
35
36#ifdef CONFIG_CC_IS_CLANG
37#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
38#endif
39
40#endif /* __ASM_NEON_INTRINSICS_H */
41