summaryrefslogtreecommitdiffstats
path: root/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
diff options
context:
space:
mode:
authorChristopher Zurcher <christopher.zurcher@microsoft.com>2021-07-21 06:06:45 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2021-07-26 07:30:11 +0000
commit878a92a887ef4ca879d336f323e91b13cc767a59 (patch)
treee04ac8f5d3fd104f39c087a924ec522367e0da28 /CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
parent4d28a1c2fdf3673650018cf16f76cfc9796e78af (diff)
downloadedk2-878a92a887ef4ca879d336f323e91b13cc767a59.tar.gz
edk2-878a92a887ef4ca879d336f323e91b13cc767a59.tar.bz2
edk2-878a92a887ef4ca879d336f323e91b13cc767a59.zip
CryptoPkg/OpensslLib: Add native instruction support for X64
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507 Adding OpensslLibX64.inf and modifying process_files.pl to process this file and generate the necessary assembly files. Adding OpensslLibX64Gcc.inf to allow building with GCC toolchain. ApiHooks.c contains a stub function for a Windows API call. uefi-asm.conf contains the limited assembly configurations for OpenSSL. Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyux.lu@intel.com> Cc: Mike Kinney <michael.d.kinney@intel.com> Cc: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Christopher Zurcher <christopher.zurcher@microsoft.com> Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com>
Diffstat (limited to 'CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c')
-rw-r--r--CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
new file mode 100644
index 0000000000..74ae1ac20c
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
@@ -0,0 +1,44 @@
+/** @file
+ Constructor to initialize CPUID data for OpenSSL assembly operations.
+
+Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <Uefi.h>
+
+
+/**
+ An internal OpenSSL function which fetches a local copy of the hardware
+ capability flags.
+
+**/
+extern
+VOID
+OPENSSL_cpuid_setup (
+ VOID
+ );
+
+/**
+ Constructor routine for OpensslLib.
+
+ The constructor calls an internal OpenSSL function which fetches a local copy
+ of the hardware capability flags, used to enable native crypto instructions.
+
+ @param None
+
+ @retval EFI_SUCCESS The construction succeeded.
+
+**/
+EFI_STATUS
+EFIAPI
+OpensslLibConstructor (
+ VOID
+ )
+{
+ OPENSSL_cpuid_setup ();
+
+ return EFI_SUCCESS;
+}
+