From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59176) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ull4U-0000ll-VT for qemu-devel@nongnu.org; Sun, 09 Jun 2013 15:14:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ull4T-0000mW-Jq for qemu-devel@nongnu.org; Sun, 09 Jun 2013 15:14:34 -0400 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Sun, 9 Jun 2013 21:13:07 +0200 Message-Id: <1370805206-26574-41-git-send-email-afaerber@suse.de> In-Reply-To: <1370805206-26574-1-git-send-email-afaerber@suse.de> References: <1370805206-26574-1-git-send-email-afaerber@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH qom-cpu 40/59] target-ppc: Abstract helper_msgsnd() with qemu_for_each_cpu() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: "open list:PowerPC" , =?UTF-8?q?Andreas=20F=C3=A4rber?= , Alexander Graf Signed-off-by: Andreas F=C3=A4rber --- target-ppc/excp_helper.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/target-ppc/excp_helper.c b/target-ppc/excp_helper.c index 4a0fc6d..b09aafc 100644 --- a/target-ppc/excp_helper.c +++ b/target-ppc/excp_helper.c @@ -982,21 +982,28 @@ void helper_msgclr(CPUPPCState *env, target_ulong r= b) env->pending_interrupts &=3D ~(1 << irq); } =20 +static void helper_msgsnd_one(CPUState *cs, void *data) +{ + target_ulong *rb =3D data; + int irq =3D dbell2irq(*rb); + int pir =3D *rb & DBELL_PIRTAG_MASK; + PowerPCCPU *cpu =3D POWERPC_CPU(cs); + CPUPPCState *env =3D &cpu->env; + + if ((*rb & DBELL_BRDCAST) || (env->spr[SPR_BOOKE_PIR] =3D=3D pir)) { + env->pending_interrupts |=3D 1 << irq; + cpu_interrupt(cs, CPU_INTERRUPT_HARD); + } +} + void helper_msgsnd(target_ulong rb) { int irq =3D dbell2irq(rb); - int pir =3D rb & DBELL_PIRTAG_MASK; - CPUPPCState *cenv; =20 if (irq < 0) { return; } =20 - for (cenv =3D first_cpu; cenv !=3D NULL; cenv =3D cenv->next_cpu) { - if ((rb & DBELL_BRDCAST) || (cenv->spr[SPR_BOOKE_PIR] =3D=3D pir= )) { - cenv->pending_interrupts |=3D 1 << irq; - cpu_interrupt(CPU(ppc_env_get_cpu(cenv)), CPU_INTERRUPT_HARD= ); - } - } + qemu_for_each_cpu(helper_msgsnd_one, &rb); } #endif --=20 1.8.1.4