commit 669ab15f39b2b7a16c9dd7f77b0acfa4fc3ec1a0
parent 237cb382308ff6b9e1df5c0fe50c11f67469ad83
Author: Ryan Sepassi <rsepassi@gmail.com>
Date: Thu, 28 May 2026 19:16:48 -0700
Fix AArch64 O1 va_start save area offsets
Diffstat:
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/arch/aa64/native.c b/src/arch/aa64/native.c
@@ -3843,11 +3843,13 @@ static void aa_va_start_core(AANativeTarget* a, NativeAddr ap) {
aa_emit_mem(a, 0, ptr, aa_reg_addr(ptr.type, base, (i32)vai.stack_offset),
ptr_mem);
aa_emit_add_imm(a, AA_TMP0, AA_FP,
- -(i32)gr->off + (i32)(vai.gp_reg_count * vai.gp_slot_size));
+ aa_fp_off_slot(a, gr->off) +
+ (i32)(vai.gp_reg_count * vai.gp_slot_size));
aa_emit_mem(a, 0, ptr, aa_reg_addr(ptr.type, base, (i32)vai.gr_top_offset),
ptr_mem);
aa_emit_add_imm(a, AA_TMP0, AA_FP,
- -(i32)vr->off + (i32)(vai.fp_reg_count * vai.fp_slot_size));
+ aa_fp_off_slot(a, vr->off) +
+ (i32)(vai.fp_reg_count * vai.fp_slot_size));
aa_emit_mem(a, 0, ptr, aa_reg_addr(ptr.type, base, (i32)vai.vr_top_offset),
ptr_mem);
aa_emit_load_imm(t->mc, 0, AA_TMP1,