From 4f12f8b02f669e7cd3286a543f2cb6308fe5a0fe Mon Sep 17 00:00:00 2001 From: Raj Vishwanathan Date: Tue, 11 Feb 2025 13:46:39 -0800 Subject: [PATCH] include: sbi: Align SBI trap registers to a nice boundary Align SBI_TRAP_CONTEXT_SIZE to a multiple of 16 bytes. If it is not aligned to 16 bytes for RV64, it can create performance problems. Aligning it correctly can fix the performance issues. Signed-off-by: Raj Vishwanathan Reviewed-by: Anup Patel --- include/sbi/sbi_trap.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/include/sbi/sbi_trap.h b/include/sbi/sbi_trap.h index d5182bf5..5eec4dab 100644 --- a/include/sbi/sbi_trap.h +++ b/include/sbi/sbi_trap.h @@ -112,10 +112,13 @@ /** Size (in bytes) of sbi_trap_info */ #define SBI_TRAP_INFO_SIZE SBI_TRAP_INFO_OFFSET(last) +#define STACK_BOUNDARY 16 +#define ALIGN_TO_BOUNDARY(x, a) (((x) + (a) - 1) & ~((a) - 1)) + /** Size (in bytes) of sbi_trap_context */ -#define SBI_TRAP_CONTEXT_SIZE (SBI_TRAP_REGS_SIZE + \ +#define SBI_TRAP_CONTEXT_SIZE ALIGN_TO_BOUNDARY((SBI_TRAP_REGS_SIZE + \ SBI_TRAP_INFO_SIZE + \ - __SIZEOF_POINTER__) + __SIZEOF_POINTER__), STACK_BOUNDARY) #ifndef __ASSEMBLER__