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

Tom Rini trini at konsulko.com
Mon Apr 25 22:43:25 CEST 2016


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 at 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.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160425/cf445418/attachment.sig>


More information about the U-Boot mailing list