From: Eric Biggers Date: Sat, 18 Mar 2023 07:17:54 +0000 (-0700) Subject: Add unaligned access helpers for be32 X-Git-Tag: v1.14.0~93 X-Git-Url: https://wimlib.net/git/?a=commitdiff_plain;h=da8b869bbe7cf8e9a213d4657747c2fd6c0b9340;p=wimlib Add unaligned access helpers for be32 --- diff --git a/include/wimlib/unaligned.h b/include/wimlib/unaligned.h index 7db293da..5c6aa33b 100644 --- a/include/wimlib/unaligned.h +++ b/include/wimlib/unaligned.h @@ -83,6 +83,16 @@ get_unaligned_le32(const u8 *p) ((u32)p[1] << 8) | p[0]; } +static forceinline u32 +get_unaligned_be32(const u8 *p) +{ + if (UNALIGNED_ACCESS_IS_FAST) + return be32_to_cpu(load_be32_unaligned(p)); + else + return ((u32)p[0] << 24) | ((u32)p[1] << 16) | + ((u32)p[2] << 8) | p[3]; +} + static forceinline void put_unaligned_le16(u16 v, u8 *p) { @@ -107,4 +117,17 @@ put_unaligned_le32(u32 v, u8 *p) } } +static forceinline void +put_unaligned_be32(u32 v, u8 *p) +{ + if (UNALIGNED_ACCESS_IS_FAST) { + store_be32_unaligned(cpu_to_be32(v), p); + } else { + p[0] = (u8)(v >> 24); + p[1] = (u8)(v >> 16); + p[2] = (u8)(v >> 8); + p[3] = (u8)(v >> 0); + } +} + #endif /* _WIMLIB_UNALIGNED_H */