diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-09-12 15:16:00 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-09-12 15:16:00 +0000 |
commit | bd51a636de805e88028a08791b4b4dff91cf4d71 (patch) | |
tree | 7065207d8702cee0ecdd0e8982cce95e25cb801c /c | |
parent | 2007-09-12 Joel Sherrill <joel.sherrill@OARcorp.com> (diff) | |
download | rtems-bd51a636de805e88028a08791b4b4dff91cf4d71.tar.bz2 |
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.
Diffstat (limited to 'c')
-rw-r--r-- | c/src/lib/libbsp/i386/pc386/ChangeLog | 12 | ||||
-rw-r--r-- | c/src/lib/libbsp/i386/pc386/console/inch.c | 7 | ||||
-rw-r--r-- | c/src/lib/libbsp/i386/pc386/console/keyboard.c | 24 | ||||
-rw-r--r-- | c/src/lib/libbsp/i386/pc386/console/pc_keyb.c | 7 | ||||
-rw-r--r-- | c/src/lib/libbsp/i386/pc386/console/vt.c | 8 |
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; } |