Move get_unaligned_le32() macros to platform.h
No binary (build failed)
—
(log yok)
| @@ -27,11 +27,17 @@ static uint32_t xz_crc32(const uint8_t *buf, size_t size, uint32_t crc) | |
| return ~crc32_block_endian0(~crc, buf, size, global_crc32_table); | |
| } | |
| - | /* We use arch-optimized unaligned accessors */ |
| - | #define get_unaligned_le32(buf) ({ uint32_t v; move_from_unaligned32(v, buf); SWAP_LE32(v); }) |
| - | #define get_unaligned_be32(buf) ({ uint32_t v; move_from_unaligned32(v, buf); SWAP_BE32(v); }) |
| - | #define put_unaligned_le32(val, buf) move_to_unaligned32(buf, SWAP_LE32(val)) |
| - | #define put_unaligned_be32(val, buf) move_to_unaligned32(buf, SWAP_BE32(val)) |
| + | /* We use arch-optimized unaligned fixed-endian accessors. |
| + | * They have been moved to libbb (proved to be useful elsewhere as well), |
| + | * just check that we have them defined: |
| + | */ |
| + | #if !defined(get_unaligned_le32) \ |
| + | || !defined(get_unaligned_be32) \ |
| + | || !defined(put_unaligned_le32) \ |
| + | || !defined(put_unaligned_be32) |
| + | # error get_unaligned_le32 accessors are not defined |
| + | #endif |
| + | #define get_le32(p) (*(uint32_t*)(p)) |
| #include "unxz/xz_dec_bcj.c" | |
| #include "unxz/xz_dec_lzma2.c" | |
| @@ -247,6 +247,12 @@ typedef uint64_t bb__aliased_uint64_t FIX_ALIASING; | |
| } while (0) | |
| #endif | |
| + | /* Unaligned, fixed-endian accessors */ |
| + | #define get_unaligned_le32(buf) ({ uint32_t v; move_from_unaligned32(v, buf); SWAP_LE32(v); }) |
| + | #define get_unaligned_be32(buf) ({ uint32_t v; move_from_unaligned32(v, buf); SWAP_BE32(v); }) |
| + | #define put_unaligned_le32(val, buf) move_to_unaligned32(buf, SWAP_LE32(val)) |
| + | #define put_unaligned_be32(val, buf) move_to_unaligned32(buf, SWAP_BE32(val)) |
| + | |
| /* ---- Size-saving "small" ints (arch-dependent) ----------- */ | |
| @@ -40,10 +40,6 @@ | |
| */ | |
| #include "tls.h" | |
| - | /* TODO: grep for this and move to libbb */ |
| - | #define get_unaligned_be32(buf) ({ uint32_t v; move_from_unaligned32(v, buf); SWAP_BE32(v); }) |
| - | |
| - | |
| // The lookup-tables are marked const so they can be placed in read-only storage instead of RAM | |
| // The numbers below can be computed dynamically trading ROM for RAM - | |
| // This can be useful in (embedded) bootloader applications, where ROM is often limited. | |