1 #ifndef __MONO_MINI_S390_H__
2 #define __MONO_MINI_S390_H__
4 #include <mono/arch/s390/s390-codegen.h>
7 #define MONO_MAX_IREGS 16
8 #define MONO_MAX_FREGS 16
10 #define MONO_ARCH_FRAME_ALIGNMENT 8
12 /* fixme: align to 16byte instead of 32byte (we align to 32byte to get
13 * reproduceable results for benchmarks */
14 #define MONO_ARCH_CODE_ALIGNMENT 32
17 gpointer previous_lmf;
26 typedef struct ucontext MonoContext;
28 typedef struct MonoCompileArch {
31 #define MONO_ARCH_EMULATE_FCONV_TO_I8 1
32 #define MONO_ARCH_EMULATE_LCONV_TO_R8 1
33 #define MONO_ARCH_EMULATE_LCONV_TO_R4 1
34 #define MONO_ARCH_EMULATE_LCONV_TO_R8_UN 1
35 #define MONO_ARCH_EMULATE_LMUL 1
37 #define MONO_ARCH_USE_SIGACTION 1
39 #define S390_STACK_ALIGNMENT 8
40 #define S390_FIRST_ARG_REG s390_r2
41 #define S390_LAST_ARG_REG s390_r6
42 #define S390_FIRST_FPARG_REG s390_f0
43 #define S390_LAST_FPARG_REG s390_f2
44 #define S390_PASS_STRUCTS_BY_VALUE 1
45 #define S390_SMALL_RET_STRUCT_IN_REG 1
47 #define S390_NUM_REG_ARGS (S390_LAST_ARG_REG-S390_FIRST_ARG_REG+1)
48 #define S390_NUM_REG_FPARGS (S390_LAST_FPARG_REG-S390_FIRST_FPARG_REG)
50 #define S390_OFFSET(b, t) (guchar *) ((gint32) (b) - (gint32) (t))
51 #define S390_RELATIVE(b, t) (guchar *) ((((gint32) (b) - (gint32) (t))) / 2)
53 #define CODEPTR(c, o) (o) = (short *) ((guint32) c - 2)
54 #define PTRSLOT(c, o) *(o) = (short) ((guint32) c - (guint32) (o) + 2)/2
57 #define S390_ALIGN(v, a) (((a) > 0 ? (((v) + ((a) - 1)) & ~((a) - 1)) : (v)))
60 s390_patch (guchar *code, gint32 target)
62 gint32 *offset = (gint32 *) code;
69 #endif /* __MONO_MINI_S390_H__ */