diff options
author | Christian Lohmaier <lohmaier+LibreOffice@googlemail.com> | 2023-04-18 15:17:36 +0200 |
---|---|---|
committer | Christian Lohmaier <lohmaier+LibreOffice@googlemail.com> | 2023-04-19 11:50:45 +0200 |
commit | 1e273de12710eabf908495d341311da93701868f (patch) | |
tree | fad0beeda85c55c2460967628b77b0dd32c633a2 /bridges | |
parent | e5e4472e4ebe0f84087cfaa551e3fc28e94fd399 (diff) |
win/aarch64: fix offset loading simple values into the registers
the stack variable doesn't point to the beginning of the array with the
values, instead the code creates a large general purpose register array (gpr)
with the floating point register (fpr) and stack just being offsets in
that one.
bridge isn't fully working with that fix yet, still some wrong pointers
ending up in the interface reference
Change-Id: I6f1e5f84f84aff34663090c20fe70d65e0a7a334
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150578
Tested-by: Jenkins
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Diffstat (limited to 'bridges')
-rw-r--r-- | bridges/source/cpp_uno/msvc_win32_arm64/callvirtualfunction.S | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/bridges/source/cpp_uno/msvc_win32_arm64/callvirtualfunction.S b/bridges/source/cpp_uno/msvc_win32_arm64/callvirtualfunction.S index e03bff1d2d55..a058e47d0038 100644 --- a/bridges/source/cpp_uno/msvc_win32_arm64/callvirtualfunction.S +++ b/bridges/source/cpp_uno/msvc_win32_arm64/callvirtualfunction.S @@ -42,15 +42,15 @@ str x3, [x29, #16] // save rvalue // load the core argument passing registers - ldp x0, x1, [sp, #0] - ldp x2, x3, [sp, #16] - ldp x4, x5, [sp, #32] - ldp x6, x7, [sp, #48] - - ldp d0, d1, [sp, #64] - ldp d2, d3, [sp, #80] - ldp d4, d5, [sp, #96] - ldp d6, d7, [sp, #112] + ldp x0, x1, [sp, #-128] + ldp x2, x3, [sp, #-112] + ldp x4, x5, [sp, #-96] + ldp x6, x7, [sp, #-80] + + ldp d0, d1, [sp, #-64] + ldp d2, d3, [sp, #-48] + ldp d4, d5, [sp, #-32] + ldp d6, d7, [sp, #-16] blr x9 // call |