Help with cross-endian bitfields?
jlquinn at us.ibm.com
jlquinn at us.ibm.com
Sat May 6 05:27:21 EST 2000
Hi, all. I'm working on getting the Advansys driver working and what
appears to be the final stumbling block is a difference in the layout of
bitfields between little-endian and big-endian systems. In particular,
there are structs like the following:
struct blah {
uchar a : 3;
uchar b : 3;
uchar c : 2;
}
On a little endian machine, this works like I expect. (blah & 0x07) ==
blah.a is true. On linuxppc (and apparently MacOS as well), this is NOT
true. blah.a refers to the 3 most significant bits. The linuxppc behavior
seems counterintuitive to me because I expected each successive member in a
struct to be the next physical piece of data I encounter.
Can someone tell me what's going on here? Am I going to have to have
ifdef's on these structs, or resort to mask macros, or is there a
reasonable solution here.
Thanks,
Jerry Quinn
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-dev
mailing list