diff options
author | Marcus Brinkmann <marcus@gnu.org> | 2003-08-09 16:37:58 +0000 |
---|---|---|
committer | Marcus Brinkmann <marcus@gnu.org> | 2003-08-09 16:37:58 +0000 |
commit | c9404ef427b7e57f986c1a83ec54fed86def5c58 (patch) | |
tree | 5712dd2a12355440d403e60f141c36940535451e /fatfs/fat.h | |
parent | 1e738dbcb04eb5f9ac7a32028dcbb5751ee76fb9 (diff) |
2003-08-09 Marcus Brinkmann <marcus@gnu.org>
* fat.h (read_dword) [BYTE_ORDER == BIG_ENDIAN]: Use bswap_32 to
swap bytes.
(write_dword) [BYTE_ORDER == BIG_ENDIAN]: Likewise.
(read_word) [BYTE_ORDER == BIG_ENDIAN]: Use bswap_16 to swap bytes.
(write_word) [BYTE_ORDER == BIG_ENDIAN]: Likewise.
Diffstat (limited to 'fatfs/fat.h')
-rw-r--r-- | fatfs/fat.h | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/fatfs/fat.h b/fatfs/fat.h index 91e5a5cb..a76e37f8 100644 --- a/fatfs/fat.h +++ b/fatfs/fat.h @@ -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,9 @@ read_dword (unsigned char *addr) #if BYTE_ORDER == LITTLE_ENDIAN return *(unsigned int *)addr; #elif BYTE_ORDER == BIG_ENDIAN - return *(unsigned int *)(addr + 4); + return bswap_32 (*(unsigned int *) addr); #else - return - addr[0] | (addr[1] << 8) | (addr[2] << 16) | (addr[3] << 24); +#error unknown byte order #endif } @@ -366,9 +365,9 @@ read_word (unsigned char *addr) #if BYTE_ORDER == LITTLE_ENDIAN return *(unsigned short *)addr; #elif BYTE_ORDER == BIG_ENDIAN - return *(unsigned short *)addr + 2; + return bswap_16 (*(unsigned int *) addr); #else - return addr[0] | (addr[1] << 8); +#error unknown byte order #endif } @@ -378,12 +377,9 @@ write_dword (unsigned char *addr, unsigned int value) #if BYTE_ORDER == LITTLE_ENDIAN *(unsigned int *)addr = value; #elif BYTE_ORDER == BIG_ENDIAN -#error unknown byte order + *(unsigned int *)addr = bswap_32 (value); #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 +389,9 @@ write_word (unsigned char *addr, unsigned int value) #if BYTE_ORDER == LITTLE_ENDIAN *(unsigned short *)addr = value; #elif BYTE_ORDER == BIG_ENDIAN -#error unknown byte order + *(unsigned int *)addr = bswap_16 (value); #else - addr[0] = value & 0xff; - addr[1] = (value >> 8) & 0xff; +#error unknown byte order #endif } |