mirror of https://gitee.com/openkylin/qemu.git
cpu-exec.c: Allow disabling of IRQs on ARM Cortex-M CPUs
Correct an error in the logic for deciding whether we can take an IRQ interrupt which meant that on M profile cores it was never possible to disable them. The design here is still bogus in that M profile doesn't have separate "IRQ" and "FIQ", which are an A/R profile concept; we should ideally implement the proper priority based scheme. Signed-off-by: David Hoover <spm@boiteauxlettres.sent.at> [PMM: Wrote a proper commit message] Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
f022b8e953
commit
c3c8d6b3dd
|
@ -618,8 +618,8 @@ int cpu_exec(CPUArchState *env)
|
||||||
We avoid this by disabling interrupts when
|
We avoid this by disabling interrupts when
|
||||||
pc contains a magic address. */
|
pc contains a magic address. */
|
||||||
if (interrupt_request & CPU_INTERRUPT_HARD
|
if (interrupt_request & CPU_INTERRUPT_HARD
|
||||||
&& ((IS_M(env) && env->regs[15] < 0xfffffff0)
|
&& !(env->daif & PSTATE_I)
|
||||||
|| !(env->daif & PSTATE_I))) {
|
&& (!IS_M(env) || env->regs[15] < 0xfffffff0)) {
|
||||||
cpu->exception_index = EXCP_IRQ;
|
cpu->exception_index = EXCP_IRQ;
|
||||||
cc->do_interrupt(cpu);
|
cc->do_interrupt(cpu);
|
||||||
next_tb = 0;
|
next_tb = 0;
|
||||||
|
|
Loading…
Reference in New Issue