[MIPS] TRACE_IRQFLAGS_SUPPORT support.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
@@ -113,6 +113,21 @@ FEXPORT(restore_all) # restore full frame
|
||||
RESTORE_AT
|
||||
RESTORE_STATIC
|
||||
FEXPORT(restore_partial) # restore partial frame
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
SAVE_STATIC
|
||||
SAVE_AT
|
||||
SAVE_TEMP
|
||||
LONG_L v0, PT_STATUS(sp)
|
||||
and v0, 1
|
||||
beqz v0, 1f
|
||||
jal trace_hardirqs_on
|
||||
b 2f
|
||||
1: jal trace_hardirqs_off
|
||||
2:
|
||||
RESTORE_TEMP
|
||||
RESTORE_AT
|
||||
RESTORE_STATIC
|
||||
#endif
|
||||
RESTORE_SOME
|
||||
RESTORE_SP_AND_RET
|
||||
.set at
|
||||
|
@@ -7,6 +7,7 @@
|
||||
|
||||
#include <asm/asm.h>
|
||||
#include <asm/errno.h>
|
||||
#include <asm/irqflags.h>
|
||||
#include <asm/mipsregs.h>
|
||||
#include <asm/regdef.h>
|
||||
#include <asm/stackframe.h>
|
||||
@@ -120,6 +121,7 @@
|
||||
LONG_S $31, GDB_FR_REG31(sp)
|
||||
|
||||
CLI /* disable interrupts */
|
||||
TRACE_IRQS_OFF
|
||||
|
||||
/*
|
||||
* Followed by the floating point registers
|
||||
|
@@ -13,6 +13,7 @@
|
||||
#include <asm/asm.h>
|
||||
#include <asm/asmmacro.h>
|
||||
#include <asm/cacheops.h>
|
||||
#include <asm/irqflags.h>
|
||||
#include <asm/regdef.h>
|
||||
#include <asm/fpregdef.h>
|
||||
#include <asm/mipsregs.h>
|
||||
@@ -128,6 +129,7 @@ handle_vcei:
|
||||
NESTED(handle_int, PT_SIZE, sp)
|
||||
SAVE_ALL
|
||||
CLI
|
||||
TRACE_IRQS_OFF
|
||||
|
||||
PTR_LA ra, ret_from_irq
|
||||
move a0, sp
|
||||
@@ -216,6 +218,7 @@ NESTED(except_vec_vi_handler, 0, sp)
|
||||
_ehb
|
||||
#endif /* CONFIG_MIPS_MT_SMTC */
|
||||
CLI
|
||||
TRACE_IRQS_OFF
|
||||
move a0, sp
|
||||
jalr v0
|
||||
j ret_from_irq
|
||||
@@ -288,11 +291,13 @@ NESTED(nmi_handler, PT_SIZE, sp)
|
||||
.endm
|
||||
|
||||
.macro __build_clear_sti
|
||||
TRACE_IRQS_ON
|
||||
STI
|
||||
.endm
|
||||
|
||||
.macro __build_clear_cli
|
||||
CLI
|
||||
TRACE_IRQS_OFF
|
||||
.endm
|
||||
|
||||
.macro __build_clear_fpe
|
||||
@@ -300,6 +305,7 @@ NESTED(nmi_handler, PT_SIZE, sp)
|
||||
li a2, ~(0x3f << 12)
|
||||
and a2, a1
|
||||
ctc1 a2, fcr31
|
||||
TRACE_IRQS_ON
|
||||
STI
|
||||
.endm
|
||||
|
||||
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* Copyright (C) 1994, 1995 Waldorf Electronics
|
||||
* Written by Ralf Baechle and Andreas Busse
|
||||
* Copyright (C) 1994, 95, 96, 97, 98, 99, 2003 Ralf Baechle
|
||||
* Copyright (C) 1994 - 99, 2003, 06 Ralf Baechle
|
||||
* Copyright (C) 1996 Paul M. Antoine
|
||||
* Modified for DECStation and hence R3000 support by Paul M. Antoine
|
||||
* Further modifications by David S. Miller and Harald Koerfgen
|
||||
@@ -18,6 +18,7 @@
|
||||
|
||||
#include <asm/asm.h>
|
||||
#include <asm/asmmacro.h>
|
||||
#include <asm/irqflags.h>
|
||||
#include <asm/regdef.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/mipsregs.h>
|
||||
|
@@ -3,13 +3,14 @@
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Copyright (C) 1995, 96, 97, 98, 99, 2000, 01, 02 by Ralf Baechle
|
||||
* Copyright (C) 1995-99, 2000- 02, 06 Ralf Baechle <ralf@linux-mips.org>
|
||||
* Copyright (C) 2001 MIPS Technologies, Inc.
|
||||
* Copyright (C) 2004 Thiemo Seufer
|
||||
*/
|
||||
#include <linux/errno.h>
|
||||
#include <asm/asm.h>
|
||||
#include <asm/asmmacro.h>
|
||||
#include <asm/irqflags.h>
|
||||
#include <asm/mipsregs.h>
|
||||
#include <asm/regdef.h>
|
||||
#include <asm/stackframe.h>
|
||||
@@ -27,6 +28,18 @@
|
||||
NESTED(handle_sys, PT_SIZE, sp)
|
||||
.set noat
|
||||
SAVE_SOME
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
TRACE_IRQS_ON
|
||||
#ifdef CONFIG_64BIT
|
||||
LONG_L $8, PT_R8(sp)
|
||||
LONG_L $9, PT_R9(sp)
|
||||
#endif
|
||||
LONG_L $7, PT_R7(sp)
|
||||
LONG_L $6, PT_R6(sp)
|
||||
LONG_L $5, PT_R5(sp)
|
||||
LONG_L $4, PT_R4(sp)
|
||||
LONG_L $2, PT_R2(sp)
|
||||
#endif
|
||||
STI
|
||||
.set at
|
||||
|
||||
|
@@ -10,6 +10,7 @@
|
||||
#include <linux/errno.h>
|
||||
#include <asm/asm.h>
|
||||
#include <asm/asmmacro.h>
|
||||
#include <asm/irqflags.h>
|
||||
#include <asm/mipsregs.h>
|
||||
#include <asm/regdef.h>
|
||||
#include <asm/stackframe.h>
|
||||
@@ -33,6 +34,7 @@ NESTED(handle_sys64, PT_SIZE, sp)
|
||||
*/
|
||||
.set noat
|
||||
SAVE_SOME
|
||||
TRACE_IRQS_ON
|
||||
STI
|
||||
.set at
|
||||
#endif
|
||||
|
@@ -10,6 +10,7 @@
|
||||
#include <linux/errno.h>
|
||||
#include <asm/asm.h>
|
||||
#include <asm/asmmacro.h>
|
||||
#include <asm/irqflags.h>
|
||||
#include <asm/mipsregs.h>
|
||||
#include <asm/regdef.h>
|
||||
#include <asm/stackframe.h>
|
||||
@@ -32,6 +33,7 @@ NESTED(handle_sysn32, PT_SIZE, sp)
|
||||
#ifndef CONFIG_MIPS32_O32
|
||||
.set noat
|
||||
SAVE_SOME
|
||||
TRACE_IRQS_ON
|
||||
STI
|
||||
.set at
|
||||
#endif
|
||||
|
@@ -16,6 +16,7 @@
|
||||
#include <linux/errno.h>
|
||||
#include <asm/asm.h>
|
||||
#include <asm/asmmacro.h>
|
||||
#include <asm/irqflags.h>
|
||||
#include <asm/mipsregs.h>
|
||||
#include <asm/regdef.h>
|
||||
#include <asm/stackframe.h>
|
||||
@@ -27,6 +28,7 @@
|
||||
NESTED(handle_sys, PT_SIZE, sp)
|
||||
.set noat
|
||||
SAVE_SOME
|
||||
TRACE_IRQS_ON
|
||||
STI
|
||||
.set at
|
||||
ld t1, PT_EPC(sp) # skip syscall on return
|
||||
|
@@ -96,6 +96,7 @@ FEXPORT(__smtc_ipi_vector)
|
||||
/* Save all will redundantly recompute the SP, but use it for now */
|
||||
SAVE_ALL
|
||||
CLI
|
||||
TRACE_IRQS_OFF
|
||||
move a0,sp
|
||||
/* Function to be invoked passed stack pad slot 5 */
|
||||
lw t0,PT_PADSLOT5(sp)
|
||||
|
Reference in New Issue
Block a user