Am 07.02.2014 16:56, schrieb Ron Sluiter:
> On 2/7/2014 9:21 AM, [email protected] wrote:
>> I suggest to remove the switch and replace the occurrence of MSB_First
with the EPICS provided endianness switch:
>> +#include <epicsEndian.h>
>>
>> -#ifdef MSB_First
>> +#if (EPICS_BYTE_ORDER == EPICS_ENDIAN_BIG)
>>
> Thanks for the suggestion but MSB_First/LSB_First is set to indicate how
C/C++ bit fields are packed, not endianness.
> What compiler and compiler version are you using?
I verified with the following compilers:
Linux 32bit/64bit (gcc4.7.4)
linux arm gcc-Version 4.7.2 20120731 (prerelease) (crosstool-NG
linaro-1.13.1+bzr2458 - Linaro GCC 2012.08)
powerpc-rtems4.10.2 (mvme2100 cpu=603e)
tornado-2.2 (CPU=MC68040)
At least for gcc bit field packing is LSB_first for little endian and
MSB_first for big endian machines.
If you are afraid of breaking existing code, how about this:
#if defined(_WIN32) || defined(_M_IX86) || defined(_X86_)
#define LSB_First (TRUE) /* LSB is packed first. */
#elif defined(__i386__) || defined(_armv4l_) || defined(_X86_64_) ||
defined(__APPLE__)
#define LSB_First (TRUE) /* LSB is packed first. */
#elif defined(i386)
#define LSB_First (TRUE) /* LSB is packed first. */
#elif defined(sparc) || defined(m68k) || defined(powerpc)
#define MSB_First (TRUE) /* MSB is packed first. */
#elif defined(ppc603e)
#define MSB_First (TRUE) /* MSB is packed first. */
#elif defined(CPU) && ((CPU == PPC604) || (CPU == PPC603) || (CPU ==
PPC85XX) || (CPU == MC68040) || (CPU == PPC32))
#define MSB_First (TRUE) /* MSB is packed first. */
#elif defined(__GNUC__)
#include <epicsEndian.h>
#if (EPICS_BYTE_ORDER == EPICS_ENDIAN_LITTLE)
#define LSB_First (TRUE)
#else
#define MSB_First (TRUE)
#endif
#else
#error: unknown bit order!
#endif
Jens
- Replies:
- Re: WG: Re: motorRecord on linux-arm Torsten Bögershausen
- Navigate by Date:
- Prev:
RE: asyn driver problem running Linux 3.8.13 with arm processor Jim Chen
- Next:
Re: asyn driver problem running Linux 3.8.13 with arm processor Andrew Johnson
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
<2014>
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: motorRecord on linux-arm Till Straumann
- Next:
Re: WG: Re: motorRecord on linux-arm Torsten Bögershausen
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
<2014>
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|