diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-12-14 21:53:08 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-12-14 21:53:08 +0000 |
commit | c1f289ed69d878892111c505a56f551bd7bf8adf (patch) | |
tree | 3700ff50fa1a8a7f992659a2a930aaa245158728 /c | |
parent | 2007-12-14 Joel Sherrill <joel.sherrill@oarcorp.com> (diff) | |
download | rtems-c1f289ed69d878892111c505a56f551bd7bf8adf.tar.bz2 |
2007-12-14 Joel Sherrill <joel.sherrill@oarcorp.com>
* acinclude.m4, gen5200/irq/irq.c, gen5200/startup/bspclean.c: Add
mvme3100.
Diffstat (limited to 'c')
-rw-r--r-- | c/src/lib/libbsp/powerpc/ChangeLog | 5 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/acinclude.m4 | 2 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/gen5200/irq/irq.c | 52 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/gen5200/startup/bspclean.c | 6 |
4 files changed, 65 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/ChangeLog index 15d9f3646a..0c0de3b9d2 100644 --- a/c/src/lib/libbsp/powerpc/ChangeLog +++ b/c/src/lib/libbsp/powerpc/ChangeLog @@ -1,3 +1,8 @@ +2007-12-14 Joel Sherrill <joel.sherrill@oarcorp.com> + + * acinclude.m4, gen5200/irq/irq.c, gen5200/startup/bspclean.c: Add + mvme3100. + 2007-12-11 Joel Sherrill <joel.sherrill@OARcorp.com> * shared/startup/bspstart.c, shared/startup/pretaskinghook.c: Eliminate diff --git a/c/src/lib/libbsp/powerpc/acinclude.m4 b/c/src/lib/libbsp/powerpc/acinclude.m4 index 7c9ddcfd00..434d25b4da 100644 --- a/c/src/lib/libbsp/powerpc/acinclude.m4 +++ b/c/src/lib/libbsp/powerpc/acinclude.m4 @@ -18,6 +18,8 @@ AC_DEFUN([RTEMS_CHECK_BSPDIR], AC_CONFIG_SUBDIRS([motorola_powerpc]);; mpc8260ads ) AC_CONFIG_SUBDIRS([mpc8260ads]);; + mvme3100 ) + AC_CONFIG_SUBDIRS([mvme3100]);; mvme5500 ) AC_CONFIG_SUBDIRS([mvme5500]);; psim ) diff --git a/c/src/lib/libbsp/powerpc/gen5200/irq/irq.c b/c/src/lib/libbsp/powerpc/gen5200/irq/irq.c index 2914452f23..b792ca5fe7 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/irq/irq.c +++ b/c/src/lib/libbsp/powerpc/gen5200/irq/irq.c @@ -631,6 +631,50 @@ int BSP_rtems_irq_mngt_get(rtems_irq_global_settings** config) return 0; } +#include <stdio.h> +uint64_t BSP_Starting_TBR; +uint64_t BSP_Total_in_ISR; +uint32_t BSP_ISR_Count; +uint32_t BSP_Worst_ISR; +#define BSP_COUNTED_IRQ 16 +uint32_t BSP_ISR_Count_Per[BSP_COUNTED_IRQ + 1]; + +void BSP_initialize_IRQ_Timing(void) +{ + int i; + BSP_Starting_TBR = PPC_Get_timebase_register(); + BSP_Total_in_ISR = 0; + BSP_ISR_Count = 0; + BSP_Worst_ISR = 0; + for ( i=0 ; i<BSP_COUNTED_IRQ ; i++ ) + BSP_ISR_Count_Per[i] = 0; +} + +static const char * u64tostring( + char *buffer, + uint64_t v +) +{ + sprintf( buffer, "%lld %lld usecs", v, (v / 33) ); + return buffer; +} +void BSP_report_IRQ_Timing(void) +{ + uint64_t now; + char buffer[96]; + int i; + + now = PPC_Get_timebase_register(); + printk( "Started at: %s\n", u64tostring(buffer, BSP_Starting_TBR) ); + printk( "Current : %s\n", u64tostring(buffer, now) ); + printk( "System up : %s\n", u64tostring(buffer, now - BSP_Starting_TBR) ); + printk( "ISRs : %d\n", BSP_ISR_Count ); + printk( "ISRs ran : %s\n", u64tostring(buffer, BSP_Total_in_ISR) ); + printk( "Worst ISR : %s\n", u64tostring(buffer, BSP_Worst_ISR) ); + for ( i=0 ; i<BSP_COUNTED_IRQ ; i++ ) + printk( "IRQ %d: %d\n", i, BSP_ISR_Count_Per[i] ); + printk( "Ticks : %d\n", Clock_driver_ticks ); +} /* * High level IRQ handler called from shared_raw_irq_code_entry @@ -642,6 +686,14 @@ int C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum) register unsigned int new_msr; register unsigned int pmce; register unsigned int crit_pri_main_mask, per_mask; + uint64_t start, stop, thisTime; + + start = PPC_Get_timebase_register(); + BSP_ISR_Count++; + if ( excNum < BSP_COUNTED_IRQ ) + BSP_ISR_Count_Per[excNum]++; + else + printk( "not counting %d\n", excNum); switch (excNum) { /* diff --git a/c/src/lib/libbsp/powerpc/gen5200/startup/bspclean.c b/c/src/lib/libbsp/powerpc/gen5200/startup/bspclean.c index ebad9fc3c0..8dcba8bbc7 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/startup/bspclean.c +++ b/c/src/lib/libbsp/powerpc/gen5200/startup/bspclean.c @@ -20,6 +20,12 @@ extern int mpc5200_uart_pollRead(int minor); void bsp_cleanup( void ) { + + { + extern void BSP_report_IRQ_Timing(void); + BSP_report_IRQ_Timing(); + } + #if defined(BSP_PRESS_KEY_FOR_RESET) printk( "\nEXECUTIVE SHUTDOWN! Any key to reboot..." ); |