]> git.karo-electronics.de Git - linux-beck.git/blobdiff - arch/arm/include/asm/assembler.h
Merge remote-tracking branches 'asoc/fix/db1200', 'asoc/fix/dwc', 'asoc/fix/imx-ssi...
[linux-beck.git] / arch / arm / include / asm / assembler.h
index 9007c518d1d8a1fe76c9a960526ae1b34d2710f2..b2bc8e11471d3ee3e4fcd5f207406222ffa04bf1 100644 (file)
        .endm
 #endif
 
-       .macro asm_trace_hardirqs_off
+       .macro asm_trace_hardirqs_off, save=1
 #if defined(CONFIG_TRACE_IRQFLAGS)
+       .if \save
        stmdb   sp!, {r0-r3, ip, lr}
+       .endif
        bl      trace_hardirqs_off
+       .if \save
        ldmia   sp!, {r0-r3, ip, lr}
+       .endif
 #endif
        .endm
 
-       .macro asm_trace_hardirqs_on_cond, cond
+       .macro asm_trace_hardirqs_on, cond=al, save=1
 #if defined(CONFIG_TRACE_IRQFLAGS)
        /*
         * actually the registers should be pushed and pop'd conditionally, but
         * after bl the flags are certainly clobbered
         */
+       .if \save
        stmdb   sp!, {r0-r3, ip, lr}
+       .endif
        bl\cond trace_hardirqs_on
+       .if \save
        ldmia   sp!, {r0-r3, ip, lr}
+       .endif
 #endif
        .endm
 
-       .macro asm_trace_hardirqs_on
-       asm_trace_hardirqs_on_cond al
-       .endm
-
-       .macro disable_irq
+       .macro disable_irq, save=1
        disable_irq_notrace
-       asm_trace_hardirqs_off
+       asm_trace_hardirqs_off \save
        .endm
 
        .macro enable_irq
 
        .macro restore_irqs, oldcpsr
        tst     \oldcpsr, #PSR_I_BIT
-       asm_trace_hardirqs_on_cond eq
+       asm_trace_hardirqs_on cond=eq
        restore_irqs_notrace \oldcpsr
        .endm