diff options
Diffstat (limited to 'src/vm/arm64/CallDescrWorkerARM64.asm')
-rw-r--r-- | src/vm/arm64/CallDescrWorkerARM64.asm | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/src/vm/arm64/CallDescrWorkerARM64.asm b/src/vm/arm64/CallDescrWorkerARM64.asm index 7495eb767f..556983934e 100644 --- a/src/vm/arm64/CallDescrWorkerARM64.asm +++ b/src/vm/arm64/CallDescrWorkerARM64.asm @@ -52,29 +52,30 @@ Lstackloop bne Lstackloop Ldonestack - ;; If FP arguments are supplied in registers (x8 != NULL) then initialize all of them from the pointer - ;; given in x8. - ldr x8, [x19,#CallDescrData__pFloatArgumentRegisters] - cbz x8, LNoFloatingPoint - ldp d0, d1, [x8] - ldp d2, d3, [x8, #16] - ldp d4, d5, [x8, #32] - ldp d6, d7, [x8, #48] + ;; If FP arguments are supplied in registers (x9 != NULL) then initialize all of them from the pointer + ;; given in x9. + ldr x9, [x19,#CallDescrData__pFloatArgumentRegisters] + cbz x9, LNoFloatingPoint + ldp d0, d1, [x9] + ldp d2, d3, [x9, #16] + ldp d4, d5, [x9, #32] + ldp d6, d7, [x9, #48] LNoFloatingPoint - ;; Copy [pArgumentRegisters, ..., pArgumentRegisters + 56] - ;; into x0, ..., x7 + ;; Copy [pArgumentRegisters, ..., pArgumentRegisters + 64] + ;; into x0, ..., x7, x8 - ldr x8, [x19,#CallDescrData__pArgumentRegisters] - ldp x0, x1, [x8] - ldp x2, x3, [x8, #16] - ldp x4, x5, [x8, #32] - ldp x6, x7, [x8, #48] + ldr x9, [x19,#CallDescrData__pArgumentRegisters] + ldp x0, x1, [x9] + ldp x2, x3, [x9, #16] + ldp x4, x5, [x9, #32] + ldp x6, x7, [x9, #48] + ldr x8, [x9, #64] ;; ARM64TODO: => see if anything special needs to be done for remoting ;; call pTarget - ldr x8, [x19,#CallDescrData__pTarget] - blr x8 + ldr x9, [x19,#CallDescrData__pTarget] + blr x9 ldr w3, [x19,#CallDescrData__fpReturnSize] |