diff options
author | Michihiro NAKAJIMA <ggcueroad@gmail.com> | 2011-08-06 21:34:26 -0400 |
---|---|---|
committer | Michihiro NAKAJIMA <ggcueroad@gmail.com> | 2011-08-06 21:34:26 -0400 |
commit | aad33fae27600b09aa4b2bde921a2957a3a92db7 (patch) | |
tree | fbcd6e8f8a819bd98ee26ea1888543e298951767 /libarchive/archive_read_support_format_cab.c | |
parent | 670dd0ab7d7db9656b192bca45b06135342f1128 (diff) | |
download | libarchive-aad33fae27600b09aa4b2bde921a2957a3a92db7.tar.gz |
Throw out a macro optimization for byte swap on x86 processor.
SVN-Revision: 3545
Diffstat (limited to 'libarchive/archive_read_support_format_cab.c')
-rw-r--r-- | libarchive/archive_read_support_format_cab.c | 33 |
1 files changed, 9 insertions, 24 deletions
diff --git a/libarchive/archive_read_support_format_cab.c b/libarchive/archive_read_support_format_cab.c index bb9fc83e..975aca46 100644 --- a/libarchive/archive_read_support_format_cab.c +++ b/libarchive/archive_read_support_format_cab.c @@ -1051,14 +1051,6 @@ archive_read_format_cab_read_data(struct archive_read *a, static uint32_t cab_checksum_cfdata_4(const void *p, size_t bytes, uint32_t seed) { -/* - * x86 proccessor family can read misaligned data without an access error. - */ -#if defined(__i386__) || (defined(_MSC_VER) && defined(_M_IX86)) -# define lzx_le32dec(a) (*(const uint32_t *)(a)) -#else -# define lzx_le32dec(a) archive_le32dec(a) -#endif const unsigned char *b; int u32num; uint32_t sum; @@ -1067,11 +1059,10 @@ cab_checksum_cfdata_4(const void *p, size_t bytes, uint32_t seed) sum = seed; b = p; while (--u32num >= 0) { - sum ^= lzx_le32dec(b); + sum ^= archive_le32dec(b); b += 4; } return (sum); -#undef lzx_le32dec } static uint32_t @@ -2256,11 +2247,6 @@ lzx_br_fillup(struct lzx_stream *strm, struct lzx_br *br) /* * x86 proccessor family can read misaligned data without an access error. */ -#ifdef __i386__ -# define lzx_le16dec(a) (*(const uint16_t *)(a)) -#else -# define lzx_le16dec(a) archive_le16dec(a) -#endif int n = CACHE_BITS - br->cache_avail; for (;;) { @@ -2268,13 +2254,13 @@ lzx_br_fillup(struct lzx_stream *strm, struct lzx_br *br) case 4: if (strm->avail_in >= 8) { br->cache_buffer = - (((uint64_t)lzx_le16dec( + (((uint64_t)archive_le16dec( strm->next_in)) << 48) | - (((uint64_t)lzx_le16dec( + (((uint64_t)archive_le16dec( strm->next_in+2)) << 32) | - (((uint32_t)lzx_le16dec( + (((uint32_t)archive_le16dec( strm->next_in+4)) << 16) | - lzx_le16dec(strm->next_in+6); + archive_le16dec(strm->next_in+6); strm->next_in += 8; strm->avail_in -= 8; br->cache_avail += 8 * 8; @@ -2285,11 +2271,11 @@ lzx_br_fillup(struct lzx_stream *strm, struct lzx_br *br) if (strm->avail_in >= 6) { br->cache_buffer = (br->cache_buffer << 48) | - (((uint64_t)lzx_le16dec( + (((uint64_t)archive_le16dec( strm->next_in)) << 32) | - (((uint32_t)lzx_le16dec( + (((uint32_t)archive_le16dec( strm->next_in+2)) << 16) | - lzx_le16dec(strm->next_in+4); + archive_le16dec(strm->next_in+4); strm->next_in += 6; strm->avail_in -= 6; br->cache_avail += 6 * 8; @@ -2315,13 +2301,12 @@ lzx_br_fillup(struct lzx_stream *strm, struct lzx_br *br) } br->cache_buffer = (br->cache_buffer << 16) | - lzx_le16dec(strm->next_in); + archive_le16dec(strm->next_in); strm->next_in += 2; strm->avail_in -= 2; br->cache_avail += 16; n -= 16; } -#undef lzx_le16dec } static void |