aarch64 fix
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
diff --git a/ChangeLog b/ChangeLog
index 9dcebbd..ca24a09 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2014-02-28 Yufeng Zhang <yufeng.zhang@arm.com>
+
+ * src/aarch64/sysv.S (ffi_closure_SYSV): Use x29 as the
+ main CFA reg; update cfi_rel_offset.
+
2014-02-09 Heiher <r@hev.cc>
* src/mips/n32.S: Fix call floating point va function.
diff --git a/src/aarch64/sysv.S b/src/aarch64/sysv.S
index bd67798..7273b73 100644
--- a/src/aarch64/sysv.S
+++ b/src/aarch64/sysv.S
@@ -249,13 +249,13 @@ CNAME(ffi_closure_SYSV):
cfi_rel_offset (x30, 8)
mov x29, sp
+ cfi_def_cfa_register (x29)
sub sp, sp, #ffi_closure_SYSV_FS
- cfi_adjust_cfa_offset (ffi_closure_SYSV_FS)
stp x21, x22, [x29, #-16]
- cfi_rel_offset (x21, 0)
- cfi_rel_offset (x22, 8)
+ cfi_rel_offset (x21, -16)
+ cfi_rel_offset (x22, -8)
/* Load x21 with &call_context. */
mov x21, sp
@@ -313,7 +313,7 @@ CNAME(ffi_closure_SYSV):
cfi_restore (x22)
mov sp, x29
- cfi_adjust_cfa_offset (-ffi_closure_SYSV_FS)
+ cfi_def_cfa_register (sp)
ldp x29, x30, [sp], #16
cfi_adjust_cfa_offset (-16)