From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55426) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WT9yI-0004US-HW for qemu-devel@nongnu.org; Thu, 27 Mar 2014 09:03:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WT9y9-0000GM-3c for qemu-devel@nongnu.org; Thu, 27 Mar 2014 09:03:50 -0400 Received: from mail-pd0-f169.google.com ([209.85.192.169]:52136) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WT9y8-0000G5-I1 for qemu-devel@nongnu.org; Thu, 27 Mar 2014 09:03:40 -0400 Received: by mail-pd0-f169.google.com with SMTP id fp1so3348049pdb.0 for ; Thu, 27 Mar 2014 06:03:39 -0700 (PDT) Message-ID: <533421A6.6030007@ozlabs.ru> Date: Fri, 28 Mar 2014 00:03:34 +1100 From: Alexey Kardashevskiy MIME-Version: 1.0 References: <1395715231-4217-1-git-send-email-anton@samba.org> <1395715231-4217-6-git-send-email-anton@samba.org> In-Reply-To: <1395715231-4217-6-git-send-email-anton@samba.org> Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH 6/6] target-ppc: Add PMC7/8 to 970 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anton Blanchard , qemu-ppc@nongnu.org, qemu-devel@nongnu.org Cc: clg@fr.ibm.com, gkurz@linux.vnet.ibm.com On 03/25/2014 01:40 PM, Anton Blanchard wrote: > 970 CPUs have PMC7/8. Create gen_spr_970 to avoid replicating > it 3 times, and simplify the existing code. > > Signed-off-by: Anton Blanchard > --- > target-ppc/translate_init.c | 89 ++++++++++++++++++++------------------------- > 1 file changed, 39 insertions(+), 50 deletions(-) > > diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c > index 273e37d..50b2603 100644 > --- a/target-ppc/translate_init.c > +++ b/target-ppc/translate_init.c > @@ -6747,12 +6747,13 @@ static void gen_spr_book3s (CPUPPCState *env) > 0x00000000); > } > > -static void init_proc_970 (CPUPPCState *env) > +static void gen_spr_970 (CPUPPCState *env) > { > - gen_spr_ne_601(env); > - gen_spr_book3s(env); > - /* Time base */ > - gen_tbl(env); > + spr_register(env, SPR_HIOR, "SPR_HIOR", + spr_register(env, SPR_HIOR, "HIOR", Can we please not add SPR_ in string name? Thanks. > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_hior, &spr_write_hior, > + 0x00000000); > + > /* Hardware implementation registers */ > /* XXX : not implemented */ > spr_register(env, SPR_HID0, "HID0", > @@ -6769,13 +6770,40 @@ static void init_proc_970 (CPUPPCState *env) > SPR_NOACCESS, SPR_NOACCESS, > &spr_read_generic, &spr_write_generic, > POWERPC970_HID5_INIT); > + > + /* Performance monitors */ > + /* XXX : not implemented */ > + spr_register_kvm(env, SPR_BOOK3S_PMC7, "PMC7", > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + KVM_REG_PPC_PMC7, 0x00000000); > + /* XXX : not implemented */ > + spr_register_kvm(env, SPR_BOOK3S_PMC8, "PMC8", > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + KVM_REG_PPC_PMC8, 0x00000000); > + /* XXX : not implemented */ > + spr_register(env, SPR_BOOK3S_UPMC7, "UPMC7", > + &spr_read_ureg, SPR_NOACCESS, > + &spr_read_ureg, SPR_NOACCESS, > + 0x00000000); > + /* XXX : not implemented */ > + spr_register(env, SPR_BOOK3S_UPMC8, "UPMC8", > + &spr_read_ureg, SPR_NOACCESS, > + &spr_read_ureg, SPR_NOACCESS, > + 0x00000000); > +} > + > +static void init_proc_970 (CPUPPCState *env) > +{ > + gen_spr_ne_601(env); > + gen_spr_book3s(env); > + gen_spr_970(env); > + /* Time base */ > + gen_tbl(env); > /* Memory management */ > /* XXX: not correct */ > gen_low_BATs(env); > - spr_register(env, SPR_HIOR, "SPR_HIOR", > - SPR_NOACCESS, SPR_NOACCESS, > - &spr_read_hior, &spr_write_hior, > - 0x00000000); > #if !defined(CONFIG_USER_ONLY) > env->slb_nr = 32; > #endif > @@ -6831,31 +6859,12 @@ static void init_proc_970FX (CPUPPCState *env) > { > gen_spr_ne_601(env); > gen_spr_book3s(env); > + gen_spr_970(env); > /* Time base */ > gen_tbl(env); > - /* Hardware implementation registers */ > - /* XXX : not implemented */ > - spr_register(env, SPR_HID0, "HID0", > - SPR_NOACCESS, SPR_NOACCESS, > - &spr_read_generic, &spr_write_clear, > - 0x60000000); > - /* XXX : not implemented */ > - spr_register(env, SPR_HID1, "HID1", > - SPR_NOACCESS, SPR_NOACCESS, > - &spr_read_generic, &spr_write_generic, > - 0x00000000); > - /* XXX : not implemented */ > - spr_register(env, SPR_970_HID5, "HID5", > - SPR_NOACCESS, SPR_NOACCESS, > - &spr_read_generic, &spr_write_generic, > - POWERPC970_HID5_INIT); > /* Memory management */ > /* XXX: not correct */ > gen_low_BATs(env); > - spr_register(env, SPR_HIOR, "SPR_HIOR", > - SPR_NOACCESS, SPR_NOACCESS, > - &spr_read_hior, &spr_write_hior, > - 0x00000000); > spr_register(env, SPR_CTRL, "SPR_CTRL", > SPR_NOACCESS, SPR_NOACCESS, > SPR_NOACCESS, &spr_write_generic, > @@ -6923,32 +6932,12 @@ static void init_proc_970MP (CPUPPCState *env) > { > gen_spr_ne_601(env); > gen_spr_book3s(env); > + gen_spr_970(env); > /* Time base */ > gen_tbl(env); > - /* Hardware implementation registers */ > - /* XXX : not implemented */ > - spr_register(env, SPR_HID0, "HID0", > - SPR_NOACCESS, SPR_NOACCESS, > - &spr_read_generic, &spr_write_clear, > - 0x60000000); > - /* XXX : not implemented */ > - spr_register(env, SPR_HID1, "HID1", > - SPR_NOACCESS, SPR_NOACCESS, > - &spr_read_generic, &spr_write_generic, > - 0x00000000); > - /* XXX : not implemented */ > - spr_register(env, SPR_970_HID5, "HID5", > - SPR_NOACCESS, SPR_NOACCESS, > - &spr_read_generic, &spr_write_generic, > - POWERPC970_HID5_INIT); > - /* XXX : not implemented */ > /* Memory management */ > /* XXX: not correct */ > gen_low_BATs(env); > - spr_register(env, SPR_HIOR, "SPR_HIOR", > - SPR_NOACCESS, SPR_NOACCESS, > - &spr_read_hior, &spr_write_hior, > - 0x00000000); > /* Logical partitionning */ > spr_register_kvm(env, SPR_LPCR, "LPCR", > SPR_NOACCESS, SPR_NOACCESS, > -- Alexey