summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/arm/include/endian.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/arm/include/endian.h b/sys/arm/include/endian.h
index c99eaf7..715a945 100644
--- a/sys/arm/include/endian.h
+++ b/sys/arm/include/endian.h
@@ -99,13 +99,15 @@ __bswap32_var(__uint32_t v)
static __inline __uint16_t
__bswap16_var(__uint16_t v)
{
+ __uint32_t ret = v & 0xffff;
+
__asm __volatile(
"mov %0, %0, ror #8\n"
"orr %0, %0, %0, lsr #16\n"
"bic %0, %0, %0, lsl #16"
- : "+r" (v));
+ : "+r" (ret));
- return (v);
+ return ((__uint16_t)ret);
}
#ifdef __OPTIMIZE__
OpenPOWER on IntegriCloud