From 1e273de12710eabf908495d341311da93701868f Mon Sep 17 00:00:00 2001 From: Christian Lohmaier Date: Tue, 18 Apr 2023 15:17:36 +0200 Subject: [PATCH] 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 --- .../cpp_uno/msvc_win32_arm64/callvirtualfunction.S | 18 +++++++++--------- 1 file 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 -- 2.11.4.GIT