From 34ed6ae6e01ee867e5d6c1d0384994558beceec6 Mon Sep 17 00:00:00 2001 From: panchenbo Date: Tue, 26 Sep 2023 20:05:13 +0800 Subject: [PATCH] add loongarch64 and sw_64 support --- ...-support-not-upstream-modified-files.patch | 135 ++++++++++++++++++ ...-support-not-upstream-modified-files.patch | 109 ++++++++++++++ secGear.spec | 22 ++- 3 files changed, 263 insertions(+), 3 deletions(-) create mode 100644 1000-add-loongarch64-support-not-upstream-modified-files.patch create mode 100644 1001-add-sw_64-support-not-upstream-modified-files.patch diff --git a/1000-add-loongarch64-support-not-upstream-modified-files.patch b/1000-add-loongarch64-support-not-upstream-modified-files.patch new file mode 100644 index 0000000..d4aa0ec --- /dev/null +++ b/1000-add-loongarch64-support-not-upstream-modified-files.patch @@ -0,0 +1,135 @@ +From 4edca0ceed02c3edce5f84bcaadf95a291fbdcf3 Mon Sep 17 00:00:00 2001 +From: herengui +Date: Tue, 23 May 2023 17:47:41 +0800 +Subject: [PATCH] add loongarch64 support + +Signed-off-by: herengui +--- + README.en.md | 2 +- + examples/helloworld/enclave/CMakeLists.txt | 2 +- + examples/lrt/enclave/CMakeLists.txt | 2 +- + examples/seal_data/enclave/CMakeLists.txt | 2 +- + examples/switchless/enclave/CMakeLists.txt | 2 +- + examples/switchless_performance/enclave/CMakeLists.txt | 6 +----- + src/enclave_src/gp/itrustee/CMakeLists.txt | 6 +----- + src/host_src/gp/gp_enclave.c | 4 ++++ + 8 files changed, 11 insertions(+), 15 deletions(-) + +diff --git a/README.en.md b/README.en.md +index ec7ada0..873116b 100644 +--- a/README.en.md ++++ b/README.en.md +@@ -294,7 +294,7 @@ so -nostdinc -nodefaultlibs -nostdlib -nodefaultlibs compile link options was in + if(CC_GP) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/manifest.txt.in" "${CMAKE_CURRENT_SOURCE_DIR}/manifest.txt") + +- set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -march=armv8-a ") ++ set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -march=loongarch64 ") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -s -fPIC") + set(CMAKE_SHARED_LINKER_FLAGS "${COMMON_C_LINK_FLAGS} -Wl,-s") + +diff --git a/examples/helloworld/enclave/CMakeLists.txt b/examples/helloworld/enclave/CMakeLists.txt +index 0546183..9e25931 100644 +--- a/examples/helloworld/enclave/CMakeLists.txt ++++ b/examples/helloworld/enclave/CMakeLists.txt +@@ -56,7 +56,7 @@ set(COMMON_C_LINK_FLAGS "-Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack -Wl,-nostdli + + if(CC_GP) + +- set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -march=armv8-a ") ++ set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -march=loongarch64 ") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -s -fPIC") + set(CMAKE_SHARED_LINKER_FLAGS "${COMMON_C_LINK_FLAGS} -Wl,-s") + +diff --git a/examples/lrt/enclave/CMakeLists.txt b/examples/lrt/enclave/CMakeLists.txt +index acd1607..fa899fb 100644 +--- a/examples/lrt/enclave/CMakeLists.txt ++++ b/examples/lrt/enclave/CMakeLists.txt +@@ -57,7 +57,7 @@ set(COMMON_C_LINK_FLAGS "-Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack -Wl,-nostdli + if(CC_GP) + # configure_file("${CMAKE_CURRENT_SOURCE_DIR}/manifest.txt.in" "${CMAKE_CURRENT_SOURCE_DIR}/manifest.txt") + +- set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -march=armv8-a ") ++ set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -march=loongarch64 ") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -s -fPIC") + set(CMAKE_SHARED_LINKER_FLAGS "${COMMON_C_LINK_FLAGS} -Wl,-s") + +diff --git a/examples/seal_data/enclave/CMakeLists.txt b/examples/seal_data/enclave/CMakeLists.txt +index f80efb8..71e2c18 100644 +--- a/examples/seal_data/enclave/CMakeLists.txt ++++ b/examples/seal_data/enclave/CMakeLists.txt +@@ -52,7 +52,7 @@ set(COMMON_C_FLAGS "-W -Wall -Werror -fno-short-enums -fno-omit-frame-pointer + set(COMMON_C_LINK_FLAGS "-Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack -Wl,-nostdlib -nodefaultlibs -nostartfiles") + + if(CC_GP) +- set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -march=armv8-a ") ++ set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -march=loongarch64 ") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -s") + set(CMAKE_SHARED_LINKER_FLAGS "${COMMON_C_LINK_FLAGS} -Wl,-s -fPIC") + +diff --git a/examples/switchless/enclave/CMakeLists.txt b/examples/switchless/enclave/CMakeLists.txt +index 1490f94..5e8b3e7 100644 +--- a/examples/switchless/enclave/CMakeLists.txt ++++ b/examples/switchless/enclave/CMakeLists.txt +@@ -65,7 +65,7 @@ set(COMMON_C_LINK_FLAGS "-Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack -Wl,-nostdli + + if(CC_GP) + +- set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -march=armv8-a ") ++ set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -march=loongarch64 ") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -s -fPIC") + set(CMAKE_SHARED_LINKER_FLAGS "${COMMON_C_LINK_FLAGS} -Wl,-s") + +diff --git a/examples/switchless_performance/enclave/CMakeLists.txt b/examples/switchless_performance/enclave/CMakeLists.txt +index f7b72b1..f66e3a8 100644 +--- a/examples/switchless_performance/enclave/CMakeLists.txt ++++ b/examples/switchless_performance/enclave/CMakeLists.txt +@@ -71,11 +71,7 @@ if(CC_GP) + set(GCC_VERSION "${GCC_MAJOR}.${GCC_MINOR}") + endif() + +- if (GCC_VERSION GREATER_EQUAL "9.4") +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a -mno-outline-atomics") +- else() +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a") +- endif() ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=loongarch64") + + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -s -fPIC") + set(CMAKE_SHARED_LINKER_FLAGS "${COMMON_C_LINK_FLAGS} -Wl,-s") +diff --git a/src/enclave_src/gp/itrustee/CMakeLists.txt b/src/enclave_src/gp/itrustee/CMakeLists.txt +index 3424907..abc55e1 100644 +--- a/src/enclave_src/gp/itrustee/CMakeLists.txt ++++ b/src/enclave_src/gp/itrustee/CMakeLists.txt +@@ -28,11 +28,7 @@ if (CMAKE_COMPILER_IS_GNUCC) + set(GCC_VERSION "${GCC_MAJOR}.${GCC_MINOR}") + endif() + +-if (GCC_VERSION GREATER_EQUAL "9.4") +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a -mno-outline-atomics -fPIC") +-else() +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a -fPIC") +-endif() ++set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=loongarch64 -fPIC") + + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS}") + +diff --git a/src/host_src/gp/gp_enclave.c b/src/host_src/gp/gp_enclave.c +index 952d584..c230ea5 100644 +--- a/src/host_src/gp/gp_enclave.c ++++ b/src/host_src/gp/gp_enclave.c +@@ -684,7 +684,11 @@ cc_enclave_result_t handle_ecall_function_register_shared_memory(cc_enclave_t *e + /* Waiting for registration success */ + clock_gettime(CLOCK_MONOTONIC_COARSE, &start); + while (__atomic_load_n(&shared_mem->is_registered, __ATOMIC_ACQUIRE) == false) { ++#ifndef __loongarch__ + __asm__ __volatile__("yield" : : : "memory"); ++#else ++ __asm__ __volatile__("nop" : : : "memory"); ++#endif + + if (count > REGISTER_SHAREDMEM_GETTIME_PER_CNT) { + clock_gettime(CLOCK_MONOTONIC_COARSE, &end); +-- +2.40.1 + diff --git a/1001-add-sw_64-support-not-upstream-modified-files.patch b/1001-add-sw_64-support-not-upstream-modified-files.patch new file mode 100644 index 0000000..42de4a8 --- /dev/null +++ b/1001-add-sw_64-support-not-upstream-modified-files.patch @@ -0,0 +1,109 @@ +From 08de588e72a5d500e98db2b3de15537f2c3a99ac Mon Sep 17 00:00:00 2001 +From: yangchenguang +Date: Sun, 25 Jun 2023 14:58:17 +0800 +Subject: [PATCH] add sw_64 support + +Signed-off-by: yangchenguang +--- + examples/helloworld/enclave/CMakeLists.txt | 2 +- + examples/seal_data/enclave/CMakeLists.txt | 2 +- + examples/switchless/enclave/CMakeLists.txt | 2 +- + examples/switchless_performance/enclave/CMakeLists.txt | 6 +----- + src/enclave_src/gp/itrustee/CMakeLists.txt | 6 +----- + src/host_src/gp/gp_enclave.c | 7 +++++-- + 6 files changed, 10 insertions(+), 15 deletions(-) + +diff --git a/examples/helloworld/enclave/CMakeLists.txt b/examples/helloworld/enclave/CMakeLists.txt +index 0546183..3ab3b6f 100644 +--- a/examples/helloworld/enclave/CMakeLists.txt ++++ b/examples/helloworld/enclave/CMakeLists.txt +@@ -56,7 +56,7 @@ set(COMMON_C_LINK_FLAGS "-Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack -Wl,-nostdli + + if(CC_GP) + +- set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -march=armv8-a ") ++ set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} ") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -s -fPIC") + set(CMAKE_SHARED_LINKER_FLAGS "${COMMON_C_LINK_FLAGS} -Wl,-s") + +diff --git a/examples/seal_data/enclave/CMakeLists.txt b/examples/seal_data/enclave/CMakeLists.txt +index f80efb8..745dbfd 100644 +--- a/examples/seal_data/enclave/CMakeLists.txt ++++ b/examples/seal_data/enclave/CMakeLists.txt +@@ -52,7 +52,7 @@ set(COMMON_C_FLAGS "-W -Wall -Werror -fno-short-enums -fno-omit-frame-pointer + set(COMMON_C_LINK_FLAGS "-Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack -Wl,-nostdlib -nodefaultlibs -nostartfiles") + + if(CC_GP) +- set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -march=armv8-a ") ++ set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} ") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -s") + set(CMAKE_SHARED_LINKER_FLAGS "${COMMON_C_LINK_FLAGS} -Wl,-s -fPIC") + +diff --git a/examples/switchless/enclave/CMakeLists.txt b/examples/switchless/enclave/CMakeLists.txt +index 1490f94..e365d2b 100644 +--- a/examples/switchless/enclave/CMakeLists.txt ++++ b/examples/switchless/enclave/CMakeLists.txt +@@ -65,7 +65,7 @@ set(COMMON_C_LINK_FLAGS "-Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack -Wl,-nostdli + + if(CC_GP) + +- set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -march=armv8-a ") ++ set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} ") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -s -fPIC") + set(CMAKE_SHARED_LINKER_FLAGS "${COMMON_C_LINK_FLAGS} -Wl,-s") + +diff --git a/examples/switchless_performance/enclave/CMakeLists.txt b/examples/switchless_performance/enclave/CMakeLists.txt +index f7b72b1..5efd5a5 100644 +--- a/examples/switchless_performance/enclave/CMakeLists.txt ++++ b/examples/switchless_performance/enclave/CMakeLists.txt +@@ -71,11 +71,7 @@ if(CC_GP) + set(GCC_VERSION "${GCC_MAJOR}.${GCC_MINOR}") + endif() + +- if (GCC_VERSION GREATER_EQUAL "9.4") +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a -mno-outline-atomics") +- else() +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a") +- endif() ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ") + + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -s -fPIC") + set(CMAKE_SHARED_LINKER_FLAGS "${COMMON_C_LINK_FLAGS} -Wl,-s") +diff --git a/src/enclave_src/gp/itrustee/CMakeLists.txt b/src/enclave_src/gp/itrustee/CMakeLists.txt +index 3424907..6140fc3 100644 +--- a/src/enclave_src/gp/itrustee/CMakeLists.txt ++++ b/src/enclave_src/gp/itrustee/CMakeLists.txt +@@ -28,11 +28,7 @@ if (CMAKE_COMPILER_IS_GNUCC) + set(GCC_VERSION "${GCC_MAJOR}.${GCC_MINOR}") + endif() + +-if (GCC_VERSION GREATER_EQUAL "9.4") +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a -mno-outline-atomics -fPIC") +-else() +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a -fPIC") +-endif() ++set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") + + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS}") + +diff --git a/src/host_src/gp/gp_enclave.c b/src/host_src/gp/gp_enclave.c +index 952d584..8912be1 100644 +--- a/src/host_src/gp/gp_enclave.c ++++ b/src/host_src/gp/gp_enclave.c +@@ -684,8 +684,11 @@ cc_enclave_result_t handle_ecall_function_register_shared_memory(cc_enclave_t *e + /* Waiting for registration success */ + clock_gettime(CLOCK_MONOTONIC_COARSE, &start); + while (__atomic_load_n(&shared_mem->is_registered, __ATOMIC_ACQUIRE) == false) { +- __asm__ __volatile__("yield" : : : "memory"); +- ++#ifndef __sw_64__ ++ __asm__ __volatile__("yield" : : : "memory"); ++#else ++ __asm__ __volatile__("nop" : : : "memory"); ++#endif + if (count > REGISTER_SHAREDMEM_GETTIME_PER_CNT) { + clock_gettime(CLOCK_MONOTONIC_COARSE, &end); + if (end.tv_sec - start.tv_sec > REGISTER_SHAREDMEM_TIMEOUT_IN_SEC) { +-- +2.33.0 + diff --git a/secGear.spec b/secGear.spec index d37a1ef..2ef21c4 100644 --- a/secGear.spec +++ b/secGear.spec @@ -1,6 +1,6 @@ Name: secGear Version: 0.1.0 -Release: 35 +Release: 36 Summary: secGear is an SDK to develop confidential computing apps based on hardware enclave features @@ -81,6 +81,13 @@ Patch68: 0069-adapt-sign-tool-to-pass-API_LEVEL.patch Patch69: 0070-sign-tool-add-invalid-param-verify.patch Patch70: 0071-adapt-report-with-request-key.patch +%ifarch loongarch64 +Patch1000: 1000-add-loongarch64-support-not-upstream-modified-files.patch +%endif +%ifarch sw_64 +Patch1001: 1001-add-sw_64-support-not-upstream-modified-files.patch +%endif + BuildRequires: gcc python automake autoconf libtool BUildRequires: glibc glibc-devel cmake ocaml-dune rpm gcc-c++ openssl-libs openssl-devel %ifarch x86_64 @@ -111,7 +118,7 @@ Requires: itrustee_sdk-devel The %{name}-devel is package contains Header file for developing applications that us %{name} -%ifarch x86_64 +%ifarch x86_64 loongarch64 sw_64 %package sim Summary: simulation package files for %{name} Requires: %{name}%{?isa} = %{version}-%{release} @@ -130,11 +137,17 @@ cmake -DCMAKE_BUILD_TYPE=Debug make %else cmake -DCMAKE_BUILD_TYPE=Debug -DENCLAVE=GP +%ifarch sw_64 +sed -i 's/lib64/lib/g' Makefile +%endif make %endif %install make install DESTDIR=%{buildroot} +%ifarch sw_64 +mv %{buildroot}/usr/lib64/ %{buildroot}/%{_libdir} +%endif install -d %{buildroot}/%{_datarootdir}/licenses/secGear install -pm 644 License/Third_Party_Open_Source_Software_Notice.md %{buildroot}/%{_datarootdir}/licenses/secGear install -d %{buildroot}/%{_includedir}/secGear @@ -199,7 +212,7 @@ popd %{_bindir}/* %{_includedir}/secGear/* -%ifarch x86_64 +%ifarch x86_64 loongarch64 sw_64 %files sim %defattr(-,root,root) %license License/LICENSE @@ -211,6 +224,9 @@ popd systemctl restart rsyslog %changelog +* Tue Sep 26 2023 panchenbo - 0.1.0-36 +- add loongarch64 sw_64 support + * Mon Sep 18 2023 wangqingsan - 0.1.0-35 - synchronous features -- Gitee