Index: fatfs/fat.h =================================================================== RCS file: /cvsroot/hurd/hurd/fatfs/fat.h,v retrieving revision 1.1 diff -u -r1.1 fat.h --- fatfs/fat.h 3 Dec 2002 20:52:59 -0000 1.1 +++ fatfs/fat.h 9 Aug 2003 12:43:55 -0000 @@ -1,5 +1,5 @@ /* fat.h - Support for FAT filesystems interfaces. - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. Written by Marcus Brinkmann. This file is part of the GNU Hurd. @@ -353,10 +353,11 @@ #if BYTE_ORDER == LITTLE_ENDIAN return *(unsigned int *)addr; #elif BYTE_ORDER == BIG_ENDIAN - return *(unsigned int *)(addr + 4); + register unsigned int tmp = *(unsigned int *)addr; + return (tmp << 24) | ((tmp << 8) & 0xff0000) + | ((tmp >> 8) & 0xff00) | (tmp >> 24); #else - return - addr[0] | (addr[1] << 8) | (addr[2] << 16) | (addr[3] << 24); +#error unknown byte order #endif } @@ -366,9 +367,10 @@ #if BYTE_ORDER == LITTLE_ENDIAN return *(unsigned short *)addr; #elif BYTE_ORDER == BIG_ENDIAN - return *(unsigned short *)addr + 2; + register unsigned int tmp = *(unsigned short *)addr; + return ((tmp << 8) & 0xff00) | (tmp >> 8); #else - return addr[0] | (addr[1] << 8); +#error unknown byte order #endif } @@ -378,12 +380,11 @@ #if BYTE_ORDER == LITTLE_ENDIAN *(unsigned int *)addr = value; #elif BYTE_ORDER == BIG_ENDIAN -#error unknown byte order + register unsigned int tmp = (value << 24) | ((value << 8) & 0xff0000) + | (value >> 8) & 0xff00 | (value >> 24); + *(unsigned int *)addr = tmp; #else - addr[0] = value & 0xff; - addr[1] = (value >> 8) & 0xff; - addr[2] = (value >> 16) & 0xff; - addr[3] = (value >> 24) & 0xff; +#error unknown byte order #endif } @@ -393,10 +394,10 @@ #if BYTE_ORDER == LITTLE_ENDIAN *(unsigned short *)addr = value; #elif BYTE_ORDER == BIG_ENDIAN -#error unknown byte order + register unsigned int tmp = ((value << 8) & 0xff00) | (value >> 8); + *(unsigned short *)addr = tmp; #else - addr[0] = value & 0xff; - addr[1] = (value >> 8) & 0xff; +#error unknown byte order #endif }