summaryrefslogtreecommitdiff
path: root/cpu-exec.c
diff options
context:
space:
mode:
authoredgar_igl <edgar_igl@c046a42c-6fe2-441c-8c8c-71466251a162>2008-06-09 23:18:06 +0000
committeredgar_igl <edgar_igl@c046a42c-6fe2-441c-8c8c-71466251a162>2008-06-09 23:18:06 +0000
commit1b1a38b0aaf3a24b9b8162d8aef9e700a42f8d43 (patch)
tree1492c8dbf290afdd5fe16fb1437729671ef287ec /cpu-exec.c
parent5bf8f1aba1ab727713edf4084e7bc841dd1e6732 (diff)
CRIS: Emulate NMIs.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4719 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'cpu-exec.c')
-rw-r--r--cpu-exec.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/cpu-exec.c b/cpu-exec.c
index 3a1ff4e07..b8c208b41 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -501,7 +501,15 @@ int cpu_exec(CPUState *env1)
next_tb = 0;
}
#elif defined(TARGET_CRIS)
- if (interrupt_request & CPU_INTERRUPT_HARD) {
+ if (interrupt_request & CPU_INTERRUPT_HARD
+ && (env->pregs[PR_CCS] & I_FLAG)) {
+ env->exception_index = EXCP_IRQ;
+ do_interrupt(env);
+ next_tb = 0;
+ }
+ if (interrupt_request & CPU_INTERRUPT_NMI
+ && (env->pregs[PR_CCS] & M_FLAG)) {
+ env->exception_index = EXCP_NMI;
do_interrupt(env);
next_tb = 0;
}