From: H. Peter Anvin Date: Thu, 1 Nov 2007 22:34:09 +0000 (-0700) Subject: Try to fix libfat/ulint.h for non-x86 platforms X-Git-Tag: syslinux-3.53-pre1~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0791bf3c88f8f639e367bc2edd5f181c41e7e42b;p=profile%2Fivi%2Fsyslinux.git Try to fix libfat/ulint.h for non-x86 platforms libfat/ulint.h doesn't work as expected because of array devolution to pointers. Try to fix. --- diff --git a/libfat/ulint.h b/libfat/ulint.h index 76c6bdb..79eeaf4 100644 --- a/libfat/ulint.h +++ b/libfat/ulint.h @@ -74,25 +74,31 @@ write32(le32_t *_p, uint32_t _v) /* Generic, mostly portable versions */ static inline unsigned short -read16(le16_t *_p) +read16(le16_t *_pp) { + uint8_t *_p = *_pp; uint16_t _v; - _v = p[0]; - _v |= p[1] << 8; + _v = _p[0]; + _v |= _p[1] << 8; return _v; } static inline void -write16(le16_t *_p, uint16_t _v) +write16(le16_t *_pp, uint16_t _v) { + uint8_t *_p = *_pp; + _p[0] = _v & 0xFF; _p[1] = (_v >> 8) & 0xFF; } static inline unsigned int -read32(le32_t *_p) +read32(le32_t *_pp) { + uint8_t *_p = *_pp; + uint32_t _v; + _v = _p[0]; _v |= _p[1] << 8; _v |= _p[2] << 16; @@ -101,8 +107,10 @@ read32(le32_t *_p) } static inline void -write32(le32_t *_p, uint32_t _v) +write32(le32_t *_pp, uint32_t _v) { + uint8_t *_p = *_pp; + _p[0] = _v & 0xFF; _p[1] = (_v >> 8) & 0xFF; _p[2] = (_v >> 16) & 0xFF;