X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Fboost%2Flibs%2Fcontext%2Fsrc%2Fasm%2Fontop_arm64_aapcs_macho_gas.S;h=a387d06dd2983f66283a2ec8a776f966b1d32798;hb=b32b81446b3b05102be0267e79203f59329c1d97;hp=d046427463bbd089d762fdc6d3f5a1a9047f4cb7;hpb=215dd7151453fae88e6f968c975b6ce309d42dcf;p=ceph.git diff --git a/ceph/src/boost/libs/context/src/asm/ontop_arm64_aapcs_macho_gas.S b/ceph/src/boost/libs/context/src/asm/ontop_arm64_aapcs_macho_gas.S index d04642746..a387d06dd 100644 --- a/ceph/src/boost/libs/context/src/asm/ontop_arm64_aapcs_macho_gas.S +++ b/ceph/src/boost/libs/context/src/asm/ontop_arm64_aapcs_macho_gas.S @@ -1,5 +1,5 @@ /* - Copyright Edward Nevill + Oliver Kowalke 2015 + Copyright Edward Nevill + Oliver Kowalke 2015 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -11,27 +11,41 @@ * ------------------------------------------------- * * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * * ------------------------------------------------- * - * | x19 | x20 | x21 | x22 | * + * | d8 | d9 | d10 | d11 | * * ------------------------------------------------- * * ------------------------------------------------- * * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * * ------------------------------------------------- * * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * * ------------------------------------------------- * - * | x23 | x24 | x25 | x26 | * + * | d12 | d13 | d14 | d15 | * * ------------------------------------------------- * * ------------------------------------------------- * * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * * ------------------------------------------------- * * | 0x40| 0x44| 0x48| 0x4c| 0x50| 0x54| 0x58| 0x5c| * * ------------------------------------------------- * - * | x27 | x28 | FP | LR | * + * | x19 | x20 | x21 | x22 | * * ------------------------------------------------- * * ------------------------------------------------- * * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * * ------------------------------------------------- * * | 0x60| 0x64| 0x68| 0x6c| 0x70| 0x74| 0x78| 0x7c| * * ------------------------------------------------- * + * | x23 | x24 | x25 | x26 | * + * ------------------------------------------------- * + * ------------------------------------------------- * + * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * + * ------------------------------------------------- * + * | 0x80| 0x84| 0x88| 0x8c| 0x90| 0x94| 0x98| 0x9c| * + * ------------------------------------------------- * + * | x27 | x28 | FP | LR | * + * ------------------------------------------------- * + * ------------------------------------------------- * + * | 40 | 41 | 42 | 43 | | | * + * ------------------------------------------------- * + * | 0xa0| 0xa4| 0xa8| 0xac| | | * + * ------------------------------------------------- * * | PC | align | | | * * ------------------------------------------------- * * * @@ -41,42 +55,54 @@ .global _ontop_fcontext .balign 16 _ontop_fcontext: - # prepare stack for GP + FPU - sub sp, sp, #0x70 + ; prepare stack for GP + FPU + sub sp, sp, #0xb0 - # save x19-x30 - stp x19, x20, [sp, #0x00] - stp x21, x22, [sp, #0x10] - stp x23, x24, [sp, #0x20] - stp x25, x26, [sp, #0x30] - stp x27, x28, [sp, #0x40] - stp x29, x30, [sp, #0x50] + ; save d8 - d15 + stp d8, d9, [sp, #0x00] + stp d10, d11, [sp, #0x10] + stp d12, d13, [sp, #0x20] + stp d14, d15, [sp, #0x30] - # save LR as PC - str x30, [sp, #0x60] + ; save x19-x30 + stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50] + stp x23, x24, [sp, #0x60] + stp x25, x26, [sp, #0x70] + stp x27, x28, [sp, #0x80] + stp x29, x30, [sp, #0x90] - # store RSP (pointing to context-data) in X5 + ; save LR as PC + str x30, [sp, #0xa0] + + ; store RSP (pointing to context-data) in X5 mov x4, sp - # restore RSP (pointing to context-data) from X1 + ; restore RSP (pointing to context-data) from X1 mov sp, x0 - # load x19-x30 - ldp x19, x20, [sp, #0x00] - ldp x21, x22, [sp, #0x10] - ldp x23, x24, [sp, #0x20] - ldp x25, x26, [sp, #0x30] - ldp x27, x28, [sp, #0x40] - ldp x29, x30, [sp, #0x50] + ; load d8 - d15 + ldp d8, d9, [sp, #0x00] + ldp d10, d11, [sp, #0x10] + ldp d12, d13, [sp, #0x20] + ldp d14, d15, [sp, #0x30] + + ; load x19-x30 + ldp x19, x20, [sp, #0x40] + ldp x21, x22, [sp, #0x50] + ldp x23, x24, [sp, #0x60] + ldp x25, x26, [sp, #0x70] + ldp x27, x28, [sp, #0x80] + ldp x29, x30, [sp, #0x90] - # return transfer_t from jump - # pass transfer_t as first arg in context function - # X0 == FCTX, X1 == DATA + ; return transfer_t from jump + ; pass transfer_t as first arg in context function + ; X0 == FCTX, X1 == DATA mov x0, x4 - # skip pc - # restore stack from GP + FPU - add sp, sp, #0x70 + ; skip pc + ; restore stack from GP + FPU + add sp, sp, #0xb0 - # jump to ontop-function + ; jump to ontop-function ret x2