From mboxrd@z Thu Jan 1 00:00:00 1970 From: Beniamino Galvani Date: Mon, 25 Apr 2016 22:17:29 +0200 Subject: [U-Boot] [PATCH v5 2/4] net: designware: fix descriptor layout and warnings on 64-bit archs In-Reply-To: References: <1461480602-2932-1-git-send-email-b.galvani@gmail.com> <1461480602-2932-3-git-send-email-b.galvani@gmail.com> Message-ID: <20160425201729.GA9337@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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