Message ID | 20230717144859.2299315-1-adhemerval.zanella@linaro.org |
---|---|
State | New |
Headers | show |
Series | sparc: Remove optimize md5, sha256, and sha512 | expand |
Adhemerval Zanella via Libc-alpha <libc-alpha@sourceware.org> writes: > The libcrypt was maked to phase out on 2.28, and better projects > already exist that provide both compatibility and better API > (libxcrypt). The sparc optimizations add the burden to extra > build-many-glibcs.py configurations. > I guess. I'd personally prefer just removing it all when libcrypt is removed, not hacking away at it beforehand. > Checked on sparc64 and sparcv9. > --- > .../sparc/sparc32/sparcv9/multiarch/Makefile | 8 -- > .../sparc32/sparcv9/multiarch/md5-block.c | 1 - > .../sparc32/sparcv9/multiarch/md5-crop.S | 1 - > .../sparc32/sparcv9/multiarch/sha256-block.c | 1 - > .../sparc32/sparcv9/multiarch/sha256-crop.S | 1 - > .../sparc32/sparcv9/multiarch/sha512-block.c | 1 - > .../sparc32/sparcv9/multiarch/sha512-crop.S | 1 - > sysdeps/sparc/sparc64/multiarch/Makefile | 8 -- > sysdeps/sparc/sparc64/multiarch/md5-block.c | 29 ---- > sysdeps/sparc/sparc64/multiarch/md5-crop.S | 109 --------------- > .../sparc/sparc64/multiarch/sha256-block.c | 32 ----- > sysdeps/sparc/sparc64/multiarch/sha256-crop.S | 100 -------------- > .../sparc/sparc64/multiarch/sha512-block.c | 32 ----- > sysdeps/sparc/sparc64/multiarch/sha512-crop.S | 130 ------------------ > 14 files changed, 454 deletions(-) > delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c > delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S > delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c > delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S > delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c > delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S > delete mode 100644 sysdeps/sparc/sparc64/multiarch/md5-block.c > delete mode 100644 sysdeps/sparc/sparc64/multiarch/md5-crop.S > delete mode 100644 sysdeps/sparc/sparc64/multiarch/sha256-block.c > delete mode 100644 sysdeps/sparc/sparc64/multiarch/sha256-crop.S > delete mode 100644 sysdeps/sparc/sparc64/multiarch/sha512-block.c > delete mode 100644 sysdeps/sparc/sparc64/multiarch/sha512-crop.S > > diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile b/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile > index a6d08f3a00..d35f95e8e2 100644 > --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile > +++ b/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile > @@ -1,11 +1,3 @@ > -ifeq ($(subdir),crypt) > -libcrypt-sysdep_routines += md5-crop sha256-crop sha512-crop > -endif > - > -ifeq ($(subdir),locale) > -localedef-aux += md5-crop > -endif > - > ifeq ($(subdir),string) > sysdep_routines += memcpy-ultra3 memcpy-niagara1 memcpy-niagara2 \ > memset-niagara1 memcpy-niagara4 memset-niagara4 \ > diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c b/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c > deleted file mode 100644 > index 3765cabae7..0000000000 > --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c > +++ /dev/null > @@ -1 +0,0 @@ > -#include <sparc64/multiarch/md5-block.c> > diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S b/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S > deleted file mode 100644 > index 11a3a81482..0000000000 > --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S > +++ /dev/null > @@ -1 +0,0 @@ > -#include <sparc64/multiarch/md5-crop.S> > diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c b/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c > deleted file mode 100644 > index 600c602b61..0000000000 > --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c > +++ /dev/null > @@ -1 +0,0 @@ > -#include <sparc64/multiarch/sha256-block.c> > diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S b/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S > deleted file mode 100644 > index 4895405853..0000000000 > --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S > +++ /dev/null > @@ -1 +0,0 @@ > -#include <sparc64/multiarch/sha256-crop.S> > diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c b/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c > deleted file mode 100644 > index 7c7c54e5a6..0000000000 > --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c > +++ /dev/null > @@ -1 +0,0 @@ > -#include <sparc64/multiarch/sha512-block.c> > diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S b/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S > deleted file mode 100644 > index cc74a99d3c..0000000000 > --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S > +++ /dev/null > @@ -1 +0,0 @@ > -#include <sparc64/multiarch/sha512-crop.S> > diff --git a/sysdeps/sparc/sparc64/multiarch/Makefile b/sysdeps/sparc/sparc64/multiarch/Makefile > index eaf758e7aa..5dcd7bbb0e 100644 > --- a/sysdeps/sparc/sparc64/multiarch/Makefile > +++ b/sysdeps/sparc/sparc64/multiarch/Makefile > @@ -1,11 +1,3 @@ > -ifeq ($(subdir),crypt) > -libcrypt-sysdep_routines += md5-crop sha256-crop sha512-crop > -endif > - > -ifeq ($(subdir),locale) > -localedef-aux += md5-crop > -endif > - > ifeq ($(subdir),string) > sysdep_routines += memcpy-ultra3 memcpy-niagara1 memcpy-niagara2 \ > memset-niagara1 memcpy-niagara4 memset-niagara4 \ > diff --git a/sysdeps/sparc/sparc64/multiarch/md5-block.c b/sysdeps/sparc/sparc64/multiarch/md5-block.c > deleted file mode 100644 > index 7c1a3a368f..0000000000 > --- a/sysdeps/sparc/sparc64/multiarch/md5-block.c > +++ /dev/null > @@ -1,29 +0,0 @@ > -#include <sparc-ifunc.h> > - > -#define __md5_process_block __md5_process_block_generic > -extern void __md5_process_block_generic (const void *buffer, size_t len, > - struct md5_ctx *ctx); > - > -#include <crypt/md5-block.c> > - > -#undef __md5_process_block > - > -extern void __md5_process_block_crop (const void *buffer, size_t len, > - struct md5_ctx *ctx); > -static bool cpu_supports_md5(int hwcap) > -{ > - unsigned long cfr; > - > - if (!(hwcap & HWCAP_SPARC_CRYPTO)) > - return false; > - > - __asm__ ("rd %%asr26, %0" : "=r" (cfr)); > - if (cfr & (1 << 4)) > - return true; > - > - return false; > -} > - > -extern void __md5_process_block (const void *buffer, size_t len, > - struct md5_ctx *ctx); > -sparc_libc_ifunc(__md5_process_block, cpu_supports_md5(hwcap) ? __md5_process_block_crop : __md5_process_block_generic); > diff --git a/sysdeps/sparc/sparc64/multiarch/md5-crop.S b/sysdeps/sparc/sparc64/multiarch/md5-crop.S > deleted file mode 100644 > index 53c27d677d..0000000000 > --- a/sysdeps/sparc/sparc64/multiarch/md5-crop.S > +++ /dev/null > @@ -1,109 +0,0 @@ > -/* MD5 using sparc crypto opcodes. > - Copyright (C) 2012-2023 Free Software Foundation, Inc. > - This file is part of the GNU C Library. > - > - The GNU C Library is free software; you can redistribute it and/or > - modify it under the terms of the GNU Lesser General Public > - License as published by the Free Software Foundation; either > - version 2.1 of the License, or (at your option) any later version. > - > - The GNU C Library is distributed in the hope that it will be useful, > - but WITHOUT ANY WARRANTY; without even the implied warranty of > - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > - Lesser General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public > - License along with the GNU C Library; if not, see > - <https://www.gnu.org/licenses/>. */ > - > -#include <sysdep.h> > - > -#define ASI_PL 0x88 > - > -#define MD5 \ > - .word 0x81b02800; > - > - .text > - .align 32 > -ENTRY(__md5_process_block_crop) > - /* %o0=buffer, %o1=len, %o2=CTX */ > - ld [%o2 + 0x10], %g1 > - add %g1, %o1, %o4 > - st %o4, [%o2 + 0x10] > - clr %o5 > - cmp %o4, %g1 > - movlu %icc, 1, %o5 > -#ifdef __arch64__ > - srlx %o1, 32, %o4 > - add %o5, %o4, %o5 > -#endif > - ld [%o2 + 0x14], %o4 > - add %o4, %o5, %o4 > - st %o4, [%o2 + 0x14] > - lda [%o2] ASI_PL, %f0 > - add %o2, 0x4, %g1 > - lda [%g1] ASI_PL, %f1 > - add %o2, 0x8, %g1 > - andcc %o0, 0x7, %g0 > - lda [%g1] ASI_PL, %f2 > - add %o2, 0xc, %g1 > - bne,pn %xcc, 10f > - lda [%g1] ASI_PL, %f3 > - > -1: > - ldd [%o0 + 0x00], %f8 > - ldd [%o0 + 0x08], %f10 > - ldd [%o0 + 0x10], %f12 > - ldd [%o0 + 0x18], %f14 > - ldd [%o0 + 0x20], %f16 > - ldd [%o0 + 0x28], %f18 > - ldd [%o0 + 0x30], %f20 > - ldd [%o0 + 0x38], %f22 > - > - MD5 > - > - subcc %o1, 64, %o1 > - bne,pt %xcc, 1b > - add %o0, 0x40, %o0 > - > -5: > - sta %f0, [%o2] ASI_PL > - add %o2, 0x4, %g1 > - sta %f1, [%g1] ASI_PL > - add %o2, 0x8, %g1 > - sta %f2, [%g1] ASI_PL > - add %o2, 0xc, %g1 > - retl > - sta %f3, [%g1] ASI_PL > -10: > - alignaddr %o0, %g0, %o0 > - > - ldd [%o0 + 0x00], %f10 > -1: > - ldd [%o0 + 0x08], %f12 > - ldd [%o0 + 0x10], %f14 > - ldd [%o0 + 0x18], %f16 > - ldd [%o0 + 0x20], %f18 > - ldd [%o0 + 0x28], %f20 > - ldd [%o0 + 0x30], %f22 > - ldd [%o0 + 0x38], %f24 > - ldd [%o0 + 0x40], %f26 > - > - faligndata %f10, %f12, %f8 > - faligndata %f12, %f14, %f10 > - faligndata %f14, %f16, %f12 > - faligndata %f16, %f18, %f14 > - faligndata %f18, %f20, %f16 > - faligndata %f20, %f22, %f18 > - faligndata %f22, %f24, %f20 > - faligndata %f24, %f26, %f22 > - > - MD5 > - > - subcc %o1, 64, %o1 > - fsrc2 %f26, %f10 > - bne,pt %xcc, 1b > - add %o0, 0x40, %o0 > - > - ba,a,pt %xcc, 5b > -END(__md5_process_block_crop) > diff --git a/sysdeps/sparc/sparc64/multiarch/sha256-block.c b/sysdeps/sparc/sparc64/multiarch/sha256-block.c > deleted file mode 100644 > index 9d65315a5a..0000000000 > --- a/sysdeps/sparc/sparc64/multiarch/sha256-block.c > +++ /dev/null > @@ -1,32 +0,0 @@ > -#include <sparc-ifunc.h> > - > -#define __sha256_process_block __sha256_process_block_generic > -extern void __sha256_process_block_generic (const void *buffer, size_t len, > - struct sha256_ctx *ctx); > - > -#include <crypt/sha256-block.c> > - > -#undef __sha256_process_block > - > -extern void __sha256_process_block_crop (const void *buffer, size_t len, > - struct sha256_ctx *ctx); > - > -static bool cpu_supports_sha256(int hwcap) > -{ > - unsigned long cfr; > - > - if (!(hwcap & HWCAP_SPARC_CRYPTO)) > - return false; > - > - __asm__ ("rd %%asr26, %0" : "=r" (cfr)); > - if (cfr & (1 << 6)) > - return true; > - > - return false; > -} > - > -extern void __sha256_process_block (const void *buffer, size_t len, > - struct sha256_ctx *ctx); > -sparc_libc_ifunc (__sha256_process_block, > - cpu_supports_sha256(hwcap) ? __sha256_process_block_crop > - : __sha256_process_block_generic); > diff --git a/sysdeps/sparc/sparc64/multiarch/sha256-crop.S b/sysdeps/sparc/sparc64/multiarch/sha256-crop.S > deleted file mode 100644 > index f7d0a7e7dc..0000000000 > --- a/sysdeps/sparc/sparc64/multiarch/sha256-crop.S > +++ /dev/null > @@ -1,100 +0,0 @@ > -/* SHA256 using sparc crypto opcodes. > - Copyright (C) 2012-2023 Free Software Foundation, Inc. > - This file is part of the GNU C Library. > - > - The GNU C Library is free software; you can redistribute it and/or > - modify it under the terms of the GNU Lesser General Public > - License as published by the Free Software Foundation; either > - version 2.1 of the License, or (at your option) any later version. > - > - The GNU C Library is distributed in the hope that it will be useful, > - but WITHOUT ANY WARRANTY; without even the implied warranty of > - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > - Lesser General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public > - License along with the GNU C Library; if not, see > - <https://www.gnu.org/licenses/>. */ > - > -#include <sysdep.h> > - > -#define SHA256 \ > - .word 0x81b02840; > - > - .text > - .align 32 > -ENTRY(__sha256_process_block_crop) > - /* %o0=buffer, %o1=len, %o2=CTX */ > - ldx [%o2 + 0x20], %g1 > - add %g1, %o1, %g1 > - stx %g1, [%o2 + 0x20] > - > - ld [%o2 + 0x00], %f0 > - ld [%o2 + 0x04], %f1 > - ld [%o2 + 0x08], %f2 > - ld [%o2 + 0x0c], %f3 > - ld [%o2 + 0x10], %f4 > - ld [%o2 + 0x14], %f5 > - andcc %o1, 0x7, %g0 > - ld [%o2 + 0x18], %f6 > - bne,pn %xcc, 10f > - ld [%o2 + 0x1c], %f7 > - > -1: > - ldd [%o0 + 0x00], %f8 > - ldd [%o0 + 0x08], %f10 > - ldd [%o0 + 0x10], %f12 > - ldd [%o0 + 0x18], %f14 > - ldd [%o0 + 0x20], %f16 > - ldd [%o0 + 0x28], %f18 > - ldd [%o0 + 0x30], %f20 > - ldd [%o0 + 0x38], %f22 > - > - SHA256 > - > - subcc %o1, 0x40, %o1 > - bne,pt %xcc, 1b > - add %o0, 0x40, %o0 > - > -5: > - st %f0, [%o2 + 0x00] > - st %f1, [%o2 + 0x04] > - st %f2, [%o2 + 0x08] > - st %f3, [%o2 + 0x0c] > - st %f4, [%o2 + 0x10] > - st %f5, [%o2 + 0x14] > - st %f6, [%o2 + 0x18] > - retl > - st %f7, [%o2 + 0x1c] > -10: > - alignaddr %o0, %g0, %o0 > - > - ldd [%o0 + 0x00], %f10 > -1: > - ldd [%o0 + 0x08], %f12 > - ldd [%o0 + 0x10], %f14 > - ldd [%o0 + 0x18], %f16 > - ldd [%o0 + 0x20], %f18 > - ldd [%o0 + 0x28], %f20 > - ldd [%o0 + 0x30], %f22 > - ldd [%o0 + 0x38], %f24 > - ldd [%o0 + 0x40], %f26 > - > - faligndata %f10, %f12, %f8 > - faligndata %f12, %f14, %f10 > - faligndata %f14, %f16, %f12 > - faligndata %f16, %f18, %f14 > - faligndata %f18, %f20, %f16 > - faligndata %f20, %f22, %f18 > - faligndata %f22, %f24, %f20 > - faligndata %f24, %f26, %f22 > - > - SHA256 > - > - subcc %o1, 0x40, %o1 > - fsrc2 %f26, %f10 > - bne,pt %xcc, 1b > - add %o0, 0x40, %o0 > - > - ba,a,pt %xcc, 5b > -END(__sha256_process_block_crop) > diff --git a/sysdeps/sparc/sparc64/multiarch/sha512-block.c b/sysdeps/sparc/sparc64/multiarch/sha512-block.c > deleted file mode 100644 > index 2863e05d09..0000000000 > --- a/sysdeps/sparc/sparc64/multiarch/sha512-block.c > +++ /dev/null > @@ -1,32 +0,0 @@ > -#include <sparc-ifunc.h> > - > -#define __sha512_process_block __sha512_process_block_generic > -extern void __sha512_process_block_generic (const void *buffer, size_t len, > - struct sha512_ctx *ctx); > - > -#include <crypt/sha512-block.c> > - > -#undef __sha512_process_block > - > -extern void __sha512_process_block_crop (const void *buffer, size_t len, > - struct sha512_ctx *ctx); > - > -static bool cpu_supports_sha512(int hwcap) > -{ > - unsigned long cfr; > - > - if (!(hwcap & HWCAP_SPARC_CRYPTO)) > - return false; > - > - __asm__ ("rd %%asr26, %0" : "=r" (cfr)); > - if (cfr & (1 << 6)) > - return true; > - > - return false; > -} > - > -extern void __sha512_process_block (const void *buffer, size_t len, > - struct sha512_ctx *ctx); > -sparc_libc_ifunc (__sha512_process_block, > - cpu_supports_sha512(hwcap) ? __sha512_process_block_crop > - : __sha512_process_block_generic); > diff --git a/sysdeps/sparc/sparc64/multiarch/sha512-crop.S b/sysdeps/sparc/sparc64/multiarch/sha512-crop.S > deleted file mode 100644 > index 035f99f469..0000000000 > --- a/sysdeps/sparc/sparc64/multiarch/sha512-crop.S > +++ /dev/null > @@ -1,130 +0,0 @@ > -/* SHA512 using sparc crypto opcodes. > - Copyright (C) 2012-2023 Free Software Foundation, Inc. > - This file is part of the GNU C Library. > - > - The GNU C Library is free software; you can redistribute it and/or > - modify it under the terms of the GNU Lesser General Public > - License as published by the Free Software Foundation; either > - version 2.1 of the License, or (at your option) any later version. > - > - The GNU C Library is distributed in the hope that it will be useful, > - but WITHOUT ANY WARRANTY; without even the implied warranty of > - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > - Lesser General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public > - License along with the GNU C Library; if not, see > - <https://www.gnu.org/licenses/>. */ > - > -#include <sysdep.h> > - > -#define SHA512 \ > - .word 0x81b02860; > - > - .text > - .align 32 > -ENTRY(__sha512_process_block_crop) > - /* %o0=buffer, %o1=len, %o2=CTX */ > - ldx [%o2 + 0x48], %g1 > - add %g1, %o1, %o4 > - stx %o4, [%o2 + 0x48] > - cmp %o4, %g1 > - bgeu,pt %xcc, 1f > - nop > - ldx [%o2 + 0x40], %g1 > - add %g1, 1, %g1 > - stx %g1, [%o2 + 0x40] > - > -1: ldd [%o2 + 0x00], %f0 > - ldd [%o2 + 0x08], %f2 > - ldd [%o2 + 0x10], %f4 > - ldd [%o2 + 0x18], %f6 > - ldd [%o2 + 0x20], %f8 > - ldd [%o2 + 0x28], %f10 > - andcc %o1, 0x7, %g0 > - ldd [%o2 + 0x30], %f12 > - bne,pn %xcc, 10f > - ldd [%o2 + 0x38], %f14 > - > -1: > - ldd [%o0 + 0x00], %f16 > - ldd [%o0 + 0x08], %f18 > - ldd [%o0 + 0x10], %f20 > - ldd [%o0 + 0x18], %f22 > - ldd [%o0 + 0x20], %f24 > - ldd [%o0 + 0x28], %f26 > - ldd [%o0 + 0x30], %f28 > - ldd [%o0 + 0x38], %f30 > - ldd [%o0 + 0x40], %f32 > - ldd [%o0 + 0x48], %f34 > - ldd [%o0 + 0x50], %f36 > - ldd [%o0 + 0x58], %f38 > - ldd [%o0 + 0x60], %f40 > - ldd [%o0 + 0x68], %f42 > - ldd [%o0 + 0x70], %f44 > - ldd [%o0 + 0x78], %f46 > - > - SHA512 > - > - subcc %o1, 0x80, %o1 > - bne,pt %xcc, 1b > - add %o0, 0x80, %o0 > - > -5: > - std %f0, [%o2 + 0x00] > - std %f2, [%o2 + 0x08] > - std %f4, [%o2 + 0x10] > - std %f6, [%o2 + 0x18] > - std %f8, [%o2 + 0x20] > - std %f10, [%o2 + 0x28] > - std %f12, [%o2 + 0x30] > - retl > - std %f14, [%o2 + 0x38] > -10: > - alignaddr %o0, %g0, %o0 > - > - ldd [%o0 + 0x00], %f18 > -1: > - ldd [%o0 + 0x08], %f20 > - ldd [%o0 + 0x10], %f22 > - ldd [%o0 + 0x18], %f24 > - ldd [%o0 + 0x20], %f26 > - ldd [%o0 + 0x28], %f28 > - ldd [%o0 + 0x30], %f30 > - ldd [%o0 + 0x38], %f32 > - ldd [%o0 + 0x40], %f34 > - ldd [%o0 + 0x48], %f36 > - ldd [%o0 + 0x50], %f38 > - ldd [%o0 + 0x58], %f40 > - ldd [%o0 + 0x60], %f42 > - ldd [%o0 + 0x68], %f44 > - ldd [%o0 + 0x70], %f46 > - ldd [%o0 + 0x78], %f48 > - ldd [%o0 + 0x80], %f50 > - > - faligndata %f18, %f20, %f16 > - faligndata %f20, %f22, %f18 > - faligndata %f22, %f24, %f20 > - faligndata %f24, %f26, %f22 > - faligndata %f26, %f28, %f24 > - faligndata %f28, %f30, %f26 > - faligndata %f30, %f32, %f28 > - faligndata %f32, %f34, %f30 > - faligndata %f34, %f36, %f32 > - faligndata %f36, %f38, %f34 > - faligndata %f38, %f40, %f36 > - faligndata %f40, %f42, %f38 > - faligndata %f42, %f44, %f40 > - faligndata %f44, %f46, %f42 > - faligndata %f46, %f48, %f44 > - faligndata %f48, %f50, %f46 > - > - SHA512 > - > - subcc %o1, 0x80, %o1 > - fsrc2 %f50, %f18 > - bne,pt %xcc, 1b > - add %o0, 0x80, %o0 > - > - ba,a,pt %xcc, 5b > -END(__sha512_process_block_crop)
On 17/07/23 12:01, Sam James wrote: > > Adhemerval Zanella via Libc-alpha <libc-alpha@sourceware.org> writes: > >> The libcrypt was maked to phase out on 2.28, and better projects >> already exist that provide both compatibility and better API >> (libxcrypt). The sparc optimizations add the burden to extra >> build-many-glibcs.py configurations. >> > > I guess. I'd personally prefer just removing it all when libcrypt > is removed, not hacking away at it beforehand. I don't think we will ever be able to remove libgcrypt due compat reason. Maybe we can make crypt return ENOSYS as default, but even though I think if libcrypt is still enabled we will need to keep old code as compat layer. > >> Checked on sparc64 and sparcv9. >> --- >> .../sparc/sparc32/sparcv9/multiarch/Makefile | 8 -- >> .../sparc32/sparcv9/multiarch/md5-block.c | 1 - >> .../sparc32/sparcv9/multiarch/md5-crop.S | 1 - >> .../sparc32/sparcv9/multiarch/sha256-block.c | 1 - >> .../sparc32/sparcv9/multiarch/sha256-crop.S | 1 - >> .../sparc32/sparcv9/multiarch/sha512-block.c | 1 - >> .../sparc32/sparcv9/multiarch/sha512-crop.S | 1 - >> sysdeps/sparc/sparc64/multiarch/Makefile | 8 -- >> sysdeps/sparc/sparc64/multiarch/md5-block.c | 29 ---- >> sysdeps/sparc/sparc64/multiarch/md5-crop.S | 109 --------------- >> .../sparc/sparc64/multiarch/sha256-block.c | 32 ----- >> sysdeps/sparc/sparc64/multiarch/sha256-crop.S | 100 -------------- >> .../sparc/sparc64/multiarch/sha512-block.c | 32 ----- >> sysdeps/sparc/sparc64/multiarch/sha512-crop.S | 130 ------------------ >> 14 files changed, 454 deletions(-) >> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c >> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S >> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c >> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S >> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c >> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S >> delete mode 100644 sysdeps/sparc/sparc64/multiarch/md5-block.c >> delete mode 100644 sysdeps/sparc/sparc64/multiarch/md5-crop.S >> delete mode 100644 sysdeps/sparc/sparc64/multiarch/sha256-block.c >> delete mode 100644 sysdeps/sparc/sparc64/multiarch/sha256-crop.S >> delete mode 100644 sysdeps/sparc/sparc64/multiarch/sha512-block.c >> delete mode 100644 sysdeps/sparc/sparc64/multiarch/sha512-crop.S >> >> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile b/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile >> index a6d08f3a00..d35f95e8e2 100644 >> --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile >> +++ b/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile >> @@ -1,11 +1,3 @@ >> -ifeq ($(subdir),crypt) >> -libcrypt-sysdep_routines += md5-crop sha256-crop sha512-crop >> -endif >> - >> -ifeq ($(subdir),locale) >> -localedef-aux += md5-crop >> -endif >> - >> ifeq ($(subdir),string) >> sysdep_routines += memcpy-ultra3 memcpy-niagara1 memcpy-niagara2 \ >> memset-niagara1 memcpy-niagara4 memset-niagara4 \ >> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c b/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c >> deleted file mode 100644 >> index 3765cabae7..0000000000 >> --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c >> +++ /dev/null >> @@ -1 +0,0 @@ >> -#include <sparc64/multiarch/md5-block.c> >> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S b/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S >> deleted file mode 100644 >> index 11a3a81482..0000000000 >> --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S >> +++ /dev/null >> @@ -1 +0,0 @@ >> -#include <sparc64/multiarch/md5-crop.S> >> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c b/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c >> deleted file mode 100644 >> index 600c602b61..0000000000 >> --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c >> +++ /dev/null >> @@ -1 +0,0 @@ >> -#include <sparc64/multiarch/sha256-block.c> >> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S b/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S >> deleted file mode 100644 >> index 4895405853..0000000000 >> --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S >> +++ /dev/null >> @@ -1 +0,0 @@ >> -#include <sparc64/multiarch/sha256-crop.S> >> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c b/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c >> deleted file mode 100644 >> index 7c7c54e5a6..0000000000 >> --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c >> +++ /dev/null >> @@ -1 +0,0 @@ >> -#include <sparc64/multiarch/sha512-block.c> >> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S b/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S >> deleted file mode 100644 >> index cc74a99d3c..0000000000 >> --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S >> +++ /dev/null >> @@ -1 +0,0 @@ >> -#include <sparc64/multiarch/sha512-crop.S> >> diff --git a/sysdeps/sparc/sparc64/multiarch/Makefile b/sysdeps/sparc/sparc64/multiarch/Makefile >> index eaf758e7aa..5dcd7bbb0e 100644 >> --- a/sysdeps/sparc/sparc64/multiarch/Makefile >> +++ b/sysdeps/sparc/sparc64/multiarch/Makefile >> @@ -1,11 +1,3 @@ >> -ifeq ($(subdir),crypt) >> -libcrypt-sysdep_routines += md5-crop sha256-crop sha512-crop >> -endif >> - >> -ifeq ($(subdir),locale) >> -localedef-aux += md5-crop >> -endif >> - >> ifeq ($(subdir),string) >> sysdep_routines += memcpy-ultra3 memcpy-niagara1 memcpy-niagara2 \ >> memset-niagara1 memcpy-niagara4 memset-niagara4 \ >> diff --git a/sysdeps/sparc/sparc64/multiarch/md5-block.c b/sysdeps/sparc/sparc64/multiarch/md5-block.c >> deleted file mode 100644 >> index 7c1a3a368f..0000000000 >> --- a/sysdeps/sparc/sparc64/multiarch/md5-block.c >> +++ /dev/null >> @@ -1,29 +0,0 @@ >> -#include <sparc-ifunc.h> >> - >> -#define __md5_process_block __md5_process_block_generic >> -extern void __md5_process_block_generic (const void *buffer, size_t len, >> - struct md5_ctx *ctx); >> - >> -#include <crypt/md5-block.c> >> - >> -#undef __md5_process_block >> - >> -extern void __md5_process_block_crop (const void *buffer, size_t len, >> - struct md5_ctx *ctx); >> -static bool cpu_supports_md5(int hwcap) >> -{ >> - unsigned long cfr; >> - >> - if (!(hwcap & HWCAP_SPARC_CRYPTO)) >> - return false; >> - >> - __asm__ ("rd %%asr26, %0" : "=r" (cfr)); >> - if (cfr & (1 << 4)) >> - return true; >> - >> - return false; >> -} >> - >> -extern void __md5_process_block (const void *buffer, size_t len, >> - struct md5_ctx *ctx); >> -sparc_libc_ifunc(__md5_process_block, cpu_supports_md5(hwcap) ? __md5_process_block_crop : __md5_process_block_generic); >> diff --git a/sysdeps/sparc/sparc64/multiarch/md5-crop.S b/sysdeps/sparc/sparc64/multiarch/md5-crop.S >> deleted file mode 100644 >> index 53c27d677d..0000000000 >> --- a/sysdeps/sparc/sparc64/multiarch/md5-crop.S >> +++ /dev/null >> @@ -1,109 +0,0 @@ >> -/* MD5 using sparc crypto opcodes. >> - Copyright (C) 2012-2023 Free Software Foundation, Inc. >> - This file is part of the GNU C Library. >> - >> - The GNU C Library is free software; you can redistribute it and/or >> - modify it under the terms of the GNU Lesser General Public >> - License as published by the Free Software Foundation; either >> - version 2.1 of the License, or (at your option) any later version. >> - >> - The GNU C Library is distributed in the hope that it will be useful, >> - but WITHOUT ANY WARRANTY; without even the implied warranty of >> - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> - Lesser General Public License for more details. >> - >> - You should have received a copy of the GNU Lesser General Public >> - License along with the GNU C Library; if not, see >> - <https://www.gnu.org/licenses/>. */ >> - >> -#include <sysdep.h> >> - >> -#define ASI_PL 0x88 >> - >> -#define MD5 \ >> - .word 0x81b02800; >> - >> - .text >> - .align 32 >> -ENTRY(__md5_process_block_crop) >> - /* %o0=buffer, %o1=len, %o2=CTX */ >> - ld [%o2 + 0x10], %g1 >> - add %g1, %o1, %o4 >> - st %o4, [%o2 + 0x10] >> - clr %o5 >> - cmp %o4, %g1 >> - movlu %icc, 1, %o5 >> -#ifdef __arch64__ >> - srlx %o1, 32, %o4 >> - add %o5, %o4, %o5 >> -#endif >> - ld [%o2 + 0x14], %o4 >> - add %o4, %o5, %o4 >> - st %o4, [%o2 + 0x14] >> - lda [%o2] ASI_PL, %f0 >> - add %o2, 0x4, %g1 >> - lda [%g1] ASI_PL, %f1 >> - add %o2, 0x8, %g1 >> - andcc %o0, 0x7, %g0 >> - lda [%g1] ASI_PL, %f2 >> - add %o2, 0xc, %g1 >> - bne,pn %xcc, 10f >> - lda [%g1] ASI_PL, %f3 >> - >> -1: >> - ldd [%o0 + 0x00], %f8 >> - ldd [%o0 + 0x08], %f10 >> - ldd [%o0 + 0x10], %f12 >> - ldd [%o0 + 0x18], %f14 >> - ldd [%o0 + 0x20], %f16 >> - ldd [%o0 + 0x28], %f18 >> - ldd [%o0 + 0x30], %f20 >> - ldd [%o0 + 0x38], %f22 >> - >> - MD5 >> - >> - subcc %o1, 64, %o1 >> - bne,pt %xcc, 1b >> - add %o0, 0x40, %o0 >> - >> -5: >> - sta %f0, [%o2] ASI_PL >> - add %o2, 0x4, %g1 >> - sta %f1, [%g1] ASI_PL >> - add %o2, 0x8, %g1 >> - sta %f2, [%g1] ASI_PL >> - add %o2, 0xc, %g1 >> - retl >> - sta %f3, [%g1] ASI_PL >> -10: >> - alignaddr %o0, %g0, %o0 >> - >> - ldd [%o0 + 0x00], %f10 >> -1: >> - ldd [%o0 + 0x08], %f12 >> - ldd [%o0 + 0x10], %f14 >> - ldd [%o0 + 0x18], %f16 >> - ldd [%o0 + 0x20], %f18 >> - ldd [%o0 + 0x28], %f20 >> - ldd [%o0 + 0x30], %f22 >> - ldd [%o0 + 0x38], %f24 >> - ldd [%o0 + 0x40], %f26 >> - >> - faligndata %f10, %f12, %f8 >> - faligndata %f12, %f14, %f10 >> - faligndata %f14, %f16, %f12 >> - faligndata %f16, %f18, %f14 >> - faligndata %f18, %f20, %f16 >> - faligndata %f20, %f22, %f18 >> - faligndata %f22, %f24, %f20 >> - faligndata %f24, %f26, %f22 >> - >> - MD5 >> - >> - subcc %o1, 64, %o1 >> - fsrc2 %f26, %f10 >> - bne,pt %xcc, 1b >> - add %o0, 0x40, %o0 >> - >> - ba,a,pt %xcc, 5b >> -END(__md5_process_block_crop) >> diff --git a/sysdeps/sparc/sparc64/multiarch/sha256-block.c b/sysdeps/sparc/sparc64/multiarch/sha256-block.c >> deleted file mode 100644 >> index 9d65315a5a..0000000000 >> --- a/sysdeps/sparc/sparc64/multiarch/sha256-block.c >> +++ /dev/null >> @@ -1,32 +0,0 @@ >> -#include <sparc-ifunc.h> >> - >> -#define __sha256_process_block __sha256_process_block_generic >> -extern void __sha256_process_block_generic (const void *buffer, size_t len, >> - struct sha256_ctx *ctx); >> - >> -#include <crypt/sha256-block.c> >> - >> -#undef __sha256_process_block >> - >> -extern void __sha256_process_block_crop (const void *buffer, size_t len, >> - struct sha256_ctx *ctx); >> - >> -static bool cpu_supports_sha256(int hwcap) >> -{ >> - unsigned long cfr; >> - >> - if (!(hwcap & HWCAP_SPARC_CRYPTO)) >> - return false; >> - >> - __asm__ ("rd %%asr26, %0" : "=r" (cfr)); >> - if (cfr & (1 << 6)) >> - return true; >> - >> - return false; >> -} >> - >> -extern void __sha256_process_block (const void *buffer, size_t len, >> - struct sha256_ctx *ctx); >> -sparc_libc_ifunc (__sha256_process_block, >> - cpu_supports_sha256(hwcap) ? __sha256_process_block_crop >> - : __sha256_process_block_generic); >> diff --git a/sysdeps/sparc/sparc64/multiarch/sha256-crop.S b/sysdeps/sparc/sparc64/multiarch/sha256-crop.S >> deleted file mode 100644 >> index f7d0a7e7dc..0000000000 >> --- a/sysdeps/sparc/sparc64/multiarch/sha256-crop.S >> +++ /dev/null >> @@ -1,100 +0,0 @@ >> -/* SHA256 using sparc crypto opcodes. >> - Copyright (C) 2012-2023 Free Software Foundation, Inc. >> - This file is part of the GNU C Library. >> - >> - The GNU C Library is free software; you can redistribute it and/or >> - modify it under the terms of the GNU Lesser General Public >> - License as published by the Free Software Foundation; either >> - version 2.1 of the License, or (at your option) any later version. >> - >> - The GNU C Library is distributed in the hope that it will be useful, >> - but WITHOUT ANY WARRANTY; without even the implied warranty of >> - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> - Lesser General Public License for more details. >> - >> - You should have received a copy of the GNU Lesser General Public >> - License along with the GNU C Library; if not, see >> - <https://www.gnu.org/licenses/>. */ >> - >> -#include <sysdep.h> >> - >> -#define SHA256 \ >> - .word 0x81b02840; >> - >> - .text >> - .align 32 >> -ENTRY(__sha256_process_block_crop) >> - /* %o0=buffer, %o1=len, %o2=CTX */ >> - ldx [%o2 + 0x20], %g1 >> - add %g1, %o1, %g1 >> - stx %g1, [%o2 + 0x20] >> - >> - ld [%o2 + 0x00], %f0 >> - ld [%o2 + 0x04], %f1 >> - ld [%o2 + 0x08], %f2 >> - ld [%o2 + 0x0c], %f3 >> - ld [%o2 + 0x10], %f4 >> - ld [%o2 + 0x14], %f5 >> - andcc %o1, 0x7, %g0 >> - ld [%o2 + 0x18], %f6 >> - bne,pn %xcc, 10f >> - ld [%o2 + 0x1c], %f7 >> - >> -1: >> - ldd [%o0 + 0x00], %f8 >> - ldd [%o0 + 0x08], %f10 >> - ldd [%o0 + 0x10], %f12 >> - ldd [%o0 + 0x18], %f14 >> - ldd [%o0 + 0x20], %f16 >> - ldd [%o0 + 0x28], %f18 >> - ldd [%o0 + 0x30], %f20 >> - ldd [%o0 + 0x38], %f22 >> - >> - SHA256 >> - >> - subcc %o1, 0x40, %o1 >> - bne,pt %xcc, 1b >> - add %o0, 0x40, %o0 >> - >> -5: >> - st %f0, [%o2 + 0x00] >> - st %f1, [%o2 + 0x04] >> - st %f2, [%o2 + 0x08] >> - st %f3, [%o2 + 0x0c] >> - st %f4, [%o2 + 0x10] >> - st %f5, [%o2 + 0x14] >> - st %f6, [%o2 + 0x18] >> - retl >> - st %f7, [%o2 + 0x1c] >> -10: >> - alignaddr %o0, %g0, %o0 >> - >> - ldd [%o0 + 0x00], %f10 >> -1: >> - ldd [%o0 + 0x08], %f12 >> - ldd [%o0 + 0x10], %f14 >> - ldd [%o0 + 0x18], %f16 >> - ldd [%o0 + 0x20], %f18 >> - ldd [%o0 + 0x28], %f20 >> - ldd [%o0 + 0x30], %f22 >> - ldd [%o0 + 0x38], %f24 >> - ldd [%o0 + 0x40], %f26 >> - >> - faligndata %f10, %f12, %f8 >> - faligndata %f12, %f14, %f10 >> - faligndata %f14, %f16, %f12 >> - faligndata %f16, %f18, %f14 >> - faligndata %f18, %f20, %f16 >> - faligndata %f20, %f22, %f18 >> - faligndata %f22, %f24, %f20 >> - faligndata %f24, %f26, %f22 >> - >> - SHA256 >> - >> - subcc %o1, 0x40, %o1 >> - fsrc2 %f26, %f10 >> - bne,pt %xcc, 1b >> - add %o0, 0x40, %o0 >> - >> - ba,a,pt %xcc, 5b >> -END(__sha256_process_block_crop) >> diff --git a/sysdeps/sparc/sparc64/multiarch/sha512-block.c b/sysdeps/sparc/sparc64/multiarch/sha512-block.c >> deleted file mode 100644 >> index 2863e05d09..0000000000 >> --- a/sysdeps/sparc/sparc64/multiarch/sha512-block.c >> +++ /dev/null >> @@ -1,32 +0,0 @@ >> -#include <sparc-ifunc.h> >> - >> -#define __sha512_process_block __sha512_process_block_generic >> -extern void __sha512_process_block_generic (const void *buffer, size_t len, >> - struct sha512_ctx *ctx); >> - >> -#include <crypt/sha512-block.c> >> - >> -#undef __sha512_process_block >> - >> -extern void __sha512_process_block_crop (const void *buffer, size_t len, >> - struct sha512_ctx *ctx); >> - >> -static bool cpu_supports_sha512(int hwcap) >> -{ >> - unsigned long cfr; >> - >> - if (!(hwcap & HWCAP_SPARC_CRYPTO)) >> - return false; >> - >> - __asm__ ("rd %%asr26, %0" : "=r" (cfr)); >> - if (cfr & (1 << 6)) >> - return true; >> - >> - return false; >> -} >> - >> -extern void __sha512_process_block (const void *buffer, size_t len, >> - struct sha512_ctx *ctx); >> -sparc_libc_ifunc (__sha512_process_block, >> - cpu_supports_sha512(hwcap) ? __sha512_process_block_crop >> - : __sha512_process_block_generic); >> diff --git a/sysdeps/sparc/sparc64/multiarch/sha512-crop.S b/sysdeps/sparc/sparc64/multiarch/sha512-crop.S >> deleted file mode 100644 >> index 035f99f469..0000000000 >> --- a/sysdeps/sparc/sparc64/multiarch/sha512-crop.S >> +++ /dev/null >> @@ -1,130 +0,0 @@ >> -/* SHA512 using sparc crypto opcodes. >> - Copyright (C) 2012-2023 Free Software Foundation, Inc. >> - This file is part of the GNU C Library. >> - >> - The GNU C Library is free software; you can redistribute it and/or >> - modify it under the terms of the GNU Lesser General Public >> - License as published by the Free Software Foundation; either >> - version 2.1 of the License, or (at your option) any later version. >> - >> - The GNU C Library is distributed in the hope that it will be useful, >> - but WITHOUT ANY WARRANTY; without even the implied warranty of >> - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> - Lesser General Public License for more details. >> - >> - You should have received a copy of the GNU Lesser General Public >> - License along with the GNU C Library; if not, see >> - <https://www.gnu.org/licenses/>. */ >> - >> -#include <sysdep.h> >> - >> -#define SHA512 \ >> - .word 0x81b02860; >> - >> - .text >> - .align 32 >> -ENTRY(__sha512_process_block_crop) >> - /* %o0=buffer, %o1=len, %o2=CTX */ >> - ldx [%o2 + 0x48], %g1 >> - add %g1, %o1, %o4 >> - stx %o4, [%o2 + 0x48] >> - cmp %o4, %g1 >> - bgeu,pt %xcc, 1f >> - nop >> - ldx [%o2 + 0x40], %g1 >> - add %g1, 1, %g1 >> - stx %g1, [%o2 + 0x40] >> - >> -1: ldd [%o2 + 0x00], %f0 >> - ldd [%o2 + 0x08], %f2 >> - ldd [%o2 + 0x10], %f4 >> - ldd [%o2 + 0x18], %f6 >> - ldd [%o2 + 0x20], %f8 >> - ldd [%o2 + 0x28], %f10 >> - andcc %o1, 0x7, %g0 >> - ldd [%o2 + 0x30], %f12 >> - bne,pn %xcc, 10f >> - ldd [%o2 + 0x38], %f14 >> - >> -1: >> - ldd [%o0 + 0x00], %f16 >> - ldd [%o0 + 0x08], %f18 >> - ldd [%o0 + 0x10], %f20 >> - ldd [%o0 + 0x18], %f22 >> - ldd [%o0 + 0x20], %f24 >> - ldd [%o0 + 0x28], %f26 >> - ldd [%o0 + 0x30], %f28 >> - ldd [%o0 + 0x38], %f30 >> - ldd [%o0 + 0x40], %f32 >> - ldd [%o0 + 0x48], %f34 >> - ldd [%o0 + 0x50], %f36 >> - ldd [%o0 + 0x58], %f38 >> - ldd [%o0 + 0x60], %f40 >> - ldd [%o0 + 0x68], %f42 >> - ldd [%o0 + 0x70], %f44 >> - ldd [%o0 + 0x78], %f46 >> - >> - SHA512 >> - >> - subcc %o1, 0x80, %o1 >> - bne,pt %xcc, 1b >> - add %o0, 0x80, %o0 >> - >> -5: >> - std %f0, [%o2 + 0x00] >> - std %f2, [%o2 + 0x08] >> - std %f4, [%o2 + 0x10] >> - std %f6, [%o2 + 0x18] >> - std %f8, [%o2 + 0x20] >> - std %f10, [%o2 + 0x28] >> - std %f12, [%o2 + 0x30] >> - retl >> - std %f14, [%o2 + 0x38] >> -10: >> - alignaddr %o0, %g0, %o0 >> - >> - ldd [%o0 + 0x00], %f18 >> -1: >> - ldd [%o0 + 0x08], %f20 >> - ldd [%o0 + 0x10], %f22 >> - ldd [%o0 + 0x18], %f24 >> - ldd [%o0 + 0x20], %f26 >> - ldd [%o0 + 0x28], %f28 >> - ldd [%o0 + 0x30], %f30 >> - ldd [%o0 + 0x38], %f32 >> - ldd [%o0 + 0x40], %f34 >> - ldd [%o0 + 0x48], %f36 >> - ldd [%o0 + 0x50], %f38 >> - ldd [%o0 + 0x58], %f40 >> - ldd [%o0 + 0x60], %f42 >> - ldd [%o0 + 0x68], %f44 >> - ldd [%o0 + 0x70], %f46 >> - ldd [%o0 + 0x78], %f48 >> - ldd [%o0 + 0x80], %f50 >> - >> - faligndata %f18, %f20, %f16 >> - faligndata %f20, %f22, %f18 >> - faligndata %f22, %f24, %f20 >> - faligndata %f24, %f26, %f22 >> - faligndata %f26, %f28, %f24 >> - faligndata %f28, %f30, %f26 >> - faligndata %f30, %f32, %f28 >> - faligndata %f32, %f34, %f30 >> - faligndata %f34, %f36, %f32 >> - faligndata %f36, %f38, %f34 >> - faligndata %f38, %f40, %f36 >> - faligndata %f40, %f42, %f38 >> - faligndata %f42, %f44, %f40 >> - faligndata %f44, %f46, %f42 >> - faligndata %f46, %f48, %f44 >> - faligndata %f48, %f50, %f46 >> - >> - SHA512 >> - >> - subcc %o1, 0x80, %o1 >> - fsrc2 %f50, %f18 >> - bne,pt %xcc, 1b >> - add %o0, 0x80, %o0 >> - >> - ba,a,pt %xcc, 5b >> -END(__sha512_process_block_crop) >
Adhemerval Zanella Netto <adhemerval.zanella@linaro.org> writes: > On 17/07/23 12:01, Sam James wrote: >> >> Adhemerval Zanella via Libc-alpha <libc-alpha@sourceware.org> writes: >> >>> The libcrypt was maked to phase out on 2.28, and better projects >>> already exist that provide both compatibility and better API >>> (libxcrypt). The sparc optimizations add the burden to extra >>> build-many-glibcs.py configurations. >>> >> >> I guess. I'd personally prefer just removing it all when libcrypt >> is removed, not hacking away at it beforehand. > > I don't think we will ever be able to remove libgcrypt due compat reason. > Maybe we can make crypt return ENOSYS as default, but even though I think > if libcrypt is still enabled we will need to keep old code as compat > layer. > In the other thread, we're talking about when it's time to kill it entirely (I suppose just the option to build, not the real implementation). My assumption was we'd remove optimisations like this at that point. >> >>> Checked on sparc64 and sparcv9. >>> --- >>> .../sparc/sparc32/sparcv9/multiarch/Makefile | 8 -- >>> .../sparc32/sparcv9/multiarch/md5-block.c | 1 - >>> .../sparc32/sparcv9/multiarch/md5-crop.S | 1 - >>> .../sparc32/sparcv9/multiarch/sha256-block.c | 1 - >>> .../sparc32/sparcv9/multiarch/sha256-crop.S | 1 - >>> .../sparc32/sparcv9/multiarch/sha512-block.c | 1 - >>> .../sparc32/sparcv9/multiarch/sha512-crop.S | 1 - >>> sysdeps/sparc/sparc64/multiarch/Makefile | 8 -- >>> sysdeps/sparc/sparc64/multiarch/md5-block.c | 29 ---- >>> sysdeps/sparc/sparc64/multiarch/md5-crop.S | 109 --------------- >>> .../sparc/sparc64/multiarch/sha256-block.c | 32 ----- >>> sysdeps/sparc/sparc64/multiarch/sha256-crop.S | 100 -------------- >>> .../sparc/sparc64/multiarch/sha512-block.c | 32 ----- >>> sysdeps/sparc/sparc64/multiarch/sha512-crop.S | 130 ------------------ >>> 14 files changed, 454 deletions(-) >>> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c >>> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S >>> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c >>> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S >>> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c >>> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S >>> delete mode 100644 sysdeps/sparc/sparc64/multiarch/md5-block.c >>> delete mode 100644 sysdeps/sparc/sparc64/multiarch/md5-crop.S >>> delete mode 100644 sysdeps/sparc/sparc64/multiarch/sha256-block.c >>> delete mode 100644 sysdeps/sparc/sparc64/multiarch/sha256-crop.S >>> delete mode 100644 sysdeps/sparc/sparc64/multiarch/sha512-block.c >>> delete mode 100644 sysdeps/sparc/sparc64/multiarch/sha512-crop.S >>> >>> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile b/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile >>> index a6d08f3a00..d35f95e8e2 100644 >>> --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile >>> +++ b/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile >>> @@ -1,11 +1,3 @@ >>> -ifeq ($(subdir),crypt) >>> -libcrypt-sysdep_routines += md5-crop sha256-crop sha512-crop >>> -endif >>> - >>> -ifeq ($(subdir),locale) >>> -localedef-aux += md5-crop >>> -endif >>> - >>> ifeq ($(subdir),string) >>> sysdep_routines += memcpy-ultra3 memcpy-niagara1 memcpy-niagara2 \ >>> memset-niagara1 memcpy-niagara4 memset-niagara4 \ >>> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c b/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c >>> deleted file mode 100644 >>> index 3765cabae7..0000000000 >>> --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c >>> +++ /dev/null >>> @@ -1 +0,0 @@ >>> -#include <sparc64/multiarch/md5-block.c> >>> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S b/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S >>> deleted file mode 100644 >>> index 11a3a81482..0000000000 >>> --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S >>> +++ /dev/null >>> @@ -1 +0,0 @@ >>> -#include <sparc64/multiarch/md5-crop.S> >>> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c b/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c >>> deleted file mode 100644 >>> index 600c602b61..0000000000 >>> --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c >>> +++ /dev/null >>> @@ -1 +0,0 @@ >>> -#include <sparc64/multiarch/sha256-block.c> >>> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S b/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S >>> deleted file mode 100644 >>> index 4895405853..0000000000 >>> --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S >>> +++ /dev/null >>> @@ -1 +0,0 @@ >>> -#include <sparc64/multiarch/sha256-crop.S> >>> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c b/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c >>> deleted file mode 100644 >>> index 7c7c54e5a6..0000000000 >>> --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c >>> +++ /dev/null >>> @@ -1 +0,0 @@ >>> -#include <sparc64/multiarch/sha512-block.c> >>> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S b/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S >>> deleted file mode 100644 >>> index cc74a99d3c..0000000000 >>> --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S >>> +++ /dev/null >>> @@ -1 +0,0 @@ >>> -#include <sparc64/multiarch/sha512-crop.S> >>> diff --git a/sysdeps/sparc/sparc64/multiarch/Makefile b/sysdeps/sparc/sparc64/multiarch/Makefile >>> index eaf758e7aa..5dcd7bbb0e 100644 >>> --- a/sysdeps/sparc/sparc64/multiarch/Makefile >>> +++ b/sysdeps/sparc/sparc64/multiarch/Makefile >>> @@ -1,11 +1,3 @@ >>> -ifeq ($(subdir),crypt) >>> -libcrypt-sysdep_routines += md5-crop sha256-crop sha512-crop >>> -endif >>> - >>> -ifeq ($(subdir),locale) >>> -localedef-aux += md5-crop >>> -endif >>> - >>> ifeq ($(subdir),string) >>> sysdep_routines += memcpy-ultra3 memcpy-niagara1 memcpy-niagara2 \ >>> memset-niagara1 memcpy-niagara4 memset-niagara4 \ >>> diff --git a/sysdeps/sparc/sparc64/multiarch/md5-block.c b/sysdeps/sparc/sparc64/multiarch/md5-block.c >>> deleted file mode 100644 >>> index 7c1a3a368f..0000000000 >>> --- a/sysdeps/sparc/sparc64/multiarch/md5-block.c >>> +++ /dev/null >>> @@ -1,29 +0,0 @@ >>> -#include <sparc-ifunc.h> >>> - >>> -#define __md5_process_block __md5_process_block_generic >>> -extern void __md5_process_block_generic (const void *buffer, size_t len, >>> - struct md5_ctx *ctx); >>> - >>> -#include <crypt/md5-block.c> >>> - >>> -#undef __md5_process_block >>> - >>> -extern void __md5_process_block_crop (const void *buffer, size_t len, >>> - struct md5_ctx *ctx); >>> -static bool cpu_supports_md5(int hwcap) >>> -{ >>> - unsigned long cfr; >>> - >>> - if (!(hwcap & HWCAP_SPARC_CRYPTO)) >>> - return false; >>> - >>> - __asm__ ("rd %%asr26, %0" : "=r" (cfr)); >>> - if (cfr & (1 << 4)) >>> - return true; >>> - >>> - return false; >>> -} >>> - >>> -extern void __md5_process_block (const void *buffer, size_t len, >>> - struct md5_ctx *ctx); >>> -sparc_libc_ifunc(__md5_process_block, cpu_supports_md5(hwcap) ? __md5_process_block_crop : __md5_process_block_generic); >>> diff --git a/sysdeps/sparc/sparc64/multiarch/md5-crop.S b/sysdeps/sparc/sparc64/multiarch/md5-crop.S >>> deleted file mode 100644 >>> index 53c27d677d..0000000000 >>> --- a/sysdeps/sparc/sparc64/multiarch/md5-crop.S >>> +++ /dev/null >>> @@ -1,109 +0,0 @@ >>> -/* MD5 using sparc crypto opcodes. >>> - Copyright (C) 2012-2023 Free Software Foundation, Inc. >>> - This file is part of the GNU C Library. >>> - >>> - The GNU C Library is free software; you can redistribute it and/or >>> - modify it under the terms of the GNU Lesser General Public >>> - License as published by the Free Software Foundation; either >>> - version 2.1 of the License, or (at your option) any later version. >>> - >>> - The GNU C Library is distributed in the hope that it will be useful, >>> - but WITHOUT ANY WARRANTY; without even the implied warranty of >>> - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >>> - Lesser General Public License for more details. >>> - >>> - You should have received a copy of the GNU Lesser General Public >>> - License along with the GNU C Library; if not, see >>> - <https://www.gnu.org/licenses/>. */ >>> - >>> -#include <sysdep.h> >>> - >>> -#define ASI_PL 0x88 >>> - >>> -#define MD5 \ >>> - .word 0x81b02800; >>> - >>> - .text >>> - .align 32 >>> -ENTRY(__md5_process_block_crop) >>> - /* %o0=buffer, %o1=len, %o2=CTX */ >>> - ld [%o2 + 0x10], %g1 >>> - add %g1, %o1, %o4 >>> - st %o4, [%o2 + 0x10] >>> - clr %o5 >>> - cmp %o4, %g1 >>> - movlu %icc, 1, %o5 >>> -#ifdef __arch64__ >>> - srlx %o1, 32, %o4 >>> - add %o5, %o4, %o5 >>> -#endif >>> - ld [%o2 + 0x14], %o4 >>> - add %o4, %o5, %o4 >>> - st %o4, [%o2 + 0x14] >>> - lda [%o2] ASI_PL, %f0 >>> - add %o2, 0x4, %g1 >>> - lda [%g1] ASI_PL, %f1 >>> - add %o2, 0x8, %g1 >>> - andcc %o0, 0x7, %g0 >>> - lda [%g1] ASI_PL, %f2 >>> - add %o2, 0xc, %g1 >>> - bne,pn %xcc, 10f >>> - lda [%g1] ASI_PL, %f3 >>> - >>> -1: >>> - ldd [%o0 + 0x00], %f8 >>> - ldd [%o0 + 0x08], %f10 >>> - ldd [%o0 + 0x10], %f12 >>> - ldd [%o0 + 0x18], %f14 >>> - ldd [%o0 + 0x20], %f16 >>> - ldd [%o0 + 0x28], %f18 >>> - ldd [%o0 + 0x30], %f20 >>> - ldd [%o0 + 0x38], %f22 >>> - >>> - MD5 >>> - >>> - subcc %o1, 64, %o1 >>> - bne,pt %xcc, 1b >>> - add %o0, 0x40, %o0 >>> - >>> -5: >>> - sta %f0, [%o2] ASI_PL >>> - add %o2, 0x4, %g1 >>> - sta %f1, [%g1] ASI_PL >>> - add %o2, 0x8, %g1 >>> - sta %f2, [%g1] ASI_PL >>> - add %o2, 0xc, %g1 >>> - retl >>> - sta %f3, [%g1] ASI_PL >>> -10: >>> - alignaddr %o0, %g0, %o0 >>> - >>> - ldd [%o0 + 0x00], %f10 >>> -1: >>> - ldd [%o0 + 0x08], %f12 >>> - ldd [%o0 + 0x10], %f14 >>> - ldd [%o0 + 0x18], %f16 >>> - ldd [%o0 + 0x20], %f18 >>> - ldd [%o0 + 0x28], %f20 >>> - ldd [%o0 + 0x30], %f22 >>> - ldd [%o0 + 0x38], %f24 >>> - ldd [%o0 + 0x40], %f26 >>> - >>> - faligndata %f10, %f12, %f8 >>> - faligndata %f12, %f14, %f10 >>> - faligndata %f14, %f16, %f12 >>> - faligndata %f16, %f18, %f14 >>> - faligndata %f18, %f20, %f16 >>> - faligndata %f20, %f22, %f18 >>> - faligndata %f22, %f24, %f20 >>> - faligndata %f24, %f26, %f22 >>> - >>> - MD5 >>> - >>> - subcc %o1, 64, %o1 >>> - fsrc2 %f26, %f10 >>> - bne,pt %xcc, 1b >>> - add %o0, 0x40, %o0 >>> - >>> - ba,a,pt %xcc, 5b >>> -END(__md5_process_block_crop) >>> diff --git a/sysdeps/sparc/sparc64/multiarch/sha256-block.c b/sysdeps/sparc/sparc64/multiarch/sha256-block.c >>> deleted file mode 100644 >>> index 9d65315a5a..0000000000 >>> --- a/sysdeps/sparc/sparc64/multiarch/sha256-block.c >>> +++ /dev/null >>> @@ -1,32 +0,0 @@ >>> -#include <sparc-ifunc.h> >>> - >>> -#define __sha256_process_block __sha256_process_block_generic >>> -extern void __sha256_process_block_generic (const void *buffer, size_t len, >>> - struct sha256_ctx *ctx); >>> - >>> -#include <crypt/sha256-block.c> >>> - >>> -#undef __sha256_process_block >>> - >>> -extern void __sha256_process_block_crop (const void *buffer, size_t len, >>> - struct sha256_ctx *ctx); >>> - >>> -static bool cpu_supports_sha256(int hwcap) >>> -{ >>> - unsigned long cfr; >>> - >>> - if (!(hwcap & HWCAP_SPARC_CRYPTO)) >>> - return false; >>> - >>> - __asm__ ("rd %%asr26, %0" : "=r" (cfr)); >>> - if (cfr & (1 << 6)) >>> - return true; >>> - >>> - return false; >>> -} >>> - >>> -extern void __sha256_process_block (const void *buffer, size_t len, >>> - struct sha256_ctx *ctx); >>> -sparc_libc_ifunc (__sha256_process_block, >>> - cpu_supports_sha256(hwcap) ? __sha256_process_block_crop >>> - : __sha256_process_block_generic); >>> diff --git a/sysdeps/sparc/sparc64/multiarch/sha256-crop.S b/sysdeps/sparc/sparc64/multiarch/sha256-crop.S >>> deleted file mode 100644 >>> index f7d0a7e7dc..0000000000 >>> --- a/sysdeps/sparc/sparc64/multiarch/sha256-crop.S >>> +++ /dev/null >>> @@ -1,100 +0,0 @@ >>> -/* SHA256 using sparc crypto opcodes. >>> - Copyright (C) 2012-2023 Free Software Foundation, Inc. >>> - This file is part of the GNU C Library. >>> - >>> - The GNU C Library is free software; you can redistribute it and/or >>> - modify it under the terms of the GNU Lesser General Public >>> - License as published by the Free Software Foundation; either >>> - version 2.1 of the License, or (at your option) any later version. >>> - >>> - The GNU C Library is distributed in the hope that it will be useful, >>> - but WITHOUT ANY WARRANTY; without even the implied warranty of >>> - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >>> - Lesser General Public License for more details. >>> - >>> - You should have received a copy of the GNU Lesser General Public >>> - License along with the GNU C Library; if not, see >>> - <https://www.gnu.org/licenses/>. */ >>> - >>> -#include <sysdep.h> >>> - >>> -#define SHA256 \ >>> - .word 0x81b02840; >>> - >>> - .text >>> - .align 32 >>> -ENTRY(__sha256_process_block_crop) >>> - /* %o0=buffer, %o1=len, %o2=CTX */ >>> - ldx [%o2 + 0x20], %g1 >>> - add %g1, %o1, %g1 >>> - stx %g1, [%o2 + 0x20] >>> - >>> - ld [%o2 + 0x00], %f0 >>> - ld [%o2 + 0x04], %f1 >>> - ld [%o2 + 0x08], %f2 >>> - ld [%o2 + 0x0c], %f3 >>> - ld [%o2 + 0x10], %f4 >>> - ld [%o2 + 0x14], %f5 >>> - andcc %o1, 0x7, %g0 >>> - ld [%o2 + 0x18], %f6 >>> - bne,pn %xcc, 10f >>> - ld [%o2 + 0x1c], %f7 >>> - >>> -1: >>> - ldd [%o0 + 0x00], %f8 >>> - ldd [%o0 + 0x08], %f10 >>> - ldd [%o0 + 0x10], %f12 >>> - ldd [%o0 + 0x18], %f14 >>> - ldd [%o0 + 0x20], %f16 >>> - ldd [%o0 + 0x28], %f18 >>> - ldd [%o0 + 0x30], %f20 >>> - ldd [%o0 + 0x38], %f22 >>> - >>> - SHA256 >>> - >>> - subcc %o1, 0x40, %o1 >>> - bne,pt %xcc, 1b >>> - add %o0, 0x40, %o0 >>> - >>> -5: >>> - st %f0, [%o2 + 0x00] >>> - st %f1, [%o2 + 0x04] >>> - st %f2, [%o2 + 0x08] >>> - st %f3, [%o2 + 0x0c] >>> - st %f4, [%o2 + 0x10] >>> - st %f5, [%o2 + 0x14] >>> - st %f6, [%o2 + 0x18] >>> - retl >>> - st %f7, [%o2 + 0x1c] >>> -10: >>> - alignaddr %o0, %g0, %o0 >>> - >>> - ldd [%o0 + 0x00], %f10 >>> -1: >>> - ldd [%o0 + 0x08], %f12 >>> - ldd [%o0 + 0x10], %f14 >>> - ldd [%o0 + 0x18], %f16 >>> - ldd [%o0 + 0x20], %f18 >>> - ldd [%o0 + 0x28], %f20 >>> - ldd [%o0 + 0x30], %f22 >>> - ldd [%o0 + 0x38], %f24 >>> - ldd [%o0 + 0x40], %f26 >>> - >>> - faligndata %f10, %f12, %f8 >>> - faligndata %f12, %f14, %f10 >>> - faligndata %f14, %f16, %f12 >>> - faligndata %f16, %f18, %f14 >>> - faligndata %f18, %f20, %f16 >>> - faligndata %f20, %f22, %f18 >>> - faligndata %f22, %f24, %f20 >>> - faligndata %f24, %f26, %f22 >>> - >>> - SHA256 >>> - >>> - subcc %o1, 0x40, %o1 >>> - fsrc2 %f26, %f10 >>> - bne,pt %xcc, 1b >>> - add %o0, 0x40, %o0 >>> - >>> - ba,a,pt %xcc, 5b >>> -END(__sha256_process_block_crop) >>> diff --git a/sysdeps/sparc/sparc64/multiarch/sha512-block.c b/sysdeps/sparc/sparc64/multiarch/sha512-block.c >>> deleted file mode 100644 >>> index 2863e05d09..0000000000 >>> --- a/sysdeps/sparc/sparc64/multiarch/sha512-block.c >>> +++ /dev/null >>> @@ -1,32 +0,0 @@ >>> -#include <sparc-ifunc.h> >>> - >>> -#define __sha512_process_block __sha512_process_block_generic >>> -extern void __sha512_process_block_generic (const void *buffer, size_t len, >>> - struct sha512_ctx *ctx); >>> - >>> -#include <crypt/sha512-block.c> >>> - >>> -#undef __sha512_process_block >>> - >>> -extern void __sha512_process_block_crop (const void *buffer, size_t len, >>> - struct sha512_ctx *ctx); >>> - >>> -static bool cpu_supports_sha512(int hwcap) >>> -{ >>> - unsigned long cfr; >>> - >>> - if (!(hwcap & HWCAP_SPARC_CRYPTO)) >>> - return false; >>> - >>> - __asm__ ("rd %%asr26, %0" : "=r" (cfr)); >>> - if (cfr & (1 << 6)) >>> - return true; >>> - >>> - return false; >>> -} >>> - >>> -extern void __sha512_process_block (const void *buffer, size_t len, >>> - struct sha512_ctx *ctx); >>> -sparc_libc_ifunc (__sha512_process_block, >>> - cpu_supports_sha512(hwcap) ? __sha512_process_block_crop >>> - : __sha512_process_block_generic); >>> diff --git a/sysdeps/sparc/sparc64/multiarch/sha512-crop.S b/sysdeps/sparc/sparc64/multiarch/sha512-crop.S >>> deleted file mode 100644 >>> index 035f99f469..0000000000 >>> --- a/sysdeps/sparc/sparc64/multiarch/sha512-crop.S >>> +++ /dev/null >>> @@ -1,130 +0,0 @@ >>> -/* SHA512 using sparc crypto opcodes. >>> - Copyright (C) 2012-2023 Free Software Foundation, Inc. >>> - This file is part of the GNU C Library. >>> - >>> - The GNU C Library is free software; you can redistribute it and/or >>> - modify it under the terms of the GNU Lesser General Public >>> - License as published by the Free Software Foundation; either >>> - version 2.1 of the License, or (at your option) any later version. >>> - >>> - The GNU C Library is distributed in the hope that it will be useful, >>> - but WITHOUT ANY WARRANTY; without even the implied warranty of >>> - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >>> - Lesser General Public License for more details. >>> - >>> - You should have received a copy of the GNU Lesser General Public >>> - License along with the GNU C Library; if not, see >>> - <https://www.gnu.org/licenses/>. */ >>> - >>> -#include <sysdep.h> >>> - >>> -#define SHA512 \ >>> - .word 0x81b02860; >>> - >>> - .text >>> - .align 32 >>> -ENTRY(__sha512_process_block_crop) >>> - /* %o0=buffer, %o1=len, %o2=CTX */ >>> - ldx [%o2 + 0x48], %g1 >>> - add %g1, %o1, %o4 >>> - stx %o4, [%o2 + 0x48] >>> - cmp %o4, %g1 >>> - bgeu,pt %xcc, 1f >>> - nop >>> - ldx [%o2 + 0x40], %g1 >>> - add %g1, 1, %g1 >>> - stx %g1, [%o2 + 0x40] >>> - >>> -1: ldd [%o2 + 0x00], %f0 >>> - ldd [%o2 + 0x08], %f2 >>> - ldd [%o2 + 0x10], %f4 >>> - ldd [%o2 + 0x18], %f6 >>> - ldd [%o2 + 0x20], %f8 >>> - ldd [%o2 + 0x28], %f10 >>> - andcc %o1, 0x7, %g0 >>> - ldd [%o2 + 0x30], %f12 >>> - bne,pn %xcc, 10f >>> - ldd [%o2 + 0x38], %f14 >>> - >>> -1: >>> - ldd [%o0 + 0x00], %f16 >>> - ldd [%o0 + 0x08], %f18 >>> - ldd [%o0 + 0x10], %f20 >>> - ldd [%o0 + 0x18], %f22 >>> - ldd [%o0 + 0x20], %f24 >>> - ldd [%o0 + 0x28], %f26 >>> - ldd [%o0 + 0x30], %f28 >>> - ldd [%o0 + 0x38], %f30 >>> - ldd [%o0 + 0x40], %f32 >>> - ldd [%o0 + 0x48], %f34 >>> - ldd [%o0 + 0x50], %f36 >>> - ldd [%o0 + 0x58], %f38 >>> - ldd [%o0 + 0x60], %f40 >>> - ldd [%o0 + 0x68], %f42 >>> - ldd [%o0 + 0x70], %f44 >>> - ldd [%o0 + 0x78], %f46 >>> - >>> - SHA512 >>> - >>> - subcc %o1, 0x80, %o1 >>> - bne,pt %xcc, 1b >>> - add %o0, 0x80, %o0 >>> - >>> -5: >>> - std %f0, [%o2 + 0x00] >>> - std %f2, [%o2 + 0x08] >>> - std %f4, [%o2 + 0x10] >>> - std %f6, [%o2 + 0x18] >>> - std %f8, [%o2 + 0x20] >>> - std %f10, [%o2 + 0x28] >>> - std %f12, [%o2 + 0x30] >>> - retl >>> - std %f14, [%o2 + 0x38] >>> -10: >>> - alignaddr %o0, %g0, %o0 >>> - >>> - ldd [%o0 + 0x00], %f18 >>> -1: >>> - ldd [%o0 + 0x08], %f20 >>> - ldd [%o0 + 0x10], %f22 >>> - ldd [%o0 + 0x18], %f24 >>> - ldd [%o0 + 0x20], %f26 >>> - ldd [%o0 + 0x28], %f28 >>> - ldd [%o0 + 0x30], %f30 >>> - ldd [%o0 + 0x38], %f32 >>> - ldd [%o0 + 0x40], %f34 >>> - ldd [%o0 + 0x48], %f36 >>> - ldd [%o0 + 0x50], %f38 >>> - ldd [%o0 + 0x58], %f40 >>> - ldd [%o0 + 0x60], %f42 >>> - ldd [%o0 + 0x68], %f44 >>> - ldd [%o0 + 0x70], %f46 >>> - ldd [%o0 + 0x78], %f48 >>> - ldd [%o0 + 0x80], %f50 >>> - >>> - faligndata %f18, %f20, %f16 >>> - faligndata %f20, %f22, %f18 >>> - faligndata %f22, %f24, %f20 >>> - faligndata %f24, %f26, %f22 >>> - faligndata %f26, %f28, %f24 >>> - faligndata %f28, %f30, %f26 >>> - faligndata %f30, %f32, %f28 >>> - faligndata %f32, %f34, %f30 >>> - faligndata %f34, %f36, %f32 >>> - faligndata %f36, %f38, %f34 >>> - faligndata %f38, %f40, %f36 >>> - faligndata %f40, %f42, %f38 >>> - faligndata %f42, %f44, %f40 >>> - faligndata %f44, %f46, %f42 >>> - faligndata %f46, %f48, %f44 >>> - faligndata %f48, %f50, %f46 >>> - >>> - SHA512 >>> - >>> - subcc %o1, 0x80, %o1 >>> - fsrc2 %f50, %f18 >>> - bne,pt %xcc, 1b >>> - add %o0, 0x80, %o0 >>> - >>> - ba,a,pt %xcc, 5b >>> -END(__sha512_process_block_crop) >>
On 17/07/23 14:31, Sam James wrote: > > Adhemerval Zanella Netto <adhemerval.zanella@linaro.org> writes: > >> On 17/07/23 12:01, Sam James wrote: >>> >>> Adhemerval Zanella via Libc-alpha <libc-alpha@sourceware.org> writes: >>> >>>> The libcrypt was maked to phase out on 2.28, and better projects >>>> already exist that provide both compatibility and better API >>>> (libxcrypt). The sparc optimizations add the burden to extra >>>> build-many-glibcs.py configurations. >>>> >>> >>> I guess. I'd personally prefer just removing it all when libcrypt >>> is removed, not hacking away at it beforehand. >> >> I don't think we will ever be able to remove libgcrypt due compat reason. >> Maybe we can make crypt return ENOSYS as default, but even though I think >> if libcrypt is still enabled we will need to keep old code as compat >> layer. >> > > In the other thread, we're talking about when it's time to kill it > entirely (I suppose just the option to build, not the real > implementation). I am not sure what kind of compatibility we will need to preserve for libcrypto. For sunrpc 5500cdba401), we have removed most of the symbols but still kept some old ones for compatibility even though the libtirpc does implement such symbols (like key_setsecret for instance). It seems that libcrypto is way simpler, and libxcrypt does implement all require symbol version which the expected. So it should be doable. > > My assumption was we'd remove optimisations like this at that point. The idea of the patch is to streamline the required build coverage to avoid having a --enable-crypt just for sparc. Sure we can pack if/when we remove libcrypto, but I think this is orthogonal.
Adhemerval Zanella Netto <adhemerval.zanella@linaro.org> writes: > On 17/07/23 14:31, Sam James wrote: >> >> Adhemerval Zanella Netto <adhemerval.zanella@linaro.org> writes: >> >>> On 17/07/23 12:01, Sam James wrote: >>>> >>>> Adhemerval Zanella via Libc-alpha <libc-alpha@sourceware.org> writes: >>>> >>>>> The libcrypt was maked to phase out on 2.28, and better projects >>>>> already exist that provide both compatibility and better API >>>>> (libxcrypt). The sparc optimizations add the burden to extra >>>>> build-many-glibcs.py configurations. >>>>> >>>> >>>> I guess. I'd personally prefer just removing it all when libcrypt >>>> is removed, not hacking away at it beforehand. >>> >>> I don't think we will ever be able to remove libgcrypt due compat reason. >>> Maybe we can make crypt return ENOSYS as default, but even though I think >>> if libcrypt is still enabled we will need to keep old code as compat >>> layer. >>> >> >> In the other thread, we're talking about when it's time to kill it >> entirely (I suppose just the option to build, not the real >> implementation). > > I am not sure what kind of compatibility we will need to preserve for > libcrypto. For sunrpc 5500cdba401), we have removed most of the symbols > but still kept some old ones for compatibility even though the > libtirpc does implement such symbols (like key_setsecret for instance). > > It seems that libcrypto is way simpler, and libxcrypt does implement > all require symbol version which the expected. So it should be doable. > >> >> My assumption was we'd remove optimisations like this at that point. > > The idea of the patch is to streamline the required build coverage to > avoid having a --enable-crypt just for sparc. Sure we can pack if/when > we remove libcrypto, but I think this is orthogonal. You feel strongly so it's fine with me to yank it then, I just felt it was cleaner to not "soft-kill" it before it was removed, but you're right that it's unclear how we're even going to remove it and how far. Objection withdrawn - thanks!
diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile b/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile index a6d08f3a00..d35f95e8e2 100644 --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile +++ b/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile @@ -1,11 +1,3 @@ -ifeq ($(subdir),crypt) -libcrypt-sysdep_routines += md5-crop sha256-crop sha512-crop -endif - -ifeq ($(subdir),locale) -localedef-aux += md5-crop -endif - ifeq ($(subdir),string) sysdep_routines += memcpy-ultra3 memcpy-niagara1 memcpy-niagara2 \ memset-niagara1 memcpy-niagara4 memset-niagara4 \ diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c b/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c deleted file mode 100644 index 3765cabae7..0000000000 --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c +++ /dev/null @@ -1 +0,0 @@ -#include <sparc64/multiarch/md5-block.c> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S b/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S deleted file mode 100644 index 11a3a81482..0000000000 --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S +++ /dev/null @@ -1 +0,0 @@ -#include <sparc64/multiarch/md5-crop.S> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c b/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c deleted file mode 100644 index 600c602b61..0000000000 --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c +++ /dev/null @@ -1 +0,0 @@ -#include <sparc64/multiarch/sha256-block.c> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S b/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S deleted file mode 100644 index 4895405853..0000000000 --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S +++ /dev/null @@ -1 +0,0 @@ -#include <sparc64/multiarch/sha256-crop.S> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c b/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c deleted file mode 100644 index 7c7c54e5a6..0000000000 --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c +++ /dev/null @@ -1 +0,0 @@ -#include <sparc64/multiarch/sha512-block.c> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S b/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S deleted file mode 100644 index cc74a99d3c..0000000000 --- a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S +++ /dev/null @@ -1 +0,0 @@ -#include <sparc64/multiarch/sha512-crop.S> diff --git a/sysdeps/sparc/sparc64/multiarch/Makefile b/sysdeps/sparc/sparc64/multiarch/Makefile index eaf758e7aa..5dcd7bbb0e 100644 --- a/sysdeps/sparc/sparc64/multiarch/Makefile +++ b/sysdeps/sparc/sparc64/multiarch/Makefile @@ -1,11 +1,3 @@ -ifeq ($(subdir),crypt) -libcrypt-sysdep_routines += md5-crop sha256-crop sha512-crop -endif - -ifeq ($(subdir),locale) -localedef-aux += md5-crop -endif - ifeq ($(subdir),string) sysdep_routines += memcpy-ultra3 memcpy-niagara1 memcpy-niagara2 \ memset-niagara1 memcpy-niagara4 memset-niagara4 \ diff --git a/sysdeps/sparc/sparc64/multiarch/md5-block.c b/sysdeps/sparc/sparc64/multiarch/md5-block.c deleted file mode 100644 index 7c1a3a368f..0000000000 --- a/sysdeps/sparc/sparc64/multiarch/md5-block.c +++ /dev/null @@ -1,29 +0,0 @@ -#include <sparc-ifunc.h> - -#define __md5_process_block __md5_process_block_generic -extern void __md5_process_block_generic (const void *buffer, size_t len, - struct md5_ctx *ctx); - -#include <crypt/md5-block.c> - -#undef __md5_process_block - -extern void __md5_process_block_crop (const void *buffer, size_t len, - struct md5_ctx *ctx); -static bool cpu_supports_md5(int hwcap) -{ - unsigned long cfr; - - if (!(hwcap & HWCAP_SPARC_CRYPTO)) - return false; - - __asm__ ("rd %%asr26, %0" : "=r" (cfr)); - if (cfr & (1 << 4)) - return true; - - return false; -} - -extern void __md5_process_block (const void *buffer, size_t len, - struct md5_ctx *ctx); -sparc_libc_ifunc(__md5_process_block, cpu_supports_md5(hwcap) ? __md5_process_block_crop : __md5_process_block_generic); diff --git a/sysdeps/sparc/sparc64/multiarch/md5-crop.S b/sysdeps/sparc/sparc64/multiarch/md5-crop.S deleted file mode 100644 index 53c27d677d..0000000000 --- a/sysdeps/sparc/sparc64/multiarch/md5-crop.S +++ /dev/null @@ -1,109 +0,0 @@ -/* MD5 using sparc crypto opcodes. - Copyright (C) 2012-2023 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <https://www.gnu.org/licenses/>. */ - -#include <sysdep.h> - -#define ASI_PL 0x88 - -#define MD5 \ - .word 0x81b02800; - - .text - .align 32 -ENTRY(__md5_process_block_crop) - /* %o0=buffer, %o1=len, %o2=CTX */ - ld [%o2 + 0x10], %g1 - add %g1, %o1, %o4 - st %o4, [%o2 + 0x10] - clr %o5 - cmp %o4, %g1 - movlu %icc, 1, %o5 -#ifdef __arch64__ - srlx %o1, 32, %o4 - add %o5, %o4, %o5 -#endif - ld [%o2 + 0x14], %o4 - add %o4, %o5, %o4 - st %o4, [%o2 + 0x14] - lda [%o2] ASI_PL, %f0 - add %o2, 0x4, %g1 - lda [%g1] ASI_PL, %f1 - add %o2, 0x8, %g1 - andcc %o0, 0x7, %g0 - lda [%g1] ASI_PL, %f2 - add %o2, 0xc, %g1 - bne,pn %xcc, 10f - lda [%g1] ASI_PL, %f3 - -1: - ldd [%o0 + 0x00], %f8 - ldd [%o0 + 0x08], %f10 - ldd [%o0 + 0x10], %f12 - ldd [%o0 + 0x18], %f14 - ldd [%o0 + 0x20], %f16 - ldd [%o0 + 0x28], %f18 - ldd [%o0 + 0x30], %f20 - ldd [%o0 + 0x38], %f22 - - MD5 - - subcc %o1, 64, %o1 - bne,pt %xcc, 1b - add %o0, 0x40, %o0 - -5: - sta %f0, [%o2] ASI_PL - add %o2, 0x4, %g1 - sta %f1, [%g1] ASI_PL - add %o2, 0x8, %g1 - sta %f2, [%g1] ASI_PL - add %o2, 0xc, %g1 - retl - sta %f3, [%g1] ASI_PL -10: - alignaddr %o0, %g0, %o0 - - ldd [%o0 + 0x00], %f10 -1: - ldd [%o0 + 0x08], %f12 - ldd [%o0 + 0x10], %f14 - ldd [%o0 + 0x18], %f16 - ldd [%o0 + 0x20], %f18 - ldd [%o0 + 0x28], %f20 - ldd [%o0 + 0x30], %f22 - ldd [%o0 + 0x38], %f24 - ldd [%o0 + 0x40], %f26 - - faligndata %f10, %f12, %f8 - faligndata %f12, %f14, %f10 - faligndata %f14, %f16, %f12 - faligndata %f16, %f18, %f14 - faligndata %f18, %f20, %f16 - faligndata %f20, %f22, %f18 - faligndata %f22, %f24, %f20 - faligndata %f24, %f26, %f22 - - MD5 - - subcc %o1, 64, %o1 - fsrc2 %f26, %f10 - bne,pt %xcc, 1b - add %o0, 0x40, %o0 - - ba,a,pt %xcc, 5b -END(__md5_process_block_crop) diff --git a/sysdeps/sparc/sparc64/multiarch/sha256-block.c b/sysdeps/sparc/sparc64/multiarch/sha256-block.c deleted file mode 100644 index 9d65315a5a..0000000000 --- a/sysdeps/sparc/sparc64/multiarch/sha256-block.c +++ /dev/null @@ -1,32 +0,0 @@ -#include <sparc-ifunc.h> - -#define __sha256_process_block __sha256_process_block_generic -extern void __sha256_process_block_generic (const void *buffer, size_t len, - struct sha256_ctx *ctx); - -#include <crypt/sha256-block.c> - -#undef __sha256_process_block - -extern void __sha256_process_block_crop (const void *buffer, size_t len, - struct sha256_ctx *ctx); - -static bool cpu_supports_sha256(int hwcap) -{ - unsigned long cfr; - - if (!(hwcap & HWCAP_SPARC_CRYPTO)) - return false; - - __asm__ ("rd %%asr26, %0" : "=r" (cfr)); - if (cfr & (1 << 6)) - return true; - - return false; -} - -extern void __sha256_process_block (const void *buffer, size_t len, - struct sha256_ctx *ctx); -sparc_libc_ifunc (__sha256_process_block, - cpu_supports_sha256(hwcap) ? __sha256_process_block_crop - : __sha256_process_block_generic); diff --git a/sysdeps/sparc/sparc64/multiarch/sha256-crop.S b/sysdeps/sparc/sparc64/multiarch/sha256-crop.S deleted file mode 100644 index f7d0a7e7dc..0000000000 --- a/sysdeps/sparc/sparc64/multiarch/sha256-crop.S +++ /dev/null @@ -1,100 +0,0 @@ -/* SHA256 using sparc crypto opcodes. - Copyright (C) 2012-2023 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <https://www.gnu.org/licenses/>. */ - -#include <sysdep.h> - -#define SHA256 \ - .word 0x81b02840; - - .text - .align 32 -ENTRY(__sha256_process_block_crop) - /* %o0=buffer, %o1=len, %o2=CTX */ - ldx [%o2 + 0x20], %g1 - add %g1, %o1, %g1 - stx %g1, [%o2 + 0x20] - - ld [%o2 + 0x00], %f0 - ld [%o2 + 0x04], %f1 - ld [%o2 + 0x08], %f2 - ld [%o2 + 0x0c], %f3 - ld [%o2 + 0x10], %f4 - ld [%o2 + 0x14], %f5 - andcc %o1, 0x7, %g0 - ld [%o2 + 0x18], %f6 - bne,pn %xcc, 10f - ld [%o2 + 0x1c], %f7 - -1: - ldd [%o0 + 0x00], %f8 - ldd [%o0 + 0x08], %f10 - ldd [%o0 + 0x10], %f12 - ldd [%o0 + 0x18], %f14 - ldd [%o0 + 0x20], %f16 - ldd [%o0 + 0x28], %f18 - ldd [%o0 + 0x30], %f20 - ldd [%o0 + 0x38], %f22 - - SHA256 - - subcc %o1, 0x40, %o1 - bne,pt %xcc, 1b - add %o0, 0x40, %o0 - -5: - st %f0, [%o2 + 0x00] - st %f1, [%o2 + 0x04] - st %f2, [%o2 + 0x08] - st %f3, [%o2 + 0x0c] - st %f4, [%o2 + 0x10] - st %f5, [%o2 + 0x14] - st %f6, [%o2 + 0x18] - retl - st %f7, [%o2 + 0x1c] -10: - alignaddr %o0, %g0, %o0 - - ldd [%o0 + 0x00], %f10 -1: - ldd [%o0 + 0x08], %f12 - ldd [%o0 + 0x10], %f14 - ldd [%o0 + 0x18], %f16 - ldd [%o0 + 0x20], %f18 - ldd [%o0 + 0x28], %f20 - ldd [%o0 + 0x30], %f22 - ldd [%o0 + 0x38], %f24 - ldd [%o0 + 0x40], %f26 - - faligndata %f10, %f12, %f8 - faligndata %f12, %f14, %f10 - faligndata %f14, %f16, %f12 - faligndata %f16, %f18, %f14 - faligndata %f18, %f20, %f16 - faligndata %f20, %f22, %f18 - faligndata %f22, %f24, %f20 - faligndata %f24, %f26, %f22 - - SHA256 - - subcc %o1, 0x40, %o1 - fsrc2 %f26, %f10 - bne,pt %xcc, 1b - add %o0, 0x40, %o0 - - ba,a,pt %xcc, 5b -END(__sha256_process_block_crop) diff --git a/sysdeps/sparc/sparc64/multiarch/sha512-block.c b/sysdeps/sparc/sparc64/multiarch/sha512-block.c deleted file mode 100644 index 2863e05d09..0000000000 --- a/sysdeps/sparc/sparc64/multiarch/sha512-block.c +++ /dev/null @@ -1,32 +0,0 @@ -#include <sparc-ifunc.h> - -#define __sha512_process_block __sha512_process_block_generic -extern void __sha512_process_block_generic (const void *buffer, size_t len, - struct sha512_ctx *ctx); - -#include <crypt/sha512-block.c> - -#undef __sha512_process_block - -extern void __sha512_process_block_crop (const void *buffer, size_t len, - struct sha512_ctx *ctx); - -static bool cpu_supports_sha512(int hwcap) -{ - unsigned long cfr; - - if (!(hwcap & HWCAP_SPARC_CRYPTO)) - return false; - - __asm__ ("rd %%asr26, %0" : "=r" (cfr)); - if (cfr & (1 << 6)) - return true; - - return false; -} - -extern void __sha512_process_block (const void *buffer, size_t len, - struct sha512_ctx *ctx); -sparc_libc_ifunc (__sha512_process_block, - cpu_supports_sha512(hwcap) ? __sha512_process_block_crop - : __sha512_process_block_generic); diff --git a/sysdeps/sparc/sparc64/multiarch/sha512-crop.S b/sysdeps/sparc/sparc64/multiarch/sha512-crop.S deleted file mode 100644 index 035f99f469..0000000000 --- a/sysdeps/sparc/sparc64/multiarch/sha512-crop.S +++ /dev/null @@ -1,130 +0,0 @@ -/* SHA512 using sparc crypto opcodes. - Copyright (C) 2012-2023 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <https://www.gnu.org/licenses/>. */ - -#include <sysdep.h> - -#define SHA512 \ - .word 0x81b02860; - - .text - .align 32 -ENTRY(__sha512_process_block_crop) - /* %o0=buffer, %o1=len, %o2=CTX */ - ldx [%o2 + 0x48], %g1 - add %g1, %o1, %o4 - stx %o4, [%o2 + 0x48] - cmp %o4, %g1 - bgeu,pt %xcc, 1f - nop - ldx [%o2 + 0x40], %g1 - add %g1, 1, %g1 - stx %g1, [%o2 + 0x40] - -1: ldd [%o2 + 0x00], %f0 - ldd [%o2 + 0x08], %f2 - ldd [%o2 + 0x10], %f4 - ldd [%o2 + 0x18], %f6 - ldd [%o2 + 0x20], %f8 - ldd [%o2 + 0x28], %f10 - andcc %o1, 0x7, %g0 - ldd [%o2 + 0x30], %f12 - bne,pn %xcc, 10f - ldd [%o2 + 0x38], %f14 - -1: - ldd [%o0 + 0x00], %f16 - ldd [%o0 + 0x08], %f18 - ldd [%o0 + 0x10], %f20 - ldd [%o0 + 0x18], %f22 - ldd [%o0 + 0x20], %f24 - ldd [%o0 + 0x28], %f26 - ldd [%o0 + 0x30], %f28 - ldd [%o0 + 0x38], %f30 - ldd [%o0 + 0x40], %f32 - ldd [%o0 + 0x48], %f34 - ldd [%o0 + 0x50], %f36 - ldd [%o0 + 0x58], %f38 - ldd [%o0 + 0x60], %f40 - ldd [%o0 + 0x68], %f42 - ldd [%o0 + 0x70], %f44 - ldd [%o0 + 0x78], %f46 - - SHA512 - - subcc %o1, 0x80, %o1 - bne,pt %xcc, 1b - add %o0, 0x80, %o0 - -5: - std %f0, [%o2 + 0x00] - std %f2, [%o2 + 0x08] - std %f4, [%o2 + 0x10] - std %f6, [%o2 + 0x18] - std %f8, [%o2 + 0x20] - std %f10, [%o2 + 0x28] - std %f12, [%o2 + 0x30] - retl - std %f14, [%o2 + 0x38] -10: - alignaddr %o0, %g0, %o0 - - ldd [%o0 + 0x00], %f18 -1: - ldd [%o0 + 0x08], %f20 - ldd [%o0 + 0x10], %f22 - ldd [%o0 + 0x18], %f24 - ldd [%o0 + 0x20], %f26 - ldd [%o0 + 0x28], %f28 - ldd [%o0 + 0x30], %f30 - ldd [%o0 + 0x38], %f32 - ldd [%o0 + 0x40], %f34 - ldd [%o0 + 0x48], %f36 - ldd [%o0 + 0x50], %f38 - ldd [%o0 + 0x58], %f40 - ldd [%o0 + 0x60], %f42 - ldd [%o0 + 0x68], %f44 - ldd [%o0 + 0x70], %f46 - ldd [%o0 + 0x78], %f48 - ldd [%o0 + 0x80], %f50 - - faligndata %f18, %f20, %f16 - faligndata %f20, %f22, %f18 - faligndata %f22, %f24, %f20 - faligndata %f24, %f26, %f22 - faligndata %f26, %f28, %f24 - faligndata %f28, %f30, %f26 - faligndata %f30, %f32, %f28 - faligndata %f32, %f34, %f30 - faligndata %f34, %f36, %f32 - faligndata %f36, %f38, %f34 - faligndata %f38, %f40, %f36 - faligndata %f40, %f42, %f38 - faligndata %f42, %f44, %f40 - faligndata %f44, %f46, %f42 - faligndata %f46, %f48, %f44 - faligndata %f48, %f50, %f46 - - SHA512 - - subcc %o1, 0x80, %o1 - fsrc2 %f50, %f18 - bne,pt %xcc, 1b - add %o0, 0x80, %o0 - - ba,a,pt %xcc, 5b -END(__sha512_process_block_crop)