From 04f6140da66e24d1a27d293f2d1f08d25f07192e Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 16 Sep 2020 22:47:13 +0000 Subject: [PATCH] AES builds and works now on ARM64. --- make-linux.mk | 4 ++-- node/Constants.hpp | 8 ++++++++ node/Utils.cpp | 3 +++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/make-linux.mk b/make-linux.mk index 71ead3650..2cc6fcb36 100644 --- a/make-linux.mk +++ b/make-linux.mk @@ -208,11 +208,11 @@ ifeq ($(CC_MACH),armv7hl) endif ifeq ($(CC_MACH),arm64) ZT_ARCHITECTURE=4 - override DEFS+=-DZT_NO_TYPE_PUNNING + override DEFS+=-DZT_NO_TYPE_PUNNING -DZT_ARCH_ARM_HAS_NEON -march=armv8-a+aes+crypto -mtune=generic -mstrict-align endif ifeq ($(CC_MACH),aarch64) ZT_ARCHITECTURE=4 - override DEFS+=-DZT_NO_TYPE_PUNNING + override DEFS+=-DZT_NO_TYPE_PUNNING -DZT_ARCH_ARM_HAS_NEON -march=armv8-a+aes+crypto -mtune=generic -mstrict-align endif ifeq ($(CC_MACH),mipsel) ZT_ARCHITECTURE=5 diff --git a/node/Constants.hpp b/node/Constants.hpp index bcb529e90..53b44dd42 100644 --- a/node/Constants.hpp +++ b/node/Constants.hpp @@ -111,6 +111,14 @@ #include #endif +#if (defined(__ARM_NEON) || defined(__ARM_NEON__) || defined(ZT_ARCH_ARM_HAS_NEON)) +#ifndef ZT_ARCH_ARM_HAS_NEON +#define ZT_ARCH_ARM_HAS_NEON 1 +#endif +#include +/*#include */ +#endif + // Define ZT_NO_TYPE_PUNNING to disable reckless casts on anything other than x86/x64. #if (!(defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_AMD64) || defined(_M_X64) || defined(i386) || defined(__i386) || defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__) || defined(_M_IX86) || defined(__X86__) || defined(_X86_) || defined(__I86__) || defined(__INTEL__) || defined(__386))) #ifndef ZT_NO_TYPE_PUNNING diff --git a/node/Utils.cpp b/node/Utils.cpp index 87a37b004..508e553e3 100644 --- a/node/Utils.cpp +++ b/node/Utils.cpp @@ -28,6 +28,9 @@ #include #include #include +#ifdef __LINUX__ +#include +#endif #endif #ifdef __WINDOWS__