aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/include/asm/fpu.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/include/asm/fpu.h')
-rw-r--r--arch/mips/include/asm/fpu.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/mips/include/asm/fpu.h b/arch/mips/include/asm/fpu.h
index b104ad9d655f..084780b355aa 100644
--- a/arch/mips/include/asm/fpu.h
+++ b/arch/mips/include/asm/fpu.h
@@ -30,7 +30,7 @@
30struct sigcontext; 30struct sigcontext;
31struct sigcontext32; 31struct sigcontext32;
32 32
33extern void _init_fpu(void); 33extern void _init_fpu(unsigned int);
34extern void _save_fp(struct task_struct *); 34extern void _save_fp(struct task_struct *);
35extern void _restore_fp(struct task_struct *); 35extern void _restore_fp(struct task_struct *);
36 36
@@ -188,6 +188,7 @@ static inline void lose_fpu(int save)
188 188
189static inline int init_fpu(void) 189static inline int init_fpu(void)
190{ 190{
191 unsigned int fcr31 = current->thread.fpu.fcr31;
191 int ret = 0; 192 int ret = 0;
192 193
193 if (cpu_has_fpu) { 194 if (cpu_has_fpu) {
@@ -198,7 +199,7 @@ static inline int init_fpu(void)
198 return ret; 199 return ret;
199 200
200 if (!cpu_has_fre) { 201 if (!cpu_has_fre) {
201 _init_fpu(); 202 _init_fpu(fcr31);
202 203
203 return 0; 204 return 0;
204 } 205 }
@@ -212,7 +213,7 @@ static inline int init_fpu(void)
212 config5 = clear_c0_config5(MIPS_CONF5_FRE); 213 config5 = clear_c0_config5(MIPS_CONF5_FRE);
213 enable_fpu_hazard(); 214 enable_fpu_hazard();
214 215
215 _init_fpu(); 216 _init_fpu(fcr31);
216 217
217 /* Restore FRE */ 218 /* Restore FRE */
218 write_c0_config5(config5); 219 write_c0_config5(config5);