| .. | .. |
|---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-or-later */ |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * x86_64/AVX2 assembler optimized version of Serpent |
|---|
| 3 | 4 | * |
|---|
| .. | .. |
|---|
| 6 | 7 | * Based on AVX assembler implementation of Serpent by: |
|---|
| 7 | 8 | * Copyright © 2012 Johannes Goetzfried |
|---|
| 8 | 9 | * <Johannes.Goetzfried@informatik.stud.uni-erlangen.de> |
|---|
| 9 | | - * |
|---|
| 10 | | - * This program is free software; you can redistribute it and/or modify |
|---|
| 11 | | - * it under the terms of the GNU General Public License as published by |
|---|
| 12 | | - * the Free Software Foundation; either version 2 of the License, or |
|---|
| 13 | | - * (at your option) any later version. |
|---|
| 14 | | - * |
|---|
| 15 | 10 | */ |
|---|
| 16 | 11 | |
|---|
| 17 | 12 | #include <linux/linkage.h> |
|---|
| .. | .. |
|---|
| 566 | 561 | transpose_4x4(x0, x1, x2, x3, t0, t1, t2) |
|---|
| 567 | 562 | |
|---|
| 568 | 563 | .align 8 |
|---|
| 569 | | -__serpent_enc_blk16: |
|---|
| 564 | +SYM_FUNC_START_LOCAL(__serpent_enc_blk16) |
|---|
| 570 | 565 | /* input: |
|---|
| 571 | 566 | * %rdi: ctx, CTX |
|---|
| 572 | 567 | * RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2: plaintext |
|---|
| .. | .. |
|---|
| 616 | 611 | write_blocks(RA1, RB1, RC1, RD1, RK0, RK1, RK2); |
|---|
| 617 | 612 | write_blocks(RA2, RB2, RC2, RD2, RK0, RK1, RK2); |
|---|
| 618 | 613 | |
|---|
| 619 | | - ret; |
|---|
| 620 | | -ENDPROC(__serpent_enc_blk16) |
|---|
| 614 | + RET; |
|---|
| 615 | +SYM_FUNC_END(__serpent_enc_blk16) |
|---|
| 621 | 616 | |
|---|
| 622 | 617 | .align 8 |
|---|
| 623 | | -__serpent_dec_blk16: |
|---|
| 618 | +SYM_FUNC_START_LOCAL(__serpent_dec_blk16) |
|---|
| 624 | 619 | /* input: |
|---|
| 625 | 620 | * %rdi: ctx, CTX |
|---|
| 626 | 621 | * RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2: ciphertext |
|---|
| .. | .. |
|---|
| 670 | 665 | write_blocks(RC1, RD1, RB1, RE1, RK0, RK1, RK2); |
|---|
| 671 | 666 | write_blocks(RC2, RD2, RB2, RE2, RK0, RK1, RK2); |
|---|
| 672 | 667 | |
|---|
| 673 | | - ret; |
|---|
| 674 | | -ENDPROC(__serpent_dec_blk16) |
|---|
| 668 | + RET; |
|---|
| 669 | +SYM_FUNC_END(__serpent_dec_blk16) |
|---|
| 675 | 670 | |
|---|
| 676 | | -ENTRY(serpent_ecb_enc_16way) |
|---|
| 671 | +SYM_FUNC_START(serpent_ecb_enc_16way) |
|---|
| 677 | 672 | /* input: |
|---|
| 678 | 673 | * %rdi: ctx, CTX |
|---|
| 679 | 674 | * %rsi: dst |
|---|
| .. | .. |
|---|
| 692 | 687 | vzeroupper; |
|---|
| 693 | 688 | |
|---|
| 694 | 689 | FRAME_END |
|---|
| 695 | | - ret; |
|---|
| 696 | | -ENDPROC(serpent_ecb_enc_16way) |
|---|
| 690 | + RET; |
|---|
| 691 | +SYM_FUNC_END(serpent_ecb_enc_16way) |
|---|
| 697 | 692 | |
|---|
| 698 | | -ENTRY(serpent_ecb_dec_16way) |
|---|
| 693 | +SYM_FUNC_START(serpent_ecb_dec_16way) |
|---|
| 699 | 694 | /* input: |
|---|
| 700 | 695 | * %rdi: ctx, CTX |
|---|
| 701 | 696 | * %rsi: dst |
|---|
| .. | .. |
|---|
| 714 | 709 | vzeroupper; |
|---|
| 715 | 710 | |
|---|
| 716 | 711 | FRAME_END |
|---|
| 717 | | - ret; |
|---|
| 718 | | -ENDPROC(serpent_ecb_dec_16way) |
|---|
| 712 | + RET; |
|---|
| 713 | +SYM_FUNC_END(serpent_ecb_dec_16way) |
|---|
| 719 | 714 | |
|---|
| 720 | | -ENTRY(serpent_cbc_dec_16way) |
|---|
| 715 | +SYM_FUNC_START(serpent_cbc_dec_16way) |
|---|
| 721 | 716 | /* input: |
|---|
| 722 | 717 | * %rdi: ctx, CTX |
|---|
| 723 | 718 | * %rsi: dst |
|---|
| .. | .. |
|---|
| 737 | 732 | vzeroupper; |
|---|
| 738 | 733 | |
|---|
| 739 | 734 | FRAME_END |
|---|
| 740 | | - ret; |
|---|
| 741 | | -ENDPROC(serpent_cbc_dec_16way) |
|---|
| 735 | + RET; |
|---|
| 736 | +SYM_FUNC_END(serpent_cbc_dec_16way) |
|---|
| 742 | 737 | |
|---|
| 743 | | -ENTRY(serpent_ctr_16way) |
|---|
| 738 | +SYM_FUNC_START(serpent_ctr_16way) |
|---|
| 744 | 739 | /* input: |
|---|
| 745 | 740 | * %rdi: ctx, CTX |
|---|
| 746 | 741 | * %rsi: dst (16 blocks) |
|---|
| .. | .. |
|---|
| 762 | 757 | vzeroupper; |
|---|
| 763 | 758 | |
|---|
| 764 | 759 | FRAME_END |
|---|
| 765 | | - ret; |
|---|
| 766 | | -ENDPROC(serpent_ctr_16way) |
|---|
| 760 | + RET; |
|---|
| 761 | +SYM_FUNC_END(serpent_ctr_16way) |
|---|
| 767 | 762 | |
|---|
| 768 | | -ENTRY(serpent_xts_enc_16way) |
|---|
| 763 | +SYM_FUNC_START(serpent_xts_enc_16way) |
|---|
| 769 | 764 | /* input: |
|---|
| 770 | 765 | * %rdi: ctx, CTX |
|---|
| 771 | 766 | * %rsi: dst (16 blocks) |
|---|
| .. | .. |
|---|
| 788 | 783 | vzeroupper; |
|---|
| 789 | 784 | |
|---|
| 790 | 785 | FRAME_END |
|---|
| 791 | | - ret; |
|---|
| 792 | | -ENDPROC(serpent_xts_enc_16way) |
|---|
| 786 | + RET; |
|---|
| 787 | +SYM_FUNC_END(serpent_xts_enc_16way) |
|---|
| 793 | 788 | |
|---|
| 794 | | -ENTRY(serpent_xts_dec_16way) |
|---|
| 789 | +SYM_FUNC_START(serpent_xts_dec_16way) |
|---|
| 795 | 790 | /* input: |
|---|
| 796 | 791 | * %rdi: ctx, CTX |
|---|
| 797 | 792 | * %rsi: dst (16 blocks) |
|---|
| .. | .. |
|---|
| 814 | 809 | vzeroupper; |
|---|
| 815 | 810 | |
|---|
| 816 | 811 | FRAME_END |
|---|
| 817 | | - ret; |
|---|
| 818 | | -ENDPROC(serpent_xts_dec_16way) |
|---|
| 812 | + RET; |
|---|
| 813 | +SYM_FUNC_END(serpent_xts_dec_16way) |
|---|