diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2006-07-07 09:07:18 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2006-07-13 16:26:09 -0400 |
commit | 192ef366198ce16c0379100565cdc5b7bd68511f (patch) | |
tree | 1f4ef0a9ee796fbf970b6f0703aa31ecad584ee1 /arch | |
parent | 8d197f3d17d4f43eb7d032491af7fc959cbed4fa (diff) |
[MIPS] TRACE_IRQFLAGS_SUPPORT support.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/mips/Kconfig.debug | 4 | ||||
-rw-r--r-- | arch/mips/kernel/entry.S | 15 | ||||
-rw-r--r-- | arch/mips/kernel/gdb-low.S | 2 | ||||
-rw-r--r-- | arch/mips/kernel/genex.S | 6 | ||||
-rw-r--r-- | arch/mips/kernel/head.S | 3 | ||||
-rw-r--r-- | arch/mips/kernel/scall32-o32.S | 15 | ||||
-rw-r--r-- | arch/mips/kernel/scall64-64.S | 2 | ||||
-rw-r--r-- | arch/mips/kernel/scall64-n32.S | 2 | ||||
-rw-r--r-- | arch/mips/kernel/scall64-o32.S | 2 | ||||
-rw-r--r-- | arch/mips/kernel/smtc-asm.S | 1 |
10 files changed, 50 insertions, 2 deletions
diff --git a/arch/mips/Kconfig.debug b/arch/mips/Kconfig.debug index 515f9e611307..5d6afb52d904 100644 --- a/arch/mips/Kconfig.debug +++ b/arch/mips/Kconfig.debug | |||
@@ -1,5 +1,9 @@ | |||
1 | menu "Kernel hacking" | 1 | menu "Kernel hacking" |
2 | 2 | ||
3 | config TRACE_IRQFLAGS_SUPPORT | ||
4 | bool | ||
5 | default y | ||
6 | |||
3 | source "lib/Kconfig.debug" | 7 | source "lib/Kconfig.debug" |
4 | 8 | ||
5 | config CROSSCOMPILE | 9 | config CROSSCOMPILE |
diff --git a/arch/mips/kernel/entry.S b/arch/mips/kernel/entry.S index 01e7fa86aa43..766655f35250 100644 --- a/arch/mips/kernel/entry.S +++ b/arch/mips/kernel/entry.S | |||
@@ -113,6 +113,21 @@ FEXPORT(restore_all) # restore full frame | |||
113 | RESTORE_AT | 113 | RESTORE_AT |
114 | RESTORE_STATIC | 114 | RESTORE_STATIC |
115 | FEXPORT(restore_partial) # restore partial frame | 115 | FEXPORT(restore_partial) # restore partial frame |
116 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
117 | SAVE_STATIC | ||
118 | SAVE_AT | ||
119 | SAVE_TEMP | ||
120 | LONG_L v0, PT_STATUS(sp) | ||
121 | and v0, 1 | ||
122 | beqz v0, 1f | ||
123 | jal trace_hardirqs_on | ||
124 | b 2f | ||
125 | 1: jal trace_hardirqs_off | ||
126 | 2: | ||
127 | RESTORE_TEMP | ||
128 | RESTORE_AT | ||
129 | RESTORE_STATIC | ||
130 | #endif | ||
116 | RESTORE_SOME | 131 | RESTORE_SOME |
117 | RESTORE_SP_AND_RET | 132 | RESTORE_SP_AND_RET |
118 | .set at | 133 | .set at |
diff --git a/arch/mips/kernel/gdb-low.S b/arch/mips/kernel/gdb-low.S index 666bc9014cbd..2c446063636a 100644 --- a/arch/mips/kernel/gdb-low.S +++ b/arch/mips/kernel/gdb-low.S | |||
@@ -7,6 +7,7 @@ | |||
7 | 7 | ||
8 | #include <asm/asm.h> | 8 | #include <asm/asm.h> |
9 | #include <asm/errno.h> | 9 | #include <asm/errno.h> |
10 | #include <asm/irqflags.h> | ||
10 | #include <asm/mipsregs.h> | 11 | #include <asm/mipsregs.h> |
11 | #include <asm/regdef.h> | 12 | #include <asm/regdef.h> |
12 | #include <asm/stackframe.h> | 13 | #include <asm/stackframe.h> |
@@ -120,6 +121,7 @@ | |||
120 | LONG_S $31, GDB_FR_REG31(sp) | 121 | LONG_S $31, GDB_FR_REG31(sp) |
121 | 122 | ||
122 | CLI /* disable interrupts */ | 123 | CLI /* disable interrupts */ |
124 | TRACE_IRQS_OFF | ||
123 | 125 | ||
124 | /* | 126 | /* |
125 | * Followed by the floating point registers | 127 | * Followed by the floating point registers |
diff --git a/arch/mips/kernel/genex.S b/arch/mips/kernel/genex.S index b563811b1b27..37fda3dcdfc5 100644 --- a/arch/mips/kernel/genex.S +++ b/arch/mips/kernel/genex.S | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <asm/asm.h> | 13 | #include <asm/asm.h> |
14 | #include <asm/asmmacro.h> | 14 | #include <asm/asmmacro.h> |
15 | #include <asm/cacheops.h> | 15 | #include <asm/cacheops.h> |
16 | #include <asm/irqflags.h> | ||
16 | #include <asm/regdef.h> | 17 | #include <asm/regdef.h> |
17 | #include <asm/fpregdef.h> | 18 | #include <asm/fpregdef.h> |
18 | #include <asm/mipsregs.h> | 19 | #include <asm/mipsregs.h> |
@@ -128,6 +129,7 @@ handle_vcei: | |||
128 | NESTED(handle_int, PT_SIZE, sp) | 129 | NESTED(handle_int, PT_SIZE, sp) |
129 | SAVE_ALL | 130 | SAVE_ALL |
130 | CLI | 131 | CLI |
132 | TRACE_IRQS_OFF | ||
131 | 133 | ||
132 | PTR_LA ra, ret_from_irq | 134 | PTR_LA ra, ret_from_irq |
133 | move a0, sp | 135 | move a0, sp |
@@ -216,6 +218,7 @@ NESTED(except_vec_vi_handler, 0, sp) | |||
216 | _ehb | 218 | _ehb |
217 | #endif /* CONFIG_MIPS_MT_SMTC */ | 219 | #endif /* CONFIG_MIPS_MT_SMTC */ |
218 | CLI | 220 | CLI |
221 | TRACE_IRQS_OFF | ||
219 | move a0, sp | 222 | move a0, sp |
220 | jalr v0 | 223 | jalr v0 |
221 | j ret_from_irq | 224 | j ret_from_irq |
@@ -288,11 +291,13 @@ NESTED(nmi_handler, PT_SIZE, sp) | |||
288 | .endm | 291 | .endm |
289 | 292 | ||
290 | .macro __build_clear_sti | 293 | .macro __build_clear_sti |
294 | TRACE_IRQS_ON | ||
291 | STI | 295 | STI |
292 | .endm | 296 | .endm |
293 | 297 | ||
294 | .macro __build_clear_cli | 298 | .macro __build_clear_cli |
295 | CLI | 299 | CLI |
300 | TRACE_IRQS_OFF | ||
296 | .endm | 301 | .endm |
297 | 302 | ||
298 | .macro __build_clear_fpe | 303 | .macro __build_clear_fpe |
@@ -300,6 +305,7 @@ NESTED(nmi_handler, PT_SIZE, sp) | |||
300 | li a2, ~(0x3f << 12) | 305 | li a2, ~(0x3f << 12) |
301 | and a2, a1 | 306 | and a2, a1 |
302 | ctc1 a2, fcr31 | 307 | ctc1 a2, fcr31 |
308 | TRACE_IRQS_ON | ||
303 | STI | 309 | STI |
304 | .endm | 310 | .endm |
305 | 311 | ||
diff --git a/arch/mips/kernel/head.S b/arch/mips/kernel/head.S index 476c1eb33c94..8c6db0fc72f0 100644 --- a/arch/mips/kernel/head.S +++ b/arch/mips/kernel/head.S | |||
@@ -5,7 +5,7 @@ | |||
5 | * | 5 | * |
6 | * Copyright (C) 1994, 1995 Waldorf Electronics | 6 | * Copyright (C) 1994, 1995 Waldorf Electronics |
7 | * Written by Ralf Baechle and Andreas Busse | 7 | * Written by Ralf Baechle and Andreas Busse |
8 | * Copyright (C) 1994, 95, 96, 97, 98, 99, 2003 Ralf Baechle | 8 | * Copyright (C) 1994 - 99, 2003, 06 Ralf Baechle |
9 | * Copyright (C) 1996 Paul M. Antoine | 9 | * Copyright (C) 1996 Paul M. Antoine |
10 | * Modified for DECStation and hence R3000 support by Paul M. Antoine | 10 | * Modified for DECStation and hence R3000 support by Paul M. Antoine |
11 | * Further modifications by David S. Miller and Harald Koerfgen | 11 | * Further modifications by David S. Miller and Harald Koerfgen |
@@ -18,6 +18,7 @@ | |||
18 | 18 | ||
19 | #include <asm/asm.h> | 19 | #include <asm/asm.h> |
20 | #include <asm/asmmacro.h> | 20 | #include <asm/asmmacro.h> |
21 | #include <asm/irqflags.h> | ||
21 | #include <asm/regdef.h> | 22 | #include <asm/regdef.h> |
22 | #include <asm/page.h> | 23 | #include <asm/page.h> |
23 | #include <asm/mipsregs.h> | 24 | #include <asm/mipsregs.h> |
diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S index c8e5f9c9a113..ba1bcd83c7d3 100644 --- a/arch/mips/kernel/scall32-o32.S +++ b/arch/mips/kernel/scall32-o32.S | |||
@@ -3,13 +3,14 @@ | |||
3 | * License. See the file "COPYING" in the main directory of this archive | 3 | * License. See the file "COPYING" in the main directory of this archive |
4 | * for more details. | 4 | * for more details. |
5 | * | 5 | * |
6 | * Copyright (C) 1995, 96, 97, 98, 99, 2000, 01, 02 by Ralf Baechle | 6 | * Copyright (C) 1995-99, 2000- 02, 06 Ralf Baechle <ralf@linux-mips.org> |
7 | * Copyright (C) 2001 MIPS Technologies, Inc. | 7 | * Copyright (C) 2001 MIPS Technologies, Inc. |
8 | * Copyright (C) 2004 Thiemo Seufer | 8 | * Copyright (C) 2004 Thiemo Seufer |
9 | */ | 9 | */ |
10 | #include <linux/errno.h> | 10 | #include <linux/errno.h> |
11 | #include <asm/asm.h> | 11 | #include <asm/asm.h> |
12 | #include <asm/asmmacro.h> | 12 | #include <asm/asmmacro.h> |
13 | #include <asm/irqflags.h> | ||
13 | #include <asm/mipsregs.h> | 14 | #include <asm/mipsregs.h> |
14 | #include <asm/regdef.h> | 15 | #include <asm/regdef.h> |
15 | #include <asm/stackframe.h> | 16 | #include <asm/stackframe.h> |
@@ -27,6 +28,18 @@ | |||
27 | NESTED(handle_sys, PT_SIZE, sp) | 28 | NESTED(handle_sys, PT_SIZE, sp) |
28 | .set noat | 29 | .set noat |
29 | SAVE_SOME | 30 | SAVE_SOME |
31 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
32 | TRACE_IRQS_ON | ||
33 | #ifdef CONFIG_64BIT | ||
34 | LONG_L $8, PT_R8(sp) | ||
35 | LONG_L $9, PT_R9(sp) | ||
36 | #endif | ||
37 | LONG_L $7, PT_R7(sp) | ||
38 | LONG_L $6, PT_R6(sp) | ||
39 | LONG_L $5, PT_R5(sp) | ||
40 | LONG_L $4, PT_R4(sp) | ||
41 | LONG_L $2, PT_R2(sp) | ||
42 | #endif | ||
30 | STI | 43 | STI |
31 | .set at | 44 | .set at |
32 | 45 | ||
diff --git a/arch/mips/kernel/scall64-64.S b/arch/mips/kernel/scall64-64.S index 809fd1b55f84..939e172db953 100644 --- a/arch/mips/kernel/scall64-64.S +++ b/arch/mips/kernel/scall64-64.S | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <linux/errno.h> | 10 | #include <linux/errno.h> |
11 | #include <asm/asm.h> | 11 | #include <asm/asm.h> |
12 | #include <asm/asmmacro.h> | 12 | #include <asm/asmmacro.h> |
13 | #include <asm/irqflags.h> | ||
13 | #include <asm/mipsregs.h> | 14 | #include <asm/mipsregs.h> |
14 | #include <asm/regdef.h> | 15 | #include <asm/regdef.h> |
15 | #include <asm/stackframe.h> | 16 | #include <asm/stackframe.h> |
@@ -33,6 +34,7 @@ NESTED(handle_sys64, PT_SIZE, sp) | |||
33 | */ | 34 | */ |
34 | .set noat | 35 | .set noat |
35 | SAVE_SOME | 36 | SAVE_SOME |
37 | TRACE_IRQS_ON | ||
36 | STI | 38 | STI |
37 | .set at | 39 | .set at |
38 | #endif | 40 | #endif |
diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S index b2b5cb9fe571..98abbc5a9f13 100644 --- a/arch/mips/kernel/scall64-n32.S +++ b/arch/mips/kernel/scall64-n32.S | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <linux/errno.h> | 10 | #include <linux/errno.h> |
11 | #include <asm/asm.h> | 11 | #include <asm/asm.h> |
12 | #include <asm/asmmacro.h> | 12 | #include <asm/asmmacro.h> |
13 | #include <asm/irqflags.h> | ||
13 | #include <asm/mipsregs.h> | 14 | #include <asm/mipsregs.h> |
14 | #include <asm/regdef.h> | 15 | #include <asm/regdef.h> |
15 | #include <asm/stackframe.h> | 16 | #include <asm/stackframe.h> |
@@ -32,6 +33,7 @@ NESTED(handle_sysn32, PT_SIZE, sp) | |||
32 | #ifndef CONFIG_MIPS32_O32 | 33 | #ifndef CONFIG_MIPS32_O32 |
33 | .set noat | 34 | .set noat |
34 | SAVE_SOME | 35 | SAVE_SOME |
36 | TRACE_IRQS_ON | ||
35 | STI | 37 | STI |
36 | .set at | 38 | .set at |
37 | #endif | 39 | #endif |
diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S index 3a138dcc8827..505c9ee54009 100644 --- a/arch/mips/kernel/scall64-o32.S +++ b/arch/mips/kernel/scall64-o32.S | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/errno.h> | 16 | #include <linux/errno.h> |
17 | #include <asm/asm.h> | 17 | #include <asm/asm.h> |
18 | #include <asm/asmmacro.h> | 18 | #include <asm/asmmacro.h> |
19 | #include <asm/irqflags.h> | ||
19 | #include <asm/mipsregs.h> | 20 | #include <asm/mipsregs.h> |
20 | #include <asm/regdef.h> | 21 | #include <asm/regdef.h> |
21 | #include <asm/stackframe.h> | 22 | #include <asm/stackframe.h> |
@@ -27,6 +28,7 @@ | |||
27 | NESTED(handle_sys, PT_SIZE, sp) | 28 | NESTED(handle_sys, PT_SIZE, sp) |
28 | .set noat | 29 | .set noat |
29 | SAVE_SOME | 30 | SAVE_SOME |
31 | TRACE_IRQS_ON | ||
30 | STI | 32 | STI |
31 | .set at | 33 | .set at |
32 | ld t1, PT_EPC(sp) # skip syscall on return | 34 | ld t1, PT_EPC(sp) # skip syscall on return |
diff --git a/arch/mips/kernel/smtc-asm.S b/arch/mips/kernel/smtc-asm.S index 72c6d98f8854..4cc3dea36612 100644 --- a/arch/mips/kernel/smtc-asm.S +++ b/arch/mips/kernel/smtc-asm.S | |||
@@ -96,6 +96,7 @@ FEXPORT(__smtc_ipi_vector) | |||
96 | /* Save all will redundantly recompute the SP, but use it for now */ | 96 | /* Save all will redundantly recompute the SP, but use it for now */ |
97 | SAVE_ALL | 97 | SAVE_ALL |
98 | CLI | 98 | CLI |
99 | TRACE_IRQS_OFF | ||
99 | move a0,sp | 100 | move a0,sp |
100 | /* Function to be invoked passed stack pad slot 5 */ | 101 | /* Function to be invoked passed stack pad slot 5 */ |
101 | lw t0,PT_PADSLOT5(sp) | 102 | lw t0,PT_PADSLOT5(sp) |