1775e0c69SDavid S. Miller#include <linux/linkage.h> 2775e0c69SDavid S. Miller#include <asm/visasm.h> 3775e0c69SDavid S. Miller 47cff82f5SDavid S. Miller#include "opcodes.h" 57cff82f5SDavid S. Miller 6775e0c69SDavid S. MillerENTRY(sha512_sparc64_transform) 7775e0c69SDavid S. Miller /* %o0 = digest, %o1 = data, %o2 = rounds */ 8775e0c69SDavid S. Miller VISEntry 9775e0c69SDavid S. Miller ldd [%o0 + 0x00], %f0 10775e0c69SDavid S. Miller ldd [%o0 + 0x08], %f2 11775e0c69SDavid S. Miller ldd [%o0 + 0x10], %f4 12775e0c69SDavid S. Miller ldd [%o0 + 0x18], %f6 13775e0c69SDavid S. Miller ldd [%o0 + 0x20], %f8 14775e0c69SDavid S. Miller ldd [%o0 + 0x28], %f10 15775e0c69SDavid S. Miller andcc %o1, 0x7, %g0 16775e0c69SDavid S. Miller ldd [%o0 + 0x30], %f12 17775e0c69SDavid S. Miller bne,pn %xcc, 10f 18775e0c69SDavid S. Miller ldd [%o0 + 0x38], %f14 19775e0c69SDavid S. Miller 20775e0c69SDavid S. Miller1: 21775e0c69SDavid S. Miller ldd [%o1 + 0x00], %f16 22775e0c69SDavid S. Miller ldd [%o1 + 0x08], %f18 23775e0c69SDavid S. Miller ldd [%o1 + 0x10], %f20 24775e0c69SDavid S. Miller ldd [%o1 + 0x18], %f22 25775e0c69SDavid S. Miller ldd [%o1 + 0x20], %f24 26775e0c69SDavid S. Miller ldd [%o1 + 0x28], %f26 27775e0c69SDavid S. Miller ldd [%o1 + 0x30], %f28 28775e0c69SDavid S. Miller ldd [%o1 + 0x38], %f30 29775e0c69SDavid S. Miller ldd [%o1 + 0x40], %f32 30775e0c69SDavid S. Miller ldd [%o1 + 0x48], %f34 31775e0c69SDavid S. Miller ldd [%o1 + 0x50], %f36 32775e0c69SDavid S. Miller ldd [%o1 + 0x58], %f38 33775e0c69SDavid S. Miller ldd [%o1 + 0x60], %f40 34775e0c69SDavid S. Miller ldd [%o1 + 0x68], %f42 35775e0c69SDavid S. Miller ldd [%o1 + 0x70], %f44 36775e0c69SDavid S. Miller ldd [%o1 + 0x78], %f46 37775e0c69SDavid S. Miller 387cff82f5SDavid S. Miller SHA512 39775e0c69SDavid S. Miller 40775e0c69SDavid S. Miller subcc %o2, 1, %o2 41775e0c69SDavid S. Miller bne,pt %xcc, 1b 42775e0c69SDavid S. Miller add %o1, 0x80, %o1 43775e0c69SDavid S. Miller 44775e0c69SDavid S. Miller5: 45775e0c69SDavid S. Miller std %f0, [%o0 + 0x00] 46775e0c69SDavid S. Miller std %f2, [%o0 + 0x08] 47775e0c69SDavid S. Miller std %f4, [%o0 + 0x10] 48775e0c69SDavid S. Miller std %f6, [%o0 + 0x18] 49775e0c69SDavid S. Miller std %f8, [%o0 + 0x20] 50775e0c69SDavid S. Miller std %f10, [%o0 + 0x28] 51775e0c69SDavid S. Miller std %f12, [%o0 + 0x30] 52775e0c69SDavid S. Miller std %f14, [%o0 + 0x38] 53775e0c69SDavid S. Miller retl 54775e0c69SDavid S. Miller VISExit 55775e0c69SDavid S. Miller10: 56775e0c69SDavid S. Miller alignaddr %o1, %g0, %o1 57775e0c69SDavid S. Miller 58775e0c69SDavid S. Miller ldd [%o1 + 0x00], %f18 59775e0c69SDavid S. Miller1: 60775e0c69SDavid S. Miller ldd [%o1 + 0x08], %f20 61775e0c69SDavid S. Miller ldd [%o1 + 0x10], %f22 62775e0c69SDavid S. Miller ldd [%o1 + 0x18], %f24 63775e0c69SDavid S. Miller ldd [%o1 + 0x20], %f26 64775e0c69SDavid S. Miller ldd [%o1 + 0x28], %f28 65775e0c69SDavid S. Miller ldd [%o1 + 0x30], %f30 66775e0c69SDavid S. Miller ldd [%o1 + 0x38], %f32 67775e0c69SDavid S. Miller ldd [%o1 + 0x40], %f34 68775e0c69SDavid S. Miller ldd [%o1 + 0x48], %f36 69775e0c69SDavid S. Miller ldd [%o1 + 0x50], %f38 70775e0c69SDavid S. Miller ldd [%o1 + 0x58], %f40 71775e0c69SDavid S. Miller ldd [%o1 + 0x60], %f42 72775e0c69SDavid S. Miller ldd [%o1 + 0x68], %f44 73775e0c69SDavid S. Miller ldd [%o1 + 0x70], %f46 74775e0c69SDavid S. Miller ldd [%o1 + 0x78], %f48 75775e0c69SDavid S. Miller ldd [%o1 + 0x80], %f50 76775e0c69SDavid S. Miller 77775e0c69SDavid S. Miller faligndata %f18, %f20, %f16 78775e0c69SDavid S. Miller faligndata %f20, %f22, %f18 79775e0c69SDavid S. Miller faligndata %f22, %f24, %f20 80775e0c69SDavid S. Miller faligndata %f24, %f26, %f22 81775e0c69SDavid S. Miller faligndata %f26, %f28, %f24 82775e0c69SDavid S. Miller faligndata %f28, %f30, %f26 83775e0c69SDavid S. Miller faligndata %f30, %f32, %f28 84775e0c69SDavid S. Miller faligndata %f32, %f34, %f30 85775e0c69SDavid S. Miller faligndata %f34, %f36, %f32 86775e0c69SDavid S. Miller faligndata %f36, %f38, %f34 87775e0c69SDavid S. Miller faligndata %f38, %f40, %f36 88775e0c69SDavid S. Miller faligndata %f40, %f42, %f38 89775e0c69SDavid S. Miller faligndata %f42, %f44, %f40 90775e0c69SDavid S. Miller faligndata %f44, %f46, %f42 91775e0c69SDavid S. Miller faligndata %f46, %f48, %f44 92775e0c69SDavid S. Miller faligndata %f48, %f50, %f46 93775e0c69SDavid S. Miller 947cff82f5SDavid S. Miller SHA512 95775e0c69SDavid S. Miller 96775e0c69SDavid S. Miller subcc %o2, 1, %o2 9745dfe237SDavid S. Miller fsrc2 %f50, %f18 98775e0c69SDavid S. Miller bne,pt %xcc, 1b 99775e0c69SDavid S. Miller add %o1, 0x80, %o1 100775e0c69SDavid S. Miller 101775e0c69SDavid S. Miller ba,a,pt %xcc, 5b 102775e0c69SDavid S. MillerENDPROC(sha512_sparc64_transform) 103