--- zzzz-none-000/linux-2.6.32.61/arch/mips/include/asm/irqflags.h 2013-06-10 09:43:48.000000000 +0000 +++ ar10-7272-687/linux-2.6.32.61/arch/mips/include/asm/irqflags.h 2011-08-03 12:52:55.000000000 +0000 @@ -15,6 +15,9 @@ #include #include +#if defined(CONFIG_AVM_SIMPLE_PROFILING) +void avm_simple_profiling_irq_onoff(unsigned int switch_on, unsigned int addr, unsigned int id); +#endif /*--- #if defined(CONFIG_AVM_SIMPLE_PROFILING) ---*/ __asm__( " .macro raw_local_irq_enable \n" @@ -54,6 +57,14 @@ : /* no outputs */ : /* no inputs */ : "memory"); +#if defined(CONFIG_AVM_SIMPLE_PROFILING) && defined(CONFIG_AVM_SIMPLE_PROFILING_IRQ_ON_OFF) + { + register unsigned int pc = (unsigned int)&&raw_local_irq_enable_label; + register unsigned int lr = (unsigned int)__builtin_return_address(0); +raw_local_irq_enable_label: + avm_simple_profiling_irq_onoff(1, pc, lr); + } +#endif /*--- #if defined(CONFIG_AVM_SIMPLE_PROFILING) ---*/ } @@ -99,6 +110,14 @@ static inline void raw_local_irq_disable(void) { +#if defined(CONFIG_AVM_SIMPLE_PROFILING) && defined(CONFIG_AVM_SIMPLE_PROFILING_IRQ_ON_OFF) + { + register unsigned int pc = (unsigned int)&&raw_local_irq_disable_label; + register unsigned int lr = (unsigned int)__builtin_return_address(0); +raw_local_irq_disable_label: + avm_simple_profiling_irq_onoff(0, pc, lr); + } +#endif /*--- #if defined(CONFIG_AVM_SIMPLE_PROFILING) ---*/ __asm__ __volatile__( "raw_local_irq_disable" : /* no outputs */ @@ -155,6 +174,7 @@ : /* no inputs */ \ : "memory") + __asm__( " .macro raw_local_irq_restore flags \n" " .set push \n"