Commit f9d4d3cf by Eric Botcazou Committed by Olivier Hainque

Fix stack offsets and alloca alignments on ppc-vxworks

	* config/rs6000/vxworks.h (RS6000_STARTING_FRAME_OFFSET): Define,
	accounting for STACK_BOUNDARY 128 regardless of TARGET_ALTIVEC/VSX.
	(STACK_DYNAMIC_OFFSET): Likewise.

From-SVN: r267024
parent 61d1d9a6
2018-12-11 Eric Botcazou <botcazou@adacore.com>
* config/rs6000/vxworks.h (RS6000_STARTING_FRAME_OFFSET): Define,
accounting for STACK_BOUNDARY 128.
(STACK_DYNAMIC_OFFSET): Likewise.
2018-12-11 Jakub Jelinek <jakub@redhat.com>
PR target/88425
......@@ -116,7 +116,7 @@ VXWORKS_ADDITIONAL_CPP_SPEC
#undef SDATA_DEFAULT_SIZE
#define SDATA_DEFAULT_SIZE (TARGET_VXWORKS_RTP ? 8 : 0)
/* Enforce 16bytes alignment for the stack pointer, to permit general
/* Enforce 16-byte alignment for the stack pointer, to permit general
compliance with e.g. Altivec instructions requirements. Make sure
this isn't overruled by the EABI constraints. */
......@@ -128,6 +128,17 @@ VXWORKS_ADDITIONAL_CPP_SPEC
#undef ABI_STACK_BOUNDARY
#undef RS6000_STARTING_FRAME_OFFSET
#define RS6000_STARTING_FRAME_OFFSET \
(cfun->calls_alloca \
? RS6000_ALIGN (crtl->outgoing_args_size + RS6000_SAVE_AREA, 16) \
: (RS6000_ALIGN (crtl->outgoing_args_size, 16) + RS6000_SAVE_AREA))
#undef STACK_DYNAMIC_OFFSET
#define STACK_DYNAMIC_OFFSET(FUNDECL) \
RS6000_ALIGN (crtl->outgoing_args_size.to_constant () \
+ STACK_POINTER_OFFSET, 16)
#undef SUBSUBTARGET_OVERRIDE_OPTIONS
#define SUBSUBTARGET_OVERRIDE_OPTIONS \
do { \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment