diff options
author | Doug Rupp <rupp@adacore.com> | 2018-05-22 13:21:37 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2018-05-22 13:21:37 +0000 |
commit | 9c629d61f03d15608ed6b7d3250dbba5f72293eb (patch) | |
tree | 6d2a58ce27044e3fd096173000adcbe2d8c7f95f | |
parent | 14141ce8e5b243407e80e7978c428f0f96aecf61 (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/ada/sigtramp-vxworks-target.inc | 13 |
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 \ |