Kinsey Moore created an issue: 
https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5140

Assignee: Kinsey Moore

## Summary
Nested interrupts accidentally use the thread stack when executing instead of 
the interrupt stack for that CPU.

>From the ARM Architecture Reference Manual version K.a:
D1.3.2 Exception entry
When an exception is taken to an Exception level, ELx, that is using AArch64 
state, all the following occur:
- The contents of PSTATE immediately before the exception was taken is written 
to SPSR_ELx.
- The preferred exception return address is written to ELR_ELx.
- The contents of PSTATE immediately after the exception is taken is as 
described in rule RWTXBY.
- For synchronous exceptions and SError interrupts, exception syndrome 
information is written to ESR_ELx.
- Execution starts from the exception vector at the target Exception level.
When an exception is taken to an Exception level, ELx, that is using AArch64 
state, after recording the previous
values in SPSR_ELx, the following PSTATE bits are set:
- PSTATE.EL is set to the target Exception level.
- **All of PSTATE.{D, A, I, F, SP, TCO, PM} are set to 1.**
…

This is currently working due to the fact that any use of the stack by nested 
interrupts gets unwound before dispatching occurs.

## Steps to reproduce
Run a workload that generates nested interrupts and verify which stack is being 
used for the nested interrupts.

-- 
View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5140
You're receiving this email because of your account on gitlab.rtems.org.


_______________________________________________
bugs mailing list
[email protected]
http://lists.rtems.org/mailman/listinfo/bugs

Reply via email to