Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
arch: arm: cortex_a_r: Fix usage of stmdb while entering an exception
This commit fixes the unpredictable behavior, caused by using the ^ form of stmdb instruction, while entering an exception in SMP mode on Cortex-A/R. Change: Use "push" instead of "stmdb" to store user mode registers on stack while entering an exception in SYStem mode. Reason for change: As reported in discussion/#75339, processor is already in SYS mode after entering `z_arm_cortex_ar_enter_exc()` in an exception and using stmdb is UNPREDICTABLE in system mode. Also, the user mode register can be accessed directly without the ^ form of the instruction. The solution suggested to fix this is to use `stmdb sp!, {r0-r3, r12, lr}` which can save the user registers, update the SP and avoid an extra instruction. We use "push {}" instruction instead since it is the preferred mnemonic over `stmdb`. Signed-off-by: Sudan Landge <[email protected]>
- Loading branch information