18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (C) 2018 Linaro, Ltd. <ard.biesheuvel@linaro.org> 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#ifndef __ASM_NEON_INTRINSICS_H 78c2ecf20Sopenharmony_ci#define __ASM_NEON_INTRINSICS_H 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#include <asm-generic/int-ll64.h> 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci/* 128c2ecf20Sopenharmony_ci * In the kernel, u64/s64 are [un]signed long long, not [un]signed long. 138c2ecf20Sopenharmony_ci * So by redefining these macros to the former, we can force gcc-stdint.h 148c2ecf20Sopenharmony_ci * to define uint64_t / in64_t in a compatible manner. 158c2ecf20Sopenharmony_ci */ 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci#ifdef __INT64_TYPE__ 188c2ecf20Sopenharmony_ci#undef __INT64_TYPE__ 198c2ecf20Sopenharmony_ci#define __INT64_TYPE__ long long 208c2ecf20Sopenharmony_ci#endif 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci#ifdef __UINT64_TYPE__ 238c2ecf20Sopenharmony_ci#undef __UINT64_TYPE__ 248c2ecf20Sopenharmony_ci#define __UINT64_TYPE__ unsigned long long 258c2ecf20Sopenharmony_ci#endif 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci/* 288c2ecf20Sopenharmony_ci * genksyms chokes on the ARM NEON instrinsics system header, but we 298c2ecf20Sopenharmony_ci * don't export anything it defines anyway, so just disregard when 308c2ecf20Sopenharmony_ci * genksyms execute. 318c2ecf20Sopenharmony_ci */ 328c2ecf20Sopenharmony_ci#ifndef __GENKSYMS__ 338c2ecf20Sopenharmony_ci#include <arm_neon.h> 348c2ecf20Sopenharmony_ci#endif 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci#ifdef CONFIG_CC_IS_CLANG 378c2ecf20Sopenharmony_ci#pragma clang diagnostic ignored "-Wincompatible-pointer-types" 388c2ecf20Sopenharmony_ci#endif 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci#endif /* __ASM_NEON_INTRINSICS_H */ 41