OSDN Git Service

initial v2.4 GIT import
[linux-kernel-docs/linux-2.4.36.git] / include / asm-mips64 / hazards.h
1 /*
2  * This file is subject to the terms and conditions of the GNU General Public
3  * License.  See the file "COPYING" in the main directory of this archive
4  * for more details.
5  *
6  * Copyright (C) 2003 Ralf Baechle
7  */
8 #ifndef _ASM_HAZARDS_H
9 #define _ASM_HAZARDS_H
10
11 #include <linux/config.h>
12
13 #ifdef __ASSEMBLY__
14
15 /*
16  * RM9000 hazards.  When the JTLB is updated by tlbwi or tlbwr, a subsequent
17  * use of the JTLB for instructions should not occur for 4 cpu cycles and use
18  * for data translations should not occur for 3 cpu cycles.
19  */
20 #ifdef CONFIG_CPU_RM9000
21 #define rm9000_tlb_hazard                                               \
22         .set    mips32;                                                 \
23         ssnop; ssnop; ssnop; ssnop;                                     \
24         .set    mips0
25 #else
26 #define rm9000_tlb_hazard
27 #endif
28
29 #else
30
31 /*
32  * RM9000 hazards.  When the JTLB is updated by tlbwi or tlbwr, a subsequent
33  * use of the JTLB for instructions should not occur for 4 cpu cycles and use
34  * for data translations should not occur for 3 cpu cycles.
35  */
36 #ifdef CONFIG_CPU_RM9000
37 #define rm9000_tlb_hazard()                                             \
38         __asm__ __volatile__(                                           \
39                 ".set\tmips32\n\t"                                      \
40                 "ssnop; ssnop; ssnop; ssnop\n\t"                        \
41                 ".set\tmips0")
42 #else
43 #define rm9000_tlb_hazard() do { } while (0)
44 #endif
45
46 #endif
47
48 #endif /* _ASM_HAZARDS_H */