Merge branch 'master'
[linux-2.6] / include / asm-mips / asmmacro.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_ASMMACRO_H
9 #define _ASM_ASMMACRO_H
10
11 #include <linux/config.h>
12 #include <asm/hazards.h>
13
14 #ifdef CONFIG_32BIT
15 #include <asm/asmmacro-32.h>
16 #endif
17 #ifdef CONFIG_64BIT
18 #include <asm/asmmacro-64.h>
19 #endif
20
21         .macro  local_irq_enable reg=t0
22         mfc0    \reg, CP0_STATUS
23         ori     \reg, \reg, 1
24         mtc0    \reg, CP0_STATUS
25         irq_enable_hazard
26         .endm
27
28         .macro  local_irq_disable reg=t0
29         mfc0    \reg, CP0_STATUS
30         ori     \reg, \reg, 1
31         xori    \reg, \reg, 1
32         mtc0    \reg, CP0_STATUS
33         irq_disable_hazard
34         .endm
35
36 #ifdef CONFIG_CPU_SB1
37         .macro  fpu_enable_hazard
38         .set    push
39         .set    noreorder
40         .set    mips2
41         SSNOP
42         bnezl   $0, .+4
43          SSNOP
44         .set    pop
45         .endm
46 #else
47         .macro  fpu_enable_hazard
48         .endm
49 #endif
50
51 #endif /* _ASM_ASMMACRO_H */