Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drivers/tty/serial/serial_core.c: clean up HIGH_BITS_OFFSET usage

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>

authored by

Andrew Morton and committed by
Greg Kroah-Hartman
fd985e1d d53c57dc

+5 -1
+5 -1
drivers/tty/serial/serial_core.c
··· 2370 2370 { 2371 2371 struct serial_struct tmp; 2372 2372 struct tty_port *port = dev_get_drvdata(dev); 2373 + unsigned long ioaddr; 2373 2374 2374 2375 uart_get_info(port, &tmp); 2375 - return snprintf(buf, PAGE_SIZE, "0x%lX\n", (unsigned long)(tmp.port | (((unsigned long)tmp.port_high) << HIGH_BITS_OFFSET))); 2376 + ioaddr = tmp.port; 2377 + if (HIGH_BITS_OFFSET) 2378 + ioaddr |= (unsigned long)tmp.port_high << HIGH_BITS_OFFSET; 2379 + return snprintf(buf, PAGE_SIZE, "0x%lX\n", ioaddr); 2376 2380 } 2377 2381 2378 2382 static ssize_t uart_get_attr_irq(struct device *dev,