From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LQ7LX-0008J4-HV for qemu-devel@nongnu.org; Thu, 22 Jan 2009 16:44:19 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LQ7LW-0008Ij-7T for qemu-devel@nongnu.org; Thu, 22 Jan 2009 16:44:18 -0500 Received: from [199.232.76.173] (port=46681 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LQ7LV-0008Ig-VW for qemu-devel@nongnu.org; Thu, 22 Jan 2009 16:44:17 -0500 Received: from mx20.gnu.org ([199.232.41.8]:42367) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LQ7LV-0002sW-Hj for qemu-devel@nongnu.org; Thu, 22 Jan 2009 16:44:17 -0500 Received: from mail.codesourcery.com ([65.74.133.4]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LQ7LU-0007Wp-Lc for qemu-devel@nongnu.org; Thu, 22 Jan 2009 16:44:16 -0500 From: Nathan Froyd Date: Thu, 22 Jan 2009 12:44:04 -0800 Message-Id: <1232657054-30100-5-git-send-email-froydnj@codesourcery.com> In-Reply-To: <1232657054-30100-1-git-send-email-froydnj@codesourcery.com> References: <1232657054-30100-1-git-send-email-froydnj@codesourcery.com> Subject: [Qemu-devel] [PATCH 04/14] Add calls to initialize VSCR on appropriate machines Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Nathan Froyd Signed-off-by: Nathan Froyd --- target-ppc/translate_init.c | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-) diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index 5008a3a..d1722aa 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -471,6 +471,14 @@ static void spr_write_excp_vector (void *opaque, int sprn, int gprn) } #endif +static inline void vscr_init (CPUPPCState *env, uint32_t val) +{ + env->vscr = val; + /* Altivec always uses round-to-nearest */ + set_float_rounding_mode(float_round_nearest_even, &env->vec_status); + set_flush_to_zero(vscr_nj, &env->vec_status); +} + #if defined(CONFIG_USER_ONLY) #define spr_register(env, num, name, uea_read, uea_write, \ oea_read, oea_write, initial_value) \ @@ -1219,6 +1227,8 @@ static void gen_spr_74xx (CPUPPCState *env) SPR_NOACCESS, SPR_NOACCESS, &spr_read_generic, &spr_write_generic, 0x00000000); + /* Not strictly an SPR */ + vscr_init(env, 0x00010000); } static void gen_l3_ctrl (CPUPPCState *env) @@ -5918,6 +5928,9 @@ static void init_proc_970 (CPUPPCState *env) env->icache_line_size = 128; /* Allocate hardware IRQ controller */ ppc970_irq_init(env); + /* Can't find information on what this should be on reset. This + * value is the one used by 74xx processors. */ + vscr_init(env, 0x00010000); } /* PowerPC 970FX (aka G5) */ @@ -6004,6 +6017,9 @@ static void init_proc_970FX (CPUPPCState *env) env->icache_line_size = 128; /* Allocate hardware IRQ controller */ ppc970_irq_init(env); + /* Can't find information on what this should be on reset. This + * value is the one used by 74xx processors. */ + vscr_init(env, 0x00010000); } /* PowerPC 970 GX */ @@ -6090,6 +6106,9 @@ static void init_proc_970GX (CPUPPCState *env) env->icache_line_size = 128; /* Allocate hardware IRQ controller */ ppc970_irq_init(env); + /* Can't find information on what this should be on reset. This + * value is the one used by 74xx processors. */ + vscr_init(env, 0x00010000); } /* PowerPC 970 MP */ @@ -6176,6 +6195,9 @@ static void init_proc_970MP (CPUPPCState *env) env->icache_line_size = 128; /* Allocate hardware IRQ controller */ ppc970_irq_init(env); + /* Can't find information on what this should be on reset. This + * value is the one used by 74xx processors. */ + vscr_init(env, 0x00010000); } /* PowerPC 620 */ -- 1.6.0.5