unaligned.h: Add macros for reading and writing little-endian 32-bit words.
authorMark Wooding <mdw@distorted.org.uk>
Wed, 26 Apr 2017 10:53:05 +0000 (11:53 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Wed, 25 Sep 2019 12:46:59 +0000 (13:46 +0100)
Signed-off-by: Mark Wooding <mdw@distorted.org.uk>
unaligned.h

index 2c48d0e..6f4f163 100644 (file)
@@ -31,6 +31,9 @@
 #define put_uint32(a,v) do { (a)[0]=(v)>>24; (a)[1]=((v)&0xff0000)>>16; \
 (a)[2]=((v)&0xff00)>>8; (a)[3]=(v)&0xff; } while(0)
 
+#define put_uint32_le(a, v) do { (a)[0]=(v)&0xff; (a)[1]=((v)&0xff00)>>8; \
+(a)[2]=((v)&0xff0000)>>16; (a)[3]=(v)>>24; } while(0)
+
 #define put_uint16(a,v) do {(a)[0]=((v)&0xff00)>>8; (a)[1]=(v)&0xff;} while(0)
 
 #define put_uint8(a,v) do {(a)[0]=((v)&0xff);} while(0)
   (((uint32_t)(a)[0]<<24) | ((uint32_t)(a)[1]<<16) |   \
    ((uint32_t)(a)[2]<<8)  |  (uint32_t)(a)[3])
 
+#define get_uint32_le(a)                               \
+  (((uint32_t)(a)[0])     | ((uint32_t)(a)[1]<<8) |    \
+   ((uint32_t)(a)[2]<<16) |  (uint32_t)(a)[3]<<24)
+
 #define get_uint16(a) (((uint16_t)(a)[0]<<8)|(uint16_t)(a)[1])
 
 #define get_uint8(a) (((uint8_t)(a)[0]))