There is no standard way to allocate bitfields. Bitfield allocation varies from Compiler to Compiler, even for the same target. Using bitfields for access to I/O registers is non-portable and inefficient for the masking involved in unpacking individual fields. It is recommended that you use regular bit-and (&) and bit-or (|) operations for I/O port access.
The maximum width of bitfields is Backend-dependent (see RS08 Backend for details), in that plain int bitfields are signed. A bitfield never crosses a word (2 bytes) boundary. As stated in Kernighan and Ritchie's The C Programming Language, 2nd ed., the use of bitfields is equivalent to using bit masks to which the operators &, |, ~, |= or &= are applied. In fact, the Compiler translates bitfield operations to bit mask operations.