aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archival/libarchive/decompress_unxz.c16
-rw-r--r--include/platform.h6
-rw-r--r--networking/tls_aes.c4
3 files changed, 17 insertions, 9 deletions
diff --git a/archival/libarchive/decompress_unxz.c b/archival/libarchive/decompress_unxz.c
index cd32cc745..350e5358a 100644
--- a/archival/libarchive/decompress_unxz.c
+++ b/archival/libarchive/decompress_unxz.c
@@ -27,11 +27,17 @@ static uint32_t xz_crc32(const uint8_t *buf, size_t size, uint32_t crc)
27 return ~crc32_block_endian0(~crc, buf, size, global_crc32_table); 27 return ~crc32_block_endian0(~crc, buf, size, global_crc32_table);
28} 28}
29 29
30/* We use arch-optimized unaligned accessors */ 30/* We use arch-optimized unaligned fixed-endian accessors.
31#define get_unaligned_le32(buf) ({ uint32_t v; move_from_unaligned32(v, buf); SWAP_LE32(v); }) 31 * They have been moved to libbb (proved to be useful elsewhere as well),
32#define get_unaligned_be32(buf) ({ uint32_t v; move_from_unaligned32(v, buf); SWAP_BE32(v); }) 32 * just check that we have them defined:
33#define put_unaligned_le32(val, buf) move_to_unaligned32(buf, SWAP_LE32(val)) 33 */
34#define put_unaligned_be32(val, buf) move_to_unaligned32(buf, SWAP_BE32(val)) 34#if !defined(get_unaligned_le32) \
35 || !defined(get_unaligned_be32) \
36 || !defined(put_unaligned_le32) \
37 || !defined(put_unaligned_be32)
38# error get_unaligned_le32 accessors are not defined
39#endif
40#define get_le32(p) (*(uint32_t*)(p))
35 41
36#include "unxz/xz_dec_bcj.c" 42#include "unxz/xz_dec_bcj.c"
37#include "unxz/xz_dec_lzma2.c" 43#include "unxz/xz_dec_lzma2.c"
diff --git a/include/platform.h b/include/platform.h
index 6c7d03dc7..8210e5c49 100644
--- a/include/platform.h
+++ b/include/platform.h
@@ -247,6 +247,12 @@ typedef uint64_t bb__aliased_uint64_t FIX_ALIASING;
247} while (0) 247} while (0)
248#endif 248#endif
249 249
250/* Unaligned, fixed-endian accessors */
251#define get_unaligned_le32(buf) ({ uint32_t v; move_from_unaligned32(v, buf); SWAP_LE32(v); })
252#define get_unaligned_be32(buf) ({ uint32_t v; move_from_unaligned32(v, buf); SWAP_BE32(v); })
253#define put_unaligned_le32(val, buf) move_to_unaligned32(buf, SWAP_LE32(val))
254#define put_unaligned_be32(val, buf) move_to_unaligned32(buf, SWAP_BE32(val))
255
250 256
251/* ---- Size-saving "small" ints (arch-dependent) ----------- */ 257/* ---- Size-saving "small" ints (arch-dependent) ----------- */
252 258
diff --git a/networking/tls_aes.c b/networking/tls_aes.c
index 6992f1c90..c137442e9 100644
--- a/networking/tls_aes.c
+++ b/networking/tls_aes.c
@@ -40,10 +40,6 @@
40 */ 40 */
41#include "tls.h" 41#include "tls.h"
42 42
43/* TODO: grep for this and move to libbb */
44#define get_unaligned_be32(buf) ({ uint32_t v; move_from_unaligned32(v, buf); SWAP_BE32(v); })
45
46
47// The lookup-tables are marked const so they can be placed in read-only storage instead of RAM 43// The lookup-tables are marked const so they can be placed in read-only storage instead of RAM
48// The numbers below can be computed dynamically trading ROM for RAM - 44// The numbers below can be computed dynamically trading ROM for RAM -
49// This can be useful in (embedded) bootloader applications, where ROM is often limited. 45// This can be useful in (embedded) bootloader applications, where ROM is often limited.