diff options
author | Jennifer Averett <jennifer.averett@OARcorp.com> | 2012-04-04 08:39:46 -0500 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@oarcorp.com> | 2012-04-04 08:43:08 -0500 |
commit | 0c0181dee26d64835f0cd4f47ef81f681ea553e8 (patch) | |
tree | 2f8aef096fa1ed345176328b805d9bb8394fd2f8 /c/src/lib/libbsp/mips/hurricane | |
parent | bsp/mpc55xx: Add and use chip features (diff) | |
download | rtems-0c0181dee26d64835f0cd4f47ef81f681ea553e8.tar.bz2 |
PR 1993 - Convert MIPS to PIC IRQ model
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/mips/hurricane/ChangeLog | 19 | ||||
-rw-r--r-- | c/src/lib/libbsp/mips/hurricane/Makefile.am | 54 | ||||
-rw-r--r-- | c/src/lib/libbsp/mips/hurricane/clock/ckinit.c | 52 | ||||
-rw-r--r-- | c/src/lib/libbsp/mips/hurricane/include/bsp.h | 10 | ||||
-rw-r--r-- | c/src/lib/libbsp/mips/hurricane/include/irq.h | 42 | ||||
-rw-r--r-- | c/src/lib/libbsp/mips/hurricane/irq/vectorisrs.c | 60 | ||||
-rw-r--r-- | c/src/lib/libbsp/mips/hurricane/preinstall.am | 12 | ||||
-rw-r--r-- | c/src/lib/libbsp/mips/hurricane/startup/bspstart.c | 16 |
8 files changed, 215 insertions, 50 deletions
diff --git a/c/src/lib/libbsp/mips/hurricane/ChangeLog b/c/src/lib/libbsp/mips/hurricane/ChangeLog index bd96289a0f..7af15f38af 100644 --- a/c/src/lib/libbsp/mips/hurricane/ChangeLog +++ b/c/src/lib/libbsp/mips/hurricane/ChangeLog @@ -1,3 +1,22 @@ +2012-03-08 Jennifer Averett <Jennifer.Averett@OARcorp.com> + + * include/bsp.h: Added define for BSP_SHARED_HANDLER_SUPPORT. + +2012-03-06 Jennifer Averett <Jennifer.Averett@OARcorp.com> + + PR 1993/bsps + * include/bsp.h, include/irq.h, + irq/vectorisrs.c, startup/bspstart.c: + Changed interrupt call, removed warnings and did cleanup. + +2012-02-23 Jennifer Averett <Jennifer.Averett@OARcorp.com> + + PR 1993/bsps + * Makefile.am, clock/ckinit.c, include/irq.h, + irq/vectorisrs.c, preinstall.am, startup/bspstart.c: + Mips conversion to PIC IRQ model. + * include/irq.h, irq/vectorisrs.c: New files. + 2011-02-02 Ralf Corsépius <ralf.corsepius@rtems.org> * configure.ac: Require autoconf-2.68, automake-1.11.1. diff --git a/c/src/lib/libbsp/mips/hurricane/Makefile.am b/c/src/lib/libbsp/mips/hurricane/Makefile.am index eaa8e462ea..9b67d34115 100644 --- a/c/src/lib/libbsp/mips/hurricane/Makefile.am +++ b/c/src/lib/libbsp/mips/hurricane/Makefile.am @@ -14,6 +14,10 @@ include_HEADERS = include/bsp.h include_HEADERS += ../../shared/include/tm27.h include_HEADERS += include/usc.h include_bsp_HEADERS = ../shared/liblnk/regs.h +#isr +include_bsp_HEADERS += ../../shared/include/irq-generic.h +include_bsp_HEADERS += ../../shared/include/irq-info.h +include_bsp_HEADERS += include/irq.h nodist_include_HEADERS = include/bspopts.h nodist_include_bsp_HEADERS = ../../shared/include/bootcard.h @@ -31,27 +35,45 @@ noinst_LIBRARIES += libbsp.a libbsp_a_SOURCES = # startup -libbsp_a_SOURCES += ../../shared/bspclean.c \ - ../../shared/bsplibc.c ../../shared/bsppost.c \ - ../../shared/bsppretaskinghook.c ../../shared/bspgetworkarea.c \ - ../../shared/bsppredriverhook.c startup/bspstart.c \ - ../../shared/bootcard.c ../../shared/sbrk.c \ - ../../shared/gnatinstallhandler.c ../../shared/setvec.c \ - startup/inittlb.c ../shared/startup/idtmem.S ../shared/startup/idttlb.S \ - ../shared/irq/exception.S startup/usc.S +libbsp_a_SOURCES += ../../shared/bspclean.c +libbsp_a_SOURCES += ../../shared/bsplibc.c +libbsp_a_SOURCES += ../../shared/bsppost.c +libbsp_a_SOURCES += ../../shared/bsppretaskinghook.c +libbsp_a_SOURCES += ../../shared/bspgetworkarea.c +libbsp_a_SOURCES += ../../shared/bsppredriverhook.c +libbsp_a_SOURCES += startup/bspstart.c +libbsp_a_SOURCES += ../../shared/bootcard.c +libbsp_a_SOURCES += ../../shared/sbrk.c +libbsp_a_SOURCES += startup/inittlb.c +libbsp_a_SOURCES += ../shared/startup/idtmem.S +libbsp_a_SOURCES += ../shared/startup/idttlb.S +libbsp_a_SOURCES += ../shared/irq/exception.S +libbsp_a_SOURCES += startup/usc.S # clock libbsp_a_SOURCES += clock/ckinit.c +libbsp_a_SOURCES += clock/clock.h + # console libbsp_a_SOURCES += console/console.c # liblnk -libbsp_a_SOURCES += ../shared/liblnk/lnklib.S ../shared/liblnk/pmon.S \ - ../shared/liblnk/regs.h - -libbsp_a_LIBADD = \ - ../../../libcpu/@RTEMS_CPU@/shared/cache.rel \ - ../../../libcpu/@RTEMS_CPU@/shared/interrupts.rel \ - ../../../libcpu/@RTEMS_CPU@/rm52xx/timer.rel \ - ../../../libcpu/@RTEMS_CPU@/rm52xx/vectorisrs.rel +libbsp_a_SOURCES += ../shared/liblnk/lnklib.S +libbsp_a_SOURCES += ../shared/liblnk/pmon.S +libbsp_a_SOURCES += ../shared/liblnk/regs.h +#isr +libbsp_a_SOURCES += ../../shared/src/irq-generic.c +libbsp_a_SOURCES += ../../shared/src/irq-legacy.c +libbsp_a_SOURCES += ../../shared/src/irq-info.c +libbsp_a_SOURCES += ../../shared/src/irq-shell.c +libbsp_a_SOURCES += ../../shared/src/irq-server.c +libbsp_a_SOURCES += ../shared/irq/vectorexceptions.c +libbsp_a_SOURCES += ../shared/irq/irq.c +libbsp_a_SOURCES += ../shared/irq/maxvectors.c +libbsp_a_SOURCES += irq/vectorisrs.c +libbsp_a_SOURCES += ../shared/irq/interruptmask.c + +libbsp_a_LIBADD = ../../../libcpu/@RTEMS_CPU@/shared/cache.rel +libbsp_a_LIBADD += ../../../libcpu/@RTEMS_CPU@/shared/interrupts.rel +libbsp_a_LIBADD += ../../../libcpu/@RTEMS_CPU@/rm52xx/timer.rel include $(srcdir)/preinstall.am include $(top_srcdir)/../../../../automake/local.am diff --git a/c/src/lib/libbsp/mips/hurricane/clock/ckinit.c b/c/src/lib/libbsp/mips/hurricane/clock/ckinit.c index b9c37d1116..1d6cc81ec8 100644 --- a/c/src/lib/libbsp/mips/hurricane/clock/ckinit.c +++ b/c/src/lib/libbsp/mips/hurricane/clock/ckinit.c @@ -1,8 +1,10 @@ - -/* ckinit.c - * +/** + * @file + * * This file contains the clock driver initialization for the Hurricane BSP. - * + */ + +/* * Author: Craig Lebakken <craigl@transition.com> * * COPYRIGHT (c) 1996 by Transition Networks Inc. @@ -18,15 +20,15 @@ * Transition Networks makes no representations about the suitability * of this software for any purpose. * - * Derived from c/src/lib/libbsp/no_cpu/no_bsp/clock/ckinit.c: + * Derived from c/src/lib/libbsp/no_cpu/no_bsp/clock/ckinit.c * - * COPYRIGHT (c) 1989-1999. + * COPYRIGHT (c) 1989-2012. * 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.rtems.com/license/LICENSE. - * + * * $Id$ */ @@ -41,6 +43,8 @@ #include <stdlib.h> #include <rtems.h> +#include <bsp.h> +#include <bsp/irq.h> extern uint32_t bsp_clicks_per_microsecond; @@ -48,18 +52,18 @@ extern uint32_t bsp_clicks_per_microsecond; #include "clock.h" -/* to avoid including the bsp */ -mips_isr_entry set_vector( rtems_isr_entry, rtems_vector_number, int ); +rtems_isr USC_isr(void *unused); -void USC_isr( void ); void reset_wdt(void); void enable_wdi(void); void init_hbt(void); void enable_hbi(void); void disable_hbi(void); -void Clock_exit( void ); -rtems_isr Clock_isr( rtems_vector_number vector ); +void Clock_exit(void); +rtems_isr Clock_isr(rtems_vector_number vector); +rtems_isr User_Clock_isr(rtems_vector_number vector); +void Install_clock(rtems_isr_entry clock_isr); /* @@ -88,13 +92,6 @@ volatile uint32_t Clock_driver_ticks; uint32_t Clock_isrs; /* ISRs until next tick */ /* - * These are set by clock driver during its init - */ - -rtems_device_major_number rtems_clock_major = ~0; -rtems_device_minor_number rtems_clock_minor; - -/* * The previous ISR on this clock tick interrupt vector. */ @@ -167,8 +164,14 @@ void Install_clock( /* Set up USC heartbeat timer to generate interrupts */ disable_hbi(); /* Disable heartbeat interrupt in USC */ - /* Install interrupt handler */ - Old_ticker = (rtems_isr_entry) set_vector( USC_isr, CLOCK_VECTOR, 1 ); + /* Install interrupt handler */ + rtems_interrupt_handler_install( + CLOCK_VECTOR, + "clock", + 0, + USC_isr, + NULL + ); init_hbt(); /* Initialize heartbeat timer */ @@ -212,13 +215,6 @@ rtems_device_driver Clock_initialize( { Install_clock( Clock_isr ); - /* - * make major/minor avail to others such as shared memory driver - */ - - rtems_clock_major = major; - rtems_clock_minor = minor; - return RTEMS_SUCCESSFUL; } diff --git a/c/src/lib/libbsp/mips/hurricane/include/bsp.h b/c/src/lib/libbsp/mips/hurricane/include/bsp.h index 3305668daa..28b8be6553 100644 --- a/c/src/lib/libbsp/mips/hurricane/include/bsp.h +++ b/c/src/lib/libbsp/mips/hurricane/include/bsp.h @@ -1,5 +1,10 @@ +/** + * @file + * + */ + /* - * COPYRIGHT (c) 1989-2008. + * COPYRIGHT (c) 1989-2012. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -28,6 +33,9 @@ extern void WriteDisplay( char * string ); extern uint32_t mips_get_timer( void ); +#define BSP_FEATURE_IRQ_EXTENSION +#define BSP_SHARED_HANDLER_SUPPORT 1 + #define CPU_CLOCK_RATE_MHZ (200) #define CLOCKS_PER_MICROSECOND ( CPU_CLOCK_RATE_MHZ ) /* equivalent to CPU clock speed in MHz */ diff --git a/c/src/lib/libbsp/mips/hurricane/include/irq.h b/c/src/lib/libbsp/mips/hurricane/include/irq.h new file mode 100644 index 0000000000..2047c37978 --- /dev/null +++ b/c/src/lib/libbsp/mips/hurricane/include/irq.h @@ -0,0 +1,42 @@ +/** + * @file + * + * @ingroup bsp_interrupt + * + * @brief interrupt definitions. + */ + +/* + * COPYRIGHT (c) 1989-2012. + * 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.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#ifndef LIBBSP_MIPS_XXX_IRQ_H +#define LIBBSP_MIPS_XXX_IRQ_H + +#ifndef ASM + #include <rtems.h> + #include <rtems/irq.h> + #include <rtems/irq-extension.h> + #include <rtems/score/mips.h> +#endif + +/** + * @addtogroup bsp_interrupt + * + * @{ + */ + +#define BSP_INTERRUPT_VECTOR_MIN 0 +#define RM5231_MAXIMUM_VECTORS (MIPS_INTERRUPT_BASE+8) +#define BSP_INTERRUPT_VECTOR_MAX RM5231_MAXIMUM_VECTORS + +/** @} */ + +#endif /* LIBBSP_MIPS_JMR3904_IRQ_H */ diff --git a/c/src/lib/libbsp/mips/hurricane/irq/vectorisrs.c b/c/src/lib/libbsp/mips/hurricane/irq/vectorisrs.c new file mode 100644 index 0000000000..c0c4b85bad --- /dev/null +++ b/c/src/lib/libbsp/mips/hurricane/irq/vectorisrs.c @@ -0,0 +1,60 @@ +/** + * @file + * + * RM5231 Interrupt Vectoring + */ + +/* + * COPYRIGHT (c) 1989-2012. + * 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.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#include <rtems.h> +#include <stdlib.h> +#include <libcpu/rm5231.h> +#include <bsp/irq.h> +#include <bsp/irq-generic.h> + +#include <rtems/bspIo.h> /* for printk */ + +void mips_vector_isr_handlers( CPU_Interrupt_frame *frame ); +void mips_default_isr( int vector ); + +void mips_vector_isr_handlers( CPU_Interrupt_frame *frame ) +{ + unsigned int sr; + unsigned int cause; + unsigned int i; + unsigned int mask; + + mips_get_sr( sr ); + mips_get_cause( cause ); + + cause &= (sr & SR_IMASK); + cause >>= CAUSE_IPSHIFT; + + for ( i=1, mask=0x80 ; i<=8 ; i++, mask >>= 1 ) { + if ( cause & mask ) + bsp_interrupt_handler_dispatch( MIPS_INTERRUPT_BASE + 8 - i ); + } +} + +void mips_default_isr( int vector ) +{ + unsigned int sr; + unsigned int cause; + + mips_get_sr( sr ); + mips_get_cause( cause ); + + printk( "Unhandled isr exception: vector 0x%02x, cause 0x%08X, sr 0x%08X\n", + vector, cause, sr ); + rtems_fatal_error_occurred(1); +} + diff --git a/c/src/lib/libbsp/mips/hurricane/preinstall.am b/c/src/lib/libbsp/mips/hurricane/preinstall.am index 46f819c8a0..ae6cd49a8d 100644 --- a/c/src/lib/libbsp/mips/hurricane/preinstall.am +++ b/c/src/lib/libbsp/mips/hurricane/preinstall.am @@ -53,6 +53,18 @@ $(PROJECT_INCLUDE)/bsp/regs.h: ../shared/liblnk/regs.h $(PROJECT_INCLUDE)/bsp/$( $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/regs.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/regs.h +$(PROJECT_INCLUDE)/bsp/irq-generic.h: ../../shared/include/irq-generic.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq-generic.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq-generic.h + +$(PROJECT_INCLUDE)/bsp/irq-info.h: ../../shared/include/irq-info.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq-info.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq-info.h + +$(PROJECT_INCLUDE)/bsp/irq.h: include/irq.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq.h + $(PROJECT_INCLUDE)/bspopts.h: include/bspopts.h $(PROJECT_INCLUDE)/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bspopts.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/bspopts.h diff --git a/c/src/lib/libbsp/mips/hurricane/startup/bspstart.c b/c/src/lib/libbsp/mips/hurricane/startup/bspstart.c index 09bc558cba..cd14225468 100644 --- a/c/src/lib/libbsp/mips/hurricane/startup/bspstart.c +++ b/c/src/lib/libbsp/mips/hurricane/startup/bspstart.c @@ -1,16 +1,20 @@ -/* +/** + * @file + * * This routine starts the application. It includes application, * board, and monitor specific initialization and configuration. * The generic CPU dependent initialization has been performed * before this routine is invoked. - * - * COPYRIGHT (c) 1989-1999. + */ + +/* + * COPYRIGHT (c) 1989-2012. * 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.rtems.com/license/LICENSE. - * + * * $Id$ */ @@ -18,7 +22,9 @@ #include <bsp.h> #include <libcpu/isr_entries.h> +#include <bsp/irq-generic.h> +void bsp_start( void ); uint32_t bsp_clicks_per_microsecond; /* @@ -31,5 +37,5 @@ void bsp_start( void ) bsp_clicks_per_microsecond = CPU_CLOCK_RATE_MHZ; - mips_install_isr_entries(); /* Install generic MIPS exception handler */ + bsp_interrupt_initialize(); } |