--- linux-2.6.18.1.orig/drivers/net/smc911x.h 2006-10-14 05:34:03.000000000 +0200 +++ linux-2.6.18.1/drivers/net/smc911x.h 2006-12-19 11:22:39.000000000 +0100 @@ -46,13 +46,13 @@ #if SMC_USE_16BIT #define SMC_inb(a, r) readb((a) + (r)) #define SMC_inw(a, r) readw((a) + (r)) -#define SMC_inl(a, r) ((SMC_inw(a, r) & 0xFFFF)+(SMC_inw(a+2, r)<<16)) +#define SMC_inl(a, r) ((SMC_inw(a, r) & 0xFFFF)|(SMC_inw(a+2, r)<<16)) #define SMC_outb(v, a, r) writeb(v, (a) + (r)) #define SMC_outw(v, a, r) writew(v, (a) + (r)) #define SMC_outl(v, a, r) \ do{ \ - writel(v & 0xFFFF, (a) + (r)); \ - writel(v >> 16, (a) + (r) + 2); \ + writew((v) & 0xFFFF, (a) + (r)); \ + writew((v) >> 16, (a) + (r) + 2); \ } while (0) #define SMC_insl(a, r, p, l) readsw((short*)((a) + (r)), p, l*2) #define SMC_outsl(a, r, p, l) writesw((short*)((a) + (r)), p, l*2)