aboutsummaryrefslogtreecommitdiff
path: root/cpu-exec.c
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2005-11-23 21:02:53 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2005-11-23 21:02:53 +0000
commit5a1e3cfcb0f1b7108542d04fababd433938bf8fe (patch)
tree6108c291f143fb8b872d85cd194b6225af114659 /cpu-exec.c
parentd2ac63e03e21b1a4be24615792b36ec4e953333b (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.c13
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 */