From 0ab873495a2f232454a361c5edf8458628619252 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 5 Feb 2002 21:06:13 +0000 Subject: 2001-02-05 Joel Sherrill * 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. --- .../mips/shared/interrupts/vectorexceptions.c | 29 +++++++++++----------- 1 file changed, 15 insertions(+), 14 deletions(-) (limited to 'c/src/lib/libcpu/mips/shared/interrupts/vectorexceptions.c') diff --git a/c/src/lib/libcpu/mips/shared/interrupts/vectorexceptions.c b/c/src/lib/libcpu/mips/shared/interrupts/vectorexceptions.c index 147cf7a999..f755583705 100644 --- a/c/src/lib/libcpu/mips/shared/interrupts/vectorexceptions.c +++ b/c/src/lib/libcpu/mips/shared/interrupts/vectorexceptions.c @@ -65,12 +65,25 @@ struct regdef dumpregs[]= { { 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 ) { unsigned int sr; unsigned int cause; - int i, j; mips_get_sr( sr ); 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( "sr: 0x%08x cause: 0x%08x --> %s\n", sr, cause, cause_strings[(cause >> 2) &0x1f] ); - - 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] ); - } + mips_dump_exception_frame( frame ); rtems_fatal_error_occurred(1); } - - - #define CALL_EXC(_vector,_frame) \ do { \ 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 ); \ } while(0) - - - /* * There are constants defined for these but they should basically * all be close to the same set. -- cgit v1.2.3