From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=60506 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Pf8uC-0008F5-Tc for qemu-devel@nongnu.org; Tue, 18 Jan 2011 05:35:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Pf8uB-0000dy-J8 for qemu-devel@nongnu.org; Tue, 18 Jan 2011 05:35:16 -0500 Received: from hall.aurel32.net ([88.191.126.93]:41285) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Pf8uB-0000dr-Ek for qemu-devel@nongnu.org; Tue, 18 Jan 2011 05:35:15 -0500 Date: Tue, 18 Jan 2011 11:35:15 +0100 From: Aurelien Jarno Message-ID: <20110118103515.GA13537@volta.aurel32.net> References: <1295306982-29629-1-git-send-email-edgar.iglesias@gmail.com> <1295306982-29629-3-git-send-email-edgar.iglesias@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <1295306982-29629-3-git-send-email-edgar.iglesias@gmail.com> Subject: [Qemu-devel] Re: [PATCH 2/3] mips: Break out cpu_mips_timer_expire List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: edgar.iglesias@gmail.com Cc: qemu-devel@nongnu.org On Tue, Jan 18, 2011 at 12:29:41AM +0100, edgar.iglesias@gmail.com wrote: > From: Edgar E. Iglesias > > Reorganize for future patches, no functional change. > > Signed-off-by: Edgar E. Iglesias > --- > hw/mips_timer.c | 36 ++++++++++++++++++++++-------------- > 1 files changed, 22 insertions(+), 14 deletions(-) > > diff --git a/hw/mips_timer.c b/hw/mips_timer.c > index e3beee8..8c32087 100644 > --- a/hw/mips_timer.c > +++ b/hw/mips_timer.c > @@ -42,16 +42,6 @@ uint32_t cpu_mips_get_random (CPUState *env) > } > > /* MIPS R4K timer */ > -uint32_t cpu_mips_get_count (CPUState *env) > -{ > - if (env->CP0_Cause & (1 << CP0Ca_DC)) > - return env->CP0_Count; > - else > - return env->CP0_Count + > - (uint32_t)muldiv64(qemu_get_clock(vm_clock), > - TIMER_FREQ, get_ticks_per_sec()); > -} > - > static void cpu_mips_timer_update(CPUState *env) > { > uint64_t now, next; > @@ -64,6 +54,27 @@ static void cpu_mips_timer_update(CPUState *env) > qemu_mod_timer(env->timer, next); > } > > +/* Expire the timer. */ > +static void cpu_mips_timer_expire(CPUState *env) > +{ > + cpu_mips_timer_update(env); > + if (env->insn_flags & ISA_MIPS32R2) { > + env->CP0_Cause |= 1 << CP0Ca_TI; > + } > + qemu_irq_raise(env->irq[(env->CP0_IntCtl >> CP0IntCtl_IPTI) & 0x7]); > +} > + > +uint32_t cpu_mips_get_count (CPUState *env) > +{ > + if (env->CP0_Cause & (1 << CP0Ca_DC)) { > + return env->CP0_Count; > + } else { > + return env->CP0_Count + > + (uint32_t)muldiv64(qemu_get_clock(vm_clock), > + TIMER_FREQ, get_ticks_per_sec()); > + } > +} > + > void cpu_mips_store_count (CPUState *env, uint32_t count) > { > if (env->CP0_Cause & (1 << CP0Ca_DC)) > @@ -116,11 +127,8 @@ static void mips_timer_cb (void *opaque) > the comparator value. Offset the count by one to avoid immediately > retriggering the callback before any virtual time has passed. */ > env->CP0_Count++; > - cpu_mips_timer_update(env); > + cpu_mips_timer_expire(env); > env->CP0_Count--; > - if (env->insn_flags & ISA_MIPS32R2) > - env->CP0_Cause |= 1 << CP0Ca_TI; > - qemu_irq_raise(env->irq[(env->CP0_IntCtl >> CP0IntCtl_IPTI) & 0x7]); > } > > void cpu_mips_clock_init (CPUState *env) > -- > 1.7.2.2 > > Acked-by: Aurelien Jarno -- Aurelien Jarno GPG: 1024D/F1BCDB73 aurelien@aurel32.net http://www.aurel32.net