From 5dbc90bfa2b55123d918ead803b1ac5690ab67a3 Mon Sep 17 00:00:00 2001 From: Makoto Kato Date: Mon, 1 Jun 2020 20:46:41 +0000 Subject: Bug 1528113 - Use ARM's crypto extension for SHA256 r=kjacobs ARMv8 CPU has accelerated hardware instruction for SHA256 that supports GCC 4.9+. We should use it if available. Differential Revision: https://phabricator.services.mozilla.com/D38830 --- lib/freebl/Makefile | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'lib/freebl/Makefile') diff --git a/lib/freebl/Makefile b/lib/freebl/Makefile index 5f7384429..29dc940a3 100644 --- a/lib/freebl/Makefile +++ b/lib/freebl/Makefile @@ -120,25 +120,25 @@ else endif endif ifeq ($(CPU_ARCH),aarch64) - DEFINES += -DUSE_HW_AES - EXTRA_SRCS += aes-armv8.c gcm-aarch64.c + DEFINES += -DUSE_HW_AES -DUSE_HW_SHA2 + EXTRA_SRCS += aes-armv8.c gcm-aarch64.c sha256-armv8.c endif ifeq ($(CPU_ARCH),arm) ifndef NSS_DISABLE_ARM32_NEON EXTRA_SRCS += gcm-arm32-neon.c endif ifdef CC_IS_CLANG - DEFINES += -DUSE_HW_AES - EXTRA_SRCS += aes-armv8.c + DEFINES += -DUSE_HW_AES -DUSE_HW_SHA2 + EXTRA_SRCS += aes-armv8.c sha256-armv8.c else ifeq (1,$(CC_IS_GCC)) # Old compiler doesn't support ARM AES. ifneq (,$(filter 4.9,$(word 1,$(GCC_VERSION)).$(word 2,$(GCC_VERSION)))) - DEFINES += -DUSE_HW_AES - EXTRA_SRCS += aes-armv8.c + DEFINES += -DUSE_HW_AES -DUSE_HW_SHA2 + EXTRA_SRCS += aes-armv8.c sha256-armv8.c endif ifeq (,$(filter 0 1 2 3 4,$(word 1,$(GCC_VERSION)))) - DEFINES += -DUSE_HW_AES - EXTRA_SRCS += aes-armv8.c + DEFINES += -DUSE_HW_AES -DUSE_HW_SHA2 + EXTRA_SRCS += aes-armv8.c sha256-armv8.c endif endif endif @@ -713,6 +713,7 @@ ifeq ($(CPU_ARCH),arm) # Confusingly, __SOFTFP__ is the name of the define for the softfloat ABI, not for the softfp ABI. USES_SOFTFLOAT_ABI := $(shell $(CC) -o - -E -dM - $(CFLAGS) < /dev/null | grep __SOFTFP__ > /dev/null && echo 1) $(OBJDIR)/$(PROG_PREFIX)aes-armv8$(OBJ_SUFFIX): CFLAGS += -march=armv8-a -mfpu=crypto-neon-fp-armv8$(if $(USES_SOFTFLOAT_ABI), -mfloat-abi=softfp) +$(OBJDIR)/$(PROG_PREFIX)sha256-armv8$(OBJ_SUFFIX): CFLAGS += -march=armv8-a -mfpu=crypto-neon-fp-armv8$(if $(USES_SOFTFLOAT_ABI), -mfloat-abi=softfp) ifndef NSS_DISABLE_ARM32_NEON $(OBJDIR)/$(PROG_PREFIX)gcm-arm32-neon$(OBJ_SUFFIX): CFLAGS += -mfpu=neon$(if $(USES_SOFTFLOAT_ABI), -mfloat-abi=softfp) endif @@ -720,6 +721,7 @@ endif ifeq ($(CPU_ARCH),aarch64) $(OBJDIR)/$(PROG_PREFIX)aes-armv8$(OBJ_SUFFIX): CFLAGS += -march=armv8-a+crypto $(OBJDIR)/$(PROG_PREFIX)gcm-aarch64$(OBJ_SUFFIX): CFLAGS += -march=armv8-a+crypto +$(OBJDIR)/$(PROG_PREFIX)sha256-armv8$(OBJ_SUFFIX): CFLAGS += -march=armv8-a+crypto endif ifeq ($(CPU_ARCH),ppc) -- cgit v1.2.1