@@ -871,13 +871,38 @@ load_data(
871871
872872#else
873873
874- #define readSwapU16 (base , offset ) swapU16(*(U16*)((base) + (offset)))
875- #define readSwapU32 (base , offset ) swapU32(*(U32*)((base) + (offset)))
876- #define readSwapU64 (base , offset ) swapU64(*(U64*)((base) + (offset)))
874+ static W2C2_INLINE U16 readSwapU16 (const void * address , U32 offset ) {
875+ U16 result ;
876+ memcpy (& result , address + offset , sizeof (U16 ));
877+ return swapU16 (result );
878+ }
879+
880+ static W2C2_INLINE U32 readSwapU32 (const void * address , U32 offset ) {
881+ U32 result ;
882+ memcpy (& result , address + offset , sizeof (U32 ));
883+ return swapU32 (result );
884+ }
885+
886+ static W2C2_INLINE U64 readSwapU64 (const void * address , U32 offset ) {
887+ U64 result ;
888+ memcpy (& result , address + offset , sizeof (U64 ));
889+ return swapU64 (result );
890+ }
877891
878- #define writeSwapU16 (base , offset , value ) (*(U16*)((base) + (offset)) = swapU16(value))
879- #define writeSwapU32 (base , offset , value ) (*(U32*)((base) + (offset)) = swapU32(value))
880- #define writeSwapU64 (base , offset , value ) (*(U64*)((base) + (offset)) = swapU64(value))
892+ static W2C2_INLINE void writeSwapU16 (void * address , U32 offset , U16 v ) {
893+ v = swapU16 (v );
894+ memcpy (address + offset , & v , sizeof (U16 ));
895+ }
896+
897+ static W2C2_INLINE void writeSwapU32 (void * address , U32 offset , U32 v ) {
898+ v = swapU32 (v );
899+ memcpy (address + offset , & v , sizeof (U32 ));
900+ }
901+
902+ static W2C2_INLINE void writeSwapU64 (void * address , U32 offset , U64 v ) {
903+ v = swapU64 (v );
904+ memcpy (address + offset , & v , sizeof (U64 ));
905+ }
881906
882907#endif
883908
0 commit comments