1 #ifndef __MONO_MINI_PPC_H__
2 #define __MONO_MINI_PPC_H__
4 #include <mono/arch/ppc/ppc-codegen.h>
6 #define MONO_MAX_IREGS 32
7 #define MONO_MAX_FREGS 32
9 #define MONO_ARCH_FRAME_ALIGNMENT 4
11 /* fixme: align to 16byte instead of 32byte (we align to 32byte to get
12 * reproduceable results for benchmarks */
13 #define MONO_ARCH_CODE_ALIGNMENT 32
15 void ppc_patch (guchar *code, guchar *target);
18 gpointer previous_lmf;
23 gulong iregs [19]; /* 13..31 */
24 gdouble fregs [20]; /* 14..31 */
27 #define MONO_ARCH_EMULATE_FCONV_TO_I8 1
28 #define MONO_ARCH_EMULATE_LCONV_TO_R8 1
29 #define MONO_ARCH_EMULATE_LCONV_TO_R4 1
30 #define MONO_ARCH_EMULATE_LCONV_TO_R8_UN 1
31 #define MONO_ARCH_EMULATE_FREM 1
33 /* deal with some of the ABI differences here */
35 #define PPC_RET_ADDR_OFFSET 8
36 #define PPC_STACK_ALIGNMENT 16
37 #define PPC_STACK_PARAM_OFFSET 24
38 #define PPC_MINIMAL_STACK_SIZE 24
39 #define PPC_FIRST_ARG_REG ppc_r3
40 #define PPC_LAST_ARG_REG ppc_r10
41 #define PPC_FIRST_FPARG_REG ppc_f1
42 #define PPC_LAST_FPARG_REG ppc_f13
43 #define PPC_PASS_STRUCTS_BY_VALUE 1
46 #define PPC_RET_ADDR_OFFSET 4
47 #define PPC_STACK_ALIGNMENT 16
48 #define PPC_STACK_PARAM_OFFSET 8
49 #define PPC_MINIMAL_STACK_SIZE 8
50 #define PPC_FIRST_ARG_REG ppc_r3
51 #define PPC_LAST_ARG_REG ppc_r10
52 #define PPC_FIRST_FPARG_REG ppc_f1
53 #define PPC_LAST_FPARG_REG ppc_f8
54 /* set the next to 0 once inssel-ppc.brg is updated */
55 #define PPC_PASS_STRUCTS_BY_VALUE 1
56 #define PPC_SMALL_RET_STRUCT_IN_REG 1
59 #define PPC_NUM_REG_ARGS (PPC_LAST_ARG_REG-PPC_FIRST_ARG_REG+1)
60 #define PPC_NUM_REG_FPARGS (PPC_LAST_FPARG_REG-PPC_FIRST_FPARG_REG+1)
62 #endif /* __MONO_MINI_PPC_H__ */