From 951f6aa7706caead2bba2839ed0a95c268d913b6 Mon Sep 17 00:00:00 2001 From: Arjan van de Ven Date: Wed, 29 Oct 2003 05:40:20 -0500 Subject: [PATCH] [PATCH] fix starfire 64-bit b0rkage (x >> 32) is undefined on a 32 bit integral variable in C; In contrast (x >>16 >> 16) is fine (and gets optimized out to 0, while (x >> 32) gets optimized out to a nop). Fix for starfire below --- drivers/net/starfire.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/drivers/net/starfire.c b/drivers/net/starfire.c index e4b1fa15cbca2..2125ae967515a 100644 --- a/drivers/net/starfire.c +++ b/drivers/net/starfire.c @@ -1175,15 +1175,9 @@ static int netdev_open(struct net_device *dev) TX_DESC_SPACING | TX_DESC_TYPE, ioaddr + TxDescCtrl); -#if defined(ADDR_64BITS) - writel(np->queue_mem_dma >> 32, ioaddr + RxDescQHiAddr); - writel(np->queue_mem_dma >> 32, ioaddr + TxRingHiAddr); - writel(np->queue_mem_dma >> 32, ioaddr + CompletionHiAddr); -#else - writel(0, ioaddr + RxDescQHiAddr); - writel(0, ioaddr + TxRingHiAddr); - writel(0, ioaddr + CompletionHiAddr); -#endif + writel( (np->queue_mem_dma >> 16) >> 16, ioaddr + RxDescQHiAddr); + writel( (np->queue_mem_dma >> 16) >> 16, ioaddr + TxRingHiAddr); + writel( (np->queue_mem_dma >> 16) >> 16, ioaddr + CompletionHiAddr); writel(np->rx_ring_dma, ioaddr + RxDescQAddr); writel(np->tx_ring_dma, ioaddr + TxRingPtr); -- 2.53.0