From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeff Angielski Date: Wed, 17 Mar 2010 11:10:50 -0400 Subject: [U-Boot] cross compiling fw_printenv on big endian In-Reply-To: References: <4B9FD92E.7000400@theptrgroup.com> <20100317115731.3D1375086C@gemini.denx.de> Message-ID: <4BA0F0FA.8030701@theptrgroup.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Joakim Tjernlund wrote: > > Wolfgang Denk wrote on 2010/03/17 12:57:31: >> Dear Joakim Tjernlund, >> >> In message > 003B4D86 at transmode.se> you wrote: >>> hmm, I recently discovered that normal user space headers always define >>> both __LITTLE_ENDIAN and __BIG_ENDIAN so therefore a >>> # ifdef __LITTLE_ENDIAN >>> # define DO_CRC(x) crc = tab[(crc ^ (x)) & 255] ^ (crc >> 8) >>> # else >>> # define DO_CRC(x) crc = tab[((crc >> 24) ^ (x)) & 255] ^ (crc << 8) >>> # endif >>> >>> Wont work. One have to use >>> #if __BYTE_ORDER == __LITTLE_ENDIAN >>> instead. >> Wenn... > >> Signed-off-by: Joakim Tjernlund >> >> >> Looks as if this were your very own commit. Do you have a fix in the >> works? > > I know, but I don't have anything ATM. I am too busy debugging serious > customer problems. > > Jocke This appears to work for me on my big endian PowerPC target. Perhaps somebody with a little endian target can verify it does not break their env tools. diff --git a/lib_generic/crc32.c b/lib_generic/crc32.c index 468b397..27335a3 100644 --- a/lib_generic/crc32.c +++ b/lib_generic/crc32.c @@ -163,7 +163,7 @@ const uint32_t * ZEXPORT get_crc_table() #endif /* ========================================================================= */ -# ifdef __LITTLE_ENDIAN +# if __BYTE_ORDER == __LITTLE_ENDIAN # define DO_CRC(x) crc = tab[(crc ^ (x)) & 255] ^ (crc >> 8) # else # define DO_CRC(x) crc = tab[((crc >> 24) ^ (x)) & 255] ^ (crc << 8) Jeff Angielski The PTR Group www.theptrgroup.com