From 332484b52e06e5ee8318297610ffa472a4087da8 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Fri, 25 May 2001 16:28:46 +0000 Subject: 2000-05-25 Matt Cross * New MRM332 BSP for the Mini RoboMind board based on the 68332 microcontroller designed and build by Mark Castelluccio. For details on the MRM see http://www.robominds.com. * .cvsignore, ChangeLog Makefile.am, README, bsp_specs, clock/.cvsignore, clock/Makefile.am, clock/ckinit.c, configure.in, console/.cvsignore, console/Makefile.am, console/console.c, include/.cvsignore, include/Makefile.am, include/bsp.h, include/mrm332.h, misc/dotests, misc/gdbinit68, misc/interr.c, spurious/.cvsignore, spurious/Makefile.am, spurious/spinit.c, start/.cvsignore, start/Makefile.am, start/start.c, startup/.cvsignore, startup/Makefile.am, startup/bspclean.c, startup/bspstart.c, startup/except_vect_332_ROM.S, startup/linkcmds, startup/linkcmds_ROM, timer/.cvsignore, timer/Makefile.am, timer/timer.c, times, wrapup/.cvsignore, wrapup/Makefile.am: Initial files. --- c/src/lib/libbsp/m68k/mrm332/spurious/spinit.c | 103 +++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 c/src/lib/libbsp/m68k/mrm332/spurious/spinit.c (limited to 'c/src/lib/libbsp/m68k/mrm332/spurious/spinit.c') diff --git a/c/src/lib/libbsp/m68k/mrm332/spurious/spinit.c b/c/src/lib/libbsp/m68k/mrm332/spurious/spinit.c new file mode 100644 index 0000000000..c296e5888a --- /dev/null +++ b/c/src/lib/libbsp/m68k/mrm332/spurious/spinit.c @@ -0,0 +1,103 @@ +/* Spurious_driver + * + * This routine installs spurious interrupt handlers for the mrm. + * + * Input parameters: NONE + * + * Output parameters: NONE + * + * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#include +#include + +const char * const _Spurious_Error_[] = {"Reset","Bus Error","Address Error", + "Illegal Instruction","Zero Division","CHK, CHK2 Instruction", + "TRAPcc, TRAPV Instruction","Privilege Violation","Trace", + "Line 1010 Emulation","Line 1111 Emulation","Hardware Breakpoint", + "Coprocessor Protocal Violation", + "Format Error ans Uninitialized Interrupt","Unassigned", + "Spurious Interrupt","AVec1","AVec2","AVec3","AVec4","AVec5","AVec6", + "AVec7","Trap Instruction","Debug","Reboot","Reserved Coprocessor", + "Reserved Unassigned","User Defined"}; + +rtems_isr Spurious_Isr( + rtems_vector_number vector +) +{ + int sp = 0; + const char * const VectDescrip[] = { + _Spurious_Error_[0], _Spurious_Error_[0], _Spurious_Error_[1], + _Spurious_Error_[2], _Spurious_Error_[3], _Spurious_Error_[4], + _Spurious_Error_[5], _Spurious_Error_[6], _Spurious_Error_[7], + _Spurious_Error_[8], _Spurious_Error_[9], _Spurious_Error_[10], + _Spurious_Error_[11], _Spurious_Error_[12], _Spurious_Error_[13], + _Spurious_Error_[13], _Spurious_Error_[14], _Spurious_Error_[14], + _Spurious_Error_[14], _Spurious_Error_[14], _Spurious_Error_[14], + _Spurious_Error_[14], _Spurious_Error_[14], _Spurious_Error_[14], + _Spurious_Error_[15], _Spurious_Error_[16], _Spurious_Error_[17], + _Spurious_Error_[18], _Spurious_Error_[19], _Spurious_Error_[20], + _Spurious_Error_[21], _Spurious_Error_[22], _Spurious_Error_[23], + _Spurious_Error_[24], _Spurious_Error_[23], _Spurious_Error_[23], + _Spurious_Error_[23], _Spurious_Error_[23], _Spurious_Error_[23], + _Spurious_Error_[23], _Spurious_Error_[23], _Spurious_Error_[23], + _Spurious_Error_[23], _Spurious_Error_[23], _Spurious_Error_[23], + _Spurious_Error_[23], _Spurious_Error_[23], _Spurious_Error_[25], + _Spurious_Error_[26], _Spurious_Error_[26], _Spurious_Error_[26], + _Spurious_Error_[26], _Spurious_Error_[26], _Spurious_Error_[26], + _Spurious_Error_[26], _Spurious_Error_[26], _Spurious_Error_[26], + _Spurious_Error_[26], _Spurious_Error_[26], _Spurious_Error_[27], + _Spurious_Error_[27], _Spurious_Error_[27], _Spurious_Error_[27], + _Spurious_Error_[27], _Spurious_Error_[28]}; + + asm volatile ( "movea.l %%sp,%0 " : "=a" (sp) : "0" (sp) ); + + _CPU_ISR_Set_level( 7 ); + _UART_flush(); + + RAW_PUTS("\n\rRTEMS: Spurious interrupt: "); + RAW_PUTS((char *)VectDescrip[( (vector>64) ? 64 : vector )]); + RAW_PUTS("\n\rRTEMS: Vector: "); + RAW_PUTI(vector); + RAW_PUTS(" sp: "); + RAW_PUTI(sp); + RAW_PUTS("\n\r"); + + bsp_cleanup(); + + /* BDM SIGEMT */ + asm(" .word 0x4afa"); + + for(;;); +} + +void Spurious_Initialize(void) +{ + rtems_vector_number vector; + + for ( vector = 0x0 ; vector <= 0xFF ; vector++ ) + { + switch (vector) + { + case 4: + case 9: + case 31: + case 47: + case 66: + /* These vectors used by CPU32bug - don't overwrite them. */ + break; + + default: + (void) set_vector( Spurious_Isr, vector, 1 ); + break; + } + } +} -- cgit v1.2.3