1 #include <linux/linkage.h>
3 # enter salsa20_encrypt_bytes
4 ENTRY(salsa20_encrypt_bytes)
17 # unsigned>? bytes - 0
19 # comment:fp stack unchanged by jump
20 # goto done if !unsigned>
22 # comment:fp stack unchanged by fallthrough
39 # in0 = *(uint64 *) (x + 0)
41 # in2 = *(uint64 *) (x + 8)
43 # in4 = *(uint64 *) (x + 16)
45 # in6 = *(uint64 *) (x + 24)
47 # in8 = *(uint64 *) (x + 32)
49 # in10 = *(uint64 *) (x + 40)
51 # in12 = *(uint64 *) (x + 48)
53 # in14 = *(uint64 *) (x + 56)
75 # unsigned<? bytes - 64
77 # comment:fp stack unchanged by jump
78 # goto nocopy if !unsigned<
86 # while (i) { *out++ = *m++; --i }
92 # comment:fp stack unchanged by fallthrough
99 # bytes_backup = bytes
139 # (uint64) x11 >>= 32
145 # (uint64) x13 >>= 32
151 # (uint64) x15 >>= 32
597 # comment:fp stack unchanged by jump
598 # goto mainloop if unsigned>
636 # (uint32) x12 += j12
642 # (uint64) x13 >>= 32
676 # (uint32) x10 += j10
682 # (uint64) x11 >>= 32
690 # (uint32) x14 += j14
696 # (uint64) x15 >>= 32
706 # x0 ^= *(uint64 *) (m + 0)
708 # *(uint64 *) (out + 0) = x0
710 # x2 ^= *(uint64 *) (m + 8)
712 # *(uint64 *) (out + 8) = x2
714 # x4 ^= *(uint64 *) (m + 16)
716 # *(uint64 *) (out + 16) = x4
718 # x6 ^= *(uint64 *) (m + 24)
720 # *(uint64 *) (out + 24) = x6
722 # x8 ^= *(uint64 *) (m + 32)
724 # *(uint64 *) (out + 32) = x8
726 # x10 ^= *(uint64 *) (m + 40)
728 # *(uint64 *) (out + 40) = x10
730 # x12 ^= *(uint64 *) (m + 48)
732 # *(uint64 *) (out + 48) = x12
734 # x14 ^= *(uint64 *) (m + 56)
736 # *(uint64 *) (out + 56) = x14
738 # bytes = bytes_backup
746 # unsigned>? unsigned<? bytes - 64
748 # comment:fp stack unchanged by jump
749 # goto bytesatleast65 if unsigned>
751 # comment:fp stack unchanged by jump
752 # goto bytesatleast64 if !unsigned<
760 # while (i) { *out++ = *m++; --i }
762 # comment:fp stack unchanged by fallthrough
769 # *(uint64 *) (x + 32) = in8
785 # comment:fp stack unchanged by fallthrough
801 # comment:fp stack unchanged by jump
804 ENDPROC(salsa20_encrypt_bytes)
806 # enter salsa20_keysetup
807 ENTRY(salsa20_keysetup)
818 # in0 = *(uint64 *) (k + 0)
820 # in2 = *(uint64 *) (k + 8)
822 # *(uint64 *) (x + 4) = in0
824 # *(uint64 *) (x + 12) = in2
826 # unsigned<? kbits - 256
828 # comment:fp stack unchanged by jump
829 # goto kbits128 if unsigned<
833 # in10 = *(uint64 *) (k + 16)
835 # in12 = *(uint64 *) (k + 24)
837 # *(uint64 *) (x + 44) = in10
839 # *(uint64 *) (x + 52) = in12
849 # *(uint32 *) (x + 0) = in0
851 # *(uint32 *) (x + 20) = in4
853 # *(uint32 *) (x + 40) = in10
855 # *(uint32 *) (x + 60) = in14
857 # comment:fp stack unchanged by jump
862 # in10 = *(uint64 *) (k + 0)
864 # in12 = *(uint64 *) (k + 8)
866 # *(uint64 *) (x + 44) = in10
868 # *(uint64 *) (x + 52) = in12
878 # *(uint32 *) (x + 0) = in0
880 # *(uint32 *) (x + 20) = in4
882 # *(uint32 *) (x + 40) = in10
884 # *(uint32 *) (x + 60) = in14
893 ENDPROC(salsa20_keysetup)
895 # enter salsa20_ivsetup
896 ENTRY(salsa20_ivsetup)
905 # in6 = *(uint64 *) (iv + 0)
909 # *(uint64 *) (x + 24) = in6
911 # *(uint64 *) (x + 32) = in8
918 ENDPROC(salsa20_ivsetup)