aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Rupp <rupp@adacore.com>2018-05-22 13:21:37 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2018-05-22 13:21:37 +0000
commit9c629d61f03d15608ed6b7d3250dbba5f72293eb (patch)
tree6d2a58ce27044e3fd096173000adcbe2d8c7f95f
parent14141ce8e5b243407e80e7978c428f0f96aecf61 (diff)
downloadgcc-9c629d61f03d15608ed6b7d3250dbba5f72293eb.zip
gcc-9c629d61f03d15608ed6b7d3250dbba5f72293eb.tar.gz
gcc-9c629d61f03d15608ed6b7d3250dbba5f72293eb.tar.bz2
[Ada] Align stack to 128bits on VxWorks for AArch64
Real board requires fat alignment of stack. 2018-05-22 Doug Rupp <rupp@adacore.com> gcc/ada/ * sigtramp-vxworks-target.inc: Align stack to 128bits on AArch64. From-SVN: r260513
-rw-r--r--gcc/ada/ChangeLog4
-rw-r--r--gcc/ada/sigtramp-vxworks-target.inc13
2 files changed, 11 insertions, 6 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index c8e4d4d..707ca72 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,7 @@
+2018-05-22 Doug Rupp <rupp@adacore.com>
+
+ * sigtramp-vxworks-target.inc: Align stack to 128bits on AArch64.
+
2018-05-22 Jerome Lambourg <lambourg@adacore.com>
* sigtramp-qnx.c: Fix stack alignment issue in the signal trampoline.
diff --git a/gcc/ada/sigtramp-vxworks-target.inc b/gcc/ada/sigtramp-vxworks-target.inc
index f8648f1..1c3ed56 100644
--- a/gcc/ada/sigtramp-vxworks-target.inc
+++ b/gcc/ada/sigtramp-vxworks-target.inc
@@ -417,17 +417,18 @@ TCR(".cfi_return_column " S(REGNO_PC_OFFSET))
#ifdef __aarch64__
#define SIGTRAMP_BODY \
CR("") \
-TCR("# Push FP and LR on stack") \
-TCR("stp x29, x30, [sp, #-16]!") \
-TCR("# Push register used to hold the CFA on stack (pro forma)") \
-TCR("str x" S(CFA_REG) ", [sp, #-8]!") \
+TCR("# Allocate the frame (16bytes aligned) and push FP and LR") \
+TCR("stp x29, x30, [sp, #-32]!") \
+TCR("add x29, sp, 0") \
+TCR("# Store register used to hold the CFA on stack (pro forma)") \
+TCR("str x" S(CFA_REG) ", [sp, 16]") \
TCR("# Set the CFA reg from the 5th arg") \
TCR("mov x" S(CFA_REG) ", x4") \
TCR("# Call the handler") \
TCR("blr x3") \
TCR("# Release our frame and return (should never get here!).") \
-TCR("ldr x" S(CFA_REG) " , [sp], 8") \
-TCR("ldp x29, x30, [sp], 16") \
+TCR("ldr x" S(CFA_REG) ", [sp, 16]") \
+TCR("ldp x29, x30, [sp], 32") \
TCR("ret")
#else
#define SIGTRAMP_BODY \