diff --git a/target-mips/exec.h b/target-mips/exec.h
index 53c4189..5b8577e 100644
--- a/target-mips/exec.h
+++ b/target-mips/exec.h
@@ -96,7 +96,7 @@
 void do_mtc0_status_debug(uint32_t old, uint32_t val);
 void do_mtc0_status_irqraise_debug(void);
 void dump_fpu(CPUState *env);
-void fpu_dump_state(CPUState *env, FILE *f, 
+void fpu_dump_state(CPUState *env, FILE *f,
                     int (*fpu_fprintf)(FILE *f, const char *fmt, ...),
                     int flags);
 void dump_sc (void);
@@ -145,7 +145,7 @@
 void do_raise_exception_direct_err (uint32_t exception, int error_code);
 void do_raise_exception_direct (uint32_t exception);
 
-void cpu_dump_state(CPUState *env, FILE *f, 
+void cpu_dump_state(CPUState *env, FILE *f,
                     int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
                     int flags);
 void cpu_mips_irqctrl_init (void);
diff --git a/target-mips/fop_template.c b/target-mips/fop_template.c
index bbdcb28..25b2ca7 100644
--- a/target-mips/fop_template.c
+++ b/target-mips/fop_template.c
@@ -1,7 +1,7 @@
 /*
- * MIPS emulation micro-operations templates for floating point reg 
+ * MIPS emulation micro-operations templates for floating point reg
  * load & store for qemu.
- * 
+ *
  * Copyright (c) 2006 Marius Groeger
  *
  * This library is free software; you can redistribute it and/or
diff --git a/target-mips/helper.c b/target-mips/helper.c
index 6d0be10..9a50345 100644
--- a/target-mips/helper.c
+++ b/target-mips/helper.c
@@ -1,6 +1,6 @@
 /*
  *  MIPS emulation helpers for qemu.
- * 
+ *
  *  Copyright (c) 2004-2005 Jocelyn Mayer
  *
  * This library is free software; you can redistribute it and/or
@@ -203,7 +203,7 @@
     return ret;
 }
 
-#if defined(CONFIG_USER_ONLY) 
+#if defined(CONFIG_USER_ONLY)
 target_phys_addr_t cpu_get_phys_page_debug(CPUState *env, target_ulong addr)
 {
     return addr;
@@ -293,7 +293,7 @@
             /* TLB match but 'D' bit is cleared */
             exception = EXCP_LTLBL;
             break;
-                
+               
         }
         /* Raise exception */
         env->CP0_BadVAddr = address;
diff --git a/target-mips/op.c b/target-mips/op.c
index 3f52f59..8d4c7d4 100644
--- a/target-mips/op.c
+++ b/target-mips/op.c
@@ -1,6 +1,6 @@
 /*
  *  MIPS emulation micro-operations for qemu.
- * 
+ *
  *  Copyright (c) 2004-2005 Jocelyn Mayer
  *  Copyright (c) 2006 Marius Groeger (FPU operations)
  *  Copyright (c) 2007 Thiemo Seufer (64-bit FPU support)
diff --git a/target-mips/op_helper.c b/target-mips/op_helper.c
index c87317a..9d2f99e 100644
--- a/target-mips/op_helper.c
+++ b/target-mips/op_helper.c
@@ -1,6 +1,6 @@
 /*
  *  MIPS emulation helpers for qemu.
- * 
+ *
  *  Copyright (c) 2004-2005 Jocelyn Mayer
  *
  * This library is free software; you can redistribute it and/or
@@ -244,7 +244,7 @@
 #endif
 #endif /* TARGET_MIPS64 */
 
-#if defined(CONFIG_USER_ONLY) 
+#if defined(CONFIG_USER_ONLY)
 void do_mfc0_random (void)
 {
     cpu_abort(env, "mfc0 random\n");
@@ -321,25 +321,25 @@
 
     enable = GET_FP_ENABLE(env->fpu->fcr31);
 
-    /* determine current flags */   
+    /* determine current flags */  
     if (flags & float_flag_invalid) {
         cpuflags |= FP_INVALID;
         cause |= FP_INVALID & enable;
     }
     if (flags & float_flag_divbyzero) {
-        cpuflags |= FP_DIV0;    
+        cpuflags |= FP_DIV0;   
         cause |= FP_DIV0 & enable;
     }
     if (flags & float_flag_overflow) {
-        cpuflags |= FP_OVERFLOW;    
+        cpuflags |= FP_OVERFLOW;   
         cause |= FP_OVERFLOW & enable;
     }
     if (flags & float_flag_underflow) {
-        cpuflags |= FP_UNDERFLOW;   
+        cpuflags |= FP_UNDERFLOW;  
         cause |= FP_UNDERFLOW & enable;
     }
     if (flags & float_flag_inexact) {
-        cpuflags |= FP_INEXACT; 
+        cpuflags |= FP_INEXACT;
         cause |= FP_INEXACT & enable;
     }
     SET_FP_FLAGS(env->fpu->fcr31, cpuflags);
@@ -539,7 +539,7 @@
     }
 }
 
-#if !defined(CONFIG_USER_ONLY) 
+#if !defined(CONFIG_USER_ONLY)
 
 static void do_unaligned_access (target_ulong addr, int is_write, int is_user, void *retaddr);
 
diff --git a/target-mips/op_mem.c b/target-mips/op_mem.c
index 602c071..19241f1 100644
--- a/target-mips/op_mem.c
+++ b/target-mips/op_mem.c
@@ -1,6 +1,6 @@
 /*
  *  MIPS emulation memory micro-operations for qemu.
- * 
+ *
  *  Copyright (c) 2004-2005 Jocelyn Mayer
  *
  * This library is free software; you can redistribute it and/or
diff --git a/target-mips/op_template.c b/target-mips/op_template.c
index 41d954c1..f3a05ad 100644
--- a/target-mips/op_template.c
+++ b/target-mips/op_template.c
@@ -1,6 +1,6 @@
 /*
  *  MIPS emulation micro-operations templates for reg load & store for qemu.
- * 
+ *
  *  Copyright (c) 2004-2005 Jocelyn Mayer
  *
  * This library is free software; you can redistribute it and/or
diff --git a/target-mips/translate.c b/target-mips/translate.c
index d7bb20a..ee15193 100644
--- a/target-mips/translate.c
+++ b/target-mips/translate.c
@@ -1,6 +1,6 @@
 /*
  *  MIPS32 emulation for qemu: main translation routines.
- * 
+ *
  *  Copyright (c) 2004-2005 Jocelyn Mayer
  *  Copyright (c) 2006 Marius Groeger (FPU operations)
  *  Copyright (c) 2006 Thiemo Seufer (MIPS32R2 support)
@@ -6514,7 +6514,7 @@
         fprintf(logfile, "---------------- %d %08x\n", ctx.bstate, ctx.hflags);
     }
 #endif
-    
+   
     return 0;
 }
 
@@ -6528,7 +6528,7 @@
     return gen_intermediate_code_internal(env, tb, 1);
 }
 
-void fpu_dump_state(CPUState *env, FILE *f, 
+void fpu_dump_state(CPUState *env, FILE *f,
                     int (*fpu_fprintf)(FILE *f, const char *fmt, ...),
                     int flags)
 {
@@ -6568,7 +6568,7 @@
 
 void dump_fpu (CPUState *env)
 {
-    if (loglevel) { 
+    if (loglevel) {
        fprintf(logfile, "pc=0x" TARGET_FMT_lx " HI=0x" TARGET_FMT_lx " LO=0x" TARGET_FMT_lx " ds %04x " TARGET_FMT_lx " %d\n",
                env->PC[env->current_tc], env->HI[0][env->current_tc], env->LO[0][env->current_tc], env->hflags, env->btarget, env->bcond);
        fpu_dump_state(env, logfile, fprintf, 0);
@@ -6608,12 +6608,12 @@
 }
 #endif
 
-void cpu_dump_state (CPUState *env, FILE *f, 
+void cpu_dump_state (CPUState *env, FILE *f,
                      int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
                      int flags)
 {
     int i;
-    
+   
     cpu_fprintf(f, "pc=0x" TARGET_FMT_lx " HI=0x" TARGET_FMT_lx " LO=0x" TARGET_FMT_lx " ds %04x " TARGET_FMT_lx " %d\n",
                 env->PC[env->current_tc], env->HI[env->current_tc], env->LO[env->current_tc], env->hflags, env->btarget, env->bcond);
     for (i = 0; i < 32; i++) {
