diff --git a/firmware/export/system.h b/firmware/export/system.h index 1205e9360b..09efbeeda4 100644 --- a/firmware/export/system.h +++ b/firmware/export/system.h @@ -155,6 +155,28 @@ static inline int set_irq_level(int level) return oldlevel; } +static inline unsigned short SWAB16(unsigned short value) + /* + result[15..8] = value[ 7..0]; + result[ 7..0] = value[15..8]; + */ +{ + return (value >> 8) | (value << 8); +} + +static inline unsigned long SWAB32(unsigned long value) + /* + result[31..24] = value[ 7.. 0]; + result[23..16] = value[15.. 8]; + result[15.. 8] = value[23..16]; + result[ 7.. 0] = value[31..24]; + */ +{ + unsigned short hi = SWAB16(value >> 16); + unsigned short lo = SWAB16(value & 0xffff); + return (lo << 16) | hi; +} + #endif #endif