6c86ed85fe
There are a few problems with the code being repaired here. 1. A seti was used to re-enable all interrupts, even though the thread being switched to may have had certain interrupt priorities masked. 2. saved status32 already has SC bit if thats wanted, so its ok to just restore status32 as-is w/o needing to and off anything. 3. the code is difficult to write using kflag and seti because as you restore registers, there aren't any to use. But we can exploit a trick where we pretend an interrupt has occured by setting a bit in AUX_IRQ_ACT, and then use RTIE instruction to restore status32 atomically with branching to return address. Something about the way this code was written was causing stack corruptings and crashes in an application that uses a high rate of both FIRQ and Regular interrupts. Change-Id: Ia7166d51f0e750c07832ab115b7151ce37ee0278 Signed-off-by: Chuck Jordan <cjordan@synopsys.com> |
||
---|---|---|
.. | ||
core | ||
include | ||
soc | ||
Kbuild | ||
Kconfig | ||
Makefile | ||
defconfig |