summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2007-09-12 15:15:32 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2007-09-12 15:15:32 +0000
commitf3343c6e79cf46b37d46cbb332ba1cb494b68ca4 (patch)
tree3d9cef71e6ce6c73993e3d1c8b419d000789f9d6 /c/src/lib/libbsp
parent2007-09-11 Joel Sherrill <joel.sherrill@OARcorp.com> (diff)
downloadrtems-f3343c6e79cf46b37d46cbb332ba1cb494b68ca4.tar.bz2
2007-09-12 Joel Sherrill <joel.sherrill@OARcorp.com>
PR 1257/bsps * csb336/network/lan91c11x.c, csb337/startup/bspstart.c, edb7312/irq/irq.c, gba/irq/irq.c, gba/irq/irq_init.c, gp32/startup/bspstart.c, rtl22xx/startup/bspstart.c, shared/abort/abort.c, shared/abort/simple_abort.c, shared/irq/irq_init.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.
Diffstat (limited to '')
-rw-r--r--c/src/lib/libbsp/arm/ChangeLog15
-rw-r--r--c/src/lib/libbsp/arm/csb336/network/lan91c11x.c20
-rw-r--r--c/src/lib/libbsp/arm/csb337/startup/bspstart.c2
-rw-r--r--c/src/lib/libbsp/arm/edb7312/irq/irq.c8
-rw-r--r--c/src/lib/libbsp/arm/gba/irq/irq.c8
-rw-r--r--c/src/lib/libbsp/arm/gba/irq/irq_init.c2
-rw-r--r--c/src/lib/libbsp/arm/gp32/startup/bspstart.c2
-rw-r--r--c/src/lib/libbsp/arm/rtl22xx/startup/bspstart.c2
-rw-r--r--c/src/lib/libbsp/arm/shared/abort/abort.c10
-rw-r--r--c/src/lib/libbsp/arm/shared/abort/simple_abort.c8
-rw-r--r--c/src/lib/libbsp/arm/shared/irq/irq_init.c2
11 files changed, 40 insertions, 39 deletions
diff --git a/c/src/lib/libbsp/arm/ChangeLog b/c/src/lib/libbsp/arm/ChangeLog
index 8a628d1370..71c469ed35 100644
--- a/c/src/lib/libbsp/arm/ChangeLog
+++ b/c/src/lib/libbsp/arm/ChangeLog
@@ -1,3 +1,18 @@
+2007-09-12 Joel Sherrill <joel.sherrill@OARcorp.com>
+
+ PR 1257/bsps
+ * csb336/network/lan91c11x.c, csb337/startup/bspstart.c,
+ edb7312/irq/irq.c, gba/irq/irq.c, gba/irq/irq_init.c,
+ gp32/startup/bspstart.c, rtl22xx/startup/bspstart.c,
+ shared/abort/abort.c, shared/abort/simple_abort.c,
+ shared/irq/irq_init.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-09-08 Joel Sherrill <joel.sherrill@OARcorp.com>
* shared/abort/abort.c, shared/abort/simple_abort.c: Remove incorrect
diff --git a/c/src/lib/libbsp/arm/csb336/network/lan91c11x.c b/c/src/lib/libbsp/arm/csb336/network/lan91c11x.c
index c68b596afd..63fda8d1ae 100644
--- a/c/src/lib/libbsp/arm/csb336/network/lan91c11x.c
+++ b/c/src/lib/libbsp/arm/csb336/network/lan91c11x.c
@@ -14,18 +14,6 @@
#include <rtems.h>
#include "lan91c11x.h"
-static rtems_interrupt_level level;
-
-void lan91c11x_lock(void)
-{
- _CPU_ISR_Disable(level);
-}
-
-void lan91c11x_unlock(void)
-{
- _CPU_ISR_Enable(level);
-}
-
uint16_t lan91c11x_read_reg(int reg)
{
volatile uint16_t *ptr = (uint16_t *)LAN91C11X_BASE_ADDR;
@@ -33,7 +21,7 @@ uint16_t lan91c11x_read_reg(int reg)
uint16_t val;
rtems_interrupt_level level;
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
/* save the bank register */
old_bank = ptr[7] & 0x7;
@@ -46,7 +34,7 @@ uint16_t lan91c11x_read_reg(int reg)
/* restore the bank register */
ptr[7] = old_bank;
- _CPU_ISR_Enable(level);
+ rtems_interrupt_enable(level);
return val;
}
@@ -56,7 +44,7 @@ void lan91c11x_write_reg(int reg, uint16_t value)
uint16_t old_bank;
rtems_interrupt_level level;
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
/* save the bank register */
old_bank = ptr[7] & 0x7;
@@ -69,7 +57,7 @@ void lan91c11x_write_reg(int reg, uint16_t value)
/* restore the bank register */
ptr[7] = old_bank;
- _CPU_ISR_Enable(level);
+ rtems_interrupt_enable(level);
}
uint16_t lan91c11x_read_reg_fast(int reg)
diff --git a/c/src/lib/libbsp/arm/csb337/startup/bspstart.c b/c/src/lib/libbsp/arm/csb337/startup/bspstart.c
index d51dbc1da5..c782eb352d 100644
--- a/c/src/lib/libbsp/arm/csb337/startup/bspstart.c
+++ b/c/src/lib/libbsp/arm/csb337/startup/bspstart.c
@@ -192,7 +192,7 @@ void bsp_reset(void)
{
rtems_interrupt_level level;
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
/* Enable the watchdog timer, then wait for the world to end. */
ST_REG(ST_WDMR) = ST_WDMR_RSTEN | 1;
diff --git a/c/src/lib/libbsp/arm/edb7312/irq/irq.c b/c/src/lib/libbsp/arm/edb7312/irq/irq.c
index 31f24fc82a..6232a1913c 100644
--- a/c/src/lib/libbsp/arm/edb7312/irq/irq.c
+++ b/c/src/lib/libbsp/arm/edb7312/irq/irq.c
@@ -51,7 +51,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
@@ -90,7 +90,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;
}
@@ -110,7 +110,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);
/*
* mask interrupt
@@ -147,7 +147,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;
}
diff --git a/c/src/lib/libbsp/arm/gba/irq/irq.c b/c/src/lib/libbsp/arm/gba/irq/irq.c
index ab93d1b121..16bc667135 100644
--- a/c/src/lib/libbsp/arm/gba/irq/irq.c
+++ b/c/src/lib/libbsp/arm/gba/irq/irq.c
@@ -67,7 +67,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
@@ -89,7 +89,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;
}
@@ -115,7 +115,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);
/*
* mask at INT controller level
@@ -132,7 +132,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;
}
diff --git a/c/src/lib/libbsp/arm/gba/irq/irq_init.c b/c/src/lib/libbsp/arm/gba/irq/irq_init.c
index c2b5c1da03..136188804a 100644
--- a/c/src/lib/libbsp/arm/gba/irq/irq_init.c
+++ b/c/src/lib/libbsp/arm/gba/irq/irq_init.c
@@ -54,7 +54,7 @@ void rtems_irq_mngt_init(void)
vectorTable = (uint32_t *)VECTOR_TABLE;
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
/* @todo Can't use exception vectors in GBA because they are already in GBA ROM BIOS */
/* First, connect the ISR_Handler for IRQ and FIQ interrupts */
diff --git a/c/src/lib/libbsp/arm/gp32/startup/bspstart.c b/c/src/lib/libbsp/arm/gp32/startup/bspstart.c
index 750ea345ef..56f96ad4bd 100644
--- a/c/src/lib/libbsp/arm/gp32/startup/bspstart.c
+++ b/c/src/lib/libbsp/arm/gp32/startup/bspstart.c
@@ -196,7 +196,7 @@ void bsp_start (void) __attribute__ ((weak, alias("bsp_start_default")));
void bsp_reset(void)
{
rtems_interrupt_level level;
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
printk("bsp_reset.....\n");
/* disable mmu, invalide i-cache and call swi #4 */
asm volatile(""
diff --git a/c/src/lib/libbsp/arm/rtl22xx/startup/bspstart.c b/c/src/lib/libbsp/arm/rtl22xx/startup/bspstart.c
index f99b6b07d0..cafe0ae42e 100644
--- a/c/src/lib/libbsp/arm/rtl22xx/startup/bspstart.c
+++ b/c/src/lib/libbsp/arm/rtl22xx/startup/bspstart.c
@@ -257,7 +257,7 @@ void bsp_reset(void)
{
rtems_interrupt_level level;
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
while(1);
}
diff --git a/c/src/lib/libbsp/arm/shared/abort/abort.c b/c/src/lib/libbsp/arm/shared/abort/abort.c
index a7dca28094..3d78a5cd94 100644
--- a/c/src/lib/libbsp/arm/shared/abort/abort.c
+++ b/c/src/lib/libbsp/arm/shared/abort/abort.c
@@ -104,11 +104,9 @@ void do_data_abort(uint32_t insn, uint32_t spsr,
Context_Control *ctx)
{
/* Clarify, which type is correct, CPU_Exception_frame or Context_Control */
-
- uint8_t decode;
- uint8_t insn_type;
-
- uint32_t tmp;
+ uint8_t decode;
+ uint8_t insn_type;
+ rtems_interrupt_level level;
g_data_abort_insn_list[g_data_abort_cnt & 0x3ff] = ctx->register_lr - 8;
g_data_abort_cnt++;
@@ -152,7 +150,7 @@ void do_data_abort(uint32_t insn, uint32_t spsr,
_print_full_context(spsr);
/* disable interrupts, wait forever */
- _CPU_ISR_Disable(tmp);
+ rtems_interrupt_disable(level);
while(1) {
continue;
}
diff --git a/c/src/lib/libbsp/arm/shared/abort/simple_abort.c b/c/src/lib/libbsp/arm/shared/abort/simple_abort.c
index 99aefa8ee9..8fb6a3eec2 100644
--- a/c/src/lib/libbsp/arm/shared/abort/simple_abort.c
+++ b/c/src/lib/libbsp/arm/shared/abort/simple_abort.c
@@ -109,9 +109,9 @@ void do_data_abort(
{
/* Clarify, which type is correct, CPU_Exception_frame or Context_Control */
- uint8_t decode;
- uint8_t insn_type;
- uint32_t tmp;
+ uint8_t decode;
+ uint8_t insn_type;
+ rtems_interrupt_level level;
decode = ((insn >> 20) & 0xff);
@@ -152,7 +152,7 @@ void do_data_abort(
_print_full_context(spsr);
/* disable interrupts, wait forever */
- _CPU_ISR_Disable(tmp);
+ rtems_interrupt_disable(level);
while(1) {
continue;
}
diff --git a/c/src/lib/libbsp/arm/shared/irq/irq_init.c b/c/src/lib/libbsp/arm/shared/irq/irq_init.c
index 1f84574474..f194ae9b4a 100644
--- a/c/src/lib/libbsp/arm/shared/irq/irq_init.c
+++ b/c/src/lib/libbsp/arm/shared/irq/irq_init.c
@@ -31,7 +31,7 @@ void rtems_irq_mngt_init()
{
rtems_interrupt_level level;
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
/* First, connect the ISR_Handler for IRQ and FIQ interrupts */
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ISR_Handler, NULL);