18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#include <linux/linkage.h> 38c2ecf20Sopenharmony_ci#include <asm/visasm.h> 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#include "opcodes.h" 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ciENTRY(sha512_sparc64_transform) 88c2ecf20Sopenharmony_ci /* %o0 = digest, %o1 = data, %o2 = rounds */ 98c2ecf20Sopenharmony_ci VISEntry 108c2ecf20Sopenharmony_ci ldd [%o0 + 0x00], %f0 118c2ecf20Sopenharmony_ci ldd [%o0 + 0x08], %f2 128c2ecf20Sopenharmony_ci ldd [%o0 + 0x10], %f4 138c2ecf20Sopenharmony_ci ldd [%o0 + 0x18], %f6 148c2ecf20Sopenharmony_ci ldd [%o0 + 0x20], %f8 158c2ecf20Sopenharmony_ci ldd [%o0 + 0x28], %f10 168c2ecf20Sopenharmony_ci andcc %o1, 0x7, %g0 178c2ecf20Sopenharmony_ci ldd [%o0 + 0x30], %f12 188c2ecf20Sopenharmony_ci bne,pn %xcc, 10f 198c2ecf20Sopenharmony_ci ldd [%o0 + 0x38], %f14 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci1: 228c2ecf20Sopenharmony_ci ldd [%o1 + 0x00], %f16 238c2ecf20Sopenharmony_ci ldd [%o1 + 0x08], %f18 248c2ecf20Sopenharmony_ci ldd [%o1 + 0x10], %f20 258c2ecf20Sopenharmony_ci ldd [%o1 + 0x18], %f22 268c2ecf20Sopenharmony_ci ldd [%o1 + 0x20], %f24 278c2ecf20Sopenharmony_ci ldd [%o1 + 0x28], %f26 288c2ecf20Sopenharmony_ci ldd [%o1 + 0x30], %f28 298c2ecf20Sopenharmony_ci ldd [%o1 + 0x38], %f30 308c2ecf20Sopenharmony_ci ldd [%o1 + 0x40], %f32 318c2ecf20Sopenharmony_ci ldd [%o1 + 0x48], %f34 328c2ecf20Sopenharmony_ci ldd [%o1 + 0x50], %f36 338c2ecf20Sopenharmony_ci ldd [%o1 + 0x58], %f38 348c2ecf20Sopenharmony_ci ldd [%o1 + 0x60], %f40 358c2ecf20Sopenharmony_ci ldd [%o1 + 0x68], %f42 368c2ecf20Sopenharmony_ci ldd [%o1 + 0x70], %f44 378c2ecf20Sopenharmony_ci ldd [%o1 + 0x78], %f46 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci SHA512 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci subcc %o2, 1, %o2 428c2ecf20Sopenharmony_ci bne,pt %xcc, 1b 438c2ecf20Sopenharmony_ci add %o1, 0x80, %o1 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci5: 468c2ecf20Sopenharmony_ci std %f0, [%o0 + 0x00] 478c2ecf20Sopenharmony_ci std %f2, [%o0 + 0x08] 488c2ecf20Sopenharmony_ci std %f4, [%o0 + 0x10] 498c2ecf20Sopenharmony_ci std %f6, [%o0 + 0x18] 508c2ecf20Sopenharmony_ci std %f8, [%o0 + 0x20] 518c2ecf20Sopenharmony_ci std %f10, [%o0 + 0x28] 528c2ecf20Sopenharmony_ci std %f12, [%o0 + 0x30] 538c2ecf20Sopenharmony_ci std %f14, [%o0 + 0x38] 548c2ecf20Sopenharmony_ci retl 558c2ecf20Sopenharmony_ci VISExit 568c2ecf20Sopenharmony_ci10: 578c2ecf20Sopenharmony_ci alignaddr %o1, %g0, %o1 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ci ldd [%o1 + 0x00], %f18 608c2ecf20Sopenharmony_ci1: 618c2ecf20Sopenharmony_ci ldd [%o1 + 0x08], %f20 628c2ecf20Sopenharmony_ci ldd [%o1 + 0x10], %f22 638c2ecf20Sopenharmony_ci ldd [%o1 + 0x18], %f24 648c2ecf20Sopenharmony_ci ldd [%o1 + 0x20], %f26 658c2ecf20Sopenharmony_ci ldd [%o1 + 0x28], %f28 668c2ecf20Sopenharmony_ci ldd [%o1 + 0x30], %f30 678c2ecf20Sopenharmony_ci ldd [%o1 + 0x38], %f32 688c2ecf20Sopenharmony_ci ldd [%o1 + 0x40], %f34 698c2ecf20Sopenharmony_ci ldd [%o1 + 0x48], %f36 708c2ecf20Sopenharmony_ci ldd [%o1 + 0x50], %f38 718c2ecf20Sopenharmony_ci ldd [%o1 + 0x58], %f40 728c2ecf20Sopenharmony_ci ldd [%o1 + 0x60], %f42 738c2ecf20Sopenharmony_ci ldd [%o1 + 0x68], %f44 748c2ecf20Sopenharmony_ci ldd [%o1 + 0x70], %f46 758c2ecf20Sopenharmony_ci ldd [%o1 + 0x78], %f48 768c2ecf20Sopenharmony_ci ldd [%o1 + 0x80], %f50 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_ci faligndata %f18, %f20, %f16 798c2ecf20Sopenharmony_ci faligndata %f20, %f22, %f18 808c2ecf20Sopenharmony_ci faligndata %f22, %f24, %f20 818c2ecf20Sopenharmony_ci faligndata %f24, %f26, %f22 828c2ecf20Sopenharmony_ci faligndata %f26, %f28, %f24 838c2ecf20Sopenharmony_ci faligndata %f28, %f30, %f26 848c2ecf20Sopenharmony_ci faligndata %f30, %f32, %f28 858c2ecf20Sopenharmony_ci faligndata %f32, %f34, %f30 868c2ecf20Sopenharmony_ci faligndata %f34, %f36, %f32 878c2ecf20Sopenharmony_ci faligndata %f36, %f38, %f34 888c2ecf20Sopenharmony_ci faligndata %f38, %f40, %f36 898c2ecf20Sopenharmony_ci faligndata %f40, %f42, %f38 908c2ecf20Sopenharmony_ci faligndata %f42, %f44, %f40 918c2ecf20Sopenharmony_ci faligndata %f44, %f46, %f42 928c2ecf20Sopenharmony_ci faligndata %f46, %f48, %f44 938c2ecf20Sopenharmony_ci faligndata %f48, %f50, %f46 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_ci SHA512 968c2ecf20Sopenharmony_ci 978c2ecf20Sopenharmony_ci subcc %o2, 1, %o2 988c2ecf20Sopenharmony_ci fsrc2 %f50, %f18 998c2ecf20Sopenharmony_ci bne,pt %xcc, 1b 1008c2ecf20Sopenharmony_ci add %o1, 0x80, %o1 1018c2ecf20Sopenharmony_ci 1028c2ecf20Sopenharmony_ci ba,a,pt %xcc, 5b 1038c2ecf20Sopenharmony_ciENDPROC(sha512_sparc64_transform) 104