From 8ea22e618aa8c7e837fec1b35cddf8fce3e50ead Mon Sep 17 00:00:00 2001 From: Chris Dearman Date: Tue, 8 May 2007 16:09:13 +0100 Subject: [PATCH] --- yaml --- r: 56009 b: refs/heads/master c: 0b6249567b4ecf6e9d5a8efcf149f3e7cf788cc0 h: refs/heads/master i: 56007: 9a99fdf73c1bc05a5ba2d701077a1fb9b155c8ea v: v3 --- [refs] | 2 +- trunk/include/asm-mips/fpu.h | 23 +++-------------------- trunk/include/asm-mips/hazards.h | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/[refs] b/[refs] index 4ef7ed9bf944..02ab30ef7bbd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d725cf3818b12a17d78b87a2de19e8eec17126ae +refs/heads/master: 0b6249567b4ecf6e9d5a8efcf149f3e7cf788cc0 diff --git a/trunk/include/asm-mips/fpu.h b/trunk/include/asm-mips/fpu.h index b414a7d9db43..483685b1592e 100644 --- a/trunk/include/asm-mips/fpu.h +++ b/trunk/include/asm-mips/fpu.h @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -38,34 +39,16 @@ extern void _init_fpu(void); extern void _save_fp(struct task_struct *); extern void _restore_fp(struct task_struct *); -#if defined(CONFIG_CPU_SB1) -#define __enable_fpu_hazard() \ -do { \ - asm(".set push \n\t" \ - ".set mips64 \n\t" \ - ".set noreorder \n\t" \ - "ssnop \n\t" \ - "bnezl $0, .+4 \n\t" \ - "ssnop \n\t" \ - ".set pop"); \ -} while (0) -#else -#define __enable_fpu_hazard() \ -do { \ - asm("nop;nop;nop;nop"); /* max. hazard */ \ -} while (0) -#endif - #define __enable_fpu() \ do { \ set_c0_status(ST0_CU1); \ - __enable_fpu_hazard(); \ + enable_fpu_hazard(); \ } while (0) #define __disable_fpu() \ do { \ clear_c0_status(ST0_CU1); \ - /* We don't care about the c0 hazard here */ \ + disable_fpu_hazard(); \ } while (0) #define enable_fpu() \ diff --git a/trunk/include/asm-mips/hazards.h b/trunk/include/asm-mips/hazards.h index e50c77e69cb5..1542f23ab9d9 100644 --- a/trunk/include/asm-mips/hazards.h +++ b/trunk/include/asm-mips/hazards.h @@ -178,4 +178,36 @@ ASMMACRO(back_to_back_c0_hazard, #endif + +/* FPU hazards */ + +#if defined(CONFIG_CPU_SB1) +ASMMACRO(enable_fpu_hazard, + .set push; + .set mips64; + .set noreorder; + _ssnop; + bnezl $0,.+4; + _ssnop + .set pop +) +ASMMACRO(disable_fpu_hazard, +) + +#elif defined(CONFIG_CPU_MIPSR2) +ASMMACRO(enable_fpu_hazard, + _ehb +) +ASMMACRO(disable_fpu_hazard, + _ehb +) +#else +ASMMACRO(enable_fpu_hazard, + nop; nop; nop; nop +) +ASMMACRO(disable_fpu_hazard, + _ehb +) +#endif + #endif /* _ASM_HAZARDS_H */