1 2.PATH: ${SRCTOP}/sys/crypto/openssl 3.PATH: ${SRCTOP}/sys/crypto/openssl/${MACHINE_CPUARCH} 4 5KMOD= ossl 6OBJS+= ${OBJS.${MACHINE_CPUARCH}} 7SRCS= bus_if.h \ 8 cryptodev_if.h \ 9 device_if.h \ 10 ossl.c \ 11 ossl_aes.c \ 12 ossl_chacha20.c \ 13 ossl_poly1305.c \ 14 ossl_sha1.c \ 15 ossl_sha256.c \ 16 ossl_sha512.c \ 17 ${SRCS.${MACHINE_CPUARCH}} 18 19SRCS.arm= \ 20 aes-armv4.S \ 21 bsaes-armv7.S \ 22 chacha-armv4.S \ 23 ghash-armv4.S \ 24 poly1305-armv4.S \ 25 sha1-armv4-large.S \ 26 sha256-armv4.S \ 27 sha512-armv4.S \ 28 ossl_arm.c \ 29 ossl_aes_gcm.c 30 31SRCS.aarch64= \ 32 chacha-armv8.S \ 33 poly1305-armv8.S \ 34 sha1-armv8.S \ 35 sha256-armv8.S \ 36 sha512-armv8.S \ 37 vpaes-armv8.S \ 38 ossl_aarch64.c 39 40SRCS.amd64= \ 41 aes-gcm-avx512.S \ 42 aesni-x86_64.S \ 43 aesni-gcm-x86_64.S \ 44 chacha-x86_64.S \ 45 ghash-x86_64.S \ 46 poly1305-x86_64.S \ 47 sha1-x86_64.S \ 48 sha256-x86_64.S \ 49 sha512-x86_64.S \ 50 ossl_aes_gcm.c \ 51 ossl_x86.c 52 53SRCS.i386= \ 54 aesni-x86.S \ 55 chacha-x86.S \ 56 poly1305-x86.S \ 57 sha1-586.S \ 58 sha256-586.S \ 59 sha512-586.S \ 60 ossl_x86.c 61 62CFLAGS.bsaes-armv7.S+= -D__KERNEL__ 63 64CFLAGS+= -I${SRCTOP}/sys/crypto/openssl 65 66# For arm64, we are forced to rewrite the compiler invocation for the assembly 67# files, to remove -mgeneral-regs-only. 68${SRCS.aarch64:M*.S:S/S/o/}: ${.TARGET:R}.S 69 ${CC} -c ${CFLAGS:N-mgeneral-regs-only} ${WERROR} ${PROF} ${.IMPSRC} 70 ${CTFCONVERT_CMD} 71 72# Based on modules/armv8crypto/Makefile. 73# Clang doesn't recognize "aes*" instructions without -march set. 74aesv8-armx.o: aesv8-armx.S 75 ${CC} -c ${CFLAGS:N-mgeneral-regs-only} ${WERROR} ${PROF} \ 76 -march=armv8-a+crypto ${.IMPSRC} 77 ${CTFCONVERT_CMD} 78 79OBJS.aarch64= aesv8-armx.o 80 81.include <bsd.kmod.mk> 82