2007-12-14 Joel Sherrill <joel.sherrill@oarcorp.com>

* acinclude.m4, gen5200/irq/irq.c, gen5200/startup/bspclean.c: Add
	mvme3100.
This commit is contained in:
Joel Sherrill
2007-12-14 21:53:08 +00:00
parent 0e263c91e9
commit c1f289ed69
4 changed files with 65 additions and 0 deletions

View File

@@ -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

View File

@@ -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 )

View File

@@ -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) {
/*

View File

@@ -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..." );