summaryrefslogtreecommitdiff
path: root/libarchive/archive_read_support_format_cab.c
diff options
context:
space:
mode:
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>2011-08-06 21:34:26 -0400
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>2011-08-06 21:34:26 -0400
commitaad33fae27600b09aa4b2bde921a2957a3a92db7 (patch)
treefbcd6e8f8a819bd98ee26ea1888543e298951767 /libarchive/archive_read_support_format_cab.c
parent670dd0ab7d7db9656b192bca45b06135342f1128 (diff)
downloadlibarchive-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.c33
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