Is there any particular reason you're not simply using the compiler's support for bit-fields?
Mostly because I've written this code before you mentioned them to me. I think it can't hurt to ask Alexandre if bitfields are ok to use in Wine. How's the support among compilers(older gcc versions? Non-gcc compilers like icc and msvc?)