From nobody Tue Feb 10 13:17:32 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+111536+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+111536+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=arm.com ARC-Seal: i=1; a=rsa-sha256; t=1700556533; cv=none; d=zohomail.com; s=zohoarc; b=b+FxXMMZAWi8VHnx+adpP18TBaKjzDbFKx0ZxYa6IfB66lBssGpCM4LyM6SNX2MWLX6qKJuBRNPe5jolrq81ceMDMR7b39O7tqZzEfE+0luNIIaE5E1PIr5qDZELZTEVGCqch/f4ABUj/kSy7nZHSPrw59AWhyN6/iCKYIXJPuE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1700556533; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=QUQlLrm0wkv0SjieIerrKZBzAjEnzVmN7WS4klUVzXA=; b=blHqDkTyg8e5eGah3Rqc9NE0nXxY9TDf8SDImTBeqD7gnKr+7IN6pU1OSypOBGpqXT05HvEJJaEY7EzvBANX0jLEScw5ewk7bNEpcmm/QaxlQ60cOMG+I/esXiQHLHIdfcsNNu95p3kQJuN7KWn6qlvHfO2nxmQiVyjq69plnTc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+111536+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1700556533691153.99968181689974; Tue, 21 Nov 2023 00:48:53 -0800 (PST) Return-Path: DKIM-Signature: a=rsa-sha256; bh=yAEIVe8+SKzaBfyQvB9Bpo+WMNnUvDWfDy12BkUNme0=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1700556533; v=1; b=DI8QCvnKhjcVjjxY5d7zhXDMQqjz2Oo8vyiy5jfXbsAg1IDm7/gxkCmFVL6HW+Y+9xbZ+Exb 6nTOzPVXQAGVO5ebEUP9rXKeLfUQh61Vg0saT97avlqhB4r5UIphtBLZEZ+cGP3XDYo65Llzv+4 FnLRvYy2SIiUO5E71vKgYWDE= X-Received: by 127.0.0.2 with SMTP id 7Pn5YY1788612xe3hWH0VkTJ; Tue, 21 Nov 2023 00:48:53 -0800 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.34024.1700556532776822263 for ; Tue, 21 Nov 2023 00:48:52 -0800 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1BC481A32; Tue, 21 Nov 2023 00:49:39 -0800 (PST) X-Received: from cam-smtp0.cambridge.arm.com (e126645.nice.arm.com [10.34.100.114]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 204123F73F; Tue, 21 Nov 2023 00:48:51 -0800 (PST) From: "PierreGondois" To: devel@edk2.groups.io Cc: Jiewen Yao , Yi Li , Xiaoyu Lu , Guomin Jiang , Leif Lindholm , Ard Biesheuvel , Sami Mujawar , Gerd Hoffmann Subject: [edk2-devel] [PATCH v5 3/6] CryptoPkg/OpensslLib: Add native instruction support for AARCH64 Date: Tue, 21 Nov 2023 09:47:12 +0100 Message-Id: <20231121084715.1393672-4-pierre.gondois@arm.com> In-Reply-To: <20231121084715.1393672-1-pierre.gondois@arm.com> References: <20231121084715.1393672-1-pierre.gondois@arm.com> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,pierre.gondois@arm.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: aK3Y9QkkuwYfHhQtL4et3Bukx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1700556534678100023 Content-Type: text/plain; charset="utf-8" Add native instruction support for AARCH64. Acked-by: Gerd Hoffmann Signed-off-by: Pierre Gondois --- .../Library/OpensslLib/OpensslLibAccel.inf | 21 ++++++++++++++++++- .../OpensslLib/OpensslLibFullAccel.inf | 21 ++++++++++++++++++- CryptoPkg/Library/OpensslLib/UefiAsm.conf | 6 ++++++ CryptoPkg/Library/OpensslLib/configure.py | 6 +++++- 4 files changed, 51 insertions(+), 3 deletions(-) diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf b/CryptoPkg/L= ibrary/OpensslLib/OpensslLibAccel.inf index a37347fbbfd6..a47e9087133b 100644 --- a/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf +++ b/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf @@ -5,6 +5,7 @@ # # Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.
# (C) Copyright 2020 Hewlett Packard Enterprise Development LP
+# Copyright (c) 2023, Arm Limited. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent # ## @@ -24,9 +25,10 @@ [Defines] DEFINE OPENSSL_FLAGS =3D -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DEDK2_OPENSSL_NOEC= =3D1 DEFINE OPENSSL_FLAGS_IA32 =3D -DAES_ASM -DGHASH_ASM -DMD5_ASM -DOPE= NSSL_CPUID_OBJ -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DVPAES_ASM DEFINE OPENSSL_FLAGS_X64 =3D -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DK= ECCAK1600_ASM -DMD5_ASM -DOPENSSL_CPUID_OBJ -DSHA1_ASM -DSHA256_ASM -DSHA51= 2_ASM -DVPAES_ASM + DEFINE OPENSSL_FLAGS_AARCH64 =3D =20 # -# VALID_ARCHITECTURES =3D IA32 X64 +# VALID_ARCHITECTURES =3D IA32 X64 AARCH64 # =20 [Sources] @@ -1326,6 +1328,10 @@ [Sources.X64] $(OPENSSL_GEN_PATH)/X64-GCC/crypto/sha/sha512-x86_64.s | GCC # Autogenerated files list ends here =20 +[Sources.AARCH64] +# Autogenerated files list starts here +# Autogenerated files list ends here + [Packages] MdePkg/MdePkg.dec CryptoPkg/CryptoPkg.dec @@ -1403,3 +1409,16 @@ [BuildOptions] # commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be drop= ped then.) XCODE:*_*_IA32_CC_FLAGS =3D -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FL= AGS) $(OPENSSL_FLAGS_IA32) -w -std=3Dc99 -Wno-error=3Duninitialized XCODE:*_*_X64_CC_FLAGS =3D -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FL= AGS) $(OPENSSL_FLAGS_X64) -w -std=3Dc99 -Wno-error=3Duninitialized + + GCC:*_*_AARCH64_CC_FLAGS =3D $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_AARCH64= ) -Wno-error=3Dformat -Wno-format -D_BITS_STDINT_UINTN_H -D_BITS_STDINT_INT= N_H + + # + # AARCH64 uses strict alignment and avoids SIMD registers for code that = may execute + # with the MMU off. This involves SEC, PEI_CORE and PEIM modules as well= as BASE + # libraries, given that they may be included into such modules. + # This library, even though of the BASE type, is never used in such case= s, and + # avoiding the SIMD register file (which is shared with the FPU) prevent= s the + # compiler from successfully building some of the OpenSSL source files t= hat + # use floating point types, so clear the flags here. + # + GCC:*_*_AARCH64_CC_XIPFLAGS =3D=3D diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf b/CryptoP= kg/Library/OpensslLib/OpensslLibFullAccel.inf index 780d5febd72e..45a58c7d382e 100644 --- a/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf +++ b/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf @@ -10,6 +10,7 @@ # # Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.
# (C) Copyright 2020 Hewlett Packard Enterprise Development LP
+# Copyright (c) 2023, Arm Limited. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent # ## @@ -29,9 +30,10 @@ [Defines] DEFINE OPENSSL_FLAGS =3D -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE DEFINE OPENSSL_FLAGS_IA32 =3D -DAES_ASM -DGHASH_ASM -DMD5_ASM -DOPE= NSSL_CPUID_OBJ -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DVPAES_ASM DEFINE OPENSSL_FLAGS_X64 =3D -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DK= ECCAK1600_ASM -DMD5_ASM -DOPENSSL_CPUID_OBJ -DSHA1_ASM -DSHA256_ASM -DSHA51= 2_ASM -DVPAES_ASM + DEFINE OPENSSL_FLAGS_AARCH64 =3D =20 # -# VALID_ARCHITECTURES =3D IA32 X64 +# VALID_ARCHITECTURES =3D IA32 X64 AARCH64 # =20 [Sources] @@ -1429,6 +1431,10 @@ [Sources.X64] $(OPENSSL_GEN_PATH)/X64-GCC/crypto/sha/sha512-x86_64.s | GCC # Autogenerated files list ends here =20 +[Sources.AARCH64] +# Autogenerated files list starts here +# Autogenerated files list ends here + [Packages] MdePkg/MdePkg.dec CryptoPkg/CryptoPkg.dec @@ -1506,3 +1512,16 @@ [BuildOptions] # commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be drop= ped then.) XCODE:*_*_IA32_CC_FLAGS =3D -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FL= AGS) $(OPENSSL_FLAGS_IA32) -w -std=3Dc99 -Wno-error=3Duninitialized XCODE:*_*_X64_CC_FLAGS =3D -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FL= AGS) $(OPENSSL_FLAGS_X64) -w -std=3Dc99 -Wno-error=3Duninitialized + + GCC:*_*_AARCH64_CC_FLAGS =3D $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_AARCH64= ) -Wno-error=3Dformat -Wno-format -D_BITS_STDINT_UINTN_H -D_BITS_STDINT_INT= N_H + + # + # AARCH64 uses strict alignment and avoids SIMD registers for code that = may execute + # with the MMU off. This involves SEC, PEI_CORE and PEIM modules as well= as BASE + # libraries, given that they may be included into such modules. + # This library, even though of the BASE type, is never used in such case= s, and + # avoiding the SIMD register file (which is shared with the FPU) prevent= s the + # compiler from successfully building some of the OpenSSL source files t= hat + # use floating point types, so clear the flags here. + # + GCC:*_*_AARCH64_CC_XIPFLAGS =3D=3D diff --git a/CryptoPkg/Library/OpensslLib/UefiAsm.conf b/CryptoPkg/Library/= OpensslLib/UefiAsm.conf index 907582f93e2d..07273d6a1ab5 100644 --- a/CryptoPkg/Library/OpensslLib/UefiAsm.conf +++ b/CryptoPkg/Library/OpensslLib/UefiAsm.conf @@ -2,6 +2,7 @@ # UEFI assembly openssl configuration targets. # # Copyright (c) 2020, Intel Corporation. All rights reserved.
+# Copyright (c) 2023, Arm Limited. All rights reserved.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -28,4 +29,9 @@ my %targets =3D ( perlasm_scheme =3D> "elf", asm_arch =3D> "x86_64", }, + "UEFI-AARCH64-GCC" =3D> { + inherit_from =3D> [ "UEFI" ], + asm_arch =3D> "aarch64", + perlasm_scheme =3D> "linux64-aarch64", + }, ); diff --git a/CryptoPkg/Library/OpensslLib/configure.py b/CryptoPkg/Library/= OpensslLib/configure.py index 4243ca4c2574..dc09124f44ce 100755 --- a/CryptoPkg/Library/OpensslLib/configure.py +++ b/CryptoPkg/Library/OpensslLib/configure.py @@ -262,6 +262,7 @@ def sources_filter_fn(filename): 'provider_predefined.c', 'ecp_nistz256.c', 'x86_64-gcc.c', + 'armcap.c', ] for item in exclude: if item in filename: @@ -353,7 +354,8 @@ def main(): sources =3D {} defines =3D {} for asm in [ 'UEFI-IA32-MSFT', 'UEFI-IA32-GCC', - 'UEFI-X64-MSFT', 'UEFI-X64-GCC']: + 'UEFI-X64-MSFT', 'UEFI-X64-GCC', + 'UEFI-AARCH64-GCC']: (uefi, arch, cc) =3D asm.split('-') archcc =3D f'{arch}-{cc}' =20 @@ -375,6 +377,8 @@ def main(): x64accel =3D sources['X64'] + sources['X64-MSFT'] + sources['X64-G= CC'] update_inf(inf, ia32accel, 'IA32', defines['IA32']) update_inf(inf, x64accel, 'X64', defines['X64']) + aarch64accel =3D sources['AARCH64'] + sources['AARCH64-GCC'] + update_inf(inf, aarch64accel, 'AARCH64', defines['AARCH64']) =20 # noaccel - ec enabled openssl_configure(openssldir, 'UEFI', ec =3D True); --=20 2.25.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#111536): https://edk2.groups.io/g/devel/message/111536 Mute This Topic: https://groups.io/mt/102725179/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-