<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/f317d14e71e385417625dfea4947db131a720a29">https://github.com/macports/macports-ports/commit/f317d14e71e385417625dfea4947db131a720a29</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new f317d14e71e wolfssl: fix build on older systems and powerpc
</span>f317d14e71e is described below
<span style='display:block; white-space:pre;color:#808000;'>commit f317d14e71e385417625dfea4947db131a720a29
</span>Author: Sergey Fedorov <barracuda@macos-powerpc.org>
AuthorDate: Sun Sep 1 21:16:01 2024 +0800
<span style='display:block; white-space:pre;color:#404040;'> wolfssl: fix build on older systems and powerpc
</span>---
devel/wolfssl/Portfile | 25 +-
.../files/0001-types.h-add-powerpc-macros.patch | 45 +++
.../files/0002-asm.c-fix-ppc-asm-for-macOS.patch | 94 ++++++
.../0003-sp_int.c-fix-ppc-asm-for-macOS.patch | 346 +++++++++++++++++++++
.../0004-wc_port.h-fix-macros-for-powerpc.patch | 34 ++
.../0005-Fix-libdispatch-usage-condition.patch | 288 +++++++++++++++++
...-EV_TRIGGER-when-NOTE_TRIGGER-unavailable.patch | 28 ++
7 files changed, 859 insertions(+), 1 deletion(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/wolfssl/Portfile b/devel/wolfssl/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index d638a7f23f8..89302da7211 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/wolfssl/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/wolfssl/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,12 +1,15 @@
</span> # -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
PortSystem 1.0
<span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup legacysupport 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# CLOCK_REALTIME
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+legacysupport.newest_darwin_requires_legacy 15
</span>
name wolfssl
version 5.7.2
revision 0
categories devel security
<span style='display:block; white-space:pre;background:#ffe0e0;'>-platforms darwin
</span> maintainers {wolfssl.com:facts @JacobBarthelmeh} openmaintainer
homepage https://wolfssl.com/wolfSSL/Products-wolfssl.html
license GPL-2
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -29,10 +32,30 @@ checksums rmd160 ed7c0a3d1699bcaaabe8652af1ea3bcce87d10e6 \
</span> sha256 07d580eb452aed737f1ce71aecc4f076276508f9454d70c8083772f6143ca160 \
size 25112699
<span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.pre_args-replace -p0 -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/wolfSSL/wolfssl/pull/7931
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/wolfSSL/wolfssl/pull/7932
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append 0001-types.h-add-powerpc-macros.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0002-asm.c-fix-ppc-asm-for-macOS.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0003-sp_int.c-fix-ppc-asm-for-macOS.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0004-wc_port.h-fix-macros-for-powerpc.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0005-Fix-libdispatch-usage-condition.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0006-crl.c-use-EV_TRIGGER-when-NOTE_TRIGGER-unavailable.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> configure.args --enable-all \
--disable-jobserver \
--disable-silent-rules
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Enabling this option does not work at least on 10.6:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# src/internal.c:41288: error: 'errSecSuccess' undeclared (first use in this function)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Arguably we do not need archaic system certificates anyway.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# OS version threshold is set according to system git being functional.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} eq "darwin" && ${os.major} < 14} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --disable-sys-ca-certs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> variant debug description {Enable wolfSSL debugging support} {
configure.args-append \
--enable-debug
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/wolfssl/files/0001-types.h-add-powerpc-macros.patch b/devel/wolfssl/files/0001-types.h-add-powerpc-macros.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..5ce8a03c8c8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/wolfssl/files/0001-types.h-add-powerpc-macros.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,45 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 765e5d16891e9e6edd1ffe83edff1dd37c3e36ce Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sat, 31 Aug 2024 21:34:57 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 1/6] types.h: add powerpc macros
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wolfssl/wolfcrypt/types.h | 8 ++++----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 4 insertions(+), 4 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/wolfssl/wolfcrypt/types.h b/wolfssl/wolfcrypt/types.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4696b065b..ac42afef4 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/wolfssl/wolfcrypt/types.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/wolfssl/wolfcrypt/types.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -158,16 +158,16 @@ decouple library dependencies with standard string, memory and so on.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif !defined(__BCPLUSPLUS__) && !defined(__EMSCRIPTEN__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if !defined(SIZEOF_LONG_LONG) && !defined(SIZEOF_LONG)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if (defined(__alpha__) || defined(__ia64__) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- defined(_ARCH_PPC64) || defined(__mips64) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ defined(_ARCH_PPC64) || defined(__ppc64__) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ defined(__x86_64__) || defined(__s390x__ ) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ((defined(sun) || defined(__sun)) && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (defined(LP64) || defined(_LP64))) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (defined(__riscv_xlen) && (__riscv_xlen == 64)) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- defined(__aarch64__) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ defined(__aarch64__) || defined(__mips64) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (defined(__DCC__) && (defined(__LP64) || defined(__LP64__))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* long should be 64bit */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define SIZEOF_LONG 8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- #elif defined(__i386__) || defined(__CORTEX_M3__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #elif defined(__i386__) || defined(__CORTEX_M3__) || defined(__ppc__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* long long should be 64bit */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define SIZEOF_LONG_LONG 8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -230,7 +230,7 @@ decouple library dependencies with standard string, memory and so on.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ defined(__x86_64__) || defined(_M_X64)) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ defined(__aarch64__) || defined(__sparc64__) || defined(__s390x__ ) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (defined(__riscv_xlen) && (__riscv_xlen == 64)) || defined(_M_ARM64) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- defined(__aarch64__) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ defined(__aarch64__) || defined(__ppc64__) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (defined(__DCC__) && (defined(__LP64) || defined(__LP64__)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define WC_64BIT_CPU
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif (defined(sun) || defined(__sun)) && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.46.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/wolfssl/files/0002-asm.c-fix-ppc-asm-for-macOS.patch b/devel/wolfssl/files/0002-asm.c-fix-ppc-asm-for-macOS.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..df9623afb82
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/wolfssl/files/0002-asm.c-fix-ppc-asm-for-macOS.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,94 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From b6bfae9c24dd369111825590f09f6c50a8559061 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 1 Sep 2024 19:44:20 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 2/6] asm.c: fix ppc asm for macOS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wolfcrypt/src/asm.c | 50 +++++++++++++++++++++++++++++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 50 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/wolfcrypt/src/asm.c b/wolfcrypt/src/asm.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c36099067..2096ae90d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/wolfcrypt/src/asm.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/wolfcrypt/src/asm.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -529,6 +529,27 @@ __asm__( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define LOOP_START \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mu = c[x] * mp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define INNERMUL \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++__asm__( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " mullw r16,%3,%4 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " mulhwu r17,%3,%4 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " addc r16,r16,%2 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " addze r17,r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " addc %1,r16,%5 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " addze %0,r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++:"=r"(cy),"=r"(_c[0]):"0"(cy),"r"(mu),"r"(tmpm[0]),"1"(_c[0]):"r16", "r17", "cc"); ++tmpm;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define PROPCARRY \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++__asm__( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " addc %1,%3,%2 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " xor %0,%2,%2 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " addze %0,%2 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++:"=r"(cy),"=r"(_c[0]):"0"(cy),"1"(_c[0]):"cc");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define INNERMUL \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __asm__( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ " mullw 16,%3,%4 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -546,6 +567,8 @@ __asm__( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ " addze %0,%2 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ :"=r"(cy),"=r"(_c[0]):"0"(cy),"1"(_c[0]):"cc");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(TFM_PPC64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* PPC64 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -555,6 +578,8 @@ __asm__( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define LOOP_START \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mu = c[x] * mp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define INNERMUL \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __asm__( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ " mulld r16,%3,%4 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -576,6 +601,31 @@ __asm__( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ " addze %0,%0 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ :"=r"(cy),"=m"(_c[0]):"0"(cy),"1"(_c[0]):"r16","cc");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define INNERMUL \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++__asm__( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " mulld 16,%3,%4 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " mulhdu 17,%3,%4 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " addc 16,16,%0 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " addze 17,17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " ldx 18,0,%1 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " addc 16,16,18 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " addze %0,17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " sdx 16,0,%1 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++:"=r"(cy),"=m"(_c[0]):"0"(cy),"r"(mu),"r"(tmpm[0]),"1"(_c[0]):"16", "17", "18","cc"); ++tmpm;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define PROPCARRY \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++__asm__( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " ldx 16,0,%1 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " addc 16,16,%0 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " sdx 16,0,%1 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " xor %0,%0,%0 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ " addze %0,%0 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++:"=r"(cy),"=m"(_c[0]):"0"(cy),"1"(_c[0]):"16","cc");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /******************************************************************/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(TFM_AVR32)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.46.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/wolfssl/files/0003-sp_int.c-fix-ppc-asm-for-macOS.patch b/devel/wolfssl/files/0003-sp_int.c-fix-ppc-asm-for-macOS.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..df3f342a586
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/wolfssl/files/0003-sp_int.c-fix-ppc-asm-for-macOS.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,346 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From ef2424336ceb7a7e5c3bb0821a4d8b14507d8af9 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 1 Sep 2024 19:33:29 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 3/6] sp_int.c: fix ppc asm for macOS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wolfcrypt/src/sp_int.c | 302 +++++++++++++++++++++++++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 302 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/wolfcrypt/src/sp_int.c b/wolfcrypt/src/sp_int.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 8c727d738..34591c62e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/wolfcrypt/src/sp_int.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/wolfcrypt/src/sp_int.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3477,6 +3477,156 @@ static WC_INLINE sp_int_digit sp_div_word(sp_int_digit hi, sp_int_digit lo,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * CPU: PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Multiply va by vb and store double size result in: vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_MUL(vl, vh, va, vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulld %[l], %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhdu %[h], %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [h] "+r" (vh), [l] "+r" (vl) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va), [b] "r" (vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "memory" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Multiply va by vb and store double size result in: vo | vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_MUL_SET(vl, vh, vo, va, vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhdu %[h], %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulld %[l], %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "li %[o], 0 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh), [o] "=r" (vo) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va), [b] "r" (vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Multiply va by vb and add double size result into: vo | vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_MUL_ADD(vl, vh, vo, va, vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulld r16, %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhdu r17, %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], r16 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addze %[o], %[o] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh), [o] "+r" (vo) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va), [b] "r" (vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "r16", "r17", "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Multiply va by vb and add double size result into: vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_MUL_ADD_NO(vl, vh, va, vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulld r16, %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhdu r17, %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], r16 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va), [b] "r" (vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "r16", "r17", "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Multiply va by vb and add double size result twice into: vo | vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_MUL_ADD2(vl, vh, vo, va, vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulld r16, %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhdu r17, %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], r16 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addze %[o], %[o] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], r16 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addze %[o], %[o] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh), [o] "+r" (vo) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va), [b] "r" (vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "r16", "r17", "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Multiply va by vb and add double size result twice into: vo | vh | vl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Assumes first add will not overflow vh | vl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_MUL_ADD2_NO(vl, vh, vo, va, vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulld r16, %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhdu r17, %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], r16 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], r16 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addze %[o], %[o] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh), [o] "+r" (vo) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va), [b] "r" (vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "r16", "r17", "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Square va and store double size result in: vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_SQR(vl, vh, va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulld %[l], %[a], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhdu %[h], %[a], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [h] "+r" (vh), [l] "+r" (vl) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "memory" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Square va and add double size result into: vo | vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_SQR_ADD(vl, vh, vo, va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulld r16, %[a], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhdu r17, %[a], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], r16 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addze %[o], %[o] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh), [o] "+r" (vo) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "r16", "r17", "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Square va and add double size result into: vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_SQR_ADD_NO(vl, vh, va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulld r16, %[a], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhdu r17, %[a], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], r16 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "r16", "r17", "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Add va into: vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_ADDC(vl, vh, va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addze %[h], %[h] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Sub va from: vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_SUBB(vl, vh, va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "subfc %[l], %[a], %[l] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "li r16, 0 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "subfe %[h], r16, %[h] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "r16", "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Add two times vc | vb | va into vo | vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_ADD_DBL_3(vl, vh, vo, va, vb, vc) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[o], %[o], %[c] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[o], %[o], %[c] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh), [o] "+r" (vo) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va), [b] "r" (vb), [c] "r" (vc) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Count leading zeros. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_LZCNT(va, vn) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "cntlzd %[n], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [n] "=r" (vn) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #else /* !defined(__APPLE__) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Multiply va by vb and store double size result in: vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define SP_ASM_MUL(vl, vh, va, vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3623,6 +3773,8 @@ static WC_INLINE sp_int_digit sp_div_word(sp_int_digit hi, sp_int_digit lo,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ : \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #endif /* !defined(__APPLE__) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define SP_INT_ASM_AVAILABLE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* WOLFSSL_SP_PPC64 && SP_WORD_SIZE == 64 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3632,6 +3784,154 @@ static WC_INLINE sp_int_digit sp_div_word(sp_int_digit hi, sp_int_digit lo,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * CPU: PPC 32-bit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Multiply va by vb and store double size result in: vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_MUL(vl, vh, va, vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mullw %[l], %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhwu %[h], %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [h] "+r" (vh), [l] "+r" (vl) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va), [b] "r" (vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "memory" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Multiply va by vb and store double size result in: vo | vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_MUL_SET(vl, vh, vo, va, vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhwu %[h], %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mullw %[l], %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "li %[o], 0 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh), [o] "=r" (vo) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va), [b] "r" (vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Multiply va by vb and add double size result into: vo | vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_MUL_ADD(vl, vh, vo, va, vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mullw r16, %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhwu r17, %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], r16 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addze %[o], %[o] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh), [o] "+r" (vo) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va), [b] "r" (vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "r16", "r17", "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Multiply va by vb and add double size result into: vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_MUL_ADD_NO(vl, vh, va, vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mullw r16, %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhwu r17, %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], r16 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va), [b] "r" (vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "r16", "r17", "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Multiply va by vb and add double size result twice into: vo | vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_MUL_ADD2(vl, vh, vo, va, vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mullw r16, %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhwu r17, %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], r16 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addze %[o], %[o] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], r16 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addze %[o], %[o] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh), [o] "+r" (vo) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va), [b] "r" (vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "r16", "r17", "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Multiply va by vb and add double size result twice into: vo | vh | vl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Assumes first add will not overflow vh | vl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_MUL_ADD2_NO(vl, vh, vo, va, vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mullw r16, %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhwu r17, %[a], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], r16 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], r16 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addze %[o], %[o] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh), [o] "+r" (vo) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va), [b] "r" (vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "r16", "r17", "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Square va and store double size result in: vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_SQR(vl, vh, va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mullw %[l], %[a], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhwu %[h], %[a], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [h] "+r" (vh), [l] "+r" (vl) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "memory" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Square va and add double size result into: vo | vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_SQR_ADD(vl, vh, vo, va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mullw r16, %[a], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhwu r17, %[a], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], r16 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addze %[o], %[o] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh), [o] "+r" (vo) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "r16", "r17", "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Square va and add double size result into: vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_SQR_ADD_NO(vl, vh, va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mullw r16, %[a], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "mulhwu r17, %[a], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], r16 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], r17 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "r16", "r17", "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Add va into: vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_ADDC(vl, vh, va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addze %[h], %[h] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Sub va from: vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_SUBB(vl, vh, va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "subfc %[l], %[a], %[l] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "li r16, 0 \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "subfe %[h], r16, %[h] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "r16", "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Add two times vc | vb | va into vo | vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_ADD_DBL_3(vl, vh, vo, va, vb, vc) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[o], %[o], %[c] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "addc %[l], %[l], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[h], %[h], %[b] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "adde %[o], %[o], %[c] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [l] "+r" (vl), [h] "+r" (vh), [o] "+r" (vo) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va), [b] "r" (vb), [c] "r" (vc) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : "cc" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Count leading zeros. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SP_ASM_LZCNT(va, vn) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "cntlzw %[n], %[a] \n\t" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [n] "=r" (vn) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ : [a] "r" (va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #else /* !defined(__APPLE__) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Multiply va by vb and store double size result in: vh | vl */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define SP_ASM_MUL(vl, vh, va, vb) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __asm__ __volatile__ ( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3776,6 +4076,8 @@ static WC_INLINE sp_int_digit sp_div_word(sp_int_digit hi, sp_int_digit lo,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ : [a] "r" (va) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #endif /* !defined(__APPLE__) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define SP_INT_ASM_AVAILABLE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* WOLFSSL_SP_PPC && SP_WORD_SIZE == 64 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.46.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/wolfssl/files/0004-wc_port.h-fix-macros-for-powerpc.patch b/devel/wolfssl/files/0004-wc_port.h-fix-macros-for-powerpc.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..99f64401293
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/wolfssl/files/0004-wc_port.h-fix-macros-for-powerpc.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,34 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 94478cb20843cb9d96b1699a17aa6d03143f54ad Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sat, 31 Aug 2024 22:11:54 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 4/6] wc_port.h: fix macros for powerpc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wolfssl/wolfcrypt/wc_port.h | 4 ++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 2 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/wolfssl/wolfcrypt/wc_port.h b/wolfssl/wolfcrypt/wc_port.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d07dbb1b3..0076f7f41 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/wolfssl/wolfcrypt/wc_port.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/wolfssl/wolfcrypt/wc_port.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1106,7 +1106,7 @@ WOLFSSL_ABI WOLFSSL_API int wolfCrypt_Cleanup(void);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* PowerPC time_t is int */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- #ifdef __PPC__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #if defined(__PPC__) || defined(__ppc__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define TIME_T_NOT_64BIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1274,7 +1274,7 @@ WOLFSSL_ABI WOLFSSL_API int wolfCrypt_Cleanup(void);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define XFENCE() XASM_VOLATILE("isb")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(__riscv)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define XFENCE() XASM_VOLATILE("fence")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- #elif defined(__PPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #elif defined(__PPC__) || defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define XFENCE() XASM_VOLATILE("isync; sync")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define XFENCE() WC_DO_NOTHING
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.46.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/wolfssl/files/0005-Fix-libdispatch-usage-condition.patch b/devel/wolfssl/files/0005-Fix-libdispatch-usage-condition.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..0125a47f103
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/wolfssl/files/0005-Fix-libdispatch-usage-condition.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,288 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From fba8eefd87c4b9c46a7af1cf4e0ce15536ad2b38 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sat, 31 Aug 2024 21:48:13 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 5/6] Fix libdispatch usage condition
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wolfcrypt/src/wc_port.c | 113 ++++++++++++++++++++------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wolfssl/wolfcrypt/types.h | 19 ++++---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 72 insertions(+), 60 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/wolfcrypt/src/wc_port.c b/wolfcrypt/src/wc_port.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 294bc415c..fd901f988 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/wolfcrypt/src/wc_port.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/wolfcrypt/src/wc_port.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -24,6 +24,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <config.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <wolfssl/wolfcrypt/settings.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <wolfssl/wolfcrypt/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <wolfssl/wolfcrypt/error-crypt.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3814,20 +3818,25 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef WOLFSSL_COND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- #ifndef __MACH__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* Generic POSIX conditional */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #if defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ && !defined(__ppc__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Apple style dispatch semaphore */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int wolfSSL_CondInit(COND_TYPE* cond)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (cond == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return BAD_FUNC_ARG;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (pthread_mutex_init(&cond->mutex, NULL) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* dispatch_release() fails hard, with Trace/BPT trap signal, if the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * sem's internal count is less than the value passed in with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * dispatch_semaphore_create(). work around this by initing
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * with 0, then incrementing it afterwards.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cond->cond = dispatch_semaphore_create(0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (cond->cond == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return MEMORY_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (pthread_cond_init(&cond->cond, NULL) != 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* Keep compilers happy that we are using the return code */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (pthread_mutex_destroy(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return MEMORY_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (wc_InitMutex(&cond->mutex) != 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dispatch_release(cond->cond);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return MEMORY_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3836,18 +3845,17 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int wolfSSL_CondFree(COND_TYPE* cond)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int ret = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (cond == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return BAD_FUNC_ARG;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (pthread_mutex_destroy(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ret = MEMORY_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dispatch_release(cond->cond);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cond->cond = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (pthread_cond_destroy(&cond->cond) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ret = MEMORY_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (wc_FreeMutex(&cond->mutex) != 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return MEMORY_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int wolfSSL_CondStart(COND_TYPE* cond)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3855,7 +3863,7 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (cond == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return BAD_FUNC_ARG;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (pthread_mutex_lock(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (wc_LockMutex(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return BAD_MUTEX_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3866,8 +3874,13 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (cond == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return BAD_FUNC_ARG;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (pthread_cond_signal(&cond->cond) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return MEMORY_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (wc_UnLockMutex(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return BAD_MUTEX_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dispatch_semaphore_signal(cond->cond);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (wc_LockMutex(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return BAD_MUTEX_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3877,8 +3890,13 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (cond == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return BAD_FUNC_ARG;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (pthread_cond_wait(&cond->cond, &cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return MEMORY_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (wc_UnLockMutex(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return BAD_MUTEX_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dispatch_semaphore_wait(cond->cond, DISPATCH_TIME_FOREVER);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (wc_LockMutex(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return BAD_MUTEX_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3888,29 +3906,26 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (cond == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return BAD_FUNC_ARG;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (pthread_mutex_unlock(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (wc_UnLockMutex(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return BAD_MUTEX_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- #else /* __MACH__ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* Apple style dispatch semaphore */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #else /* Generic POSIX conditional */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int wolfSSL_CondInit(COND_TYPE* cond)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (cond == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return BAD_FUNC_ARG;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* dispatch_release() fails hard, with Trace/BPT trap signal, if the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * sem's internal count is less than the value passed in with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * dispatch_semaphore_create(). work around this by initing
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * with 0, then incrementing it afterwards.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- cond->cond = dispatch_semaphore_create(0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (cond->cond == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (pthread_mutex_init(&cond->mutex, NULL) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return MEMORY_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (wc_InitMutex(&cond->mutex) != 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dispatch_release(cond->cond);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (pthread_cond_init(&cond->cond, NULL) != 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Keep compilers happy that we are using the return code */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (pthread_mutex_destroy(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return MEMORY_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return MEMORY_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3919,17 +3934,18 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int wolfSSL_CondFree(COND_TYPE* cond)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int ret = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (cond == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return BAD_FUNC_ARG;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dispatch_release(cond->cond);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- cond->cond = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (pthread_mutex_destroy(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ret = MEMORY_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (wc_FreeMutex(&cond->mutex) != 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return MEMORY_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (pthread_cond_destroy(&cond->cond) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ret = MEMORY_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int wolfSSL_CondStart(COND_TYPE* cond)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3937,7 +3953,7 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (cond == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return BAD_FUNC_ARG;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (wc_LockMutex(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (pthread_mutex_lock(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return BAD_MUTEX_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3948,13 +3964,8 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (cond == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return BAD_FUNC_ARG;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (wc_UnLockMutex(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return BAD_MUTEX_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dispatch_semaphore_signal(cond->cond);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (wc_LockMutex(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return BAD_MUTEX_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (pthread_cond_signal(&cond->cond) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return MEMORY_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3964,13 +3975,8 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (cond == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return BAD_FUNC_ARG;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (wc_UnLockMutex(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return BAD_MUTEX_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dispatch_semaphore_wait(cond->cond, DISPATCH_TIME_FOREVER);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (wc_LockMutex(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return BAD_MUTEX_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (pthread_cond_wait(&cond->cond, &cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return MEMORY_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3980,11 +3986,12 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (cond == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return BAD_FUNC_ARG;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (wc_UnLockMutex(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (pthread_mutex_unlock(&cond->mutex) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return BAD_MUTEX_E;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* __MACH__ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* WOLFSSL_COND */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/wolfssl/wolfcrypt/types.h b/wolfssl/wolfcrypt/types.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ac42afef4..59277612f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/wolfssl/wolfcrypt/types.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/wolfssl/wolfcrypt/types.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -34,6 +34,10 @@ decouple library dependencies with standard string, memory and so on.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <wolfssl/wolfcrypt/settings.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <wolfssl/wolfcrypt/wc_port.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef __cplusplus
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern "C" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1490,18 +1494,19 @@ typedef struct w64wrapper {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef size_t THREAD_TYPE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define WOLFSSL_THREAD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(WOLFSSL_PTHREADS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- #ifndef __MACH__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- #include <pthread.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- typedef struct COND_TYPE {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pthread_mutex_t mutex;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pthread_cond_t cond;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } COND_TYPE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #if defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ && !defined(__ppc__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <dispatch/dispatch.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef struct COND_TYPE {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wolfSSL_Mutex mutex;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dispatch_semaphore_t cond;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } COND_TYPE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #include <pthread.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ typedef struct COND_TYPE {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pthread_mutex_t mutex;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pthread_cond_t cond;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } COND_TYPE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef void* THREAD_RETURN;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef pthread_t THREAD_TYPE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.46.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/wolfssl/files/0006-crl.c-use-EV_TRIGGER-when-NOTE_TRIGGER-unavailable.patch b/devel/wolfssl/files/0006-crl.c-use-EV_TRIGGER-when-NOTE_TRIGGER-unavailable.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..c443dfd15e4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/wolfssl/files/0006-crl.c-use-EV_TRIGGER-when-NOTE_TRIGGER-unavailable.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,28 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 23889b41f0bb56d1d3288d3fb8bd7dc3a5fafe75 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 1 Sep 2024 20:47:22 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 6/6] crl.c: use EV_TRIGGER when NOTE_TRIGGER unavailable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/crl.c | 4 ++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 4 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/crl.c b/src/crl.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 8c221b217..17b6bb959 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/src/crl.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/src/crl.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1100,7 +1100,11 @@ static int StopMonitor(wolfSSL_CRL_mfd_t mfd)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct kevent change;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* trigger custom shutdown */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(NOTE_TRIGGER)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ EV_SET(&change, CRL_CUSTOM_FD, EVFILT_USER, 0, NOTE_TRIGGER, 0, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(EV_TRIGGER)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ EV_SET(&change, CRL_CUSTOM_FD, EVFILT_USER, EV_TRIGGER, 0, 0, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (kevent(mfd, &change, 1, NULL, 0, NULL) < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ WOLFSSL_MSG("kevent trigger customer event failed");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.46.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span></pre><pre style='margin:0'>
</pre>