summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/score603e/irq
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2008-09-30 23:13:54 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2008-09-30 23:13:54 +0000
commit3d505747dc7c999386c5fc307ee32c7448549437 (patch)
tree992f3e28b29cd9ecb3e203c2037fc6c06627e11a /c/src/lib/libbsp/powerpc/score603e/irq
parent2008-09-30 Ralf Corsepius <ralf.corsepius@rtems.org> (diff)
downloadrtems-3d505747dc7c999386c5fc307ee32c7448549437.tar.bz2
2008-09-30 Jennifer Averett <jennifer.averett@oarcorp.com>
* Makefile.am, preinstall.am, PCI_bus/universe.c, console/console.c, include/bsp.h, irq/FPGA.c, irq/irq.c, startup/Hwr_init.c, startup/bspstart.c, startup/vmeintr.c: Modifications required to run on hardware. Some cleanup.
Diffstat (limited to 'c/src/lib/libbsp/powerpc/score603e/irq')
-rw-r--r--c/src/lib/libbsp/powerpc/score603e/irq/FPGA.c21
-rw-r--r--c/src/lib/libbsp/powerpc/score603e/irq/irq.c47
2 files changed, 49 insertions, 19 deletions
diff --git a/c/src/lib/libbsp/powerpc/score603e/irq/FPGA.c b/c/src/lib/libbsp/powerpc/score603e/irq/FPGA.c
index 2907a1c308..f7a5a7d4df 100644
--- a/c/src/lib/libbsp/powerpc/score603e/irq/FPGA.c
+++ b/c/src/lib/libbsp/powerpc/score603e/irq/FPGA.c
@@ -22,21 +22,10 @@
*/
void initialize_PCI_bridge (void)
{
-#if (!SCORE603E_USE_DINK)
- uint16_t mask, shift, data;
-
- shift = SCORE603E_85C30_0_IRQ - Score_IRQ_First;
- mask = 1 << shift;
-
- shift = SCORE603E_85C30_1_IRQ - Score_IRQ_First;
- mask = mask & (1 << shift);
-
- data = *SCORE603E_FPGA_MASK_DATA;
- data = ~mask;
-
- *SCORE603E_FPGA_MASK_DATA = data;
-#endif
-
+ /* Note: Accept DINKs setup of the PCI Bridge and don't
+ * change anything.
+ */
+ printk("initialize_PCI_bridge: \n");
}
void set_irq_mask(
@@ -93,9 +82,7 @@ void init_irq_data_register(void)
uint32_t index;
uint32_t i;
-#if (SCORE603E_USE_DINK)
set_irq_mask( 0xffff );
-#endif
/*
* Clear any existing interupts from the vector data register.
diff --git a/c/src/lib/libbsp/powerpc/score603e/irq/irq.c b/c/src/lib/libbsp/powerpc/score603e/irq/irq.c
index 84b59ab046..31444af39e 100644
--- a/c/src/lib/libbsp/powerpc/score603e/irq/irq.c
+++ b/c/src/lib/libbsp/powerpc/score603e/irq/irq.c
@@ -140,6 +140,27 @@ printk(" BSP_install_rtems_shared_irq_handler %d\n", irq->name );
}
/*
+ * This function disables a given XXX interrupt
+ */
+rtems_status_code bsp_interrupt_vector_disable( rtems_vector_number irqLine)
+{
+ /* XXX FIX ME!!!! */
+
+ printk("bsp_interrupt_vector_disable: 0x%x\n", irqLine );
+ return RTEMS_SUCCESSFUL;
+}
+
+rtems_status_code bsp_interrupt_vector_enable( rtems_vector_number irqLine)
+{
+ /* XXX FIX ME!!!! */
+ printk("bsp_interrupt_vector_enable: 0x%x\n", irqLine );
+
+ return RTEMS_SUCCESSFUL;
+}
+
+
+
+/*
* ------------------------ RTEMS Single Irq Handler Mngt Routines ----------------
*/
@@ -178,18 +199,23 @@ printk(" BSP_install_rtems_irq_handler %d\n", irq->name );
/*
* Enable interrupt
*/
+ printk("is_pci_irq = TRUE - FIX THIS!\n");
}
if (is_processor_irq(irq->name)) {
/*
* Enable exception at processor level
*/
+ printk("is_processor_irq = TRUE : Fix This\n");
}
+
/*
* Enable interrupt on device
*/
- if (irq->on)
+ if (irq->on) {
+ printk("Call 0x%x\n", irq->on );
irq->on(irq);
+ }
rtems_interrupt_enable(level);
@@ -415,7 +441,6 @@ int C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
register unsigned msr;
register unsigned new_msr;
-printk(" C_dispatch_irq_handler %d\n", excNum);
if (excNum == ASM_DEC_VECTOR) {
_CPU_MSR_GET(msr);
new_msr = msr | MSR_EE;
@@ -468,3 +493,21 @@ printk(" _ThreadProcessSignalsFromIrq \n");
* This will include DEBUG session requested from keyboard...
*/
}
+
+rtems_status_code bsp_interrupt_facility_initialize( void)
+{
+ /* Install exception handler */
+ if (ppc_exc_set_handler( ASM_EXT_VECTOR, C_dispatch_irq_handler)) {
+ return RTEMS_IO_ERROR;
+ }
+ if (ppc_exc_set_handler( ASM_DEC_VECTOR, C_dispatch_irq_handler)) {
+ return RTEMS_IO_ERROR;
+ }
+ if (ppc_exc_set_handler( ASM_E300_SYSMGMT_VECTOR, C_dispatch_irq_handler)) {
+ return RTEMS_IO_ERROR;
+ }
+
+ return RTEMS_SUCCESSFUL;
+}
+
+