diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-03-06 15:51:10 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-03-14 08:46:50 +0100 |
commit | 148d6e9a15fbb46dc3ab12ab8bdc3b10193d71a0 (patch) | |
tree | bd0e2f7e96053a9e9457734bd52a0fc08ce9d9fa | |
parent | bsps/powerpc: Add support for interrupt profiling (diff) | |
download | rtems-148d6e9a15fbb46dc3ab12ab8bdc3b10193d71a0.tar.bz2 |
arm: Add support for interrupt profiling
-rw-r--r-- | cpukit/score/cpu/arm/arm_exc_interrupt.S | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/cpukit/score/cpu/arm/arm_exc_interrupt.S b/cpukit/score/cpu/arm/arm_exc_interrupt.S index 697171e48a..27c43f900b 100644 --- a/cpukit/score/cpu/arm/arm_exc_interrupt.S +++ b/cpukit/score/cpu/arm/arm_exc_interrupt.S @@ -122,6 +122,14 @@ _ARMV4_Exception_interrupt: str r2, [SELF_CPU_CONTROL, #PER_CPU_ISR_NEST_LEVEL] str r3, [SELF_CPU_CONTROL, #PER_CPU_THREAD_DISPATCH_DISABLE_LEVEL] +#ifdef RTEMS_PROFILING + cmp r2, #1 + bne profiling_entry_done + bl _CPU_Counter_read + push {r0, r1} +profiling_entry_done: +#endif + /* Call BSP dependent interrupt dispatcher */ bl bsp_interrupt_dispatch @@ -133,6 +141,18 @@ _ARMV4_Exception_interrupt: str r2, [SELF_CPU_CONTROL, #PER_CPU_ISR_NEST_LEVEL] str r3, [SELF_CPU_CONTROL, #PER_CPU_THREAD_DISPATCH_DISABLE_LEVEL] +#ifdef RTEMS_PROFILING + cmp r2, #0 + bne profiling_exit_done + bl _CPU_Counter_read + pop {r1, r3} + mov r2, r0 + mov r0, SELF_CPU_CONTROL + bl _Profiling_Outer_most_interrupt_entry_and_exit + ldr r3, [SELF_CPU_CONTROL, #PER_CPU_THREAD_DISPATCH_DISABLE_LEVEL] +profiling_exit_done: +#endif + /* Restore stack pointer */ mov sp, SP_OF_INTERRUPTED_CONTEXT |