bitvec: Fix unaligned memory access in osmo_revbytebits_buf

The undefined behavior sanitizer found the 32bit load from an
unaligned memory address. This will cause an exception on ARMv5te
and a manual fix-up.

[hfreyther: On armv6, x86 the usage of memcpy leads to shorter
amount of instructions but on armv5te the memcpy is not expanded
leading to a branch. Use the version of max until we have the time
to benchmark it]

Sponsored-by: On-Waves ehf
diff --git a/src/bits.c b/src/bits.c
index 01d7e73..a0a9d9e 100644
--- a/src/bits.c
+++ b/src/bits.c
@@ -221,8 +221,7 @@
 	}
 
 	for (i = unaligned_cnt; i + 3 < len; i += 4) {
-		uint32_t *cur = (uint32_t *) (buf + i);
-		*cur = osmo_revbytebits_32(*cur);
+		osmo_store32be(osmo_revbytebits_32(osmo_load32be(buf + i)), buf + i);
 		len_remain -= 4;
 	}