[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCHv6 11/23] arch/include: Add a _regs member to save origial stack pointer
From: Wei Chen <wei.chen@xxxxxxx> There is a issue about stack alignment check in url[1]. There might be case where the stack pointer is not aligned at EL1 exception. We will force align the stack for EL1 exceptions, so we add a sp to save original stack pointer in this patch. [1] https://www.spinics.net/lists/arm-kernel/msg678761.html Signed-off-by: Wei Chen <wei.chen@xxxxxxx> Signed-off-by: Jia He <justin.he@xxxxxxx> Reviewed-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx> --- arch/arm/arm64/include/uk/asm/lcpu.h | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/arch/arm/arm64/include/uk/asm/lcpu.h b/arch/arm/arm64/include/uk/asm/lcpu.h index 2719313..9eea746 100644 --- a/arch/arm/arm64/include/uk/asm/lcpu.h +++ b/arch/arm/arm64/include/uk/asm/lcpu.h @@ -35,13 +35,20 @@ * Stack size to save general purpose registers and essential system * registers. 8 * (30 + lr + elr_el1 + spsr_el1 + esr_el1) = 272. * From exceptions come from EL0, we have to save sp_el0. So the - * TRAP_STACK_SIZE should be 272 + 8 = 280 + * TRAP_STACK_SIZE should be 272 + 8 = 280. But we enable the stack + * alignment check, we will force align the stack for EL1 exceptions, + * so we add a sp to save original stack pointer: 280 + 8 = 288 * * TODO: We'd better to calculate this size automatically later. */ -#define __TRAP_STACK_SIZE 280 +#define __TRAP_STACK_SIZE 288 +#define __SP_OFFSET 272 +#define __SP_EL0_OFFSET 280 #else -/* Change this structure must update TRAP_STACK_SIZE at the same time */ +/* + * Change this structure must update TRAP_STACK_SIZE at the same time. + * This data structure must be 16-byte alignment. + */ struct __regs { /* Generic Purpose registers, from x0 ~ x29 */ unsigned long x[30]; @@ -60,6 +67,9 @@ struct __regs { /* Stack Pointer */ unsigned long sp; + + /* Stack Pointer from el0 */ + unsigned long sp_el0; }; /* -- 2.17.1 IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |