<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>