MN10300: Introduce barriers to replace removed volatiles in gdbstub 16550 driver
authorDavid Howells <dhowells@redhat.com>
Wed, 3 Dec 2008 16:33:14 +0000 (16:33 +0000)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 4 Dec 2008 00:47:40 +0000 (16:47 -0800)
Introduce into the MN10300 gdbstub 16550 driver a couple of barrier() calls to
replace the removed volatility of the input/output index variables for the Rx
ring buffer.  A previous patch added them into the on-chip serial port driver.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/mn10300/kernel/gdb-io-serial.c

index 9a6d4e8ebe7396f058ccc740d48dfc3a0e14f979..11584c51acd93669dfe587cd2983ca81663397b5 100644 (file)
@@ -99,6 +99,7 @@ int gdbstub_io_rx_char(unsigned char *_ch, int nonblock)
  try_again:
        /* pull chars out of the buffer */
        ix = gdbstub_rx_outp;
+       barrier();
        if (ix == gdbstub_rx_inp) {
                if (nonblock)
                        return -EAGAIN;
@@ -110,6 +111,7 @@ int gdbstub_io_rx_char(unsigned char *_ch, int nonblock)
 
        ch = gdbstub_rx_buffer[ix++];
        st = gdbstub_rx_buffer[ix++];
+       barrier();
        gdbstub_rx_outp = ix & 0x00000fff;
 
        if (st & UART_LSR_BI) {