forked from Imagelibrary/rtems
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:
@@ -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>
|
2007-12-11 Joel Sherrill <joel.sherrill@OARcorp.com>
|
||||||
|
|
||||||
* shared/startup/bspstart.c, shared/startup/pretaskinghook.c: Eliminate
|
* shared/startup/bspstart.c, shared/startup/pretaskinghook.c: Eliminate
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ AC_DEFUN([RTEMS_CHECK_BSPDIR],
|
|||||||
AC_CONFIG_SUBDIRS([motorola_powerpc]);;
|
AC_CONFIG_SUBDIRS([motorola_powerpc]);;
|
||||||
mpc8260ads )
|
mpc8260ads )
|
||||||
AC_CONFIG_SUBDIRS([mpc8260ads]);;
|
AC_CONFIG_SUBDIRS([mpc8260ads]);;
|
||||||
|
mvme3100 )
|
||||||
|
AC_CONFIG_SUBDIRS([mvme3100]);;
|
||||||
mvme5500 )
|
mvme5500 )
|
||||||
AC_CONFIG_SUBDIRS([mvme5500]);;
|
AC_CONFIG_SUBDIRS([mvme5500]);;
|
||||||
psim )
|
psim )
|
||||||
|
|||||||
@@ -631,6 +631,50 @@ int BSP_rtems_irq_mngt_get(rtems_irq_global_settings** config)
|
|||||||
return 0;
|
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
|
* 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 new_msr;
|
||||||
register unsigned int pmce;
|
register unsigned int pmce;
|
||||||
register unsigned int crit_pri_main_mask, per_mask;
|
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) {
|
switch (excNum) {
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -20,6 +20,12 @@ extern int mpc5200_uart_pollRead(int minor);
|
|||||||
|
|
||||||
void bsp_cleanup( void )
|
void bsp_cleanup( void )
|
||||||
{
|
{
|
||||||
|
|
||||||
|
{
|
||||||
|
extern void BSP_report_IRQ_Timing(void);
|
||||||
|
BSP_report_IRQ_Timing();
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(BSP_PRESS_KEY_FOR_RESET)
|
#if defined(BSP_PRESS_KEY_FOR_RESET)
|
||||||
printk( "\nEXECUTIVE SHUTDOWN! Any key to reboot..." );
|
printk( "\nEXECUTIVE SHUTDOWN! Any key to reboot..." );
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user