//////////////////////
#define LITTLE_ENDIAN
//////////////////////
// U16/U32 endian handlers
#ifdef LITTLE_ENDIAN
// => 16bit: (LSB,MSB), 32bit: (LSW,MSW) or (LSB0,LSB1,LSB2,LSB3) or
//(MSB3,MSB2,MSB1,MSB0)
#define MSB(u16) (((U8* )&u16)[1])
#define LSB(u16) (((U8* )&u16)[0])
#define MSW(u32) (((U16*)&u32)[1])
#define LSW(u32) (((U16*)&u32)[0])
#define MSB0(u32) (((U8* )&u32)[3])
#define MSB1(u32) (((U8* )&u32)[2])
#define MSB2(u32) (((U8* )&u32)[1])
#define MSB3(u32) (((U8* )&u32)[0])
#define LSB0(u32) MSB3(u32)
#define LSB1(u32) MSB2(u32)
#define LSB2(u32) MSB1(u32)
#define LSB3(u32) MSB0(u32)
#else
// BIG_ENDIAN => 16bit: (MSB,LSB), 32bit: (MSW,LSW) or
//(LSB3,LSB2,LSB1,LSB0) or (MSB0,MSB1,MSB2,MSB3)
#define MSB(u16) (((U8* )&u16)[0])
#define LSB(u16) (((U8* )&u16)[1])
#define MSW(u32) (((U16*)&u32)[0])
#define LSW(u32) (((U16*)&u32)[1])
#define MSB0(u32) (((U8* )&u32)[0])
#define MSB1(u32) (((U8* )&u32)[1])
#define MSB2(u32) (((U8* )&u32)[2])
#define MSB3(u32) (((U8* )&u32)[3])
#define LSB0(u32) MSB3(u32)
#define LSB1(u32) MSB2(u32)
#define LSB2(u32) MSB1(u32)
#define LSB3(u32) MSB0(u32)
#endif