diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2017-01-27 11:25:33 +0100 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2017-02-22 14:56:34 +0100 |
commit | 1aab16c28a0232d898d6f56f5a56019472296ee7 (patch) | |
tree | 26769555a8a10e4e8e7006462b30b633fc1b036b /translate-common.c | |
parent | a1cf5fac2b929ffa2abd1285401f2535ff8c6fea (diff) |
cpu-exec: unify icount_decr and tcg_exit_req
The icount interrupt flag and tcg_exit_req serve almost the same
purpose, let's make them completely the same.
The former TB_EXIT_REQUESTED and TB_EXIT_ICOUNT_EXPIRED cases are
unified, since we can distinguish them from the value of the
interrupt flag.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'translate-common.c')
-rw-r--r-- | translate-common.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/translate-common.c b/translate-common.c index 5e989cdf70..77762fd86c 100644 --- a/translate-common.c +++ b/translate-common.c @@ -43,14 +43,11 @@ static void tcg_handle_interrupt(CPUState *cpu, int mask) return; } - if (use_icount) { - cpu->icount_decr.u16.high = 0xffff; - if (!cpu->can_do_io - && (mask & ~old_mask) != 0) { - cpu_abort(cpu, "Raised interrupt while not in I/O function"); - } - } else { - cpu->tcg_exit_req = 1; + cpu->icount_decr.u16.high = -1; + if (use_icount && + !cpu->can_do_io + && (mask & ~old_mask) != 0) { + cpu_abort(cpu, "Raised interrupt while not in I/O function"); } } |