summaryrefslogtreecommitdiff
path: root/bridges
diff options
context:
space:
mode:
authorChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>2023-04-18 15:17:36 +0200
committerChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>2023-04-19 11:50:45 +0200
commit1e273de12710eabf908495d341311da93701868f (patch)
treefad0beeda85c55c2460967628b77b0dd32c633a2 /bridges
parente5e4472e4ebe0f84087cfaa551e3fc28e94fd399 (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.S18
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