diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2005-11-23 21:02:53 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2005-11-23 21:02:53 +0000 |
commit | 5a1e3cfcb0f1b7108542d04fababd433938bf8fe (patch) | |
tree | 6108c291f143fb8b872d85cd194b6225af114659 /cpu-exec.c | |
parent | d2ac63e03e21b1a4be24615792b36ec4e953333b (diff) |
better halted state support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1652 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'cpu-exec.c')
-rw-r--r-- | cpu-exec.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/cpu-exec.c b/cpu-exec.c index 72e32684a1..de1fff2122 100644 --- a/cpu-exec.c +++ b/cpu-exec.c @@ -251,6 +251,19 @@ int cpu_exec(CPUState *env1) TranslationBlock *tb; uint8_t *tc_ptr; +#if defined(TARGET_I386) + /* handle exit of HALTED state */ + if (env1->hflags & HF_HALTED_MASK) { + /* disable halt condition */ + if ((env1->interrupt_request & CPU_INTERRUPT_HARD) && + (env1->eflags & IF_MASK)) { + env1->hflags &= ~HF_HALTED_MASK; + } else { + return EXCP_HALTED; + } + } +#endif + cpu_single_env = env1; /* first we save global registers */ |