1 #ifndef _MONO_METADATA_ENDIAN_H_
2 #define _MONO_METADATA_ENDIAN_H_ 1
14 unsigned char cval [8];
17 #if defined(__s390x__)
19 #define read16(x) s390x_read16(*(guint16 *)(x))
20 #define read32(x) s390x_read32(*(guint32 *)(x))
21 #define read64(x) s390x_read64(*(guint64 *)(x))
23 static __inline__ guint16
24 s390x_read16(guint16 x)
28 __asm__ (" lrvr %0,%1\n"
30 : "=r" (ret) : "r" (x));
35 static __inline__ guint32
36 s390x_read32(guint32 x)
40 __asm__ (" lrvr %0,%1\n"
41 : "=r" (ret) : "r" (x));
46 static __inline__ guint64
47 s390x_read64(guint64 x)
51 __asm__ (" lrvgr %0,%1\n"
52 : "=r" (ret) : "r" (x));
59 # if NO_UNALIGNED_ACCESS
61 guint16 mono_read16 (const unsigned char *x);
62 guint32 mono_read32 (const unsigned char *x);
63 guint64 mono_read64 (const unsigned char *x);
65 #define read16(x) (mono_read16 ((const unsigned char *)(x)))
66 #define read32(x) (mono_read32 ((const unsigned char *)(x)))
67 #define read64(x) (mono_read64 ((const unsigned char *)(x)))
71 #define read16(x) GUINT16_FROM_LE (*((const guint16 *) (x)))
72 #define read32(x) GUINT32_FROM_LE (*((const guint32 *) (x)))
73 #define read64(x) GUINT64_FROM_LE (*((const guint64 *) (x)))
79 #define readr4(x,dest) \
82 mf.ival = read32 ((x)); \
86 #define readr8(x,dest) \
89 mf.ival = read64 ((x)); \
93 #endif /* _MONO_METADATA_ENDIAN_H_ */