Skip to content

Commit

Permalink
CRISv32: add support for irqflags tracing
Browse files Browse the repository at this point in the history
Add support irqflags tracing, which is required for things like lockdep
and ftrace.

Signed-off-by: Rabin Vincent <rabin@rab.in>
Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
  • Loading branch information
Rabin Vincent authored and Jesper Nilsson committed Sep 4, 2015
1 parent 20ae247 commit 444e0c2
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 1 deletion.
4 changes: 4 additions & 0 deletions arch/cris/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ config FORCE_MAX_ZONEORDER
int
default 6

config TRACE_IRQFLAGS_SUPPORT
depends on ETRAX_ARCH_V32
def_bool y

config CRIS
bool
default y
Expand Down
11 changes: 11 additions & 0 deletions arch/cris/arch-v32/kernel/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,17 @@ ret_from_sys_call:

.type _Rexit,@function
_Rexit:
#if defined(CONFIG_TRACE_IRQFLAGS)
addoq +PT_ccs, $sp, $acr
move.d [$acr], $r0
btstq 15, $r0 ; I1
bpl 1f
nop
jsr trace_hardirqs_on
nop
1:
#endif

;; This epilogue MUST match the prologues in multiple_interrupt, irq.h
;; and ptregs.h.
addq 4, $sp ; Skip orig_r10.
Expand Down
6 changes: 5 additions & 1 deletion arch/cris/kernel/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,11 @@
asmlinkage void do_IRQ(int irq, struct pt_regs * regs)
{
unsigned long sp;
struct pt_regs *old_regs = set_irq_regs(regs);
struct pt_regs *old_regs;

trace_hardirqs_off();

old_regs = set_irq_regs(regs);
irq_enter();
sp = rdsp();
if (unlikely((sp & (PAGE_SIZE - 1)) < (PAGE_SIZE/8))) {
Expand Down

0 comments on commit 444e0c2

Please sign in to comment.