drivers/tty/serial/serial_core.c: clean up HIGH_BITS_OFFSET usage
authorAndrew Morton <akpm@linux-foundation.org>
Mon, 26 Nov 2012 23:47:15 +0000 (15:47 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 27 Nov 2012 00:18:04 +0000 (16:18 -0800)
serial_core.c usually does

if (HIGH_BITS_OFFSET)
expr-involving-HIGH_BITS_OFFSET()

at least to avoid generating useless code on 32-bit machines, where
HIGH_BITS_OFFSET is zero.  Do that in uart_get_attr_port().

Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/serial_core.c

index 61ba240..fb5aa42 100644 (file)
@@ -2370,9 +2370,13 @@ static ssize_t uart_get_attr_port(struct device *dev,
 {
        struct serial_struct tmp;
        struct tty_port *port = dev_get_drvdata(dev);
+       unsigned long ioaddr;
 
        uart_get_info(port, &tmp);
-       return snprintf(buf, PAGE_SIZE, "0x%lX\n", (unsigned long)(tmp.port | (((unsigned long)tmp.port_high) << HIGH_BITS_OFFSET)));
+       ioaddr = tmp.port;
+       if (HIGH_BITS_OFFSET)
+               ioaddr |= (unsigned long)tmp.port_high << HIGH_BITS_OFFSET;
+       return snprintf(buf, PAGE_SIZE, "0x%lX\n", ioaddr);
 }
 
 static ssize_t uart_get_attr_irq(struct device *dev,