patch "crc32: more optimizations" introduced a bug. This fixes it.
Signed-off-by: Joakim Tjernlund <joakim.tjernl...@transmode.se> --- Perhaps I should resend as one whole patch with everything instead? lib_generic/crc32.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib_generic/crc32.c b/lib_generic/crc32.c index 2837d93..7f5abb1 100644 --- a/lib_generic/crc32.c +++ b/lib_generic/crc32.c @@ -180,7 +180,7 @@ uint32_t ZEXPORT crc32_no_comp(uint32_t crc, const Bytef *buf, uInt len) { const uint32_t *tab = crc_table; const uint32_t *b =(uint32_t *)buf; - size_t save_len; + size_t rem_len; #ifdef DYNAMIC_CRC_TABLE if (crc_table_empty) make_crc_table(); @@ -188,14 +188,14 @@ uint32_t ZEXPORT crc32_no_comp(uint32_t crc, const Bytef *buf, uInt len) crc = __cpu_to_le32(crc); /* Align it */ if(((long)b)&3 && len) { - uint8_t *p = (uint8_t *)b - 1; + uint8_t *p = (uint8_t *)b; do { - DO_CRC(*++p); /* use pre increment for speed */ - } while ((--len) && ((long)b)&3 ); - b = (uint32_t *)p + 1; + DO_CRC(*p++); + } while ((--len) && ((long)p)&3); + b = (uint32_t *)p; } - save_len = len & 3; + rem_len = len & 3; len = len >> 2; for (--b; len; --len) { /* load data 32 bits wide, xor data 32 bits wide. */ @@ -205,10 +205,10 @@ uint32_t ZEXPORT crc32_no_comp(uint32_t crc, const Bytef *buf, uInt len) DO_CRC(0); DO_CRC(0); } - len = save_len; + len = rem_len; /* And the last few bytes */ if (len) { - uint8_t *p = (uint8_t *)(b++) - 1; + uint8_t *p = (uint8_t *)(b + 1) - 1; do { DO_CRC(*++p); /* use pre increment for speed */ } while (--len); -- 1.6.4.4 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot