
On Mon, Apr 25, 2016 at 10:40:25PM +0200, Marek Vasut wrote:
On 04/25/2016 10:32 PM, Joe Hershberger wrote:
On Mon, Apr 25, 2016 at 3:17 PM, Beniamino Galvani b.galvani@gmail.com wrote:
On Mon, Apr 25, 2016 at 01:01:10PM -0500, Joe Hershberger wrote:
desc_p->dmamac_addr = &txbuffs[idx * CONFIG_ETH_BUFSIZE];
desc_p->dmamac_next = &desc_table_p[idx + 1];
desc_p->dmamac_addr = (ulong)&txbuffs[idx * CONFIG_ETH_BUFSIZE];
desc_p->dmamac_next = (ulong)&desc_table_p[idx + 1];
Why are you not casting to the type of the struct member (u32)? Won't this emit warnings on 64-bit?
Hi,
casting to u32 would cause a warning on arm64 ("warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]") because the pointer is 64bit.
The (ulong) cast is needed to convert the pointer to an arithmetic type of same width, which then can be assigned to the struct member. The assignment operator implicitly converts between different arithmetic types without the need for explicit casts.
That's the part that surprises me. I thought arithmetic assignments from larger to smaller types would warn.
Anyway, if it's warning clean,
I am still not a big fan of picking the right type just to silence all possible warnings. I am worried this will bite us in the future.
When that future comes we'll have lots of things to fixup and convert to a better solution.