From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38914) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b10m3-0003La-TV for qemu-devel@nongnu.org; Thu, 12 May 2016 20:16:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b10m2-0003BO-Mw for qemu-devel@nongnu.org; Thu, 12 May 2016 20:16:11 -0400 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:34224) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b10m2-0003BI-I7 for qemu-devel@nongnu.org; Thu, 12 May 2016 20:16:10 -0400 Received: by mail-qk0-x243.google.com with SMTP id i7so7141479qkd.1 for ; Thu, 12 May 2016 17:16:10 -0700 (PDT) Sender: Richard Henderson From: Richard Henderson Date: Thu, 12 May 2016 14:13:40 -1000 Message-Id: <1463098420-29113-40-git-send-email-rth@twiddle.net> In-Reply-To: <1463098420-29113-1-git-send-email-rth@twiddle.net> References: <1463098420-29113-1-git-send-email-rth@twiddle.net> Subject: [Qemu-devel] [PULL 39/39] cpu-exec: Clean up 'interrupt_request' reloading in cpu_handle_interrupt() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, Sergey Fedorov , Sergey Fedorov From: Sergey Fedorov Suggested-by: Richard Henderson Signed-off-by: Sergey Fedorov Signed-off-by: Sergey Fedorov Message-Id: <1463071937-26607-1-git-send-email-sergey.fedorov@linaro.org> Reviewed-by: Richard Henderson Signed-off-by: Richard Henderson --- cpu-exec.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cpu-exec.c b/cpu-exec.c index 0ea47e9..14df1aa 100644 --- a/cpu-exec.c +++ b/cpu-exec.c @@ -488,10 +488,11 @@ static inline void cpu_handle_interrupt(CPUState *cpu, if (cc->cpu_exec_interrupt(cpu, interrupt_request)) { *last_tb = NULL; } + /* The target hook may have updated the 'cpu->interrupt_request'; + * reload the 'interrupt_request' value */ + interrupt_request = cpu->interrupt_request; } - /* Don't use the cached interrupt_request value, - do_interrupt may have updated the EXITTB flag. */ - if (cpu->interrupt_request & CPU_INTERRUPT_EXITTB) { + if (interrupt_request & CPU_INTERRUPT_EXITTB) { cpu->interrupt_request &= ~CPU_INTERRUPT_EXITTB; /* ensure that no TB jump will be modified as the program flow was changed */ -- 2.5.5