summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/mips/hurricane
diff options
context:
space:
mode:
authorJennifer Averett <jennifer.averett@OARcorp.com>2012-04-04 08:39:46 -0500
committerJoel Sherrill <joel.sherrill@oarcorp.com>2012-04-04 08:43:08 -0500
commit0c0181dee26d64835f0cd4f47ef81f681ea553e8 (patch)
tree2f8aef096fa1ed345176328b805d9bb8394fd2f8 /c/src/lib/libbsp/mips/hurricane
parentbsp/mpc55xx: Add and use chip features (diff)
downloadrtems-0c0181dee26d64835f0cd4f47ef81f681ea553e8.tar.bz2
PR 1993 - Convert MIPS to PIC IRQ model
Diffstat (limited to '')
-rw-r--r--c/src/lib/libbsp/mips/hurricane/ChangeLog19
-rw-r--r--c/src/lib/libbsp/mips/hurricane/Makefile.am54
-rw-r--r--c/src/lib/libbsp/mips/hurricane/clock/ckinit.c52
-rw-r--r--c/src/lib/libbsp/mips/hurricane/include/bsp.h10
-rw-r--r--c/src/lib/libbsp/mips/hurricane/include/irq.h42
-rw-r--r--c/src/lib/libbsp/mips/hurricane/irq/vectorisrs.c60
-rw-r--r--c/src/lib/libbsp/mips/hurricane/preinstall.am12
-rw-r--r--c/src/lib/libbsp/mips/hurricane/startup/bspstart.c16
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();
}