Skip to content

Commit 4fbeddb

Browse files
committed
bswap: Add st24_be_p() to store 24 bits in big-endian order
Commit 14180d6 ("bswap: Add the ability to store to an unaligned 24 bit field") added st24_le_p() for little endianness, add st24_be_p() equivalent for bit one. Signed-off-by: Philippe Mathieu-Daudé <[email protected]> Reviewed-by: Cédric Le Goater <[email protected]> Reviewed-by: Richard Henderson <[email protected]> Message-Id: <[email protected]>
1 parent c9ba79b commit 4fbeddb

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

include/qemu/bswap.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,14 @@ static inline void bswap64s(uint64_t *s)
3838
#if HOST_BIG_ENDIAN
3939
#define be_bswap(v, size) (v)
4040
#define le_bswap(v, size) glue(__builtin_bswap, size)(v)
41+
#define be_bswap24(v) (v)
4142
#define le_bswap24(v) bswap24(v)
4243
#define be_bswaps(v, size)
4344
#define le_bswaps(p, size) \
4445
do { *p = glue(__builtin_bswap, size)(*p); } while (0)
4546
#else
4647
#define le_bswap(v, size) (v)
48+
#define be_bswap24(v) bswap24(v)
4749
#define le_bswap24(v) (v)
4850
#define be_bswap(v, size) glue(__builtin_bswap, size)(v)
4951
#define le_bswaps(v, size)
@@ -357,6 +359,11 @@ static inline void stw_be_p(void *ptr, uint16_t v)
357359
stw_he_p(ptr, be_bswap(v, 16));
358360
}
359361

362+
static inline void st24_be_p(void *ptr, uint32_t v)
363+
{
364+
st24_he_p(ptr, be_bswap24(v));
365+
}
366+
360367
static inline void stl_be_p(void *ptr, uint32_t v)
361368
{
362369
stl_he_p(ptr, be_bswap(v, 32));

0 commit comments

Comments
 (0)