RE: [PATCH v8 01/12] bswap: add 64 bit endianness helper get_be64

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Thanks,

Ben

> -----Original Message-----
> From: Martin Ågren [mailto:martin.agren@xxxxxxxxx]
> Sent: Friday, September 22, 2017 7:37 PM
> To: Ben Peart <Ben.Peart@xxxxxxxxxxxxx>
> Cc: David Turner <David.Turner@xxxxxxxxxxxx>; Ævar Arnfjörð Bjarmason
> <avarab@xxxxxxxxx>; Christian Couder <christian.couder@xxxxxxxxx>;
> git@xxxxxxxxxxxxxxx; Junio C Hamano <gitster@xxxxxxxxx>; Johannes
> Schindelin <johannes.schindelin@xxxxxx>; Nguyễn Thái Ngọc Duy
> <pclouds@xxxxxxxxx>; Jeff King <peff@xxxxxxxx>
> Subject: Re: [PATCH v8 01/12] bswap: add 64 bit endianness helper get_be64
> 
> On 22 September 2017 at 18:35, Ben Peart <benpeart@xxxxxxxxxxxxx>
> wrote:
> > Add a new get_be64 macro to enable 64 bit endian conversions on memory
> > that may or may not be aligned.
> 
> I needed this to compile and pass the tests with NO_UNALIGNED_LOADS.
> 
> Martin
> 
> diff --git a/compat/bswap.h b/compat/bswap.h index 6b22c4621..9dc79bdf5
> 100644
> --- a/compat/bswap.h
> +++ b/compat/bswap.h
> @@ -183,8 +183,8 @@ static inline uint32_t get_be32(const void *ptr)  static
> inline uint64_t get_be64(const void *ptr)  {
>  	const unsigned char *p = ptr;
> -	return	(uint64_t)get_be32(p[0]) << 32 |
> -		(uint64_t)get_be32(p[4]) <<  0;
> +	return	(uint64_t)get_be32(p + 0) << 32 |
> +		(uint64_t)get_be32(p + 4) <<  0;

This is surprising.  Every other function in the file uses the p[x] syntax.  Just for
consistency, is there a way to stick to that syntax but still make it work correctly?
Is there a typecast that can make it work?

>  }
> 
>  static inline void put_be32(void *ptr, uint32_t value)
> --
> 2.14.1.727.g9ddaf86





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux