mirror of
git://repo.or.cz/tinycc.git
synced 2026-06-20 11:54:18 +08:00
66 lines
1.3 KiB
ArmAsm
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
|