[U-Boot] [PATCH] crc32: Correct endianness of crc32 result

Wolfgang Denk wd at denx.de
Thu Apr 18 12:36:00 CEST 2013


Dear Albert ARIBAUD,

In message <20130418082027.4b5ea191 at lilith> you wrote:
> 
> > #ifdef USE_HOSTCC
> >    crc = htobe32(crc);
> >    memcpy(output, &crc, sizeof(crc));
> > #else
> >    crc = cpu_to_be32(crc);
> >    put_unaligned(crc, (uint32_t *)output);
> > #endif
> > 
> > This produces the same code as my original patch. If this is
> > acceptable then I will do that, although it doesn't really seem any
> > better.
> 
> Wolfgang may not like it any more than put_unaligned_be32() as it
> builds upon it (and the disk patch could have used the be32 version as

Indeed.

> well). Personally, I think we should allow and use these...
> 
> ... and work on optimizing their implementation for ARM; we should be
> able to reduce such put()s and get()s to a few instructions. And to

OK - and what about the other architectures that suffer from the same
issues?

> avoid any misunderstanding, yes, I volunteer for the optimizing work. :)

I really dislike introducing such custom functions when we have
standard functions available that implement the same purposes.

Checking Linux code (as U-Boot is not representative here):

	-> find * -name '*.c' | wc -l
	18362
	-> find * -name '*.c' | xargs fgrep -l put_unaligned | wc -l
	136

i. e. just 0.75% of the source files actually use any of the
"put_unaligned*()" variants - it is a highly exotic function.

htobe32() is even worse - just a single source file in the whole Lnux
tree uses it (arch/um/drivers/cow_user.c).


Can we not stick to standard functions?  Instead of htobe32() we
should use htonl() which is available both in U-Boot and in the host
environment.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
While money can't buy happiness, it certainly lets  you  choose  your
own form of misery.


More information about the U-Boot mailing list