summaryrefslogtreecommitdiffstats
path: root/c/src/lib
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2007-12-14 21:53:08 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2007-12-14 21:53:08 +0000
commitc1f289ed69d878892111c505a56f551bd7bf8adf (patch)
tree3700ff50fa1a8a7f992659a2a930aaa245158728 /c/src/lib
parent2007-12-14 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-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/src/lib')
-rw-r--r--c/src/lib/libbsp/powerpc/ChangeLog5
-rw-r--r--c/src/lib/libbsp/powerpc/acinclude.m42
-rw-r--r--c/src/lib/libbsp/powerpc/gen5200/irq/irq.c52
-rw-r--r--c/src/lib/libbsp/powerpc/gen5200/startup/bspclean.c6
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..." );