Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #include <linux/linkage.h>
0003 #include <asm/visasm.h>
0004 
0005 #include "opcodes.h"
0006 
0007 ENTRY(sha512_sparc64_transform)
0008     /* %o0 = digest, %o1 = data, %o2 = rounds */
0009     VISEntry
0010     ldd [%o0 + 0x00], %f0
0011     ldd [%o0 + 0x08], %f2
0012     ldd [%o0 + 0x10], %f4
0013     ldd [%o0 + 0x18], %f6
0014     ldd [%o0 + 0x20], %f8
0015     ldd [%o0 + 0x28], %f10
0016     andcc   %o1, 0x7, %g0
0017     ldd [%o0 + 0x30], %f12
0018     bne,pn  %xcc, 10f
0019      ldd    [%o0 + 0x38], %f14
0020 
0021 1:
0022     ldd [%o1 + 0x00], %f16
0023     ldd [%o1 + 0x08], %f18
0024     ldd [%o1 + 0x10], %f20
0025     ldd [%o1 + 0x18], %f22
0026     ldd [%o1 + 0x20], %f24
0027     ldd [%o1 + 0x28], %f26
0028     ldd [%o1 + 0x30], %f28
0029     ldd [%o1 + 0x38], %f30
0030     ldd [%o1 + 0x40], %f32
0031     ldd [%o1 + 0x48], %f34
0032     ldd [%o1 + 0x50], %f36
0033     ldd [%o1 + 0x58], %f38
0034     ldd [%o1 + 0x60], %f40
0035     ldd [%o1 + 0x68], %f42
0036     ldd [%o1 + 0x70], %f44
0037     ldd [%o1 + 0x78], %f46
0038 
0039     SHA512
0040 
0041     subcc   %o2, 1, %o2
0042     bne,pt  %xcc, 1b
0043      add    %o1, 0x80, %o1
0044 
0045 5:
0046     std %f0, [%o0 + 0x00]
0047     std %f2, [%o0 + 0x08]
0048     std %f4, [%o0 + 0x10]
0049     std %f6, [%o0 + 0x18]
0050     std %f8, [%o0 + 0x20]
0051     std %f10, [%o0 + 0x28]
0052     std %f12, [%o0 + 0x30]
0053     std %f14, [%o0 + 0x38]
0054     retl
0055      VISExit
0056 10:
0057     alignaddr %o1, %g0, %o1
0058 
0059     ldd [%o1 + 0x00], %f18
0060 1:
0061     ldd [%o1 + 0x08], %f20
0062     ldd [%o1 + 0x10], %f22
0063     ldd [%o1 + 0x18], %f24
0064     ldd [%o1 + 0x20], %f26
0065     ldd [%o1 + 0x28], %f28
0066     ldd [%o1 + 0x30], %f30
0067     ldd [%o1 + 0x38], %f32
0068     ldd [%o1 + 0x40], %f34
0069     ldd [%o1 + 0x48], %f36
0070     ldd [%o1 + 0x50], %f38
0071     ldd [%o1 + 0x58], %f40
0072     ldd [%o1 + 0x60], %f42
0073     ldd [%o1 + 0x68], %f44
0074     ldd [%o1 + 0x70], %f46
0075     ldd [%o1 + 0x78], %f48
0076     ldd [%o1 + 0x80], %f50
0077 
0078     faligndata %f18, %f20, %f16
0079     faligndata %f20, %f22, %f18
0080     faligndata %f22, %f24, %f20
0081     faligndata %f24, %f26, %f22
0082     faligndata %f26, %f28, %f24
0083     faligndata %f28, %f30, %f26
0084     faligndata %f30, %f32, %f28
0085     faligndata %f32, %f34, %f30
0086     faligndata %f34, %f36, %f32
0087     faligndata %f36, %f38, %f34
0088     faligndata %f38, %f40, %f36
0089     faligndata %f40, %f42, %f38
0090     faligndata %f42, %f44, %f40
0091     faligndata %f44, %f46, %f42
0092     faligndata %f46, %f48, %f44
0093     faligndata %f48, %f50, %f46
0094 
0095     SHA512
0096 
0097     subcc   %o2, 1, %o2
0098     fsrc2   %f50, %f18
0099     bne,pt  %xcc, 1b
0100      add    %o1, 0x80, %o1
0101 
0102     ba,a,pt %xcc, 5b
0103 ENDPROC(sha512_sparc64_transform)