reverted my last changes, fixed unaligned access to make it work
[mono.git] / mono / metadata / mono-endian.h
index 1617f054dabb3fab95a442aac743bd5b039723f4..a51cdc0f77aca5195d48aa5fb02bc4816fc1ed21 100644 (file)
@@ -13,10 +13,24 @@ typedef union {
        double fval;
 } mono_rdouble;
 
+#if NO_UNALIGNED_ACCESS
+
+guint16 mono_read16 (const unsigned char *x);
+guint32 mono_read32 (const unsigned char *x);
+guint64 mono_read64 (const unsigned char *x);
+
+#define read16(x) (mono_read16 ((x)))
+#define read32(x) (mono_read32 ((x)))
+#define read64(x) (mono_read64 ((x)))
+
+#else
+
 #define read16(x) GUINT16_FROM_LE (*((guint16 *) (x)))
 #define read32(x) GUINT32_FROM_LE (*((guint32 *) (x)))
 #define read64(x) GUINT64_FROM_LE (*((guint64 *) (x)))
 
+#endif
+
 #define readr4(x,dest) \
        do {    \
                mono_rfloat mf; \