mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-09 09:03:33 +00:00
score/aarch64: Align context validation frame
Ensure the stack remains aligned by keeping the context frame at a multiple of 16 bytes. This avoids stack alignment exceptions which occur when the stack pointer is not 16 byte aligned.
This commit is contained in:
committed by
Joel Sherrill
parent
de694b753c
commit
342fe19842
@@ -42,7 +42,9 @@
|
|||||||
|
|
||||||
#include <rtems/asm.h>
|
#include <rtems/asm.h>
|
||||||
#include <rtems/score/cpu.h>
|
#include <rtems/score/cpu.h>
|
||||||
|
#include <rtems/score/basedefs.h>
|
||||||
|
|
||||||
|
/* These must be 8 byte aligned to avoid misaligned accesses */
|
||||||
#define FRAME_OFFSET_X4 0x00
|
#define FRAME_OFFSET_X4 0x00
|
||||||
#define FRAME_OFFSET_X5 0x08
|
#define FRAME_OFFSET_X5 0x08
|
||||||
#define FRAME_OFFSET_X6 0x10
|
#define FRAME_OFFSET_X6 0x10
|
||||||
@@ -54,18 +56,23 @@
|
|||||||
#define FRAME_OFFSET_LR 0x40
|
#define FRAME_OFFSET_LR 0x40
|
||||||
|
|
||||||
#ifdef AARCH64_MULTILIB_VFP
|
#ifdef AARCH64_MULTILIB_VFP
|
||||||
#define FRAME_OFFSET_V8 0x48
|
/* These must be 16 byte aligned to avoid misaligned accesses */
|
||||||
#define FRAME_OFFSET_V9 0x58
|
#define FRAME_OFFSET_V8 0x50
|
||||||
#define FRAME_OFFSET_V10 0x68
|
#define FRAME_OFFSET_V9 0x60
|
||||||
#define FRAME_OFFSET_V11 0x78
|
#define FRAME_OFFSET_V10 0x70
|
||||||
#define FRAME_OFFSET_V12 0x88
|
#define FRAME_OFFSET_V11 0x80
|
||||||
#define FRAME_OFFSET_V13 0x98
|
#define FRAME_OFFSET_V12 0x90
|
||||||
#define FRAME_OFFSET_V14 0xA8
|
#define FRAME_OFFSET_V13 0xA0
|
||||||
#define FRAME_OFFSET_V15 0xB8
|
#define FRAME_OFFSET_V14 0xB0
|
||||||
|
#define FRAME_OFFSET_V15 0xC0
|
||||||
|
|
||||||
#define FRAME_SIZE (FRAME_OFFSET_V15 + 0x10)
|
/*
|
||||||
|
* Force 16 byte alignment of the frame size to avoid stack pointer alignment
|
||||||
|
* exceptions.
|
||||||
|
*/
|
||||||
|
#define FRAME_SIZE RTEMS_ALIGN_UP( FRAME_OFFSET_V15, 16 )
|
||||||
#else
|
#else
|
||||||
#define FRAME_SIZE (FRAME_OFFSET_LR + 0x08)
|
#define FRAME_SIZE RTEMS_ALIGN_UP( FRAME_OFFSET_LR, 16 )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
.section .text
|
.section .text
|
||||||
|
|||||||
Reference in New Issue
Block a user