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