summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c/src/lib/libbsp/powerpc/ChangeLog10
-rw-r--r--c/src/lib/libbsp/powerpc/ep1a/irq/irq.c7
-rw-r--r--c/src/lib/libbsp/powerpc/gen5200/irq/irq.c5
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/irq/irq_init.c3
-rw-r--r--c/src/lib/libbsp/powerpc/mbx8xx/irq/irq.c5
-rw-r--r--c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.c5
-rw-r--r--c/src/lib/libbsp/powerpc/mvme5500/irq/irq.c6
-rw-r--r--c/src/lib/libbsp/powerpc/psim/irq/no_pic.c5
-rw-r--r--c/src/lib/libbsp/powerpc/score603e/irq/irq.c5
-rw-r--r--c/src/lib/libbsp/powerpc/shared/irq/openpic_i8259_irq.c7
-rw-r--r--c/src/lib/libbsp/powerpc/virtex/irq/irq_init.c3
11 files changed, 41 insertions, 20 deletions
diff --git a/c/src/lib/libbsp/powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/ChangeLog
index bfcc51c9fb..e4c77e2490 100644
--- a/c/src/lib/libbsp/powerpc/ChangeLog
+++ b/c/src/lib/libbsp/powerpc/ChangeLog
@@ -1,5 +1,15 @@
2007-12-08 Till Straumann <strauman@slac.stanford.edu>
+ * ep1a/irq/irq.c, gen5200/irq/irq.c, gen83xx/irq/irq_init.c,
+ mbx8xx/irq/irq.c, mpc8260ads/irq/irq.c, mvme5500/irq/irq.c,
+ psim/irq/no_pic.c, score603e/irq/irq.c, shared/irq/irq_supp.h,
+ shared/irq/openpic_i8259_irq.c, virtex/irq/irq_init.c:
+ let C_dispatch_irq_handler() return zero to indicate to
+ low-level exception handling code that the exception
+ was handled (not used yet).
+
+2007-12-08 Till Straumann <strauman@slac.stanford.edu>
+
*shared/irq/irq_supp.h: removed cpp test for
BSP_SHARED_HANDLER_SUPPORT; BSPs using irq_supp.h
*must* implement shared handlers.
diff --git a/c/src/lib/libbsp/powerpc/ep1a/irq/irq.c b/c/src/lib/libbsp/powerpc/ep1a/irq/irq.c
index ae5c519059..91ce967bb4 100644
--- a/c/src/lib/libbsp/powerpc/ep1a/irq/irq.c
+++ b/c/src/lib/libbsp/powerpc/ep1a/irq/irq.c
@@ -452,7 +452,7 @@ unsigned BSP_spuriousIntr = 0;
/*
* High level IRQ handler called from shared_raw_irq_code_entry
*/
-void C_dispatch_irq_handler (struct _BSP_Exception_frame *frame, unsigned int excNum)
+int C_dispatch_irq_handler (struct _BSP_Exception_frame *frame, unsigned int excNum)
{
register unsigned int irq;
register unsigned isaIntr; /* boolean */
@@ -469,7 +469,7 @@ void C_dispatch_irq_handler (struct _BSP_Exception_frame *frame, unsigned int ex
rtems_hdl_tbl[BSP_DECREMENTER].hdl( rtems_hdl_tbl[BSP_DECREMENTER].handle );
_CPU_MSR_SET(msr);
- return;
+ return 0;
}
@@ -477,7 +477,7 @@ void C_dispatch_irq_handler (struct _BSP_Exception_frame *frame, unsigned int ex
if (irq == OPENPIC_VEC_SPURIOUS) {
++BSP_spuriousIntr;
- return;
+ return 0;
}
isaIntr = (irq == BSP_PCI_ISA_BRIDGE_IRQ);
@@ -529,6 +529,7 @@ void C_dispatch_irq_handler (struct _BSP_Exception_frame *frame, unsigned int ex
#endif
openpic_eoi(0);
}
+ return 0;
}
diff --git a/c/src/lib/libbsp/powerpc/gen5200/irq/irq.c b/c/src/lib/libbsp/powerpc/gen5200/irq/irq.c
index 62fd0336e1..2914452f23 100644
--- a/c/src/lib/libbsp/powerpc/gen5200/irq/irq.c
+++ b/c/src/lib/libbsp/powerpc/gen5200/irq/irq.c
@@ -635,7 +635,7 @@ int BSP_rtems_irq_mngt_get(rtems_irq_global_settings** config)
/*
* High level IRQ handler called from shared_raw_irq_code_entry
*/
-void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
+int C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
{
register unsigned int irq;
register unsigned int msr;
@@ -652,7 +652,7 @@ void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
/* call the module specific handler and pass the specific handler */
rtems_hdl_tbl[BSP_DECREMENTER].hdl(0);
- return;
+ return 0;
case ASM_60X_SYSMGMT_VECTOR:
@@ -966,6 +966,7 @@ void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
break;
} /* end of switch(excNum) */
+ return 0;
}
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/irq/irq_init.c b/c/src/lib/libbsp/powerpc/gen83xx/irq/irq_init.c
index 86ef3a0e20..15e9f55e9c 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/irq/irq_init.c
+++ b/c/src/lib/libbsp/powerpc/gen83xx/irq/irq_init.c
@@ -89,7 +89,7 @@ void BSP_irqexc_off_fnc(rtems_irq_connect_data *unused)
/***********************************************************
* High level IRQ handler called from shared_raw_irq_code_entry
*/
-void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
+int C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
{
uint32_t msr_value,new_msr;
@@ -116,6 +116,7 @@ void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
BSP_irq_handle_at_ipic(excNum);
break;
}
+ return 0;
}
void _ThreadProcessSignalsFromIrq (BSP_Exception_frame* ctx)
diff --git a/c/src/lib/libbsp/powerpc/mbx8xx/irq/irq.c b/c/src/lib/libbsp/powerpc/mbx8xx/irq/irq.c
index 60cc72e1a8..19fa082d1a 100644
--- a/c/src/lib/libbsp/powerpc/mbx8xx/irq/irq.c
+++ b/c/src/lib/libbsp/powerpc/mbx8xx/irq/irq.c
@@ -402,7 +402,7 @@ volatile unsigned int maxLoop = 0;
/*
* High level IRQ handler called from shared_raw_irq_code_entry
*/
-void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
+int C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
{
register unsigned int irq;
register unsigned cpmIntr; /* boolean */
@@ -423,7 +423,7 @@ void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
rtems_hdl_tbl[BSP_DECREMENTER].hdl(rtems_hdl_tbl[BSP_DECREMENTER].handle);
_CPU_MSR_SET(msr);
- return;
+ return 0;
}
/*
* Handle external interrupt generated by SIU on PPC core
@@ -490,6 +490,7 @@ void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
++ loopCounter;
#endif
}
+ return 0;
}
void _ThreadProcessSignalsFromIrq (BSP_Exception_frame* ctx)
diff --git a/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.c b/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.c
index 87c8477ee0..13e2d674df 100644
--- a/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.c
+++ b/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.c
@@ -422,7 +422,7 @@ volatile unsigned int maxLoop = 0;
/*
* High level IRQ handler called from shared_raw_irq_code_entry
*/
-void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
+int C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
{
register unsigned int irq;
#if 0
@@ -448,7 +448,7 @@ void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
_CPU_MSR_SET(msr);
- return;
+ return 0;
}
/*
@@ -503,6 +503,7 @@ void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
++ loopCounter;
#endif
}
+ return 0;
}
void _ThreadProcessSignalsFromIrq (BSP_Exception_frame* ctx)
diff --git a/c/src/lib/libbsp/powerpc/mvme5500/irq/irq.c b/c/src/lib/libbsp/powerpc/mvme5500/irq/irq.c
index 22ad2b1fb4..d2d1ff0bcb 100644
--- a/c/src/lib/libbsp/powerpc/mvme5500/irq/irq.c
+++ b/c/src/lib/libbsp/powerpc/mvme5500/irq/irq.c
@@ -586,7 +586,7 @@ int BSP_rtems_irq_mngt_get(rtems_irq_global_settings** config)
* High level IRQ handler called from shared_raw_irq_code_entry
*/
-void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
+int C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
{
register unsigned msr, new_msr;
unsigned long irqCause[3]={0, 0,0};
@@ -602,7 +602,7 @@ void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
rtems_hdl_tbl[BSP_DECREMENTER].hdl(rtems_hdl_tbl[BSP_DECREMENTER].handle);
_MSR_SET(msr);
- return;
+ return 0;
}
@@ -650,6 +650,8 @@ void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
out_le32((volatile unsigned *)0xf1000c6c, oldMask[1]);
out_le32((volatile unsigned *)0xf100f10c, oldMask[2]);
in_le32((volatile unsigned *)0xf100f10c);
+
+ return 0;
}
void _ThreadProcessSignalsFromIrq (BSP_Exception_frame* ctx)
diff --git a/c/src/lib/libbsp/powerpc/psim/irq/no_pic.c b/c/src/lib/libbsp/powerpc/psim/irq/no_pic.c
index e31d2ed5c0..dd0c3dbe2a 100644
--- a/c/src/lib/libbsp/powerpc/psim/irq/no_pic.c
+++ b/c/src/lib/libbsp/powerpc/psim/irq/no_pic.c
@@ -27,7 +27,7 @@ static rtems_irq_connect_data dflt_entry;
/*
* High level IRQ handler called from shared_raw_irq_code_entry
*/
-void C_dispatch_irq_handler(
+int C_dispatch_irq_handler(
struct _BSP_Exception_frame *frame,
unsigned int excNum
)
@@ -43,8 +43,9 @@ void C_dispatch_irq_handler(
bsp_irq_dispatch_list(rtems_hdl_tbl, BSP_DECREMENTER, dflt_entry.hdl);
_ISR_Set_level(l_orig);
- return;
+ return 0;
}
+ return -1; /* unhandled interrupt */
}
void
diff --git a/c/src/lib/libbsp/powerpc/score603e/irq/irq.c b/c/src/lib/libbsp/powerpc/score603e/irq/irq.c
index 1e4f0097de..2bfa4205a2 100644
--- a/c/src/lib/libbsp/powerpc/score603e/irq/irq.c
+++ b/c/src/lib/libbsp/powerpc/score603e/irq/irq.c
@@ -400,7 +400,7 @@ unsigned BSP_spuriousIntr = 0;
/*
* High level IRQ handler called from shared_raw_irq_code_entry
*/
-void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
+int C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
{
register unsigned int irq;
register unsigned msr;
@@ -414,7 +414,7 @@ void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
rtems_hdl_tbl[BSP_DECREMENTER].hdl(rtems_hdl_tbl[BSP_DECREMENTER].handle);
_CPU_MSR_SET(msr);
- return;
+ return 0;
}
irq = read_and_clear_irq();
@@ -435,6 +435,7 @@ void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
_CPU_MSR_SET(msr);
+ return 0;
}
void _ThreadProcessSignalsFromIrq (BSP_Exception_frame* ctx)
diff --git a/c/src/lib/libbsp/powerpc/shared/irq/openpic_i8259_irq.c b/c/src/lib/libbsp/powerpc/shared/irq/openpic_i8259_irq.c
index dcc3b645f5..e4d740d88b 100644
--- a/c/src/lib/libbsp/powerpc/shared/irq/openpic_i8259_irq.c
+++ b/c/src/lib/libbsp/powerpc/shared/irq/openpic_i8259_irq.c
@@ -213,7 +213,7 @@ unsigned BSP_spuriousIntr = 0;
/*
* High level IRQ handler called from shared_raw_irq_code_entry
*/
-void C_dispatch_irq_handler (BSP_Exception_frame *frame, unsigned int excNum)
+int C_dispatch_irq_handler (BSP_Exception_frame *frame, unsigned int excNum)
{
register unsigned int irq;
#ifdef BSP_PCI_ISA_BRIDGE_IRQ
@@ -226,13 +226,13 @@ void C_dispatch_irq_handler (BSP_Exception_frame *frame, unsigned int excNum)
bsp_irq_dispatch_list(rtems_hdl_tbl, BSP_DECREMENTER, default_rtems_entry.hdl);
- return;
+ return 0;
}
irq = openpic_irq(0);
if (irq == OPENPIC_VEC_SPURIOUS) {
++BSP_spuriousIntr;
- return;
+ return 0;
}
/* some BSPs might want to use a different numbering... */
@@ -279,4 +279,5 @@ void C_dispatch_irq_handler (BSP_Exception_frame *frame, unsigned int excNum)
#endif
openpic_eoi(0);
}
+ return 0;
}
diff --git a/c/src/lib/libbsp/powerpc/virtex/irq/irq_init.c b/c/src/lib/libbsp/powerpc/virtex/irq/irq_init.c
index db6d411476..4c42cb1aff 100644
--- a/c/src/lib/libbsp/powerpc/virtex/irq/irq_init.c
+++ b/c/src/lib/libbsp/powerpc/virtex/irq/irq_init.c
@@ -88,7 +88,7 @@ void BSP_irqexc_off_fnc(rtems_irq_connect_data *unused)
/***********************************************************
* High level IRQ handler called from shared_raw_irq_code_entry
*/
-void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
+int C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
{
@@ -121,6 +121,7 @@ void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum)
break;
#endif
}
+ return 0;
}
void _ThreadProcessSignalsFromIrq (BSP_Exception_frame* ctx)