*/
 
 AES_FUNC_START(aes_ecb_encrypt)
-       stp             x29, x30, [sp, #-16]!
-       mov             x29, sp
+       frame_push      0
 
        enc_prepare     w3, x2, x5
 
        subs            w4, w4, #1
        bne             .Lecbencloop
 .Lecbencout:
-       ldp             x29, x30, [sp], #16
+       frame_pop
        ret
 AES_FUNC_END(aes_ecb_encrypt)
 
 
 AES_FUNC_START(aes_ecb_decrypt)
-       stp             x29, x30, [sp, #-16]!
-       mov             x29, sp
+       frame_push      0
 
        dec_prepare     w3, x2, x5
 
        subs            w4, w4, #1
        bne             .Lecbdecloop
 .Lecbdecout:
-       ldp             x29, x30, [sp], #16
+       frame_pop
        ret
 AES_FUNC_END(aes_ecb_decrypt)
 
 AES_FUNC_END(aes_essiv_cbc_encrypt)
 
 AES_FUNC_START(aes_essiv_cbc_decrypt)
-       stp             x29, x30, [sp, #-16]!
-       mov             x29, sp
-
        ld1             {cbciv.16b}, [x5]               /* get iv */
 
        mov             w8, #14                         /* AES-256: 14 rounds */
        b               .Lessivcbcdecstart
 
 AES_FUNC_START(aes_cbc_decrypt)
-       stp             x29, x30, [sp, #-16]!
-       mov             x29, sp
-
        ld1             {cbciv.16b}, [x5]               /* get iv */
 .Lessivcbcdecstart:
+       frame_push      0
        dec_prepare     w3, x2, x6
 
 .LcbcdecloopNx:
        bne             .Lcbcdecloop
 .Lcbcdecout:
        st1             {cbciv.16b}, [x5]               /* return iv */
-       ldp             x29, x30, [sp], #16
+       frame_pop
        ret
 AES_FUNC_END(aes_cbc_decrypt)
 AES_FUNC_END(aes_essiv_cbc_decrypt)
        BLOCKS          .req x13
        BLOCKS_W        .req w13
 
-       stp             x29, x30, [sp, #-16]!
-       mov             x29, sp
+       frame_push      0
 
        enc_prepare     ROUNDS_W, KEY, IV_PART
        ld1             {vctr.16b}, [IV]
        .if !\xctr
                st1             {vctr.16b}, [IV] /* return next CTR value */
        .endif
-       ldp             x29, x30, [sp], #16
+       frame_pop
        ret
 
 .Lctrtail\xctr:
        .endm
 
 AES_FUNC_START(aes_xts_encrypt)
-       stp             x29, x30, [sp, #-16]!
-       mov             x29, sp
+       frame_push      0
 
        ld1             {v4.16b}, [x6]
        xts_load_mask   v8
        st1             {v0.16b}, [x0]
 .Lxtsencret:
        st1             {v4.16b}, [x6]
-       ldp             x29, x30, [sp], #16
+       frame_pop
        ret
 
 .LxtsencctsNx:
 AES_FUNC_END(aes_xts_encrypt)
 
 AES_FUNC_START(aes_xts_decrypt)
-       stp             x29, x30, [sp, #-16]!
-       mov             x29, sp
+       frame_push      0
 
        /* subtract 16 bytes if we are doing CTS */
        sub             w8, w4, #0x10
        b               .Lxtsdecloop
 .Lxtsdecout:
        st1             {v4.16b}, [x6]
-       ldp             x29, x30, [sp], #16
+       frame_pop
        ret
 
 .Lxtsdeccts: