tinycc/win32/test_arm64_libtcc_context.S
2026-04-04 20:02:34 +07:00

66 lines
1.3 KiB
ArmAsm

.text
.p2align 2
.global arm64_call_with_dregs
arm64_call_with_dregs:
.seh_proc arm64_call_with_dregs
sub sp, sp, 80
.seh_stackalloc 80
str x30, [sp, 0]
.seh_save_reg x30, 0
str x19, [sp, 8]
.seh_save_reg x19, 8
str d8, [sp, 16]
.seh_save_freg d8, 16
str d9, [sp, 24]
.seh_save_freg d9, 24
str d10, [sp, 32]
.seh_save_freg d10, 32
str d11, [sp, 40]
.seh_save_freg d11, 40
str d12, [sp, 48]
.seh_save_freg d12, 48
str d13, [sp, 56]
.seh_save_freg d13, 56
str d14, [sp, 64]
.seh_save_freg d14, 64
str d15, [sp, 72]
.seh_save_freg d15, 72
.seh_endprologue
mov x19, x1
ldr d8, [x0, 0]
ldr d9, [x0, 8]
ldr d10, [x0, 16]
ldr d11, [x0, 24]
ldr d12, [x0, 32]
ldr d13, [x0, 40]
ldr d14, [x0, 48]
ldr d15, [x0, 56]
mov x0, x3
blr x2
str d8, [x19, 0]
str d9, [x19, 8]
str d10, [x19, 16]
str d11, [x19, 24]
str d12, [x19, 32]
str d13, [x19, 40]
str d14, [x19, 48]
str d15, [x19, 56]
ldr d8, [sp, 16]
ldr d9, [sp, 24]
ldr d10, [sp, 32]
ldr d11, [sp, 40]
ldr d12, [sp, 48]
ldr d13, [sp, 56]
ldr d14, [sp, 64]
ldr d15, [sp, 72]
ldr x19, [sp, 8]
ldr x30, [sp, 0]
add sp, sp, 80
ret
.seh_endproc