X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Fboost%2Flibs%2Fcontext%2Fsrc%2Fasm%2Fontop_arm64_aapcs_elf_gas.S;h=02a3b07fde2625e5772aac62e0aa88a7b54ab543;hb=b32b81446b3b05102be0267e79203f59329c1d97;hp=f33599a2393bda3b6d76eebae14f82dbcdbc9d10;hpb=215dd7151453fae88e6f968c975b6ce309d42dcf;p=ceph.git diff --git a/ceph/src/boost/libs/context/src/asm/ontop_arm64_aapcs_elf_gas.S b/ceph/src/boost/libs/context/src/asm/ontop_arm64_aapcs_elf_gas.S index f33599a23..02a3b07fd 100644 --- a/ceph/src/boost/libs/context/src/asm/ontop_arm64_aapcs_elf_gas.S +++ b/ceph/src/boost/libs/context/src/asm/ontop_arm64_aapcs_elf_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,51 +11,70 @@ * ------------------------------------------------- * * | 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 | | | * * ------------------------------------------------- * * * *******************************************************/ -.cpu generic+fp+simd .text .align 2 .global ontop_fcontext .type ontop_fcontext, %function ontop_fcontext: # prepare stack for GP + FPU - sub sp, sp, #0x70 + sub sp, sp, #0xb0 + + # save d8 - d15 + stp d8, d9, [sp, #0x00] + stp d10, d11, [sp, #0x10] + stp d12, d13, [sp, #0x20] + stp d14, d15, [sp, #0x30] # 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] + 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] # save LR as PC - str x30, [sp, #0x60] + str x30, [sp, #0xa0] # store RSP (pointing to context-data) in X5 mov x4, sp @@ -63,13 +82,19 @@ ontop_fcontext: # restore RSP (pointing to context-data) from X1 mov sp, x0 + # 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, #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] + 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 @@ -78,7 +103,7 @@ ontop_fcontext: # skip pc # restore stack from GP + FPU - add sp, sp, #0x70 + add sp, sp, #0xb0 # jump to ontop-function ret x2