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(sha256_sparc64_transform)
0008     /* %o0 = digest, %o1 = data, %o2 = rounds */
0009     VISEntryHalf
0010     ld  [%o0 + 0x00], %f0
0011     ld  [%o0 + 0x04], %f1
0012     ld  [%o0 + 0x08], %f2
0013     ld  [%o0 + 0x0c], %f3
0014     ld  [%o0 + 0x10], %f4
0015     ld  [%o0 + 0x14], %f5
0016     andcc   %o1, 0x7, %g0
0017     ld  [%o0 + 0x18], %f6
0018     bne,pn  %xcc, 10f
0019      ld [%o0 + 0x1c], %f7
0020 
0021 1:
0022     ldd [%o1 + 0x00], %f8
0023     ldd [%o1 + 0x08], %f10
0024     ldd [%o1 + 0x10], %f12
0025     ldd [%o1 + 0x18], %f14
0026     ldd [%o1 + 0x20], %f16
0027     ldd [%o1 + 0x28], %f18
0028     ldd [%o1 + 0x30], %f20
0029     ldd [%o1 + 0x38], %f22
0030 
0031     SHA256
0032 
0033     subcc   %o2, 1, %o2
0034     bne,pt  %xcc, 1b
0035      add    %o1, 0x40, %o1
0036 
0037 5:
0038     st  %f0, [%o0 + 0x00]
0039     st  %f1, [%o0 + 0x04]
0040     st  %f2, [%o0 + 0x08]
0041     st  %f3, [%o0 + 0x0c]
0042     st  %f4, [%o0 + 0x10]
0043     st  %f5, [%o0 + 0x14]
0044     st  %f6, [%o0 + 0x18]
0045     st  %f7, [%o0 + 0x1c]
0046     retl
0047      VISExitHalf
0048 10:
0049     alignaddr %o1, %g0, %o1
0050 
0051     ldd [%o1 + 0x00], %f10
0052 1:
0053     ldd [%o1 + 0x08], %f12
0054     ldd [%o1 + 0x10], %f14
0055     ldd [%o1 + 0x18], %f16
0056     ldd [%o1 + 0x20], %f18
0057     ldd [%o1 + 0x28], %f20
0058     ldd [%o1 + 0x30], %f22
0059     ldd [%o1 + 0x38], %f24
0060     ldd [%o1 + 0x40], %f26
0061 
0062     faligndata %f10, %f12, %f8
0063     faligndata %f12, %f14, %f10
0064     faligndata %f14, %f16, %f12
0065     faligndata %f16, %f18, %f14
0066     faligndata %f18, %f20, %f16
0067     faligndata %f20, %f22, %f18
0068     faligndata %f22, %f24, %f20
0069     faligndata %f24, %f26, %f22
0070 
0071     SHA256
0072 
0073     subcc   %o2, 1, %o2
0074     fsrc2   %f26, %f10
0075     bne,pt  %xcc, 1b
0076      add    %o1, 0x40, %o1
0077 
0078     ba,a,pt %xcc, 5b
0079 ENDPROC(sha256_sparc64_transform)