]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/spdk/intel-ipsec-mb/aes_keyexp_256.asm
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / intel-ipsec-mb / aes_keyexp_256.asm
index cd775ebb3959b968b78e3839e056fc6540a93e31..1acdac3dd40e647c9543947f6eb71b7b99da74d4 100644 (file)
 ;;
 
 ; Routine to do AES key expansion
-%include "os.asm"
+%include "include/os.asm"
 %define NO_AESNI_RENAME
-%include "aesni_emu.inc"
+%include "include/aesni_emu.inc"
+%include "include/clear_regs.asm"
 
 ; Uses the f() function of the aeskeygenassist result
 %macro key_expansion_256_sse 0
@@ -96,6 +97,16 @@ section .text
 ;
 MKGLOBAL(aes_keyexp_256_sse,function,)
 aes_keyexp_256_sse:
+
+%ifdef SAFE_PARAM
+        cmp     KEY, 0
+        jz      aes_keyexp_256_sse_return
+        cmp     EXP_ENC_KEYS, 0
+        jz      aes_keyexp_256_sse_return
+        cmp     EXP_DEC_KEYS, 0
+        jz      aes_keyexp_256_sse_return
+%endif
+
         movdqu xmm1, [KEY]                     ; loading the AES key
        movdqa  [EXP_ENC_KEYS + 16*0], xmm1
         movdqa [EXP_DEC_KEYS + 16*14], xmm1    ; Storing key in memory
@@ -184,10 +195,26 @@ aes_keyexp_256_sse:
        movdqa  [EXP_ENC_KEYS + 16*14], xmm1
        movdqa  [EXP_DEC_KEYS + 16*0], xmm1
 
-       ret
+%ifdef SAFE_DATA
+        clear_scratch_gps_asm
+        clear_scratch_xmms_sse_asm
+%endif
+
+aes_keyexp_256_sse_return:
+        ret
 
 MKGLOBAL(aes_keyexp_256_sse_no_aesni,function,)
 aes_keyexp_256_sse_no_aesni:
+
+%ifdef SAFE_PARAM
+        cmp     KEY, 0
+        jz      aes_keyexp_256_sse_no_aesni_return
+        cmp     EXP_ENC_KEYS, 0
+        jz      aes_keyexp_256_sse_no_aesni_return
+        cmp     EXP_DEC_KEYS, 0
+        jz      aes_keyexp_256_sse_no_aesni_return
+%endif
+
         movdqu xmm1, [KEY]                     ; loading the AES key
        movdqa  [EXP_ENC_KEYS + 16*0], xmm1
         movdqa [EXP_DEC_KEYS + 16*14], xmm1    ; Storing key in memory
@@ -276,6 +303,12 @@ aes_keyexp_256_sse_no_aesni:
        movdqa  [EXP_ENC_KEYS + 16*14], xmm1
        movdqa  [EXP_DEC_KEYS + 16*0], xmm1
 
+%ifdef SAFE_DATA
+        clear_scratch_gps_asm
+        clear_scratch_xmms_sse_asm
+%endif
+
+aes_keyexp_256_sse_no_aesni_return:
        ret
 
 MKGLOBAL(aes_keyexp_256_avx,function,)
@@ -284,6 +317,16 @@ MKGLOBAL(aes_keyexp_256_avx512,function,)
 aes_keyexp_256_avx:
 aes_keyexp_256_avx2:
 aes_keyexp_256_avx512:
+
+%ifdef SAFE_PARAM
+        cmp     KEY, 0
+        jz      aes_keyexp_256_avx_return
+        cmp     EXP_ENC_KEYS, 0
+        jz      aes_keyexp_256_avx_return
+        cmp     EXP_DEC_KEYS, 0
+        jz      aes_keyexp_256_avx_return
+%endif
+
         vmovdqu        xmm1, [KEY]                     ; loading the AES key
        vmovdqa [EXP_ENC_KEYS + 16*0], xmm1
         vmovdqa        [EXP_DEC_KEYS + 16*14], xmm1    ; Storing key in memory
@@ -372,6 +415,12 @@ aes_keyexp_256_avx512:
        vmovdqa [EXP_ENC_KEYS + 16*14], xmm1
        vmovdqa [EXP_DEC_KEYS + 16*0], xmm1
 
+%ifdef SAFE_DATA
+        clear_scratch_gps_asm
+        clear_scratch_xmms_avx_asm
+%endif
+
+aes_keyexp_256_avx_return:
        ret
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -387,6 +436,14 @@ aes_keyexp_256_avx512:
 ;
 MKGLOBAL(aes_keyexp_256_enc_sse,function,)
 aes_keyexp_256_enc_sse:
+
+%ifdef SAFE_PARAM
+        cmp     KEY, 0
+        jz      aes_keyexp_256_enc_sse_return
+        cmp     EXP_ENC_KEYS, 0
+        jz      aes_keyexp_256_enc_sse_return
+%endif
+
         movdqu xmm1, [KEY]                     ; loading the AES key
        movdqa  [EXP_ENC_KEYS + 16*0], xmm1
 
@@ -447,10 +504,24 @@ aes_keyexp_256_enc_sse:
         key_expansion_256_sse
        movdqa  [EXP_ENC_KEYS + 16*14], xmm1
 
+%ifdef SAFE_DATA
+        clear_scratch_gps_asm
+        clear_scratch_xmms_sse_asm
+%endif
+
+aes_keyexp_256_enc_sse_return:
        ret
 
 MKGLOBAL(aes_keyexp_256_enc_sse_no_aesni,function,)
 aes_keyexp_256_enc_sse_no_aesni:
+
+%ifdef SAFE_PARAM
+        cmp     KEY, 0
+        jz      aes_keyexp_256_enc_sse_no_aesni_return
+        cmp     EXP_ENC_KEYS, 0
+        jz      aes_keyexp_256_enc_sse_no_aesni_return
+%endif
+
         movdqu xmm1, [KEY]                     ; loading the AES key
        movdqa  [EXP_ENC_KEYS + 16*0], xmm1
 
@@ -511,6 +582,12 @@ aes_keyexp_256_enc_sse_no_aesni:
         key_expansion_256_sse
        movdqa  [EXP_ENC_KEYS + 16*14], xmm1
 
+%ifdef SAFE_DATA
+        clear_scratch_gps_asm
+        clear_scratch_xmms_sse_asm
+%endif
+
+aes_keyexp_256_enc_sse_no_aesni_return:
        ret
 
 MKGLOBAL(aes_keyexp_256_enc_avx,function,)
@@ -519,6 +596,14 @@ MKGLOBAL(aes_keyexp_256_enc_avx512,function,)
 aes_keyexp_256_enc_avx:
 aes_keyexp_256_enc_avx2:
 aes_keyexp_256_enc_avx512:
+
+%ifdef SAFE_PARAM
+        cmp     KEY, 0
+        jz      aes_keyexp_256_enc_avx_return
+        cmp     EXP_ENC_KEYS, 0
+        jz      aes_keyexp_256_enc_avx_return
+%endif
+
         vmovdqu        xmm1, [KEY]                     ; loading the AES key
        vmovdqa [EXP_ENC_KEYS + 16*0], xmm1
 
@@ -579,7 +664,13 @@ aes_keyexp_256_enc_avx512:
         key_expansion_256_avx
        vmovdqa [EXP_ENC_KEYS + 16*14], xmm1
 
-       ret
+%ifdef SAFE_DATA
+        clear_scratch_gps_asm
+        clear_scratch_xmms_avx_asm
+%endif
+
+aes_keyexp_256_enc_avx_return:
+        ret
 
 %ifdef LINUX
 section .note.GNU-stack noalloc noexec nowrite progbits