From patchwork Fri Mar 18 12:19:14 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kiszka X-Patchwork-Id: 643611 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p2ICJPrb010818 for ; Fri, 18 Mar 2011 12:19:26 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755333Ab1CRMTY (ORCPT ); Fri, 18 Mar 2011 08:19:24 -0400 Received: from fmmailgate02.web.de ([217.72.192.227]:35821 "EHLO fmmailgate02.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752800Ab1CRMTW (ORCPT ); Fri, 18 Mar 2011 08:19:22 -0400 Received: from smtp06.web.de ( [172.20.5.172]) by fmmailgate02.web.de (Postfix) with ESMTP id F02CB19AA7554; Fri, 18 Mar 2011 13:19:20 +0100 (CET) Received: from [88.65.248.169] (helo=localhost.localdomain) by smtp06.web.de with asmtp (TLSv1:AES256-SHA:256) (WEB.DE 4.110 #2) id 1Q0YeG-0001iA-01; Fri, 18 Mar 2011 13:19:20 +0100 From: Jan Kiszka To: Avi Kivity , Marcelo Tosatti Cc: kvm@vger.kernel.org, qemu-devel@nongnu.org, Riku Voipio Subject: [PATCH 1/3] Break up user and system cpu_interrupt implementations Date: Fri, 18 Mar 2011 13:19:14 +0100 Message-Id: <21ed38ab7d7051ab57e7ad75b55451d810717419.1300450747.git.jan.kiszka@web.de> X-Mailer: git-send-email 1.7.1 In-Reply-To: References: In-Reply-To: References: X-Sender: jan.kiszka@web.de X-Provags-ID: V01U2FsdGVkX18iHJi62Pp3QhJf3i+9yfYoK5qDKx2fW174IUj2 /H+RSEpwJEIWs9sc2SQ+1KSq4GZuqJFM5LL5AW25tBsKo+obQ+ eheu/L5Xs= Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Fri, 18 Mar 2011 12:19:26 +0000 (UTC) diff --git a/exec.c b/exec.c index 964ce31..4721f04 100644 --- a/exec.c +++ b/exec.c @@ -1630,6 +1630,7 @@ static void cpu_unlink_tb(CPUState *env) spin_unlock(&interrupt_lock); } +#ifndef CONFIG_USER_ONLY /* mask must never be zero, except for A20 change call */ void cpu_interrupt(CPUState *env, int mask) { @@ -1638,7 +1639,6 @@ void cpu_interrupt(CPUState *env, int mask) old_mask = env->interrupt_request; env->interrupt_request |= mask; -#ifndef CONFIG_USER_ONLY /* * If called from iothread context, wake the target cpu in * case its halted. @@ -1647,21 +1647,27 @@ void cpu_interrupt(CPUState *env, int mask) qemu_cpu_kick(env); return; } -#endif if (use_icount) { env->icount_decr.u16.high = 0xffff; -#ifndef CONFIG_USER_ONLY if (!can_do_io(env) && (mask & ~old_mask) != 0) { cpu_abort(env, "Raised interrupt while not in I/O function"); } -#endif } else { cpu_unlink_tb(env); } } +#else /* CONFIG_USER_ONLY */ + +void cpu_interrupt(CPUState *env, int mask) +{ + env->interrupt_request |= mask; + cpu_unlink_tb(env); +} +#endif /* CONFIG_USER_ONLY */ + void cpu_reset_interrupt(CPUState *env, int mask) { env->interrupt_request &= ~mask;