On 11/24/21 10:24 AM, Piotr Kubaj wrote:
OK, it looks like ossl uses fpu_kern functions and those are available only an 
aarch64, amd64 and i386:
cc  -O2 -pipe -fno-common  -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE 
-nostdinc   -include 
/usr/obj/usr/src/powerpc.powerpc64/sys/modules/ossl/opt_global.h -I. 
-I/usr/src/sys -I/usr/src/sys/contrib/ck/include -fno-common  -fPIC -mlongcall 
-fno-omit-frame-pointer 
-fdebug-prefix-map=./machine=/usr/src/sys/powerpc/include     -MD  
-MF.depend.ossl.o -MTossl.o -mno-altivec -msoft-float -mabi=elfv2 
-ffreestanding -fwrapv -fstack-protector -Wall -Wredundant-decls 
-Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith 
-Wcast-qual -Wundef -Wno-pointer-sign -D__printf__=__freebsd_kprintf__ 
-Wmissing-include-dirs -fdiagnostics-show-option -Wno-unknown-pragmas 
-Wno-error-tautological-compare -Wno-error-empty-body 
-Wno-error-parentheses-equality -Wno-error-unused-function 
-Wno-error-pointer-sign -Wno-error-shift-negative-value 
-Wno-address-of-packed-member -Wno-format-zero-length     -std=iso9899:1999 -c 
/usr/src/sys/crypto/openssl/ossl.c -o ossl.o
/usr/src/sys/crypto/openssl/ossl.c:190:4: error: implicit declaration of 
function 'fpu_kern_enter' is invalid in C99 
[-Werror,-Wimplicit-function-declaration]
                         fpu_kern_enter(curthread, NULL, FPU_KERN_NOCTX);
                         ^
/usr/src/sys/crypto/openssl/ossl.c:190:36: error: use of undeclared identifier 
'FPU_KERN_NOCTX'
                         fpu_kern_enter(curthread, NULL, FPU_KERN_NOCTX);
                                                         ^
/usr/src/sys/crypto/openssl/ossl.c:193:4: error: implicit declaration of 
function 'fpu_kern_leave' is invalid in C99 
[-Werror,-Wimplicit-function-declaration]
                         fpu_kern_leave(curthread, NULL);
                         ^
/usr/src/sys/crypto/openssl/ossl.c:193:4: note: did you mean 'fpu_kern_enter'?
/usr/src/sys/crypto/openssl/ossl.c:190:4: note: 'fpu_kern_enter' declared here
                         fpu_kern_enter(curthread, NULL, FPU_KERN_NOCTX);
                         ^
/usr/src/sys/crypto/openssl/ossl.c:214:6: error: implicit declaration of 
function 'is_fpu_kern_thread' is invalid in C99 
[-Werror,-Wimplicit-function-declaration]
         if (is_fpu_kern_thread(0)) {
             ^
/usr/src/sys/crypto/openssl/ossl.c:217:3: error: implicit declaration of 
function 'fpu_kern_enter' is invalid in C99 
[-Werror,-Wimplicit-function-declaration]
                 fpu_kern_enter(curthread, NULL, FPU_KERN_NOCTX);
                 ^
/usr/src/sys/crypto/openssl/ossl.c:217:35: error: use of undeclared identifier 
'FPU_KERN_NOCTX'
                 fpu_kern_enter(curthread, NULL, FPU_KERN_NOCTX);
                                                 ^
/usr/src/sys/crypto/openssl/ossl.c:263:3: error: implicit declaration of 
function 'fpu_kern_leave' is invalid in C99 
[-Werror,-Wimplicit-function-declaration]
                 fpu_kern_leave(curthread, NULL);
                 ^
7 errors generated.

AFAIK porting those is not easy and it's certainly above my pay grade.

Do the powerpc instructions use additional registers that are not part of the 
normal
GPRs saved/restored on a context switch?  If so, then, yes, you will need to 
implement
something here (though the FPU_KERN_NOCTX variant is a bit simpler as it 
disables
context switches and it's sufficient just to init the registers and permit 
accesses
without raising a trap until fpu_kern_leave).  If not, then you can make the 
use of
those functions conditional on architecture.

On 21-11-24 08:15:26, John Baldwin wrote:
On 11/23/21 2:27 PM, Piotr Kubaj wrote:
The branch main has been updated by pkubaj (ports committer):

URL: 
https://cgit.FreeBSD.org/src/commit/?id=3a60869237b8b315fe66497cf5299ec08b688533

commit 3a60869237b8b315fe66497cf5299ec08b688533
Author:     Piotr Kubaj <pku...@freebsd.org>
AuthorDate: 2021-11-22 02:28:46 +0000
Commit:     Piotr Kubaj <pku...@freebsd.org>
CommitDate: 2021-11-23 22:26:53 +0000

      Add assembly optimized code for OpenSSL on powerpc, powerpc64 and 
powerpc64le
Summary:
      1. 
https://github.com/openssl/openssl/commit/34ab13b7d8e3e723adb60be8142e38b7c9cd382a
      needs to be merged for ELFv2 support on big-endian.
      2. crypto/openssl/crypto/ppccap.c needs to be patched.
      Same reason as in https://github.com/openssl/openssl/pull/17082.

Have you looked at adding powerpc support to ossl(4)?  It should be fairly 
simple
(just adding the right asm files in Makefiles and the powerpc equivalent of
OSSL_cpuid).

--
John Baldwin


--
John Baldwin

Reply via email to