diff mbox

[v5,2/6] target-m68k: initialize FPU registers

Message ID 20170620205121.26515-3-laurent@vivier.eu
State New
Headers show

Commit Message

Laurent Vivier June 20, 2017, 8:51 p.m. UTC
on reset, set FP registers to NaN and control registers to 0

Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
 target/m68k/cpu.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

Richard Henderson June 20, 2017, 10:44 p.m. UTC | #1
On 06/20/2017 01:51 PM, Laurent Vivier wrote:
> +    env->fpcr = 0;

You probably want to use cpu_m68k_set_fpcr here too, so that fp_status matches.


r~
Richard Henderson June 20, 2017, 10:51 p.m. UTC | #2
On 06/20/2017 01:51 PM, Laurent Vivier wrote:
> on reset, set FP registers to NaN and control registers to 0
> 
> Signed-off-by: Laurent Vivier<laurent@vivier.eu>
> ---
>   target/m68k/cpu.c | 9 ++++++++-
>   1 file changed, 8 insertions(+), 1 deletion(-)

Nevermind the last... it's in 5/6.

Reviewed-by: Richard Henderson <rth@twiddle.net>


r~
diff mbox

Patch

diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c
index f068922..f2e031f 100644
--- a/target/m68k/cpu.c
+++ b/target/m68k/cpu.c
@@ -49,6 +49,8 @@  static void m68k_cpu_reset(CPUState *s)
     M68kCPU *cpu = M68K_CPU(s);
     M68kCPUClass *mcc = M68K_CPU_GET_CLASS(cpu);
     CPUM68KState *env = &cpu->env;
+    float64 nan = float64_default_nan(NULL);
+    int i;
 
     mcc->parent_reset(s);
 
@@ -57,7 +59,12 @@  static void m68k_cpu_reset(CPUState *s)
     env->sr = 0x2700;
 #endif
     m68k_switch_sp(env);
-    /* ??? FP regs should be initialized to NaN.  */
+    for (i = 0; i < 8; i++) {
+        env->fregs[i] = nan;
+    }
+    env->fpcr = 0;
+    env->fpsr = 0;
+
     cpu_m68k_set_ccr(env, 0);
     /* TODO: We should set PC from the interrupt vector.  */
     env->pc = 0;