view dyncall/dyncall_call_arm64_masm.asm @ 551:eef302b7a58d

- amendment fix for buffer overflow (see commit 0455834d29a1), to also handle non-standard struct packing, + better asserts - changelog wording tweaks for clarity - comment tweaks for clarity - (mostly pointless) microoptimization in aggr alignment calculation, avoiding a modulo, as alignment always a power of 2 - cleanups
author Tassilo Philipp
date Mon, 20 Jun 2022 14:57:49 +0200
parents 451299d50c1a
children
line wrap: on
line source

; auto-generated by gen-masm.sh
 AREA .text, CODE, ARM64
 EXPORT dcCall_arm64
dcCall_arm64 PROC
 stp x29, x30, [sp, #-16]!
 mov x29, sp
 ldr d0, [x3,#0 ]
 ldr d1, [x3,#8 ]
 ldr d2, [x3,#16]
 ldr d3, [x3,#24]
 ldr d4, [x3,#32]
 ldr d5, [x3,#40]
 ldr d6, [x3,#48]
 ldr d7, [x3,#56]
 sub sp, sp, x2
 eor x4, x4, x4
 mov x5, x1
 mov x6, sp
dcCall_arm64_next
 cmp x4, x2
 b.ge dcCall_arm64_done
 ldp x7, x9, [x5], #16
 stp x7, x9, [x6], #16
 add x4, x4, 16
 b dcCall_arm64_next
dcCall_arm64_done
 mov x9 , x0
 add x10, x3, 64
 ldr x0, [x10, #0]
 ldr x1, [x10, #8]
 ldr x2, [x10, #16]
 ldr x3, [x10, #24]
 ldr x4, [x10, #32]
 ldr x5, [x10, #40]
 ldr x6, [x10, #48]
 ldr x7, [x10, #56]
 blr x9
 mov sp, x29
 ldp x29, x30, [sp], 16
 ret
 ENDP
 END