diff options
Diffstat (limited to 'results/classifier/gemma3:12b/kernel/942659')
| -rw-r--r-- | results/classifier/gemma3:12b/kernel/942659 | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/results/classifier/gemma3:12b/kernel/942659 b/results/classifier/gemma3:12b/kernel/942659 new file mode 100644 index 000000000..d299cdeea --- /dev/null +++ b/results/classifier/gemma3:12b/kernel/942659 @@ -0,0 +1,32 @@ + +ARM: CORTEX M, PRIMASK does not disable interrupts + +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 + && ((IS_M(env) && env->regs[15] < 0xfffffff0) + || !(env->uncached_cpsr & CPSR_I))) { + env->exception_index = EXCP_IRQ; + do_interrupt(env); + next_tb = 0; + } + + +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 + && !(env->uncached_cpsr & CPSR_I) + && (IS_M(env) ? env->regs[15] < 0xfffffff0: 1) ) { + env->exception_index = EXCP_IRQ; + do_interrupt(env); + next_tb = 0; + } + +works \ No newline at end of file |