ARM: CORTEX M, PRIMASK does not disable interrupts
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
qemu version 0.15.1
but the same code is in qemu 1.0
"CPSID I" does not disable interrupts for CORTEX M3
if (interrupt_request & CPU_INTERRUPT_HARD
do_interrupt() will be executed even if (env->uncached_cpsr & CPSR_I) == 1 , disable interrupt bit set.
then changed to:
if (interrupt_request & CPU_INTERRUPT_HARD
works
This change changes the behaviour for non-M-profile cores, which looks wrong.
See discussion in this mailing list thread where a similar patch was suggested: lists.gnu. org/archive/ html/qemu- devel/2011- 06/msg00500. html
http://
M profile interrupt handling is known-broken. I'm not accepting any patches in this area unless they come attached to a decent explanation of why they are the correct change to make and show some evidence of the whole problem having been considered.