diff options
-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; } |