summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libcpu/arm/ChangeLog12
-rw-r--r--c/src/lib/libcpu/arm/at91rm9200/irq/irq.c8
-rw-r--r--c/src/lib/libcpu/arm/lpc22xx/irq/irq.c17
-rw-r--r--c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c8
-rw-r--r--c/src/lib/libcpu/arm/s3c2400/irq/irq.c16
5 files changed, 36 insertions, 25 deletions
diff --git a/c/src/lib/libcpu/arm/ChangeLog b/c/src/lib/libcpu/arm/ChangeLog
index 206ec46c9f..d97fc591e1 100644
--- a/c/src/lib/libcpu/arm/ChangeLog
+++ b/c/src/lib/libcpu/arm/ChangeLog
@@ -1,3 +1,15 @@
+2007-09-12 Joel Sherrill <joel.sherrill@OARcorp.com>
+
+ PR 1257/bsps
+ * at91rm9200/irq/irq.c, lpc22xx/irq/irq.c, mc9328mxl/irq/irq.c,
+ s3c2400/irq/irq.c: Code outside of cpukit should use the public API
+ for rtems_interrupt_disable/rtems_interrupt_enable. By bypassing the
+ public API and directly accessing _CPU_ISR_Disable and
+ _CPU_ISR_Enable, they were bypassing the compiler memory barrier
+ directive which could lead to problems. This patch also changes the
+ type of the variable passed into these routines and addresses minor
+ style issues.
+
2007-05-01 Ray Xu <xr@trasin.net>
* lpc22xx/clock/clockdrv.c, lpc22xx/include/lpc22xx.h,
diff --git a/c/src/lib/libcpu/arm/at91rm9200/irq/irq.c b/c/src/lib/libcpu/arm/at91rm9200/irq/irq.c
index da85d93387..d8255cd233 100644
--- a/c/src/lib/libcpu/arm/at91rm9200/irq/irq.c
+++ b/c/src/lib/libcpu/arm/at91rm9200/irq/irq.c
@@ -49,7 +49,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
return 0;
}
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
/*
* store the new handler
@@ -68,7 +68,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
irq->on(irq);
}
- _CPU_ISR_Enable(level);
+ rtems_interrupt_enable(level);
return 1;
}
@@ -90,7 +90,7 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
if (AIC_SVR_REG(irq->name * 4) != (uint32_t) irq->hdl) {
return 0;
}
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
/*
* mask interrupt
@@ -109,7 +109,7 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
*/
AIC_SVR_REG(irq->name * 4) = (uint32_t) default_int_handler;
- _CPU_ISR_Enable(level);
+ rtems_interrupt_enable(level);
return 1;
}
diff --git a/c/src/lib/libcpu/arm/lpc22xx/irq/irq.c b/c/src/lib/libcpu/arm/lpc22xx/irq/irq.c
index 47b0af3a66..1592d88407 100644
--- a/c/src/lib/libcpu/arm/lpc22xx/irq/irq.c
+++ b/c/src/lib/libcpu/arm/lpc22xx/irq/irq.c
@@ -35,9 +35,9 @@ static int isValidInterrupt(int irq)
int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
{
rtems_interrupt_level level;
- rtems_irq_hdl *bsp_tbl;
- int *vic_cntl;
- static int irq_counter=0;
+ rtems_irq_hdl *bsp_tbl;
+ int *vic_cntl;
+ static int irq_counter = 0;
bsp_tbl = (rtems_irq_hdl *)VICVectAddrBase;
@@ -55,7 +55,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
return 0;
}
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
/*
* store the new handler
@@ -76,7 +76,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
irq_counter++;
- _CPU_ISR_Enable(level);
+ rtems_interrupt_enable(level);
return 1;
}
@@ -90,7 +90,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
{
rtems_interrupt_level level;
- rtems_irq_hdl *bsp_tbl;
+ rtems_irq_hdl *bsp_tbl;
bsp_tbl = (rtems_irq_hdl *)&VICVectAddr0;
@@ -104,7 +104,7 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
return 0;
}
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
VICIntEnClr = 1 << irq->name;
@@ -119,8 +119,7 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
*/
bsp_tbl[irq->name] = default_int_handler;
-
- _CPU_ISR_Enable(level);
+ rtems_interrupt_enable(level);
return 1;
}
diff --git a/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c b/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c
index aa776f067a..81a9c8ee72 100644
--- a/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c
+++ b/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c
@@ -50,7 +50,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
return 0;
}
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
/*
* store the new handler
@@ -66,7 +66,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
irq->on(irq);
}
- _CPU_ISR_Enable(level);
+ rtems_interrupt_enable(level);
return 1;
}
@@ -91,7 +91,7 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
return 0;
}
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
/*
@@ -106,7 +106,7 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
bsp_vector_table[irq->name].vector = default_int_handler;
bsp_vector_table[irq->name].data = NULL;
- _CPU_ISR_Enable(level);
+ rtems_interrupt_enable(level);
return 1;
}
diff --git a/c/src/lib/libcpu/arm/s3c2400/irq/irq.c b/c/src/lib/libcpu/arm/s3c2400/irq/irq.c
index fcf3085738..6cef0e9268 100644
--- a/c/src/lib/libcpu/arm/s3c2400/irq/irq.c
+++ b/c/src/lib/libcpu/arm/s3c2400/irq/irq.c
@@ -39,8 +39,8 @@ static int isValidInterrupt(int irq)
int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
{
- rtems_irq_hdl *HdlTable;
- rtems_interrupt_level level;
+ rtems_irq_hdl *HdlTable;
+ rtems_interrupt_level level;
if (!isValidInterrupt(irq->name)) {
return 0;
@@ -54,7 +54,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
return 0;
}
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
/*
* store the new handler
@@ -69,15 +69,15 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
irq->on(irq);
}
- _CPU_ISR_Enable(level);
+ rtems_interrupt_enable(level);
return 1;
}
int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
{
- rtems_irq_hdl *HdlTable;
- rtems_interrupt_level level;
+ rtems_irq_hdl *HdlTable;
+ rtems_interrupt_level level;
if (!isValidInterrupt(irq->name)) {
return 0;
@@ -90,7 +90,7 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
if (*(HdlTable + irq->name) != irq->hdl) {
return 0;
}
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
/*
* Disable interrupt on device
@@ -104,7 +104,7 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
*/
*(HdlTable + irq->name) = default_int_handler;
- _CPU_ISR_Enable(level);
+ rtems_interrupt_enable(level);
return 1;
}