0001
0002 #include <linux/linkage.h>
0003 #include <asm/visasm.h>
0004
0005 #include "opcodes.h"
0006
0007 ENTRY(sha512_sparc64_transform)
0008
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)