From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:46817) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tk1ro-0000qk-3s for qemu-devel@nongnu.org; Sat, 15 Dec 2012 19:14:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tk1rm-0004tI-8G for qemu-devel@nongnu.org; Sat, 15 Dec 2012 19:14:04 -0500 Received: from cantor2.suse.de ([195.135.220.15]:33028 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tk1rl-0004t1-Ur for qemu-devel@nongnu.org; Sat, 15 Dec 2012 19:14:02 -0500 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Sun, 16 Dec 2012 01:13:31 +0100 Message-Id: <1355616817-1260-6-git-send-email-afaerber@suse.de> In-Reply-To: <1355616817-1260-1-git-send-email-afaerber@suse.de> References: <1355616817-1260-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 v2 05/11] ppc: Pass PowerPCCPU to [h]decr callbacks List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Marcelo Tosatti , =?UTF-8?q?Andreas=20F=C3=A4rber?= , kvm@vger.kernel.org Cleans up after passing PowerPCCPU to ppc_set_irq(). Signed-off-by: Andreas F=C3=A4rber --- hw/ppc.c | 60 +++++++++++++++++++++++++++++++++-----------------------= ---- 1 Datei ge=C3=A4ndert, 33 Zeilen hinzugef=C3=BCgt(+), 27 Zeilen entfernt= (-) diff --git a/hw/ppc.c b/hw/ppc.c index 6db595f..b1b93a1 100644 --- a/hw/ppc.c +++ b/hw/ppc.c @@ -644,30 +644,27 @@ uint64_t cpu_ppc_load_purr (CPUPPCState *env) /* When decrementer expires, * all we need to do is generate or queue a CPU exception */ -static inline void cpu_ppc_decr_excp(CPUPPCState *env) +static inline void cpu_ppc_decr_excp(PowerPCCPU *cpu) { - PowerPCCPU *cpu =3D ppc_env_get_cpu(env); - /* Raise it */ LOG_TB("raise decrementer exception\n"); ppc_set_irq(cpu, PPC_INTERRUPT_DECR, 1); } =20 -static inline void cpu_ppc_hdecr_excp(CPUPPCState *env) +static inline void cpu_ppc_hdecr_excp(PowerPCCPU *cpu) { - PowerPCCPU *cpu =3D ppc_env_get_cpu(env); - /* Raise it */ LOG_TB("raise decrementer exception\n"); ppc_set_irq(cpu, PPC_INTERRUPT_HDECR, 1); } =20 -static void __cpu_ppc_store_decr (CPUPPCState *env, uint64_t *nextp, - struct QEMUTimer *timer, - void (*raise_excp)(CPUPPCState *), - uint32_t decr, uint32_t value, - int is_excp) +static void __cpu_ppc_store_decr(PowerPCCPU *cpu, uint64_t *nextp, + struct QEMUTimer *timer, + void (*raise_excp)(PowerPCCPU *), + uint32_t decr, uint32_t value, + int is_excp) { + CPUPPCState *env =3D &cpu->env; ppc_tb_t *tb_env =3D env->tb_env; uint64_t now, next; =20 @@ -697,53 +694,61 @@ static void __cpu_ppc_store_decr (CPUPPCState *env,= uint64_t *nextp, if ((tb_env->flags & PPC_DECR_UNDERFLOW_TRIGGERED) && (value & 0x80000000) && !(decr & 0x80000000)) { - (*raise_excp)(env); + (*raise_excp)(cpu); } } =20 -static inline void _cpu_ppc_store_decr(CPUPPCState *env, uint32_t decr, +static inline void _cpu_ppc_store_decr(PowerPCCPU *cpu, uint32_t decr, uint32_t value, int is_excp) { - ppc_tb_t *tb_env =3D env->tb_env; + ppc_tb_t *tb_env =3D cpu->env.tb_env; =20 - __cpu_ppc_store_decr(env, &tb_env->decr_next, tb_env->decr_timer, + __cpu_ppc_store_decr(cpu, &tb_env->decr_next, tb_env->decr_timer, &cpu_ppc_decr_excp, decr, value, is_excp); } =20 void cpu_ppc_store_decr (CPUPPCState *env, uint32_t value) { - _cpu_ppc_store_decr(env, cpu_ppc_load_decr(env), value, 0); + PowerPCCPU *cpu =3D ppc_env_get_cpu(env); + + _cpu_ppc_store_decr(cpu, cpu_ppc_load_decr(env), value, 0); } =20 static void cpu_ppc_decr_cb (void *opaque) { - _cpu_ppc_store_decr(opaque, 0x00000000, 0xFFFFFFFF, 1); + CPUPPCState *env =3D opaque; + + _cpu_ppc_store_decr(ppc_env_get_cpu(env), 0x00000000, 0xFFFFFFFF, 1)= ; } =20 -static inline void _cpu_ppc_store_hdecr(CPUPPCState *env, uint32_t hdecr= , +static inline void _cpu_ppc_store_hdecr(PowerPCCPU *cpu, uint32_t hdecr, uint32_t value, int is_excp) { - ppc_tb_t *tb_env =3D env->tb_env; + ppc_tb_t *tb_env =3D cpu->env.tb_env; =20 if (tb_env->hdecr_timer !=3D NULL) { - __cpu_ppc_store_decr(env, &tb_env->hdecr_next, tb_env->hdecr_tim= er, + __cpu_ppc_store_decr(cpu, &tb_env->hdecr_next, tb_env->hdecr_tim= er, &cpu_ppc_hdecr_excp, hdecr, value, is_excp)= ; } } =20 void cpu_ppc_store_hdecr (CPUPPCState *env, uint32_t value) { - _cpu_ppc_store_hdecr(env, cpu_ppc_load_hdecr(env), value, 0); + PowerPCCPU *cpu =3D ppc_env_get_cpu(env); + + _cpu_ppc_store_hdecr(cpu, cpu_ppc_load_hdecr(env), value, 0); } =20 static void cpu_ppc_hdecr_cb (void *opaque) { - _cpu_ppc_store_hdecr(opaque, 0x00000000, 0xFFFFFFFF, 1); + CPUPPCState *env =3D opaque; + + _cpu_ppc_store_hdecr(ppc_env_get_cpu(env), 0x00000000, 0xFFFFFFFF, 1= ); } =20 -static void cpu_ppc_store_purr(CPUPPCState *env, uint64_t value) +static void cpu_ppc_store_purr(PowerPCCPU *cpu, uint64_t value) { - ppc_tb_t *tb_env =3D env->tb_env; + ppc_tb_t *tb_env =3D cpu->env.tb_env; =20 tb_env->purr_load =3D value; tb_env->purr_start =3D qemu_get_clock_ns(vm_clock); @@ -752,6 +757,7 @@ static void cpu_ppc_store_purr(CPUPPCState *env, uint= 64_t value) static void cpu_ppc_set_tb_clk (void *opaque, uint32_t freq) { CPUPPCState *env =3D opaque; + PowerPCCPU *cpu =3D ppc_env_get_cpu(env); ppc_tb_t *tb_env =3D env->tb_env; =20 tb_env->tb_freq =3D freq; @@ -760,9 +766,9 @@ static void cpu_ppc_set_tb_clk (void *opaque, uint32_= t freq) * if a decrementer exception is pending when it enables msr_ee at s= tartup, * it's not ready to handle it... */ - _cpu_ppc_store_decr(env, 0xFFFFFFFF, 0xFFFFFFFF, 0); - _cpu_ppc_store_hdecr(env, 0xFFFFFFFF, 0xFFFFFFFF, 0); - cpu_ppc_store_purr(env, 0x0000000000000000ULL); + _cpu_ppc_store_decr(cpu, 0xFFFFFFFF, 0xFFFFFFFF, 0); + _cpu_ppc_store_hdecr(cpu, 0xFFFFFFFF, 0xFFFFFFFF, 0); + cpu_ppc_store_purr(cpu, 0x0000000000000000ULL); } =20 /* Set up (once) timebase frequency (in Hz) */ --=20 1.7.10.4