aboutsummaryrefslogtreecommitdiff
path: root/third_party/boringssl/ios-aarch64/crypto/fipsmodule/vpaes-armv8.S
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/boringssl/ios-aarch64/crypto/fipsmodule/vpaes-armv8.S')
-rw-r--r--third_party/boringssl/ios-aarch64/crypto/fipsmodule/vpaes-armv8.S21
1 files changed, 20 insertions, 1 deletions
diff --git a/third_party/boringssl/ios-aarch64/crypto/fipsmodule/vpaes-armv8.S b/third_party/boringssl/ios-aarch64/crypto/fipsmodule/vpaes-armv8.S
index 0f5cbead..5985c550 100644
--- a/third_party/boringssl/ios-aarch64/crypto/fipsmodule/vpaes-armv8.S
+++ b/third_party/boringssl/ios-aarch64/crypto/fipsmodule/vpaes-armv8.S
@@ -12,6 +12,8 @@
#if defined(BORINGSSL_PREFIX)
#include <boringssl_prefix_symbols_asm.h>
#endif
+#include <openssl/arm_arch.h>
+
.section __TEXT,__const
@@ -214,6 +216,7 @@ Lenc_entry:
.align 4
_vpaes_encrypt:
+ AARCH64_SIGN_LINK_REGISTER
stp x29,x30,[sp,#-16]!
add x29,sp,#0
@@ -223,6 +226,7 @@ _vpaes_encrypt:
st1 {v0.16b}, [x1]
ldp x29,x30,[sp],#16
+ AARCH64_VALIDATE_LINK_REGISTER
ret
@@ -451,6 +455,7 @@ Ldec_entry:
.align 4
_vpaes_decrypt:
+ AARCH64_SIGN_LINK_REGISTER
stp x29,x30,[sp,#-16]!
add x29,sp,#0
@@ -460,6 +465,7 @@ _vpaes_decrypt:
st1 {v0.16b}, [x1]
ldp x29,x30,[sp],#16
+ AARCH64_VALIDATE_LINK_REGISTER
ret
@@ -629,6 +635,7 @@ _vpaes_key_preheat:
.align 4
_vpaes_schedule_core:
+ AARCH64_SIGN_LINK_REGISTER
stp x29, x30, [sp,#-16]!
add x29,sp,#0
@@ -798,6 +805,7 @@ Lschedule_mangle_last_dec:
eor v6.16b, v6.16b, v6.16b // vpxor %xmm6, %xmm6, %xmm6
eor v7.16b, v7.16b, v7.16b // vpxor %xmm7, %xmm7, %xmm7
ldp x29, x30, [sp],#16
+ AARCH64_VALIDATE_LINK_REGISTER
ret
@@ -1000,7 +1008,7 @@ Lschedule_mangle_dec:
Lschedule_mangle_both:
tbl v3.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm3
- add x8, x8, #64-16 // add $-16, %r8
+ add x8, x8, #48 // add $-16, %r8
and x8, x8, #~(1<<6) // and $0x30, %r8
st1 {v3.2d}, [x2] // vmovdqu %xmm3, (%rdx)
ret
@@ -1011,6 +1019,7 @@ Lschedule_mangle_both:
.align 4
_vpaes_set_encrypt_key:
+ AARCH64_SIGN_LINK_REGISTER
stp x29,x30,[sp,#-16]!
add x29,sp,#0
stp d8,d9,[sp,#-16]! // ABI spec says so
@@ -1026,6 +1035,7 @@ _vpaes_set_encrypt_key:
ldp d8,d9,[sp],#16
ldp x29,x30,[sp],#16
+ AARCH64_VALIDATE_LINK_REGISTER
ret
@@ -1034,6 +1044,7 @@ _vpaes_set_encrypt_key:
.align 4
_vpaes_set_decrypt_key:
+ AARCH64_SIGN_LINK_REGISTER
stp x29,x30,[sp,#-16]!
add x29,sp,#0
stp d8,d9,[sp,#-16]! // ABI spec says so
@@ -1053,6 +1064,7 @@ _vpaes_set_decrypt_key:
ldp d8,d9,[sp],#16
ldp x29,x30,[sp],#16
+ AARCH64_VALIDATE_LINK_REGISTER
ret
.globl _vpaes_cbc_encrypt
@@ -1060,6 +1072,7 @@ _vpaes_set_decrypt_key:
.align 4
_vpaes_cbc_encrypt:
+ AARCH64_SIGN_LINK_REGISTER
cbz x2, Lcbc_abort
cmp w5, #0 // check direction
b.eq vpaes_cbc_decrypt
@@ -1086,6 +1099,7 @@ Lcbc_enc_loop:
st1 {v0.16b}, [x4] // write ivec
ldp x29,x30,[sp],#16
+ AARCH64_VALIDATE_LINK_REGISTER
Lcbc_abort:
ret
@@ -1093,6 +1107,8 @@ Lcbc_abort:
.align 4
vpaes_cbc_decrypt:
+ // Not adding AARCH64_SIGN_LINK_REGISTER here because vpaes_cbc_decrypt is jumped to
+ // only from vpaes_cbc_encrypt which has already signed the return address.
stp x29,x30,[sp,#-16]!
add x29,sp,#0
stp d8,d9,[sp,#-16]! // ABI spec says so
@@ -1134,6 +1150,7 @@ Lcbc_dec_done:
ldp d10,d11,[sp],#16
ldp d8,d9,[sp],#16
ldp x29,x30,[sp],#16
+ AARCH64_VALIDATE_LINK_REGISTER
ret
.globl _vpaes_ctr32_encrypt_blocks
@@ -1141,6 +1158,7 @@ Lcbc_dec_done:
.align 4
_vpaes_ctr32_encrypt_blocks:
+ AARCH64_SIGN_LINK_REGISTER
stp x29,x30,[sp,#-16]!
add x29,sp,#0
stp d8,d9,[sp,#-16]! // ABI spec says so
@@ -1208,6 +1226,7 @@ Lctr32_done:
ldp d10,d11,[sp],#16
ldp d8,d9,[sp],#16
ldp x29,x30,[sp],#16
+ AARCH64_VALIDATE_LINK_REGISTER
ret
#endif // !OPENSSL_NO_ASM