[U-Boot] [PATCH v5 2/4] net: designware: fix descriptor layout and warnings on 64-bit archs

Beniamino Galvani b.galvani at gmail.com
Mon Apr 25 22:17:29 CEST 2016


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.

Beniamino


More information about the U-Boot mailing list