qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 04/14] Add calls to initialize VSCR on appropriate m


From: Nathan Froyd
Subject: [Qemu-devel] [PATCH 04/14] Add calls to initialize VSCR on appropriate machines
Date: Thu, 22 Jan 2009 12:44:04 -0800

Signed-off-by: Nathan Froyd <address@hidden>
---
 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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]