[U-Boot] [PATCH v5 2/4] net: designware: fix descriptor layout and warnings on 64-bit archs
Marek Vasut
marex at denx.de
Mon Apr 25 22:40:25 CEST 2016
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.
> Acked-by: Joe Hershberger <joe.hershberger at ni.com>
>
--
Best regards,
Marek Vasut
More information about the U-Boot
mailing list