forked from Imagelibrary/rtems
2001-02-05 Joel Sherrill <joel@OARcorp.com>
* isr_entries.S: Removed comment incorrectly indicating this file was cpu_asm.S. * vectorexceptions.c (mips_dump_exception_frame): New routine broken out from default exception handler.
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
|
2001-02-05 Joel Sherrill <joel@OARcorp.com>
|
||||||
|
|
||||||
|
* isr_entries.S: Removed comment incorrectly indicating this
|
||||||
|
file was cpu_asm.S.
|
||||||
|
* vectorexceptions.c (mips_dump_exception_frame): New routine
|
||||||
|
broken out from default exception handler.
|
||||||
|
|
||||||
2001-02-01 Greg Menke <gregory.menke@gsfc.nasa.gov>
|
2001-02-01 Greg Menke <gregory.menke@gsfc.nasa.gov>
|
||||||
|
|
||||||
* mongoosev/vectorisrs/vectorisrs.c,
|
* mongoosev/vectorisrs/vectorisrs.c,
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
*/
|
*/
|
||||||
/* @(#)cpu_asm.S 08/20/96 1.15 */
|
|
||||||
|
|
||||||
#include <asm.h>
|
#include <asm.h>
|
||||||
#include "iregdef.h"
|
#include "iregdef.h"
|
||||||
|
|||||||
@@ -65,12 +65,25 @@ struct regdef dumpregs[]= {
|
|||||||
{ R_EPC,"R_EPC"}, { -1, NULL }
|
{ R_EPC,"R_EPC"}, { -1, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void mips_dump_exception_frame( CPU_Interrupt_frame *frame )
|
||||||
|
{
|
||||||
|
unsigned int *frame_u32;
|
||||||
|
int i, j;
|
||||||
|
|
||||||
|
frame_u32 = (unsigned32 *)frame;
|
||||||
|
for(i=0; dumpregs[i].offset > -1; i++)
|
||||||
|
{
|
||||||
|
printk(" %s", dumpregs[i].name);
|
||||||
|
for(j=0; j< 7-strlen(dumpregs[i].name); j++) printk(" ");
|
||||||
|
printk(" %08X%c", frame_u32[dumpregs[i].offset], (i%3) ? '\t' : '\n' );
|
||||||
|
}
|
||||||
|
printk( "\n" );
|
||||||
|
}
|
||||||
|
|
||||||
void mips_default_exception_code_handler( int exc, CPU_Interrupt_frame *frame )
|
void mips_default_exception_code_handler( int exc, CPU_Interrupt_frame *frame )
|
||||||
{
|
{
|
||||||
unsigned int sr;
|
unsigned int sr;
|
||||||
unsigned int cause;
|
unsigned int cause;
|
||||||
int i, j;
|
|
||||||
|
|
||||||
mips_get_sr( sr );
|
mips_get_sr( sr );
|
||||||
mips_get_cause( cause );
|
mips_get_cause( cause );
|
||||||
@@ -78,20 +91,11 @@ void mips_default_exception_code_handler( int exc, CPU_Interrupt_frame *frame )
|
|||||||
printk( "Unhandled exception %d\n", exc );
|
printk( "Unhandled exception %d\n", exc );
|
||||||
printk( "sr: 0x%08x cause: 0x%08x --> %s\n", sr, cause,
|
printk( "sr: 0x%08x cause: 0x%08x --> %s\n", sr, cause,
|
||||||
cause_strings[(cause >> 2) &0x1f] );
|
cause_strings[(cause >> 2) &0x1f] );
|
||||||
|
mips_dump_exception_frame( frame );
|
||||||
for(i=0; dumpregs[i].offset > -1; i++)
|
|
||||||
{
|
|
||||||
printk(" %s", dumpregs[i].name);
|
|
||||||
for(j=0; j< 7-strlen(dumpregs[i].name); j++) printk(" ");
|
|
||||||
printk(" %08X\n", frame->regs[dumpregs[i].offset] );
|
|
||||||
}
|
|
||||||
|
|
||||||
rtems_fatal_error_occurred(1);
|
rtems_fatal_error_occurred(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define CALL_EXC(_vector,_frame) \
|
#define CALL_EXC(_vector,_frame) \
|
||||||
do { \
|
do { \
|
||||||
if ( _ISR_Vector_table[_vector] ) \
|
if ( _ISR_Vector_table[_vector] ) \
|
||||||
@@ -100,9 +104,6 @@ void mips_default_exception_code_handler( int exc, CPU_Interrupt_frame *frame )
|
|||||||
mips_default_exception_code_handler( _vector, _frame ); \
|
mips_default_exception_code_handler( _vector, _frame ); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* There are constants defined for these but they should basically
|
* There are constants defined for these but they should basically
|
||||||
* all be close to the same set.
|
* all be close to the same set.
|
||||||
|
|||||||
Reference in New Issue
Block a user