From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.gentoo.org (mail.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) by sourceware.org (Postfix) with ESMTP id CADC93858D28 for ; Mon, 17 Jul 2023 17:31:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CADC93858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gentoo.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gentoo.org References: <20230717144859.2299315-1-adhemerval.zanella@linaro.org> <87sf9mbmyz.fsf@gentoo.org> User-agent: mu4e 1.10.4; emacs 29.0.92 From: Sam James To: Adhemerval Zanella Netto Cc: Sam James , libc-alpha@sourceware.org Subject: Re: [PATCH] sparc: Remove optimize md5, sha256, and sha512 Date: Mon, 17 Jul 2023 18:31:07 +0100 In-reply-to: Message-ID: <877cqybg1v.fsf@gentoo.org> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,GIT_PATCH_0,JMQ_SPF_NEUTRAL,KAM_DMARC_STATUS,KAM_NUMSUBJECT,KAM_SHORT,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Adhemerval Zanella Netto writes: > On 17/07/23 12:01, Sam James wrote: >>=20 >> Adhemerval Zanella via Libc-alpha writes: >>=20 >>> 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. >>> >>=20 >> 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.=20 > 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. >>=20 >>> 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-bloc= k.c >>> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop= .S >>> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-bloc= k.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 +=3D md5-crop sha256-crop sha512-crop >>> -endif >>> - >>> -ifeq ($(subdir),locale) >>> -localedef-aux +=3D md5-crop >>> -endif >>> - >>> ifeq ($(subdir),string) >>> sysdep_routines +=3D memcpy-ultra3 memcpy-niagara1 memcpy-niagara2 \ >>> memset-niagara1 memcpy-niagara4 memset-niagara4 \ >>> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-block.c b/sysd= eps/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 >>> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/md5-crop.S b/sysde= ps/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 >>> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-block.c b/s= ysdeps/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 >>> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha256-crop.S b/sy= sdeps/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 >>> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-block.c b/s= ysdeps/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 >>> diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/sha512-crop.S b/sy= sdeps/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 >>> diff --git a/sysdeps/sparc/sparc64/multiarch/Makefile b/sysdeps/sparc/s= parc64/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 +=3D md5-crop sha256-crop sha512-crop >>> -endif >>> - >>> -ifeq ($(subdir),locale) >>> -localedef-aux +=3D md5-crop >>> -endif >>> - >>> ifeq ($(subdir),string) >>> sysdep_routines +=3D memcpy-ultra3 memcpy-niagara1 memcpy-niagara2 \ >>> memset-niagara1 memcpy-niagara4 memset-niagara4 \ >>> diff --git a/sysdeps/sparc/sparc64/multiarch/md5-block.c b/sysdeps/spar= c/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 >>> - >>> -#define __md5_process_block __md5_process_block_generic >>> -extern void __md5_process_block_generic (const void *buffer, size_t le= n, >>> - struct md5_ctx *ctx); >>> - >>> -#include >>> - >>> -#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" : "=3Dr" (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 >>> - . */ >>> - >>> -#include >>> - >>> -#define ASI_PL 0x88 >>> - >>> -#define MD5 \ >>> - .word 0x81b02800; >>> - >>> - .text >>> - .align 32 >>> -ENTRY(__md5_process_block_crop) >>> - /* %o0=3Dbuffer, %o1=3Dlen, %o2=3DCTX */ >>> - 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/s= parc/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 >>> - >>> -#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 >>> - >>> -#undef __sha256_process_block >>> - >>> -extern void __sha256_process_block_crop (const void *buffer, size_t le= n, >>> - 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" : "=3Dr" (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/sp= arc/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 >>> - . */ >>> - >>> -#include >>> - >>> -#define SHA256 \ >>> - .word 0x81b02840; >>> - >>> - .text >>> - .align 32 >>> -ENTRY(__sha256_process_block_crop) >>> - /* %o0=3Dbuffer, %o1=3Dlen, %o2=3DCTX */ >>> - 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/s= parc/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 >>> - >>> -#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 >>> - >>> -#undef __sha512_process_block >>> - >>> -extern void __sha512_process_block_crop (const void *buffer, size_t le= n, >>> - 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" : "=3Dr" (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/sp= arc/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 >>> - . */ >>> - >>> -#include >>> - >>> -#define SHA512 \ >>> - .word 0x81b02860; >>> - >>> - .text >>> - .align 32 >>> -ENTRY(__sha512_process_block_crop) >>> - /* %o0=3Dbuffer, %o1=3Dlen, %o2=3DCTX */ >>> - 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) >>=20 --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iOUEARYKAI0WIQQlpruI3Zt2TGtVQcJzhAn1IN+RkAUCZLV6/F8UgAAAAAAuAChp c3N1ZXItZnByQG5vdGF0aW9ucy5vcGVucGdwLmZpZnRoaG9yc2VtYW4ubmV0MjVB NkJCODhERDlCNzY0QzZCNTU0MUMyNzM4NDA5RjUyMERGOTE5MA8cc2FtQGdlbnRv by5vcmcACgkQc4QJ9SDfkZB+egEA3kcyq0V1P/uOXYiznuruHC5ciSl5Fu+emIdB gMInwU8A/iG+8OL9r13bJqCEjORcGEM2eKizOrngjK3fvAvFHM0H =iezx -----END PGP SIGNATURE----- --=-=-=--