drc: prefer callee-saved regs on alloc
[pcsx_rearmed.git] / libpcsxcore / new_dynarec / assem_arm.h
1 #define HOST_IMM8 1
2 #define HAVE_CMOV_IMM 1
3 #define HAVE_CONDITIONAL_CALL 1
4
5 /* ARM calling convention:
6    r0-r3, r12: caller-save
7    r4-r11: callee-save */
8
9 /* GCC register naming convention:
10    r10 = sl (base)
11    r11 = fp (frame pointer)
12    r12 = ip (scratch)
13    r13 = sp (stack pointer)
14    r14 = lr (link register)
15    r15 = pc (program counter) */
16
17 #define HOST_REGS 13
18 #define HOST_CCREG 10
19 #define HOST_BTREG 8
20 #define EXCLUDE_REG 11
21
22 // Note: FP is set to &dynarec_local when executing generated code.
23 // Thus the local variables are actually global and not on the stack.
24 #define FP 11
25 #define LR 14
26 #define HOST_TEMPREG 14
27
28 #ifndef __MACH__
29 #define CALLER_SAVE_REGS 0x100f
30 #else
31 #define CALLER_SAVE_REGS 0x120f
32 #endif
33 #define PREFERRED_REG_FIRST 4
34 #define PREFERRED_REG_LAST  9
35
36 extern char *invc_ptr;
37
38 #define TARGET_SIZE_2 24 // 2^24 = 16 megabytes
39
40 struct tramp_insns
41 {
42   u_int ldrpc;
43 };
44