summary refs log tree commit diff stats
path: root/results/scraper/launchpad-without-comments/942659
diff options
context:
space:
mode:
Diffstat (limited to 'results/scraper/launchpad-without-comments/942659')
-rw-r--r--results/scraper/launchpad-without-comments/94265931
1 files changed, 31 insertions, 0 deletions
diff --git a/results/scraper/launchpad-without-comments/942659 b/results/scraper/launchpad-without-comments/942659
new file mode 100644
index 00000000..55a1e906
--- /dev/null
+++ b/results/scraper/launchpad-without-comments/942659
@@ -0,0 +1,31 @@
+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