summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/i386/pc386/ChangeLog12
-rw-r--r--c/src/lib/libbsp/i386/pc386/console/inch.c7
-rw-r--r--c/src/lib/libbsp/i386/pc386/console/keyboard.c24
-rw-r--r--c/src/lib/libbsp/i386/pc386/console/pc_keyb.c7
-rw-r--r--c/src/lib/libbsp/i386/pc386/console/vt.c8
5 files changed, 38 insertions, 20 deletions
diff --git a/c/src/lib/libbsp/i386/pc386/ChangeLog b/c/src/lib/libbsp/i386/pc386/ChangeLog
index 62963a8b0c..611ff727c3 100644
--- a/c/src/lib/libbsp/i386/pc386/ChangeLog
+++ b/c/src/lib/libbsp/i386/pc386/ChangeLog
@@ -1,3 +1,15 @@
+2007-09-12 Joel Sherrill <joel.sherrill@OARcorp.com>
+
+ PR 1257/bsps
+ * console/inch.c, console/keyboard.c, console/pc_keyb.c, console/vt.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-10 Joel Sherrill <joel.sherrill@OARcorp.com>
* console/vt.c: Changed tabs to spaces.
diff --git a/c/src/lib/libbsp/i386/pc386/console/inch.c b/c/src/lib/libbsp/i386/pc386/console/inch.c
index ead83d26de..90bacbe4fa 100644
--- a/c/src/lib/libbsp/i386/pc386/console/inch.c
+++ b/c/src/lib/libbsp/i386/pc386/console/inch.c
@@ -273,13 +273,14 @@ BSP_wait_polled_input(void)
*/
int rtems_kbpoll( void )
{
- int rc,level;
+ int rc;
+ rtems_interrupt_level level;
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
rc = ( kbd_first != kbd_last ) ? TRUE : FALSE;
- _CPU_ISR_Enable (level);
+ rtems_interrupt_enable(level);
return rc;
}
diff --git a/c/src/lib/libbsp/i386/pc386/console/keyboard.c b/c/src/lib/libbsp/i386/pc386/console/keyboard.c
index 0aab50355c..6b0b36d8e8 100644
--- a/c/src/lib/libbsp/i386/pc386/console/keyboard.c
+++ b/c/src/lib/libbsp/i386/pc386/console/keyboard.c
@@ -34,27 +34,31 @@ extern void rtemsReboot( void );
int set_bit(int nr, unsigned long * addr)
{
- int mask, retval,level;
+ int mask;
+ int retval;
+ rtems_interrupt_level level;
addr += nr >> 5;
mask = 1 << (nr & 0x1f);
- _CPU_ISR_Disable(level)
- retval = (mask & *addr) != 0;
- *addr |= mask;
- _CPU_ISR_Enable (level);
+ rtems_interrupt_disable(level);
+ retval = (mask & *addr) != 0;
+ *addr |= mask;
+ rtems_interrupt_enable(level);
return retval;
}
int clear_bit(int nr, unsigned long * addr)
{
- int mask, retval,level;
+ int mask;
+ int retval;
+ rtems_interrupt_level level;
addr += nr >> 5;
mask = 1 << (nr & 0x1f);
- _CPU_ISR_Disable(level)
- retval = (mask & *addr) != 0;
- *addr &= ~mask;
- _CPU_ISR_Enable (level);
+ rtems_interrupt_disable(level);
+ retval = (mask & *addr) != 0;
+ *addr &= ~mask;
+ rtems_interrupt_enable(level);
return retval;
}
diff --git a/c/src/lib/libbsp/i386/pc386/console/pc_keyb.c b/c/src/lib/libbsp/i386/pc386/console/pc_keyb.c
index 90dc6ed86c..4efe271c26 100644
--- a/c/src/lib/libbsp/i386/pc386/console/pc_keyb.c
+++ b/c/src/lib/libbsp/i386/pc386/console/pc_keyb.c
@@ -631,12 +631,13 @@ void pckbd_init_hw(void)
/*
char BSP_wait_polled_input( void )
{
- int c,level;
+ int c;
+ rtems_interrupt_level level;
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
while ( ( c= kbd_wait_for_input() ) < 0 )
continue;
- _CPU_ISR_Enable (level);
+ rtems_interrupt_enable(level);
return c;
}
*/
diff --git a/c/src/lib/libbsp/i386/pc386/console/vt.c b/c/src/lib/libbsp/i386/pc386/console/vt.c
index 6bc064003d..73a2a794a2 100644
--- a/c/src/lib/libbsp/i386/pc386/console/vt.c
+++ b/c/src/lib/libbsp/i386/pc386/console/vt.c
@@ -68,13 +68,13 @@ kd_nosound(unsigned long ignored)
void
_kd_mksound(unsigned int hz, unsigned int ticks)
{
- unsigned int count = 0;
- int level;
+ unsigned int count = 0;
+ rtems_interrupt_level level;
if (hz > 20 && hz < 32767)
count = 1193180 / hz;
- _CPU_ISR_Disable(level);
+ rtems_interrupt_disable(level);
/* del_timer(&sound_timer); */
if (count) {
/* enable counter 2 */
@@ -94,7 +94,7 @@ _kd_mksound(unsigned int hz, unsigned int ticks)
} else
kd_nosound(0);
- _CPU_ISR_Enable (level);
+ rtems_interrupt_enable(level);
return;
}