[U-Boot] [PATCH 3/5] Data type defined for pointer addresses

York Sun yorksun at freescale.com
Mon Dec 7 17:50:28 CET 2015


Guys,

Please comment on this new typedef. I am not comfortable to accept it.

On 11/18/2015 09:41 PM, Aneesh Bansal wrote:
> A new data type uintptr_t has been defined for creating
> pointers (32 or 64 bit depending on Core) from 32 bit variables
> storing the address.
> If a 32 bit variable (u32) is typecasted to a pointer (void *),
> compiler gives a warning in case size of pointer on the core is 64 bit.
> 
> Signed-off-by: Aneesh Bansal <aneesh.bansal at freescale.com>
> ---
>  arch/arm/include/asm/types.h     | 2 ++
>  arch/powerpc/include/asm/types.h | 1 +
>  2 files changed, 3 insertions(+)
> 
> diff --git a/arch/arm/include/asm/types.h b/arch/arm/include/asm/types.h
> index 388058e..5555765 100644
> --- a/arch/arm/include/asm/types.h
> +++ b/arch/arm/include/asm/types.h
> @@ -56,6 +56,8 @@ typedef unsigned long phys_addr_t;
>  typedef unsigned long phys_size_t;
>  #endif
>  
> +typedef unsigned long uintptr_t;

It is used in next patch of this series
http://patchwork.ozlabs.org/patch/552669/, in two-step casting such as

(u8 *)(uintptr_t)csf_hdr_addr

As OP indicated, the variable is u32. Casting to a pointer causes compiling
warning. Is this the right approach?

York


More information about the U-Boot mailing list