Print this page
first pass

Split Close
Expand all
Collapse all
          --- old/usr/src/common/crypto/aes/amd64/aes_amd64.s
          +++ new/usr/src/common/crypto/aes/amd64/aes_amd64.s
↓ open down ↓ 148 lines elided ↑ open up ↑
 149  149   * parenthesis in constant expressions "()" changed to square brackets "[]",
 150  150   * "." removed from  local (numeric) labels, and other changes.
 151  151   * Examples:
 152  152   * Intel/yasm/nasm Syntax       ATT/OpenSolaris Syntax
 153  153   * mov  rax,(4*20h)             mov     $[4*0x20],%rax
 154  154   * mov  rax,[ebx+20h]           mov     0x20(%ebx),%rax
 155  155   * lea  rax,[ebx+ecx]           lea     (%ebx,%ecx),%rax
 156  156   * sub  rax,[ebx+ecx*4-20h]     sub     -0x20(%ebx,%ecx,4),%rax
 157  157   *
 158  158   * 5. Added OpenSolaris ENTRY_NP/SET_SIZE macros from
 159      - * /usr/include/sys/asm_linkage.h, lint(1B) guards, EXPORT DELETE START
 160      - * and EXPORT DELETE END markers, and dummy C function definitions for lint.
      159 + * /usr/include/sys/asm_linkage.h, lint(1B) guards, and dummy C function
      160 + * definitions for lint.
 161  161   *
 162  162   * 6. Renamed functions and reordered parameters to match OpenSolaris:
 163  163   * Original Gladman interface:
 164  164   *      int aes_encrypt(const unsigned char *in,
 165  165   *              unsigned char *out, const aes_encrypt_ctx cx[1])/
 166  166   *      int aes_decrypt(const unsigned char *in,
 167  167   *              unsigned char *out, const aes_encrypt_ctx cx[1])/
 168  168   * Note: aes_encrypt_ctx contains ks, a 60 element array of uint32_t,
 169  169   * and a union type, inf., containing inf.l, a uint32_t and
 170  170   * inf.b, a 4-element array of uint32_t.  Only b[0] in the array (aka "l") is
↓ open down ↓ 149 lines elided ↑ open up ↑
 320  320  #define ik_ref(x, y)    16*x+rofs+4*y(kptr)
 321  321  #endif  /* AES_REV_DKS */
 322  322  
 323  323  #define tab_0(x)        (tptr,x,8)
 324  324  #define tab_1(x)        3(tptr,x,8)
 325  325  #define tab_2(x)        2(tptr,x,8)
 326  326  #define tab_3(x)        1(tptr,x,8)
 327  327  #define tab_f(x)        1(tptr,x,8)
 328  328  #define tab_i(x)        7(tptr,x,8)
 329  329  
 330      -        /* EXPORT DELETE START */
 331  330  #define ff_rnd(p1, p2, p3, p4, round)   /* normal forward round */ \
 332  331          mov     fk_ref(round,0), p1; \
 333  332          mov     fk_ref(round,1), p2; \
 334  333          mov     fk_ref(round,2), p3; \
 335  334          mov     fk_ref(round,3), p4; \
 336  335   \
 337  336          movzx   %al, %esi; \
 338  337          movzx   %ah, %edi; \
 339  338          shr     $16, %eax; \
 340  339          xor     tab_0(%rsi), p1; \
↓ open down ↓ 335 lines elided ↑ open up ↑
 676  675          movzx   %dl, %esi; \
 677  676          movzx   %dh, %edi; \
 678  677          movzx   tab_i(%rsi), %esi; \
 679  678          movzx   tab_i(%rdi), %edi; \
 680  679          rol     $16, %esi; \
 681  680          rol     $24, %edi; \
 682  681          xor     %esi, p2; \
 683  682          xor     %edi, p3
 684  683  
 685  684  #endif  /* LAST_ROUND_TABLES */
 686      -        /* EXPORT DELETE END */
 687  685  
 688  686  /*
 689  687   * OpenSolaris OS:
 690  688   * void aes_encrypt_amd64(const aes_ks_t *ks, int Nr,
 691  689   *      const uint32_t pt[4], uint32_t ct[4])/
 692  690   *
 693  691   * Original interface:
 694  692   * int aes_encrypt(const unsigned char *in,
 695  693   *      unsigned char *out, const aes_encrypt_ctx cx[1])/
 696  694   */
 697  695          .align  64
 698  696  enc_tab:
 699  697          enc_vals(u8)
 700  698  #ifdef  LAST_ROUND_TABLES
 701  699          / Last Round Tables:
 702  700          enc_vals(w8)
 703  701  #endif
 704  702  
 705  703  
 706  704          ENTRY_NP(aes_encrypt_amd64)
 707      -        /* EXPORT DELETE START */
 708  705  #ifdef  GLADMAN_INTERFACE
 709  706          / Original interface
 710  707          sub     $[4*8], %rsp    / gnu/linux/opensolaris binary interface
 711  708          mov     %rsi, (%rsp)    / output pointer (P2)
 712  709          mov     %rdx, %r8       / context (P3)
 713  710  
 714  711          mov     %rbx, 1*8(%rsp) / P1: input pointer in rdi
 715  712          mov     %rbp, 2*8(%rsp) / P2: output pointer in (rsp)
 716  713          mov     %r12, 3*8(%rsp) / P3: context in r8
 717  714          movzx   4*KS_LENGTH(kptr), %esi / Get byte key length * 16
↓ open down ↓ 61 lines elided ↑ open up ↑
 779  776          mov     %r9d, (%rbx)
 780  777          mov     %r10d, 4(%rbx)
 781  778          mov     %r11d, 8(%rbx)
 782  779          mov     %r12d, 12(%rbx)
 783  780          xor     %rax, %rax
 784  781  4:      / Restore registers
 785  782          mov     1*8(%rsp), %rbx
 786  783          mov     2*8(%rsp), %rbp
 787  784          mov     3*8(%rsp), %r12
 788  785          add     $[4*8], %rsp
 789      -        /* EXPORT DELETE END */
 790  786          ret
 791  787  
 792  788          SET_SIZE(aes_encrypt_amd64)
 793  789  
 794  790  /*
 795  791   * OpenSolaris OS:
 796  792   * void aes_decrypt_amd64(const aes_ks_t *ks, int Nr,
 797  793   *      const uint32_t pt[4], uint32_t ct[4])/
 798  794   *
 799  795   * Original interface:
↓ open down ↓ 3 lines elided ↑ open up ↑
 803  799          .align  64
 804  800  dec_tab:
 805  801          dec_vals(v8)
 806  802  #ifdef  LAST_ROUND_TABLES
 807  803          / Last Round Tables:
 808  804          dec_vals(w8)
 809  805  #endif
 810  806  
 811  807  
 812  808          ENTRY_NP(aes_decrypt_amd64)
 813      -        /* EXPORT DELETE START */
 814  809  #ifdef  GLADMAN_INTERFACE
 815  810          / Original interface
 816  811          sub     $[4*8], %rsp    / gnu/linux/opensolaris binary interface
 817  812          mov     %rsi, (%rsp)    / output pointer (P2)
 818  813          mov     %rdx, %r8       / context (P3)
 819  814  
 820  815          mov     %rbx, 1*8(%rsp) / P1: input pointer in rdi
 821  816          mov     %rbp, 2*8(%rsp) / P2: output pointer in (rsp)
 822  817          mov     %r12, 3*8(%rsp) / P3: context in r8
 823  818          movzx   4*KS_LENGTH(kptr), %esi / Get byte key length * 16
↓ open down ↓ 67 lines elided ↑ open up ↑
 891  886          mov     %r9d, (%rbx)
 892  887          mov     %r10d, 4(%rbx)
 893  888          mov     %r11d, 8(%rbx)
 894  889          mov     %r12d, 12(%rbx)
 895  890          xor     %rax, %rax
 896  891  4:      / Restore registers
 897  892          mov     1*8(%rsp), %rbx
 898  893          mov     2*8(%rsp), %rbp
 899  894          mov     3*8(%rsp), %r12
 900  895          add     $[4*8], %rsp
 901      -        /* EXPORT DELETE END */
 902  896          ret
 903  897  
 904  898          SET_SIZE(aes_decrypt_amd64)
 905  899  #endif  /* lint || __lint */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX