2002-11-03 23:15:27

by Brian Gerst

[permalink] [raw]
Subject: [PATCH] Cleanup bitfield endianess mess

diff -urN linux-2.5.45-bk1/drivers/atm/fore200e.h linux/drivers/atm/fore200e.h
--- linux-2.5.45-bk1/drivers/atm/fore200e.h Sun Sep 15 22:18:30 2002
+++ linux/drivers/atm/fore200e.h Sun Nov 3 10:02:57 2002
@@ -64,24 +64,6 @@
#define FORE200E_DEV(d) ((struct fore200e*)((d)->dev_data))
#define FORE200E_VCC(d) ((struct fore200e_vcc*)((d)->dev_data))

-/* bitfields endian games */
-
-#if defined(__LITTLE_ENDIAN_BITFIELD)
-#define BITFIELD2(b1, b2) b1; b2;
-#define BITFIELD3(b1, b2, b3) b1; b2; b3;
-#define BITFIELD4(b1, b2, b3, b4) b1; b2; b3; b4;
-#define BITFIELD5(b1, b2, b3, b4, b5) b1; b2; b3; b4; b5;
-#define BITFIELD6(b1, b2, b3, b4, b5, b6) b1; b2; b3; b4; b5; b6;
-#elif defined(__BIG_ENDIAN_BITFIELD)
-#define BITFIELD2(b1, b2) b2; b1;
-#define BITFIELD3(b1, b2, b3) b3; b2; b1;
-#define BITFIELD4(b1, b2, b3, b4) b4; b3; b2; b1;
-#define BITFIELD5(b1, b2, b3, b4, b5) b5; b4; b3; b2; b1;
-#define BITFIELD6(b1, b2, b3, b4, b5, b6) b6; b5; b4; b3; b2; b1;
-#else
-#error unknown bitfield endianess
-#endif
-

/* ATM cell header (minus HEC byte) */

diff -urN linux-2.5.45-bk1/drivers/ide/ide-cd.h linux/drivers/ide/ide-cd.h
--- linux-2.5.45-bk1/drivers/ide/ide-cd.h Wed Oct 16 01:30:48 2002
+++ linux/drivers/ide/ide-cd.h Sun Nov 3 11:58:37 2002
@@ -125,15 +125,10 @@

struct atapi_toc_entry {
byte reserved1;
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 adr : 4;
- __u8 control : 4;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 control : 4;
- __u8 adr : 4;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD(
+ __u8 control : 4,
+ __u8 adr : 4
+ )
byte track;
byte reserved2;
union {
@@ -159,16 +154,10 @@
u_char acdsc_audiostatus;
u_short acdsc_length;
u_char acdsc_format;
-
-#if defined(__BIG_ENDIAN_BITFIELD)
- u_char acdsc_ctrl: 4;
- u_char acdsc_adr: 4;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- u_char acdsc_adr: 4;
- u_char acdsc_ctrl: 4;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD2(
+ u_char acdsc_adr: 4,
+ u_char acdsc_ctrl: 4
+ )
u_char acdsc_trk;
u_char acdsc_ind;
union {
@@ -188,207 +177,106 @@
*/
struct atapi_capabilities_page {
struct mode_page_header header;
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 parameters_saveable : 1;
- __u8 reserved1 : 1;
- __u8 page_code : 6;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 page_code : 6;
- __u8 reserved1 : 1;
- __u8 parameters_saveable : 1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD3(
+ __u8 page_code : 6,
+ __u8 reserved1 : 1,
+ __u8 parameters_saveable : 1
+ )

byte page_length;

-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 reserved2 : 2;
- /* Drive supports reading of DVD-RAM discs */
- __u8 dvd_ram_read : 1;
- /* Drive supports reading of DVD-R discs */
- __u8 dvd_r_read : 1;
- /* Drive supports reading of DVD-ROM discs */
- __u8 dvd_rom : 1;
- /* Drive supports reading CD-R discs with addressing method 2 */
- __u8 method2 : 1; /* reserved in 1.2 */
- /* Drive can read from CD-R/W (CD-E) discs (orange book, part III) */
- __u8 cd_rw_read : 1; /* reserved in 1.2 */
- /* Drive supports read from CD-R discs (orange book, part II) */
- __u8 cd_r_read : 1; /* reserved in 1.2 */
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- /* Drive supports read from CD-R discs (orange book, part II) */
- __u8 cd_r_read : 1; /* reserved in 1.2 */
- /* Drive can read from CD-R/W (CD-E) discs (orange book, part III) */
- __u8 cd_rw_read : 1; /* reserved in 1.2 */
- /* Drive supports reading CD-R discs with addressing method 2 */
- __u8 method2 : 1;
- /* Drive supports reading of DVD-ROM discs */
- __u8 dvd_rom : 1;
- /* Drive supports reading of DVD-R discs */
- __u8 dvd_r_read : 1;
- /* Drive supports reading of DVD-RAM discs */
- __u8 dvd_ram_read : 1;
- __u8 reserved2 : 2;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
-
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 reserved3 : 2;
- /* Drive can write DVD-RAM discs */
- __u8 dvd_ram_write : 1;
- /* Drive can write DVD-R discs */
- __u8 dvd_r_write : 1;
- __u8 reserved3a : 1;
- /* Drive can fake writes */
- __u8 test_write : 1;
- /* Drive can write to CD-R/W (CD-E) discs (orange book, part III) */
- __u8 cd_rw_write : 1; /* reserved in 1.2 */
- /* Drive supports write to CD-R discs (orange book, part II) */
- __u8 cd_r_write : 1; /* reserved in 1.2 */
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- /* Drive can write to CD-R discs (orange book, part II) */
- __u8 cd_r_write : 1; /* reserved in 1.2 */
- /* Drive can write to CD-R/W (CD-E) discs (orange book, part III) */
- __u8 cd_rw_write : 1; /* reserved in 1.2 */
- /* Drive can fake writes */
- __u8 test_write : 1;
- __u8 reserved3a : 1;
- /* Drive can write DVD-R discs */
- __u8 dvd_r_write : 1;
- /* Drive can write DVD-RAM discs */
- __u8 dvd_ram_write : 1;
- __u8 reserved3 : 2;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
-
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 reserved4 : 1;
- /* Drive can read multisession discs. */
- __u8 multisession : 1;
- /* Drive can read mode 2, form 2 data. */
- __u8 mode2_form2 : 1;
- /* Drive can read mode 2, form 1 (XA) data. */
- __u8 mode2_form1 : 1;
- /* Drive supports digital output on port 2. */
- __u8 digport2 : 1;
- /* Drive supports digital output on port 1. */
- __u8 digport1 : 1;
- /* Drive can deliver a composite audio/video data stream. */
- __u8 composite : 1;
- /* Drive supports audio play operations. */
- __u8 audio_play : 1;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- /* Drive supports audio play operations. */
- __u8 audio_play : 1;
- /* Drive can deliver a composite audio/video data stream. */
- __u8 composite : 1;
- /* Drive supports digital output on port 1. */
- __u8 digport1 : 1;
- /* Drive supports digital output on port 2. */
- __u8 digport2 : 1;
- /* Drive can read mode 2, form 1 (XA) data. */
- __u8 mode2_form1 : 1;
- /* Drive can read mode 2, form 2 data. */
- __u8 mode2_form2 : 1;
- /* Drive can read multisession discs. */
- __u8 multisession : 1;
- __u8 reserved4 : 1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
-
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 reserved5 : 1;
- /* Drive can return Media Catalog Number (UPC) info. */
- __u8 upc : 1;
- /* Drive can return International Standard Recording Code info. */
- __u8 isrc : 1;
- /* Drive supports C2 error pointers. */
- __u8 c2_pointers : 1;
- /* R-W data will be returned deinterleaved and error corrected. */
- __u8 rw_corr : 1;
- /* Subchannel reads can return combined R-W information. */
- __u8 rw_supported : 1;
- /* Drive can continue a read cdda operation from a loss of streaming.*/
- __u8 cdda_accurate : 1;
- /* Drive can read Red Book audio data. */
- __u8 cdda : 1;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- /* Drive can read Red Book audio data. */
- __u8 cdda : 1;
- /* Drive can continue a read cdda operation from a loss of streaming.*/
- __u8 cdda_accurate : 1;
- /* Subchannel reads can return combined R-W information. */
- __u8 rw_supported : 1;
- /* R-W data will be returned deinterleaved and error corrected. */
- __u8 rw_corr : 1;
- /* Drive supports C2 error pointers. */
- __u8 c2_pointers : 1;
- /* Drive can return International Standard Recording Code info. */
- __u8 isrc : 1;
- /* Drive can return Media Catalog Number (UPC) info. */
- __u8 upc : 1;
- __u8 reserved5 : 1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
-
-#if defined(__BIG_ENDIAN_BITFIELD)
- /* Drive mechanism types. */
- mechtype_t mechtype : 3;
- __u8 reserved6 : 1;
- /* Drive can eject a disc or changer cartridge. */
- __u8 eject : 1;
- /* State of prevent/allow jumper. */
- __u8 prevent_jumper : 1;
- /* Present state of door lock. */
- __u8 lock_state : 1;
- /* Drive can lock the door. */
- __u8 lock : 1;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
-
- /* Drive can lock the door. */
- __u8 lock : 1;
- /* Present state of door lock. */
- __u8 lock_state : 1;
- /* State of prevent/allow jumper. */
- __u8 prevent_jumper : 1;
- /* Drive can eject a disc or changer cartridge. */
- __u8 eject : 1;
- __u8 reserved6 : 1;
- /* Drive mechanism types. */
- mechtype_t mechtype : 3;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
-
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 reserved7 : 4;
- /* Drive supports software slot selection. */
- __u8 sss : 1; /* reserved in 1.2 */
- /* Changer can report exact contents of slots. */
- __u8 disc_present : 1; /* reserved in 1.2 */
- /* Audio for each channel can be muted independently. */
- __u8 separate_mute : 1;
- /* Audio level for each channel can be controlled independently. */
- __u8 separate_volume : 1;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
-
- /* Audio level for each channel can be controlled independently. */
- __u8 separate_volume : 1;
- /* Audio for each channel can be muted independently. */
- __u8 separate_mute : 1;
- /* Changer can report exact contents of slots. */
- __u8 disc_present : 1; /* reserved in 1.2 */
- /* Drive supports software slot selection. */
- __u8 sss : 1; /* reserved in 1.2 */
- __u8 reserved7 : 4;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD7(
+ /* Drive supports read from CD-R discs (orange book, part II) */
+ __u8 cd_r_read : 1, /* reserved in 1.2 */
+ /* Drive can read from CD-R/W (CD-E) discs (orange book, part III) */
+ __u8 cd_rw_read : 1, /* reserved in 1.2 */
+ /* Drive supports reading CD-R discs with addressing method 2 */
+ __u8 method2 : 1,
+ /* Drive supports reading of DVD-ROM discs */
+ __u8 dvd_rom : 1,
+ /* Drive supports reading of DVD-R discs */
+ __u8 dvd_r_read : 1,
+ /* Drive supports reading of DVD-RAM discs */
+ __u8 dvd_ram_read : 1,
+ __u8 reserved2 : 2
+ )
+
+ BITFIELD7(
+ /* Drive can write to CD-R discs (orange book, part II) */
+ __u8 cd_r_write : 1, /* reserved in 1.2 */
+ /* Drive can write to CD-R/W (CD-E) discs (orange book, part III) */
+ __u8 cd_rw_write : 1, /* reserved in 1.2 */
+ /* Drive can fake writes */
+ __u8 test_write : 1,
+ __u8 reserved3a : 1,
+ /* Drive can write DVD-R discs */
+ __u8 dvd_r_write : 1,
+ /* Drive can write DVD-RAM discs */
+ __u8 dvd_ram_write : 1,
+ __u8 reserved3 : 2
+ )
+
+ BITFIELD8(
+ /* Drive supports audio play operations. */
+ __u8 audio_play : 1,
+ /* Drive can deliver a composite audio/video data stream. */
+ __u8 composite : 1,
+ /* Drive supports digital output on port 1. */
+ __u8 digport1 : 1,
+ /* Drive supports digital output on port 2. */
+ __u8 digport2 : 1,
+ /* Drive can read mode 2, form 1 (XA) data. */
+ __u8 mode2_form1 : 1,
+ /* Drive can read mode 2, form 2 data. */
+ __u8 mode2_form2 : 1,
+ /* Drive can read multisession discs. */
+ __u8 multisession : 1,
+ __u8 reserved4 : 1
+ )
+
+ BITFIELD8(
+ /* Drive can read Red Book audio data. */
+ __u8 cdda : 1,
+ /* Drive can continue a read cdda operation from a loss of streaming.*/
+ __u8 cdda_accurate : 1,
+ /* Subchannel reads can return combined R-W information. */
+ __u8 rw_supported : 1,
+ /* R-W data will be returned deinterleaved and error corrected. */
+ __u8 rw_corr : 1,
+ /* Drive supports C2 error pointers. */
+ __u8 c2_pointers : 1,
+ /* Drive can return International Standard Recording Code info. */
+ __u8 isrc : 1,
+ /* Drive can return Media Catalog Number (UPC) info. */
+ __u8 upc : 1,
+ __u8 reserved5 : 1
+ )
+
+ BITFIELD6(
+ /* Drive can lock the door. */
+ __u8 lock : 1,
+ /* Present state of door lock. */
+ __u8 lock_state : 1,
+ /* State of prevent/allow jumper. */
+ __u8 prevent_jumper : 1,
+ /* Drive can eject a disc or changer cartridge. */
+ __u8 eject : 1,
+ __u8 reserved6 : 1,
+ /* Drive mechanism types. */
+ mechtype_t mechtype : 3
+ )
+
+ BITFIELD5(
+ /* Audio level for each channel can be controlled independently. */
+ __u8 separate_volume : 1,
+ /* Audio for each channel can be muted independently. */
+ __u8 separate_mute : 1,
+ /* Changer can report exact contents of slots. */
+ __u8 disc_present : 1, /* reserved in 1.2 */
+ /* Drive supports software slot selection. */
+ __u8 sss : 1, /* reserved in 1.2 */
+ __u8 reserved7 : 4
+ )

/* Note: the following four fields are returned in big-endian form. */
/* Maximum speed (in kB/s). */
@@ -404,29 +292,17 @@


struct atapi_mechstat_header {
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 fault : 1;
- __u8 changer_state : 2;
- __u8 curslot : 5;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 curslot : 5;
- __u8 changer_state : 2;
- __u8 fault : 1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
-
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 mech_state : 3;
- __u8 door_open : 1;
- __u8 reserved1 : 4;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 reserved1 : 4;
- __u8 door_open : 1;
- __u8 mech_state : 3;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD3(
+ __u8 curslot : 5,
+ __u8 changer_state : 2,
+ __u8 fault : 1
+ )
+
+ BITFIELD3(
+ __u8 reserved1 : 4,
+ __u8 door_open : 1,
+ __u8 mech_state : 3
+ )

byte curlba[3];
byte nslots;
@@ -435,17 +311,11 @@


struct atapi_slot {
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 disc_present : 1;
- __u8 reserved1 : 6;
- __u8 change : 1;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 change : 1;
- __u8 reserved1 : 6;
- __u8 disc_present : 1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD3(
+ __u8 change : 1,
+ __u8 reserved1 : 6,
+ __u8 disc_present : 1
+ )

byte reserved2[3];
};
diff -urN linux-2.5.45-bk1/drivers/ide/ide-floppy.c linux/drivers/ide/ide-floppy.c
--- linux-2.5.45-bk1/drivers/ide/ide-floppy.c Wed Oct 30 20:30:10 2002
+++ linux/drivers/ide/ide-floppy.c Sun Nov 3 12:59:46 2002
@@ -175,37 +175,23 @@
* Removable Block Access Capabilities Page
*/
typedef struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned page_code :6; /* Page code - Should be 0x1b */
- unsigned reserved1_6 :1; /* Reserved */
- unsigned ps :1; /* Should be 0 */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned ps :1; /* Should be 0 */
- unsigned reserved1_6 :1; /* Reserved */
- unsigned page_code :6; /* Page code - Should be 0x1b */
-#else
-#error "Bitfield endianness not defined! Check your byteorder.h"
-#endif
+ BITFIELD3(
+ unsigned page_code :6, /* Page code - Should be 0x1b */
+ unsigned reserved1_6 :1, /* Reserved */
+ unsigned ps :1 /* Should be 0 */
+ )
u8 page_length; /* Page Length - Should be 0xa */
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned reserved2 :6;
- unsigned srfp :1; /* Supports reporting progress of format */
- unsigned sflp :1; /* System floppy type device */
- unsigned tlun :3; /* Total logical units supported by the device */
- unsigned reserved3 :3;
- unsigned sml :1; /* Single / Multiple lun supported */
- unsigned ncd :1; /* Non cd optical device */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned sflp :1; /* System floppy type device */
- unsigned srfp :1; /* Supports reporting progress of format */
- unsigned reserved2 :6;
- unsigned ncd :1; /* Non cd optical device */
- unsigned sml :1; /* Single / Multiple lun supported */
- unsigned reserved3 :3;
- unsigned tlun :3; /* Total logical units supported by the device */
-#else
-#error "Bitfield endianness not defined! Check your byteorder.h"
-#endif
+ BITFIELD3(
+ unsigned reserved2 :6,
+ unsigned srfp :1, /* Supports reporting progress of format */
+ unsigned sflp :1 /* System floppy type device */
+ )
+ BITFIELD4(
+ unsigned tlun :3, /* Total logical units supported by the device */
+ unsigned reserved3 :3,
+ unsigned sml :1, /* Single / Multiple lun supported */
+ unsigned ncd :1 /* Non cd optical device */
+ )
u8 reserved[8];
} idefloppy_capabilities_page_t;

@@ -213,17 +199,11 @@
* Flexible disk page.
*/
typedef struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned page_code :6; /* Page code - Should be 0x5 */
- unsigned reserved1_6 :1; /* Reserved */
- unsigned ps :1; /* The device is capable of saving the page */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned ps :1; /* The device is capable of saving the page */
- unsigned reserved1_6 :1; /* Reserved */
- unsigned page_code :6; /* Page code - Should be 0x5 */
-#else
-#error "Bitfield endianness not defined! Check your byteorder.h"
-#endif
+ BITFIELD3(
+ unsigned page_code :6, /* Page code - Should be 0x5 */
+ unsigned reserved1_6 :1, /* Reserved */
+ unsigned ps :1 /* The device is capable of saving the page */
+ )
u8 page_length; /* Page Length - Should be 0x1e */
u16 transfer_rate; /* In kilobits per second */
u8 heads, sectors; /* Number of heads, Number of sectors per track */
@@ -246,15 +226,10 @@

typedef struct {
u32 blocks; /* Number of blocks */
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned dc :2; /* Descriptor Code */
- unsigned reserved :6;
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned reserved :6;
- unsigned dc :2; /* Descriptor Code */
-#else
-#error "Bitfield endianness not defined! Check your byteorder.h"
-#endif
+ BITFIELD2(
+ unsigned dc :2, /* Descriptor Code */
+ unsigned reserved :6
+ )
u8 length_msb; /* Block Length (MSB)*/
u16 length; /* Block Length */
} idefloppy_capacity_descriptor_t;
@@ -390,58 +365,40 @@
* the ATAPI IDENTIFY DEVICE command.
*/
struct idefloppy_id_gcw {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned packet_size :2; /* Packet Size */
- unsigned reserved234 :3; /* Reserved */
- unsigned drq_type :2; /* Command packet DRQ type */
- unsigned removable :1; /* Removable media */
- unsigned device_type :5; /* Device type */
- unsigned reserved13 :1; /* Reserved */
- unsigned protocol :2; /* Protocol type */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned protocol :2; /* Protocol type */
- unsigned reserved13 :1; /* Reserved */
- unsigned device_type :5; /* Device type */
- unsigned removable :1; /* Removable media */
- unsigned drq_type :2; /* Command packet DRQ type */
- unsigned reserved234 :3; /* Reserved */
- unsigned packet_size :2; /* Packet Size */
-#else
-#error "Bitfield endianness not defined! Check your byteorder.h"
-#endif
+ BITFIELD7(
+ unsigned packet_size :2, /* Packet Size */
+ unsigned reserved234 :3, /* Reserved */
+ unsigned drq_type :2, /* Command packet DRQ type */
+ unsigned removable :1, /* Removable media */
+ unsigned device_type :5, /* Device type */
+ unsigned reserved13 :1, /* Reserved */
+ unsigned protocol :2 /* Protocol type */
+ )
};

/*
* INQUIRY packet command - Data Format
*/
typedef struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned device_type :5; /* Peripheral Device Type */
- unsigned reserved0_765 :3; /* Peripheral Qualifier - Reserved */
- unsigned reserved1_6t0 :7; /* Reserved */
- unsigned rmb :1; /* Removable Medium Bit */
- unsigned ansi_version :3; /* ANSI Version */
- unsigned ecma_version :3; /* ECMA Version */
- unsigned iso_version :2; /* ISO Version */
- unsigned response_format :4; /* Response Data Format */
- unsigned reserved3_45 :2; /* Reserved */
- unsigned reserved3_6 :1; /* TrmIOP - Reserved */
- unsigned reserved3_7 :1; /* AENC - Reserved */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned reserved0_765 :3; /* Peripheral Qualifier - Reserved */
- unsigned device_type :5; /* Peripheral Device Type */
- unsigned rmb :1; /* Removable Medium Bit */
- unsigned reserved1_6t0 :7; /* Reserved */
- unsigned iso_version :2; /* ISO Version */
- unsigned ecma_version :3; /* ECMA Version */
- unsigned ansi_version :3; /* ANSI Version */
- unsigned reserved3_7 :1; /* AENC - Reserved */
- unsigned reserved3_6 :1; /* TrmIOP - Reserved */
- unsigned reserved3_45 :2; /* Reserved */
- unsigned response_format :4; /* Response Data Format */
-#else
-#error "Bitfield endianness not defined! Check your byteorder.h"
-#endif
+ BITFIELD2(
+ unsigned device_type :5, /* Peripheral Device Type */
+ unsigned reserved0_765 :3 /* Peripheral Qualifier - Reserved */
+ )
+ BITFIELD2(
+ unsigned reserved1_6t0 :7, /* Reserved */
+ unsigned rmb :1 /* Removable Medium Bit */
+ )
+ BITFIELD3(
+ unsigned ansi_version :3, /* ANSI Version */
+ unsigned ecma_version :3, /* ECMA Version */
+ unsigned iso_version :2 /* ISO Version */
+ )
+ BITFIELD4(
+ unsigned response_format :4, /* Response Data Format */
+ unsigned reserved3_45 :2, /* Reserved */
+ unsigned reserved3_6 :1, /* TrmIOP - Reserved */
+ unsigned reserved3_7 :1 /* AENC - Reserved */
+ )
u8 additional_length; /* Additional Length (total_length-4) */
u8 rsv5, rsv6, rsv7; /* Reserved */
u8 vendor_id[8]; /* Vendor Identification */
@@ -456,25 +413,17 @@
* REQUEST SENSE packet command result - Data Format.
*/
typedef struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned error_code :7; /* Current error (0x70) */
- unsigned valid :1; /* The information field conforms to SFF-8070i */
- u8 reserved1 :8; /* Reserved */
- unsigned sense_key :4; /* Sense Key */
- unsigned reserved2_4 :1; /* Reserved */
- unsigned ili :1; /* Incorrect Length Indicator */
- unsigned reserved2_67 :2;
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned valid :1; /* The information field conforms to SFF-8070i */
- unsigned error_code :7; /* Current error (0x70) */
+ BITFIELD2(
+ unsigned error_code :7, /* Current error (0x70) */
+ unsigned valid :1 /* The information field conforms to SFF-8070i */
+ )
u8 reserved1 :8; /* Reserved */
- unsigned reserved2_67 :2;
- unsigned ili :1; /* Incorrect Length Indicator */
- unsigned reserved2_4 :1; /* Reserved */
- unsigned sense_key :4; /* Sense Key */
-#else
-#error "Bitfield endianness not defined! Check your byteorder.h"
-#endif
+ BITFIELD4(
+ unsigned sense_key :4, /* Sense Key */
+ unsigned reserved2_4 :1, /* Reserved */
+ unsigned ili :1, /* Incorrect Length Indicator */
+ unsigned reserved2_67 :2
+ )
u32 information __attribute__ ((packed));
u8 asl; /* Additional sense length (n-7) */
u32 command_specific; /* Additional command specific information */
@@ -497,15 +446,10 @@
typedef struct {
u16 mode_data_length; /* Length of the following data transfer */
u8 medium_type; /* Medium Type */
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned reserved3 :7;
- unsigned wp :1; /* Write protect */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned wp :1; /* Write protect */
- unsigned reserved3 :7;
-#else
-#error "Bitfield endianness not defined! Check your byteorder.h"
-#endif
+ BITFIELD2(
+ unsigned reserved3 :7,
+ unsigned wp :1 /* Write protect */
+ )
u8 reserved[4];
} idefloppy_mode_parameter_header_t;

diff -urN linux-2.5.45-bk1/include/linux/atapi.h linux/include/linux/atapi.h
--- linux-2.5.45-bk1/include/linux/atapi.h Sun Sep 15 22:18:25 2002
+++ linux/include/linux/atapi.h Sun Nov 3 10:27:22 2002
@@ -80,27 +80,16 @@
typedef union {
u8 all : 8;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- u8 check : 1; /* Error occurred */
- u8 idx : 1; /* Reserved */
- u8 corr : 1; /* Correctable error occurred */
- u8 drq : 1; /* Data is request by the device */
- u8 dsc : 1; /* Media access command finished / Buffer availability */
- u8 reserved5 : 1; /* Reserved */
- u8 drdy : 1; /* Ignored for ATAPI commands (ready to accept ATA command) */
- u8 bsy : 1; /* The device has access to the command block */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- u8 bsy : 1;
- u8 drdy : 1;
- u8 reserved5 : 1;
- u8 dsc : 1;
- u8 drq : 1;
- u8 corr : 1;
- u8 idx : 1;
- u8 check : 1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD8(
+ u8 check : 1, /* Error occurred */
+ u8 idx : 1, /* Reserved */
+ u8 corr : 1, /* Correctable error occurred */
+ u8 drq : 1, /* Data is request by the device */
+ u8 dsc : 1, /* Media access command finished / Buffer availability */
+ u8 reserved5 : 1, /* Reserved */
+ u8 drdy : 1, /* Ignored for ATAPI commands (ready to accept ATA command) */
+ u8 bsy : 1 /* The device has access to the command block */
+ )
} b;
} atapi_status_reg_t;

@@ -110,21 +99,13 @@
typedef union {
u8 all : 8;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- u8 ili : 1; /* Illegal Length Indication */
- u8 eom : 1; /* End Of Media Detected */
- u8 abrt : 1; /* Aborted command - As defined by ATA */
- u8 mcr : 1; /* Media Change Requested - As defined by ATA */
- u8 sense_key : 4; /* Sense key of the last failed packet command */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- u8 sense_key : 4;
- u8 mcr : 1;
- u8 abrt : 1;
- u8 eom : 1;
- u8 ili : 1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD5(
+ u8 ili : 1, /* Illegal Length Indication */
+ u8 eom : 1, /* End Of Media Detected */
+ u8 abrt : 1, /* Aborted command - As defined by ATA */
+ u8 mcr : 1, /* Media Change Requested - As defined by ATA */
+ u8 sense_key : 4 /* Sense key of the last failed packet command */
+ )
} b;
} atapi_error_reg_t;

@@ -135,19 +116,12 @@
typedef union {
u8 all : 8;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- u8 dma : 1; /* Using DMA or PIO */
- u8 reserved321 : 3; /* Reserved */
- u8 reserved654 : 3; /* Reserved (Tag Type) */
- u8 reserved7 : 1; /* Reserved */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- u8 reserved7 : 1;
- u8 reserved654 : 3;
- u8 reserved321 : 3;
- u8 dma : 1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD4(
+ u8 dma : 1, /* Using DMA or PIO */
+ u8 reserved321 : 3, /* Reserved */
+ u8 reserved654 : 3, /* Reserved (Tag Type) */
+ u8 reserved7 : 1 /* Reserved */
+ )
} b;
} atapi_feature_reg_t;

@@ -157,15 +131,10 @@
typedef union {
u16 all : 16;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- u8 low; /* LSB */
- u8 high; /* MSB */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- u8 high;
- u8 low;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD2(
+ u8 low, /* LSB */
+ u8 high /* MSB */
+ )
} b;
} atapi_bcount_reg_t;

@@ -175,17 +144,11 @@
typedef union {
u8 all : 8;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- u8 cod : 1; /* Information transferred is command (1) or data (0) */
- u8 io : 1; /* The device requests us to read (1) or write (0) */
- u8 reserved : 6; /* Reserved */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- u8 reserved : 6;
- u8 io : 1;
- u8 cod : 1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD3(
+ u8 cod : 1, /* Information transferred is command (1) or data (0) */
+ u8 io : 1, /* The device requests us to read (1) or write (0) */
+ u8 reserved : 6 /* Reserved */
+ )
} b;
} atapi_ireason_reg_t;

@@ -196,23 +159,14 @@
typedef union {
u8 all :8;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- u8 sam_lun :3; /* Logical unit number */
- u8 reserved3 :1; /* Reserved */
- u8 drv :1; /* The responding drive will be drive 0 (0) or drive 1 (1) */
- u8 one5 :1; /* Should be set to 1 */
- u8 reserved6 :1; /* Reserved */
- u8 one7 :1; /* Should be set to 1 */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- u8 one7 :1;
- u8 reserved6 :1;
- u8 one5 :1;
- u8 drv :1;
- u8 reserved3 :1;
- u8 sam_lun :3;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD6(
+ u8 sam_lun :3, /* Logical unit number */
+ u8 reserved3 :1, /* Reserved */
+ u8 drv :1, /* The responding drive will be drive 0 (0) or drive 1 (1) */
+ u8 one5 :1, /* Should be set to 1 */
+ u8 reserved6 :1, /* Reserved */
+ u8 one7 :1 /* Should be set to 1 */
+ )
} b;
} atapi_drivesel_reg_t;

@@ -223,21 +177,13 @@
typedef union {
u8 all : 8;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- u8 zero0 : 1; /* Should be set to zero */
- u8 nien : 1; /* Device interrupt is disabled (1) or enabled (0) */
- u8 srst : 1; /* ATA software reset. ATAPI devices should use the new ATAPI srst. */
- u8 one3 : 1; /* Should be set to 1 */
- u8 reserved4567 : 4; /* Reserved */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- u8 reserved4567 : 4;
- u8 one3 : 1;
- u8 srst : 1;
- u8 nien : 1;
- u8 zero0 : 1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD5(
+ u8 zero0 : 1, /* Should be set to zero */
+ u8 nien : 1, /* Device interrupt is disabled (1) or enabled (0) */
+ u8 srst : 1, /* ATA software reset. ATAPI devices should use the new ATAPI srst. */
+ u8 one3 : 1, /* Should be set to 1 */
+ u8 reserved4567 : 4 /* Reserved */
+ )
} b;
} atapi_control_reg_t;

@@ -246,58 +192,40 @@
* of the ATAPI IDENTIFY DEVICE command.
*/
struct atapi_id_gcw {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- u8 packet_size : 2; /* Packet Size */
- u8 reserved234 : 3; /* Reserved */
- u8 drq_type : 2; /* Command packet DRQ type */
- u8 removable : 1; /* Removable media */
- u8 device_type : 5; /* Device type */
- u8 reserved13 : 1; /* Reserved */
- u8 protocol : 2; /* Protocol type */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- u8 protocol : 2;
- u8 reserved13 : 1;
- u8 device_type : 5;
- u8 removable : 1;
- u8 drq_type : 2;
- u8 reserved234 : 3;
- u8 packet_size : 2;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD7(
+ u8 packet_size : 2, /* Packet Size */
+ u8 reserved234 : 3, /* Reserved */
+ u8 drq_type : 2, /* Command packet DRQ type */
+ u8 removable : 1, /* Removable media */
+ u8 device_type : 5, /* Device type */
+ u8 reserved13 : 1, /* Reserved */
+ u8 protocol : 2 /* Protocol type */
+ )
};

/*
* INQUIRY packet command - Data Format.
*/
typedef struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- u8 device_type : 5; /* Peripheral Device Type */
- u8 reserved0_765 : 3; /* Peripheral Qualifier - Reserved */
- u8 reserved1_6t0 : 7; /* Reserved */
- u8 rmb : 1; /* Removable Medium Bit */
- u8 ansi_version : 3; /* ANSI Version */
- u8 ecma_version : 3; /* ECMA Version */
- u8 iso_version : 2; /* ISO Version */
- u8 response_format : 4; /* Response Data Format */
- u8 reserved3_45 : 2; /* Reserved */
- u8 reserved3_6 : 1; /* TrmIOP - Reserved */
- u8 reserved3_7 : 1; /* AENC - Reserved */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- u8 reserved0_765 : 3;
- u8 device_type : 5;
- u8 rmb : 1;
- u8 reserved1_6t0 : 7;
- u8 iso_version : 2;
- u8 ecma_version : 3;
- u8 ansi_version : 3;
- u8 reserved3_7 : 1;
- u8 reserved3_6 : 1;
- u8 reserved3_45 : 2;
- u8 response_format : 4;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD2(
+ u8 device_type : 5, /* Peripheral Device Type */
+ u8 reserved0_765 : 3 /* Peripheral Qualifier - Reserved */
+ )
+ BITFIELD2(
+ u8 reserved1_6t0 : 7, /* Reserved */
+ u8 rmb : 1 /* Removable Medium Bit */
+ )
+ BITFIELD3(
+ u8 ansi_version : 3, /* ANSI Version */
+ u8 ecma_version : 3, /* ECMA Version */
+ u8 iso_version : 2 /* ISO Version */
+ )
+ BITFIELD4(
+ u8 response_format : 4, /* Response Data Format */
+ u8 reserved3_45 : 2, /* Reserved */
+ u8 reserved3_6 : 1, /* TrmIOP - Reserved */
+ u8 reserved3_7 : 1 /* AENC - Reserved */
+ )
u8 additional_length; /* Additional Length (total_length-4) */
u8 rsv5, rsv6, rsv7; /* Reserved */
u8 vendor_id[8]; /* Vendor Identification */
@@ -312,42 +240,28 @@
* REQUEST SENSE packet command result - Data Format.
*/
typedef struct atapi_request_sense {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- u8 error_code : 7; /* Error Code (0x70 - current or 0x71 - deferred) */
- u8 valid : 1; /* The information field conforms to standard */
+ BITFIELD2(
+ u8 error_code : 7, /* Error Code (0x70 - current or 0x71 - deferred) */
+ u8 valid : 1 /* The information field conforms to standard */
+ )
u8 reserved1 : 8; /* Reserved (Segment Number) */
- u8 sense_key : 4; /* Sense Key */
- u8 reserved2_4 : 1; /* Reserved */
- u8 ili : 1; /* Incorrect Length Indicator */
- u8 eom : 1; /* End Of Medium */
- u8 filemark : 1; /* Filemark */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- u8 valid : 1;
- u8 error_code : 7;
- u8 reserved1 : 8;
- u8 filemark : 1;
- u8 eom : 1;
- u8 ili : 1;
- u8 reserved2_4 : 1;
- u8 sense_key : 4;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD5(
+ u8 sense_key : 4, /* Sense Key */
+ u8 reserved2_4 : 1, /* Reserved */
+ u8 ili : 1, /* Incorrect Length Indicator */
+ u8 eom : 1, /* End Of Medium */
+ u8 filemark : 1 /* Filemark */
+ )
u32 information __attribute__ ((packed));
u8 asl; /* Additional sense length (n-7) */
u32 command_specific; /* Additional command specific information */
u8 asc; /* Additional Sense Code */
u8 ascq; /* Additional Sense Code Qualifier */
u8 replaceable_unit_code; /* Field Replaceable Unit Code */
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- u8 sk_specific1 : 7; /* Sense Key Specific */
- u8 sksv : 1; /* Sense Key Specific information is valid */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- u8 sksv : 1; /* Sense Key Specific information is valid */
- u8 sk_specific1 : 7; /* Sense Key Specific */
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD2(
+ u8 sk_specific1 : 7, /* Sense Key Specific */
+ u8 sksv : 1 /* Sense Key Specific information is valid */
+ )
u8 sk_specific[2]; /* Sense Key Specific */
u8 pad[2]; /* Padding to 20 bytes */
} atapi_request_sense_result_t;
Binary files linux-2.5.45-bk1/include/linux/byteorder/.big_endian.h.swp and linux/include/linux/byteorder/.big_endian.h.swp differ
diff -urN linux-2.5.45-bk1/include/linux/byteorder/big_endian.h linux/include/linux/byteorder/big_endian.h
--- linux-2.5.45-bk1/include/linux/byteorder/big_endian.h Sun Sep 15 22:18:26 2002
+++ linux/include/linux/byteorder/big_endian.h Sun Nov 3 13:49:04 2002
@@ -65,4 +65,12 @@

#include <linux/byteorder/generic.h>

+#define BITFIELD2(b1, b2) b2; b1;
+#define BITFIELD3(b1, b2, b3) b3; b2; b1;
+#define BITFIELD4(b1, b2, b3, b4) b4; b3; b2; b1;
+#define BITFIELD5(b1, b2, b3, b4, b5) b5; b4; b3; b2; b1;
+#define BITFIELD6(b1, b2, b3, b4, b5, b6) b6; b5; b4; b3; b2; b1;
+#define BITFIELD7(b1, b2, b3, b4, b5, b6, b7) b7; b6; b5; b4; b3; b2; b1;
+#define BITFIELD8(b1, b2, b3, b4, b5, b6, b7, b8) b8; b7; b6; b5; b4; b3; b2; b1;
+
#endif /* _LINUX_BYTEORDER_BIG_ENDIAN_H */
diff -urN linux-2.5.45-bk1/include/linux/byteorder/little_endian.h linux/include/linux/byteorder/little_endian.h
--- linux-2.5.45-bk1/include/linux/byteorder/little_endian.h Sun Sep 15 22:18:31 2002
+++ linux/include/linux/byteorder/little_endian.h Sun Nov 3 10:02:12 2002
@@ -65,4 +65,12 @@

#include <linux/byteorder/generic.h>

+#define BITFIELD2(b1, b2) b1; b2;
+#define BITFIELD3(b1, b2, b3) b1; b2; b3;
+#define BITFIELD4(b1, b2, b3, b4) b1; b2; b3; b4;
+#define BITFIELD5(b1, b2, b3, b4, b5) b1; b2; b3; b4; b5;
+#define BITFIELD6(b1, b2, b3, b4, b5, b6) b1; b2; b3; b4; b5; b6;
+#define BITFIELD7(b1, b2, b3, b4, b5, b6, b7) b1; b2; b3; b4; b5; b6; b7;
+#define BITFIELD8(b1, b2, b3, b4, b5, b6, b7, b8) b1; b2; b3; b4; b5; b6; b7; b8;
+
#endif /* _LINUX_BYTEORDER_LITTLE_ENDIAN_H */
diff -urN linux-2.5.45-bk1/include/linux/cdrom.h linux/include/linux/cdrom.h
--- linux-2.5.45-bk1/include/linux/cdrom.h Sat Oct 19 00:31:43 2002
+++ linux/include/linux/cdrom.h Sun Nov 3 13:14:09 2002
@@ -685,25 +685,17 @@
} dvd_authinfo;

struct request_sense {
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 valid : 1;
- __u8 error_code : 7;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 error_code : 7;
- __u8 valid : 1;
-#endif
+ BITFIELD2(
+ __u8 error_code : 7,
+ __u8 valid : 1
+ )
__u8 segment_number;
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 reserved1 : 2;
- __u8 ili : 1;
- __u8 reserved2 : 1;
- __u8 sense_key : 4;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 sense_key : 4;
- __u8 reserved2 : 1;
- __u8 ili : 1;
- __u8 reserved1 : 2;
-#endif
+ BITFIELD4(
+ __u8 sense_key : 4,
+ __u8 reserved2 : 1,
+ __u8 ili : 1,
+ __u8 reserved1 : 2
+ )
__u8 information[4];
__u8 add_sense_len;
__u8 command_info[4];
@@ -803,34 +795,22 @@

typedef struct {
__u16 disc_information_length;
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 reserved1 : 3;
- __u8 erasable : 1;
- __u8 border_status : 2;
- __u8 disc_status : 2;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 disc_status : 2;
- __u8 border_status : 2;
- __u8 erasable : 1;
- __u8 reserved1 : 3;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD4(
+ __u8 disc_status : 2,
+ __u8 border_status : 2,
+ __u8 erasable : 1,
+ __u8 reserved1 : 3
+ )
__u8 n_first_track;
__u8 n_sessions_lsb;
__u8 first_track_lsb;
__u8 last_track_lsb;
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 did_v : 1;
- __u8 dbc_v : 1;
- __u8 uru : 1;
- __u8 reserved2 : 5;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 reserved2 : 5;
- __u8 uru : 1;
- __u8 dbc_v : 1;
- __u8 did_v : 1;
-#endif
+ BITFIELD4(
+ __u8 reserved2 : 5,
+ __u8 uru : 1,
+ __u8 dbc_v : 1,
+ __u8 did_v : 1
+ )
__u8 disc_type;
__u8 n_sessions_msb;
__u8 first_track_msb;
@@ -848,33 +828,24 @@
__u8 track_lsb;
__u8 session_lsb;
__u8 reserved1;
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 reserved2 : 2;
- __u8 damage : 1;
- __u8 copy : 1;
- __u8 track_mode : 4;
- __u8 rt : 1;
- __u8 blank : 1;
- __u8 packet : 1;
- __u8 fp : 1;
- __u8 data_mode : 4;
- __u8 reserved3 : 6;
- __u8 lra_v : 1;
- __u8 nwa_v : 1;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 track_mode : 4;
- __u8 copy : 1;
- __u8 damage : 1;
- __u8 reserved2 : 2;
- __u8 data_mode : 4;
- __u8 fp : 1;
- __u8 packet : 1;
- __u8 blank : 1;
- __u8 rt : 1;
- __u8 nwa_v : 1;
- __u8 lra_v : 1;
- __u8 reserved3 : 6;
-#endif
+ BITFIELD4(
+ __u8 track_mode : 4,
+ __u8 copy : 1,
+ __u8 damage : 1,
+ __u8 reserved2 : 2
+ )
+ BITFIELD5(
+ __u8 data_mode : 4,
+ __u8 fp : 1,
+ __u8 packet : 1,
+ __u8 blank : 1,
+ __u8 rt : 1
+ )
+ BITFIELD3(
+ __u8 nwa_v : 1,
+ __u8 lra_v : 1,
+ __u8 reserved3 : 6
+ )
__u32 track_start;
__u32 next_writable;
__u32 free_blocks;
@@ -887,36 +858,27 @@
#define CDROM_MAX_SLOTS 256

struct cdrom_mechstat_header {
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 fault : 1;
- __u8 changer_state : 2;
- __u8 curslot : 5;
- __u8 mech_state : 3;
- __u8 door_open : 1;
- __u8 reserved1 : 4;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 curslot : 5;
- __u8 changer_state : 2;
- __u8 fault : 1;
- __u8 reserved1 : 4;
- __u8 door_open : 1;
- __u8 mech_state : 3;
-#endif
+ BITFIELD3(
+ __u8 curslot : 5,
+ __u8 changer_state : 2,
+ __u8 fault : 1
+ )
+ BITFIELD3(
+ __u8 reserved1 : 4,
+ __u8 door_open : 1,
+ __u8 mech_state : 3
+ )
__u8 curlba[3];
__u8 nslots;
__u16 slot_tablelen;
};

struct cdrom_slot {
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 disc_present : 1;
- __u8 reserved1 : 6;
- __u8 change : 1;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 change : 1;
- __u8 reserved1 : 6;
- __u8 disc_present : 1;
-#endif
+ BITFIELD3(
+ __u8 change : 1,
+ __u8 reserved1 : 6,
+ __u8 disc_present : 1
+ )
__u8 reserved2[3];
};

@@ -943,48 +905,35 @@
};

typedef struct {
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 ps : 1;
- __u8 reserved1 : 1;
- __u8 page_code : 6;
+ BITFIELD3(
+ __u8 page_code : 6,
+ __u8 reserved1 : 1,
+ __u8 ps : 1
+ )
__u8 page_length;
- __u8 reserved2 : 1;
- __u8 bufe : 1;
- __u8 ls_v : 1;
- __u8 test_write : 1;
- __u8 write_type : 4;
- __u8 multi_session : 2; /* or border, DVD */
- __u8 fp : 1;
- __u8 copy : 1;
- __u8 track_mode : 4;
- __u8 reserved3 : 4;
- __u8 data_block_type : 4;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 page_code : 6;
- __u8 reserved1 : 1;
- __u8 ps : 1;
- __u8 page_length;
- __u8 write_type : 4;
- __u8 test_write : 1;
- __u8 ls_v : 1;
- __u8 bufe : 1;
- __u8 reserved2 : 1;
- __u8 track_mode : 4;
- __u8 copy : 1;
- __u8 fp : 1;
- __u8 multi_session : 2; /* or border, DVD */
- __u8 data_block_type : 4;
- __u8 reserved3 : 4;
-#endif
+ BITFIELD5(
+ __u8 write_type : 4,
+ __u8 test_write : 1,
+ __u8 ls_v : 1,
+ __u8 bufe : 1,
+ __u8 reserved2 : 1
+ )
+ BITFIELD4(
+ __u8 track_mode : 4,
+ __u8 copy : 1,
+ __u8 fp : 1,
+ __u8 multi_session : 2 /* or border, DVD */
+ )
+ BITFIELD2(
+ __u8 data_block_type : 4,
+ __u8 reserved3 : 4
+ )
__u8 link_size;
__u8 reserved4;
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 reserved5 : 2;
- __u8 app_code : 6;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 app_code : 6;
- __u8 reserved5 : 2;
-#endif
+ BITFIELD2(
+ __u8 app_code : 6,
+ __u8 reserved5 : 2
+ )
__u8 session_format;
__u8 reserved6;
__u32 packet_size;
@@ -1017,15 +966,11 @@
__u16 report_key_length;
__u8 reserved1;
__u8 reserved2;
-#if defined(__BIG_ENDIAN_BITFIELD)
- __u8 type_code : 2;
- __u8 vra : 3;
- __u8 ucca : 3;
-#elif defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 ucca : 3;
- __u8 vra : 3;
- __u8 type_code : 2;
-#endif
+ BITFIELD3(
+ __u8 ucca : 3,
+ __u8 vra : 3,
+ __u8 type_code : 2
+ )
__u8 region_mask;
__u8 rpc_scheme;
__u8 reserved3;
diff -urN linux-2.5.45-bk1/include/linux/ide.h linux/include/linux/ide.h
--- linux-2.5.45-bk1/include/linux/ide.h Wed Oct 30 20:30:20 2002
+++ linux/include/linux/ide.h Sun Nov 3 10:20:22 2002
@@ -380,23 +380,14 @@
typedef union {
unsigned all : 8;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned set_geometry : 1;
- unsigned recalibrate : 1;
- unsigned set_multmode : 1;
- unsigned set_tune : 1;
- unsigned serviced : 1;
- unsigned reserved : 3;
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned reserved : 3;
- unsigned serviced : 1;
- unsigned set_tune : 1;
- unsigned set_multmode : 1;
- unsigned recalibrate : 1;
- unsigned set_geometry : 1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD6(
+ unsigned set_geometry : 1,
+ unsigned recalibrate : 1,
+ unsigned set_multmode : 1,
+ unsigned set_tune : 1,
+ unsigned serviced : 1,
+ unsigned reserved : 3
+ )
} b;
} special_t;

@@ -409,15 +400,10 @@
typedef union {
unsigned all :16;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned low :8; /* LSB */
- unsigned high :8; /* MSB */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned high :8; /* MSB */
- unsigned low :8; /* LSB */
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD2(
+ unsigned low :8, /* LSB */
+ unsigned high :8 /* MSB */
+ )
} b;
} ata_nsector_t, ata_data_t, atapi_bcount_t, ata_index_t;

@@ -436,27 +422,16 @@
typedef union {
unsigned all :8;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned mark :1;
- unsigned tzero :1;
- unsigned abrt :1;
- unsigned mcr :1;
- unsigned id :1;
- unsigned mce :1;
- unsigned ecc :1;
- unsigned bdd :1;
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned bdd :1;
- unsigned ecc :1;
- unsigned mce :1;
- unsigned id :1;
- unsigned mcr :1;
- unsigned abrt :1;
- unsigned tzero :1;
- unsigned mark :1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD8(
+ unsigned mark :1,
+ unsigned tzero :1,
+ unsigned abrt :1,
+ unsigned mcr :1,
+ unsigned id :1,
+ unsigned mce :1,
+ unsigned ecc :1,
+ unsigned bdd :1
+ )
} b;
} ata_error_t;

@@ -472,21 +447,13 @@
typedef union {
unsigned all : 8;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned head : 4;
- unsigned unit : 1;
- unsigned bit5 : 1;
- unsigned lba : 1;
- unsigned bit7 : 1;
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned bit7 : 1;
- unsigned lba : 1;
- unsigned bit5 : 1;
- unsigned unit : 1;
- unsigned head : 4;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD5(
+ unsigned head : 4,
+ unsigned unit : 1,
+ unsigned bit5 : 1,
+ unsigned lba : 1,
+ unsigned bit7 : 1
+ )
} b;
} select_t, ata_select_t;

@@ -510,27 +477,16 @@
typedef union {
unsigned all :8;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned check :1;
- unsigned idx :1;
- unsigned corr :1;
- unsigned drq :1;
- unsigned dsc :1;
- unsigned df :1;
- unsigned drdy :1;
- unsigned bsy :1;
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned bsy :1;
- unsigned drdy :1;
- unsigned df :1;
- unsigned dsc :1;
- unsigned drq :1;
- unsigned corr :1;
- unsigned idx :1;
- unsigned check :1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD8(
+ unsigned check :1,
+ unsigned idx :1,
+ unsigned corr :1,
+ unsigned drq :1,
+ unsigned dsc :1,
+ unsigned df :1,
+ unsigned drdy :1,
+ unsigned bsy :1
+ )
} b;
} ata_status_t, atapi_status_t;

@@ -547,23 +503,14 @@
typedef union {
unsigned all : 8;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned bit0 : 1;
- unsigned nIEN : 1;
- unsigned SRST : 1;
- unsigned bit3 : 1;
- unsigned reserved456 : 3;
- unsigned HOB : 1;
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned HOB : 1;
- unsigned reserved456 : 3;
- unsigned bit3 : 1;
- unsigned SRST : 1;
- unsigned nIEN : 1;
- unsigned bit0 : 1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD6(
+ unsigned bit0 : 1,
+ unsigned nIEN : 1,
+ unsigned SRST : 1,
+ unsigned bit3 : 1,
+ unsigned reserved456 : 3,
+ unsigned HOB : 1
+ )
} b;
} ata_control_t;

@@ -578,19 +525,12 @@
typedef union {
unsigned all :8;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned dma :1;
- unsigned reserved321 :3;
- unsigned reserved654 :3;
- unsigned reserved7 :1;
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned reserved7 :1;
- unsigned reserved654 :3;
- unsigned reserved321 :3;
- unsigned dma :1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD4(
+ unsigned dma :1,
+ unsigned reserved321 :3,
+ unsigned reserved654 :3,
+ unsigned reserved7 :1
+ )
} b;
} atapi_feature_t;

@@ -604,17 +544,11 @@
typedef union {
unsigned all :8;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned cod :1;
- unsigned io :1;
- unsigned reserved :6;
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned reserved :6;
- unsigned io :1;
- unsigned cod :1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD3(
+ unsigned cod :1,
+ unsigned io :1,
+ unsigned reserved :6
+ )
} b;
} atapi_ireason_t;

@@ -630,21 +564,13 @@
typedef union {
unsigned all :8;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned ili :1;
- unsigned eom :1;
- unsigned abrt :1;
- unsigned mcr :1;
- unsigned sense_key :4;
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned sense_key :4;
- unsigned mcr :1;
- unsigned abrt :1;
- unsigned eom :1;
- unsigned ili :1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD5(
+ unsigned ili :1,
+ unsigned eom :1,
+ unsigned abrt :1,
+ unsigned mcr :1,
+ unsigned sense_key :4
+ )
} b;
} atapi_error_t;

@@ -661,23 +587,14 @@
typedef union {
unsigned all :8;
struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned sam_lun :3;
- unsigned reserved3 :1;
- unsigned drv :1;
- unsigned one5 :1;
- unsigned reserved6 :1;
- unsigned one7 :1;
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned one7 :1;
- unsigned reserved6 :1;
- unsigned one5 :1;
- unsigned drv :1;
- unsigned reserved3 :1;
- unsigned sam_lun :3;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
+ BITFIELD6(
+ unsigned sam_lun :3,
+ unsigned reserved3 :1,
+ unsigned drv :1,
+ unsigned one5 :1,
+ unsigned reserved6 :1,
+ unsigned one7 :1
+ )
} b;
} atapi_select_t;


Attachments:
bitfield-1 (47.95 kB)

2002-11-04 00:26:20

by Pete Zaitcev

[permalink] [raw]
Subject: Re: [PATCH] Cleanup bitfield endianess mess

> This patch defines new BITFIELDx macros to clean up the #ifdef mess with
> bitfields, and starts the conversion off with the IDE/ATAPI files.

I think it may be more reliable to talk to gcc people
about adding -fprohibit-bitfields to the compiler and eradicate
bitfields from the kernel as such. If I was the benevolent
dictator, that is what I would have done (consider yourself
fortunate I'm not :-)

-- Pete