git: e655cc70dfcd - main - ossl: Move arm_arch.h to a common subdirectory

From: Mark Johnston <markj_at_FreeBSD.org>
Date: Mon, 04 Dec 2023 17:48:46 UTC
The branch main has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=e655cc70dfcda5cfedb5a1d9bef1e87d55519f64

commit e655cc70dfcda5cfedb5a1d9bef1e87d55519f64
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2023-12-04 17:29:11 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2023-12-04 17:29:11 +0000

    ossl: Move arm_arch.h to a common subdirectory
    
    OpenSSL itself keeps only a single copy of this header.  Do the same in
    sys/crypto/openssl to avoid the extra maintenance burden.  This requires
    adjusting the include paths for generated asm files.
    
    No functional change intended.
    
    Reported by:    jrtc27
    Reviewed by:    jhb
    MFC after:      3 months
    Differential Revision:  https://reviews.freebsd.org/D42866
---
 secure/lib/libcrypto/Makefile.asm           |  3 +-
 sys/conf/files.arm                          | 23 +++++---
 sys/conf/files.arm64                        |  6 +--
 sys/crypto/openssl/arm/arm_arch.h           | 84 -----------------------------
 sys/crypto/openssl/arm/ossl_aes_gcm.c       |  2 +-
 sys/crypto/openssl/{aarch64 => }/arm_arch.h |  0
 sys/crypto/openssl/ossl_aarch64.c           |  2 +-
 sys/crypto/openssl/ossl_aarch64.h           |  2 +-
 sys/crypto/openssl/ossl_arm.c               |  2 +-
 sys/modules/armv8crypto/Makefile            |  3 +-
 sys/modules/ossl/Makefile                   |  2 +
 11 files changed, 28 insertions(+), 101 deletions(-)

diff --git a/secure/lib/libcrypto/Makefile.asm b/secure/lib/libcrypto/Makefile.asm
index 644965c1ac1c..d4f7269aa500 100644
--- a/secure/lib/libcrypto/Makefile.asm
+++ b/secure/lib/libcrypto/Makefile.asm
@@ -46,7 +46,7 @@ ASM=	${SRCS:R:S/$/.S/} sha256-armv8.S
 
 all:	${ASM}
 	rm -f ${ASM:R:S/$/.s/}
-	${CP} ${LCRYPTO_SRC}/crypto/arm_arch.h arm_arch.h
+	${CP} ${LCRYPTO_SRC}/crypto/arm_arch.h ../arm_arch.h
 
 CLEANFILES=	${ASM}
 .SUFFIXES:	.pl
@@ -186,6 +186,7 @@ ASM=	${SRCS:R:S/$/.S/}
 
 all:	${ASM}
 	rm -f ${ASM:R:S/$/.s/}	
+	${CP} ${LCRYPTO_SRC}/crypto/arm_arch.h ../arm_arch.h
 
 CLEANFILES=	${ASM}
 .SUFFIXES:	.pl
diff --git a/sys/conf/files.arm b/sys/conf/files.arm
index 4dcbd18bdeb9..8b5674b839df 100644
--- a/sys/conf/files.arm
+++ b/sys/conf/files.arm
@@ -137,15 +137,22 @@ libkern/umoddi3.c		standard
 
 crypto/openssl/ossl_arm.c		optional ossl
 crypto/openssl/arm/ossl_aes_gcm.c	optional ossl
-crypto/openssl/arm/aes-armv4.S		optional ossl
+crypto/openssl/arm/aes-armv4.S		optional ossl	\
+	compile-with	"${NORMAL_C} -I${SRCTOP}/sys/crypto/openssl"
 crypto/openssl/arm/bsaes-armv7.S	optional ossl	\
-	compile-with	"${CC} -D__KERNEL__ -c ${CFLAGS:N-mgeneral-regs-only} ${WERROR} ${.IMPSRC}"
-crypto/openssl/arm/chacha-armv4.S	optional ossl
-crypto/openssl/arm/ghash-armv4.S	optional ossl
-crypto/openssl/arm/poly1305-armv4.S	optional ossl
-crypto/openssl/arm/sha1-armv4-large.S	optional ossl
-crypto/openssl/arm/sha256-armv4.S	optional ossl
-crypto/openssl/arm/sha512-armv4.S	optional ossl
+	compile-with	"${CC} -D__KERNEL__ -c ${CFLAGS:N-mgeneral-regs-only} -I${SRCTOP}/sys/crypto/openssl ${WERROR} ${.IMPSRC}"
+crypto/openssl/arm/chacha-armv4.S	optional ossl	\
+	compile-with	"${NORMAL_C} -I${SRCTOP}/sys/crypto/openssl"
+crypto/openssl/arm/ghash-armv4.S	optional ossl	\
+	compile-with	"${NORMAL_C} -I${SRCTOP}/sys/crypto/openssl"
+crypto/openssl/arm/poly1305-armv4.S	optional ossl	\
+	compile-with	"${NORMAL_C} -I${SRCTOP}/sys/crypto/openssl"
+crypto/openssl/arm/sha1-armv4-large.S	optional ossl	\
+	compile-with	"${NORMAL_C} -I${SRCTOP}/sys/crypto/openssl"
+crypto/openssl/arm/sha256-armv4.S	optional ossl	\
+	compile-with	"${NORMAL_C} -I${SRCTOP}/sys/crypto/openssl"
+crypto/openssl/arm/sha512-armv4.S	optional ossl	\
+	compile-with	"${NORMAL_C} -I${SRCTOP}/sys/crypto/openssl"
 
 # Annapurna support
 arm/annapurna/alpine/alpine_ccu.c		optional al_ccu fdt
diff --git a/sys/conf/files.arm64 b/sys/conf/files.arm64
index 9ccead6a98e1..5d9464bade9c 100644
--- a/sys/conf/files.arm64
+++ b/sys/conf/files.arm64
@@ -119,17 +119,17 @@ dev/iommu/iommu_gas.c				optional iommu
 crypto/armv8/armv8_crypto.c			optional armv8crypto
 armv8_crypto_wrap.o				optional armv8crypto	\
 	dependency	"$S/crypto/armv8/armv8_crypto_wrap.c"		\
-	compile-with	"${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc:N-mgeneral-regs-only} -I$S/crypto/armv8/ ${WERROR} ${NO_WCAST_QUAL} ${CFLAGS:M-march=*:S/^$/-march=armv8-a/}+crypto ${.IMPSRC}" \
+	compile-with	"${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc:N-mgeneral-regs-only} -I$S/crypto/armv8 ${WERROR} ${NO_WCAST_QUAL} ${CFLAGS:M-march=*:S/^$/-march=armv8-a/}+crypto ${.IMPSRC}" \
 	no-implicit-rule						\
 	clean		"armv8_crypto_wrap.o"
 aesv8-armx.o					optional armv8crypto | ossl	\
 	dependency	"$S/crypto/openssl/aarch64/aesv8-armx.S"		\
-	compile-with	"${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc:N-mgeneral-regs-only} -I$S/crypto/armv8/ ${WERROR} ${NO_WCAST_QUAL} ${CFLAGS:M-march=*:S/^$/-march=armv8-a/}+crypto ${.IMPSRC}" \
+	compile-with	"${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc:N-mgeneral-regs-only} -I$S/crypto/armv8 -I$S/crypto/openssl ${WERROR} ${NO_WCAST_QUAL} ${CFLAGS:M-march=*:S/^$/-march=armv8-a/}+crypto ${.IMPSRC}" \
 	no-implicit-rule						\
 	clean		"aesv8-armx.o"
 ghashv8-armx.o					optional armv8crypto	\
 	dependency	"$S/crypto/openssl/aarch64/ghashv8-armx.S"	\
-	compile-with	"${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc:N-mgeneral-regs-only} -I$S/crypto/armv8/ ${WERROR} ${NO_WCAST_QUAL} ${CFLAGS:M-march=*:S/^$/-march=armv8-a/}+crypto ${.IMPSRC}" \
+	compile-with	"${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc:N-mgeneral-regs-only} -I$S/crypto/armv8 -I$S/crypto/openssl ${WERROR} ${NO_WCAST_QUAL} ${CFLAGS:M-march=*:S/^$/-march=armv8-a/}+crypto ${.IMPSRC}" \
 	no-implicit-rule						\
 	clean		"ghashv8-armx.o"
 
diff --git a/sys/crypto/openssl/arm/arm_arch.h b/sys/crypto/openssl/arm/arm_arch.h
deleted file mode 100644
index 8b7105571d78..000000000000
--- a/sys/crypto/openssl/arm/arm_arch.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2011-2018 The OpenSSL Project Authors. All Rights Reserved.
- *
- * Licensed under the OpenSSL license (the "License").  You may not use
- * this file except in compliance with the License.  You can obtain a copy
- * in the file LICENSE in the source distribution or at
- * https://www.openssl.org/source/license.html
- */
-
-#ifndef OSSL_CRYPTO_ARM_ARCH_H
-# define OSSL_CRYPTO_ARM_ARCH_H
-
-# if !defined(__ARM_ARCH__)
-#  if defined(__CC_ARM)
-#   define __ARM_ARCH__ __TARGET_ARCH_ARM
-#   if defined(__BIG_ENDIAN)
-#    define __ARMEB__
-#   else
-#    define __ARMEL__
-#   endif
-#  elif defined(__GNUC__)
-#   if   defined(__aarch64__)
-#    define __ARM_ARCH__ 8
-#    if __BYTE_ORDER__==__ORDER_BIG_ENDIAN__
-#     define __ARMEB__
-#    else
-#     define __ARMEL__
-#    endif
-  /*
-   * Why doesn't gcc define __ARM_ARCH__? Instead it defines
-   * bunch of below macros. See all_architectures[] table in
-   * gcc/config/arm/arm.c. On a side note it defines
-   * __ARMEL__/__ARMEB__ for little-/big-endian.
-   */
-#   elif defined(__ARM_ARCH)
-#    define __ARM_ARCH__ __ARM_ARCH
-#   elif defined(__ARM_ARCH_8A__)
-#    define __ARM_ARCH__ 8
-#   elif defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__)     || \
-        defined(__ARM_ARCH_7R__)|| defined(__ARM_ARCH_7M__)     || \
-        defined(__ARM_ARCH_7EM__)
-#    define __ARM_ARCH__ 7
-#   elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__)     || \
-        defined(__ARM_ARCH_6K__)|| defined(__ARM_ARCH_6M__)     || \
-        defined(__ARM_ARCH_6Z__)|| defined(__ARM_ARCH_6ZK__)    || \
-        defined(__ARM_ARCH_6T2__)
-#    define __ARM_ARCH__ 6
-#   elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__)     || \
-        defined(__ARM_ARCH_5E__)|| defined(__ARM_ARCH_5TE__)    || \
-        defined(__ARM_ARCH_5TEJ__)
-#    define __ARM_ARCH__ 5
-#   elif defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__)
-#    define __ARM_ARCH__ 4
-#   else
-#    error "unsupported ARM architecture"
-#   endif
-#  endif
-# endif
-
-# if !defined(__ARM_MAX_ARCH__)
-#  define __ARM_MAX_ARCH__ __ARM_ARCH__
-# endif
-
-# if __ARM_MAX_ARCH__<__ARM_ARCH__
-#  error "__ARM_MAX_ARCH__ can't be less than __ARM_ARCH__"
-# elif __ARM_MAX_ARCH__!=__ARM_ARCH__
-#  if __ARM_ARCH__<7 && __ARM_MAX_ARCH__>=7 && defined(__ARMEB__)
-#   error "can't build universal big-endian binary"
-#  endif
-# endif
-
-# ifndef __ASSEMBLER__
-extern unsigned int OPENSSL_armcap_P;
-# endif
-
-# define ARMV7_NEON      (1<<0)
-# define ARMV7_TICK      (1<<1)
-# define ARMV8_AES       (1<<2)
-# define ARMV8_SHA1      (1<<3)
-# define ARMV8_SHA256    (1<<4)
-# define ARMV8_PMULL     (1<<5)
-# define ARMV8_SHA512    (1<<6)
-
-#endif
diff --git a/sys/crypto/openssl/arm/ossl_aes_gcm.c b/sys/crypto/openssl/arm/ossl_aes_gcm.c
index 71a977c446ae..e51b7b4fbc04 100644
--- a/sys/crypto/openssl/arm/ossl_aes_gcm.c
+++ b/sys/crypto/openssl/arm/ossl_aes_gcm.c
@@ -15,7 +15,7 @@
 #include <crypto/openssl/ossl_arm.h>
 #include <crypto/openssl/ossl_aes_gcm.h>
 #include <crypto/openssl/ossl_cipher.h>
-#include <crypto/openssl/arm/arm_arch.h>
+#include <crypto/openssl/arm_arch.h>
 
 #include <opencrypto/cryptodev.h>
 
diff --git a/sys/crypto/openssl/aarch64/arm_arch.h b/sys/crypto/openssl/arm_arch.h
similarity index 100%
rename from sys/crypto/openssl/aarch64/arm_arch.h
rename to sys/crypto/openssl/arm_arch.h
diff --git a/sys/crypto/openssl/ossl_aarch64.c b/sys/crypto/openssl/ossl_aarch64.c
index b53abd905f6d..a9d0b0bbe211 100644
--- a/sys/crypto/openssl/ossl_aarch64.c
+++ b/sys/crypto/openssl/ossl_aarch64.c
@@ -35,7 +35,7 @@
 
 #include <crypto/openssl/ossl.h>
 #include <crypto/openssl/ossl_cipher.h>
-#include <crypto/openssl/aarch64/arm_arch.h>
+#include <crypto/openssl/arm_arch.h>
 
 /*
  * Feature bits defined in arm_arch.h
diff --git a/sys/crypto/openssl/ossl_aarch64.h b/sys/crypto/openssl/ossl_aarch64.h
index f933f862d009..57183aa9ed69 100644
--- a/sys/crypto/openssl/ossl_aarch64.h
+++ b/sys/crypto/openssl/ossl_aarch64.h
@@ -12,7 +12,7 @@
 
 #include <crypto/openssl/ossl.h>
 #include <crypto/openssl/ossl_cipher.h>
-#include <crypto/openssl/aarch64/arm_arch.h>
+#include <crypto/openssl/arm_arch.h>
 
 /* aesv8-armx.S */
 ossl_cipher_encrypt_t aes_v8_cbc_encrypt;
diff --git a/sys/crypto/openssl/ossl_arm.c b/sys/crypto/openssl/ossl_arm.c
index 74dc25586464..97215007c663 100644
--- a/sys/crypto/openssl/ossl_arm.c
+++ b/sys/crypto/openssl/ossl_arm.c
@@ -39,7 +39,7 @@ __FBSDID("$FreeBSD$");
 
 #include <crypto/openssl/ossl.h>
 #include <crypto/openssl/ossl_cipher.h>
-#include <crypto/openssl/arm/arm_arch.h>
+#include <crypto/openssl/arm_arch.h>
 
 ossl_cipher_setkey_t AES_set_encrypt_key;
 ossl_cipher_setkey_t AES_set_decrypt_key;
diff --git a/sys/modules/armv8crypto/Makefile b/sys/modules/armv8crypto/Makefile
index da8e962c0307..74ea77fbb761 100644
--- a/sys/modules/armv8crypto/Makefile
+++ b/sys/modules/armv8crypto/Makefile
@@ -1,4 +1,3 @@
-
 .PATH: ${SRCTOP}/sys/crypto/armv8
 .PATH: ${SRCTOP}/sys/crypto/openssl/aarch64
 
@@ -8,6 +7,8 @@ SRCS+=	device_if.h bus_if.h opt_bus.h cryptodev_if.h
 
 OBJS+=	armv8_crypto_wrap.o aesv8-armx.o ghashv8-armx.o
 
+CFLAGS+=-I${SRCTOP}/sys/crypto/openssl
+
 # Remove -nostdinc so we can get the intrinsics.
 armv8_crypto_wrap.o: armv8_crypto_wrap.c
 	${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc:N-mgeneral-regs-only} \
diff --git a/sys/modules/ossl/Makefile b/sys/modules/ossl/Makefile
index 804ffb5e1b70..9777e0bcfacc 100644
--- a/sys/modules/ossl/Makefile
+++ b/sys/modules/ossl/Makefile
@@ -61,6 +61,8 @@ SRCS.i386= \
 
 CFLAGS.bsaes-armv7.S+=	-D__KERNEL__
 
+CFLAGS+= -I${SRCTOP}/sys/crypto/openssl
+
 # For arm64, we are forced to rewrite the compiler invocation for the assembly
 # files, to remove -mgeneral-regs-only.
 ${SRCS.aarch64:M*.S:S/S/o/}: ${.TARGET:R}.S