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