rockbox/firmware/target
Amaury Pouly a523c3fcfe imx233: fix IRQ handler w.r.t unwinder
The IRQ handler saves registers on the IRQ stack, saves the old PC to imx233
HW_DIGCTL_SCRATCH0 register and switcht to SVC for the actual handling. The
old code had a problem in that if the unwinder is called during the IRQ (for
example by the watchdog), then __get_sp() will use SPSR_svc to discover the
previous mode, switch to it and recover SP. But SPSR_svc is invalid, it should
be SPSR_irq but we switch from IRQ to SVC mode. The new code copies SPSR_irq
to SPSR_svc in IRQ to fix this problem. It also saves/restore SCRATCH0 in
case I one day renable nested interrupts or use SCRATCH0 for other purposes.
I also changed the old watchdog code to call UIE directly instead of trying
to make the code crash with a SWI.

Change-Id: Id87462d410764b019bd2aa9adc71cb917ade32e3
2016-12-12 13:17:33 +01:00
..
arm imx233: fix IRQ handler w.r.t unwinder 2016-12-12 13:17:33 +01:00
coldfire Fix red/yellow 2015-01-12 12:02:24 +01:00
hosted dx90: fix spurious button events 2016-05-14 23:32:36 +01:00
mips Fix red/yellow 2015-01-12 12:02:24 +01:00
sh Get rid of stupid _backlight_* function names 2015-01-12 11:09:27 +01:00