Commit 444e0c28 authored by Rabin Vincent's avatar Rabin Vincent Committed by Jesper Nilsson

CRISv32: add support for irqflags tracing

Add support irqflags tracing, which is required for things like lockdep
and ftrace.
Signed-off-by: default avatarRabin Vincent <rabin@rab.in>
Signed-off-by: default avatarJesper Nilsson <jesper.nilsson@axis.com>
parent 20ae2473
...@@ -36,6 +36,10 @@ config FORCE_MAX_ZONEORDER ...@@ -36,6 +36,10 @@ config FORCE_MAX_ZONEORDER
int int
default 6 default 6
config TRACE_IRQFLAGS_SUPPORT
depends on ETRAX_ARCH_V32
def_bool y
config CRIS config CRIS
bool bool
default y default y
......
...@@ -240,6 +240,17 @@ ret_from_sys_call: ...@@ -240,6 +240,17 @@ ret_from_sys_call:
.type _Rexit,@function .type _Rexit,@function
_Rexit: _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 ;; This epilogue MUST match the prologues in multiple_interrupt, irq.h
;; and ptregs.h. ;; and ptregs.h.
addq 4, $sp ; Skip orig_r10. addq 4, $sp ; Skip orig_r10.
......
...@@ -45,7 +45,11 @@ ...@@ -45,7 +45,11 @@
asmlinkage void do_IRQ(int irq, struct pt_regs * regs) asmlinkage void do_IRQ(int irq, struct pt_regs * regs)
{ {
unsigned long sp; 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(); irq_enter();
sp = rdsp(); sp = rdsp();
if (unlikely((sp & (PAGE_SIZE - 1)) < (PAGE_SIZE/8))) { if (unlikely((sp & (PAGE_SIZE - 1)) < (PAGE_SIZE/8))) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment