summary refs log tree commit diff
path: root/arm64/emit.c
diff options
context:
space:
mode:
Diffstat (limited to 'arm64/emit.c')
-rw-r--r--arm64/emit.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arm64/emit.c b/arm64/emit.c
index 59e1aae..892d027 100644
--- a/arm64/emit.c
+++ b/arm64/emit.c
@@ -378,8 +378,8 @@ arm64_emitfn(Fn *fn, FILE *out)
 	if (e->fn->vararg) {
 		for (n=7; n>=0; n--)
 			fprintf(e->f, "\tstr\tq%d, [sp, -16]!\n", n);
-		for (n=7; n>=0; n--)
-			fprintf(e->f, "\tstr\tx%d, [sp, -8]!\n", n);
+		for (n=7; n>=0; n-=2)
+			fprintf(e->f, "\tstp\tx%d, x%d, [sp, -16]!\n", n-1, n);
 	}
 
 	if (e->frame + 16 <= 512)