1#ifndef __ARM_ARCH_H__ 2#define __ARM_ARCH_H__ 3 4#if !defined(__ARM_ARCH__) 5# if defined(__CC_ARM) 6# define __ARM_ARCH__ __TARGET_ARCH_ARM 7# if defined(__BIG_ENDIAN) 8# define __ARMEB__ 9# else 10# define __ARMEL__ 11# endif 12# elif defined(__GNUC__) 13# if defined(__aarch64__) 14# define __ARM_ARCH__ 8 15# if __BYTE_ORDER__==__ORDER_BIG_ENDIAN__ 16# define __ARMEB__ 17# else 18# define __ARMEL__ 19# endif 20 /* 21 * Why doesn't gcc define __ARM_ARCH__? Instead it defines 22 * bunch of below macros. See all_architectires[] table in 23 * gcc/config/arm/arm.c. On a side note it defines 24 * __ARMEL__/__ARMEB__ for little-/big-endian. 25 */ 26# elif defined(__ARM_ARCH) 27# define __ARM_ARCH__ __ARM_ARCH 28# elif defined(__ARM_ARCH_8A__) 29# define __ARM_ARCH__ 8 30# elif defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \ 31 defined(__ARM_ARCH_7R__)|| defined(__ARM_ARCH_7M__) || \ 32 defined(__ARM_ARCH_7EM__) 33# define __ARM_ARCH__ 7 34# elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || \ 35 defined(__ARM_ARCH_6K__)|| defined(__ARM_ARCH_6M__) || \ 36 defined(__ARM_ARCH_6Z__)|| defined(__ARM_ARCH_6ZK__) || \ 37 defined(__ARM_ARCH_6T2__) 38# define __ARM_ARCH__ 6 39# elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || \ 40 defined(__ARM_ARCH_5E__)|| defined(__ARM_ARCH_5TE__) || \ 41 defined(__ARM_ARCH_5TEJ__) 42# define __ARM_ARCH__ 5 43# elif defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__) 44# define __ARM_ARCH__ 4 45# else 46# error "unsupported ARM architecture" 47# endif 48# endif 49#endif 50 51#ifdef OPENSSL_FIPSCANISTER 52#include <openssl/fipssyms.h> 53#endif 54 55#if !__ASSEMBLER__ 56extern unsigned int OPENSSL_armcap_P; 57#endif 58 59#define ARMV7_NEON (1<<0) 60#define ARMV7_TICK (1<<1) 61#define ARMV8_AES (1<<2) 62#define ARMV8_SHA1 (1<<3) 63#define ARMV8_SHA256 (1<<4) 64#define ARMV8_PMULL (1<<5) 65 66#endif 67