aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/t_x86-64_sysv.c
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2026-04-08 10:26:18 +0200
committerlemon <lsof@mailbox.org>2026-04-08 10:26:18 +0200
commit8b79b61ae78c91c069447331ed64d400187bdd77 (patch)
tree57a5d9b04c1514ac59c18286cb08393ecd0b1e69 /src/t_x86-64_sysv.c
parentb8dea129488959adeadc2e444d769f2a2ac709d8 (diff)
Implement basic aarch64 struct arg passing ABI
- Missing: vaargs, >2 member HFAs - Reworked the way stack allocation references are lowered. Now RSTACK persists throughout all passes until emit. This allows deferring stack frame layouting until the end in a less messy way than before, which was emiting frame-pointer relative addresses @ isel time and patching them up later in emit to account for actual stack frame layout.
Diffstat (limited to 'src/t_x86-64_sysv.c')
-rw-r--r--src/t_x86-64_sysv.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/t_x86-64_sysv.c b/src/t_x86-64_sysv.c
index 96f40d6..2404a86 100644
--- a/src/t_x86-64_sysv.c
+++ b/src/t_x86-64_sysv.c
@@ -200,7 +200,7 @@ vastart(Function *fn, Block *blk, int *curi)
int i = *curi + 1;
insertinstr(blk, i++, mkinstr2(Ostorei64, 0, dst, rsave));
/* set ap->overflow_arg_area */
- src = insertinstr(blk, i++, mkinstr2(Oadd, KPTR, mkref(RREG, RBP), mkref(RICON, 16+stk0)));
+ src = insertinstr(blk, i++, mkinstr1(Ocopy, KPTR, mkref(RSTACK, -stk0-8)));
dst = insertinstr(blk, i++, mkinstr2(Oadd, KPTR, ap, mkref(RICON, 8)));
insertinstr(blk, i++, mkinstr2(Ostorei64, 0, dst, src));
/* set ap->gp_offset */