diff options
Diffstat (limited to 'c')
-rw-r--r-- | c/src/lib/libcpu/arm/ChangeLog | 12 | ||||
-rw-r--r-- | c/src/lib/libcpu/arm/at91rm9200/irq/irq.c | 8 | ||||
-rw-r--r-- | c/src/lib/libcpu/arm/lpc22xx/irq/irq.c | 17 | ||||
-rw-r--r-- | c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c | 8 | ||||
-rw-r--r-- | c/src/lib/libcpu/arm/s3c2400/irq/irq.c | 16 |
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; } |