Re: [PATCH] net: fix SONIC_READ definition

David Miller
2009-01-05T06:42:53Z

From: Roel Kluin <roel.kluin@gmail.com>
Date: Sat, 03 Jan 2009 19:43:24 +0100

> drivers/net/jazzsonic.c:56:
> #define SONIC_READ(reg) (*((volatile unsigned int *)dev->base_addr+reg))
>
> drivers/net/sonic.h:53:
> #define SONIC_CAP0 0x24
>
> so drivers/net/jazzsonic.c:143:
> val = SONIC_READ(SONIC_CAP0-i);
>
> becomes
>
> val = (*((volatile unsigned int *)dev->base_addr+0x24-i));
>
> That is wrong, isn't it?

The expression, both with and without the parentheses around "reg",
evaluate to the same final pointer value.

Compile a test program and look at the assembler output if you
don't believe me :-)