aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore/new_dynarec/assem_arm.c
diff options
context:
space:
mode:
authornotaz2011-02-17 00:08:48 +0200
committernotaz2011-02-17 17:05:11 +0200
commit0bbd14543fec5fd4f5664b676771812663235252 (patch)
tree6d1b903829320e47b3ca22bb7e547cec487342bd /libpcsxcore/new_dynarec/assem_arm.c
parent3eaa704818ac8d59d31ff362d99a673ee7118641 (diff)
downloadpcsx_rearmed-0bbd14543fec5fd4f5664b676771812663235252.tar.gz
pcsx_rearmed-0bbd14543fec5fd4f5664b676771812663235252.tar.bz2
pcsx_rearmed-0bbd14543fec5fd4f5664b676771812663235252.zip
drc: merge Ari64's patch: 11_reduce_invstub_memory_usage
Diffstat (limited to 'libpcsxcore/new_dynarec/assem_arm.c')
-rw-r--r--libpcsxcore/new_dynarec/assem_arm.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/libpcsxcore/new_dynarec/assem_arm.c b/libpcsxcore/new_dynarec/assem_arm.c
index 0153bfc..a40acf1 100644
--- a/libpcsxcore/new_dynarec/assem_arm.c
+++ b/libpcsxcore/new_dynarec/assem_arm.c
@@ -66,6 +66,37 @@ const u_int jump_vaddr_reg[16] = {
0,
0};
+void invalidate_addr_r0();
+void invalidate_addr_r1();
+void invalidate_addr_r2();
+void invalidate_addr_r3();
+void invalidate_addr_r4();
+void invalidate_addr_r5();
+void invalidate_addr_r6();
+void invalidate_addr_r7();
+void invalidate_addr_r8();
+void invalidate_addr_r9();
+void invalidate_addr_r10();
+void invalidate_addr_r12();
+
+const u_int invalidate_addr_reg[16] = {
+ (int)invalidate_addr_r0,
+ (int)invalidate_addr_r1,
+ (int)invalidate_addr_r2,
+ (int)invalidate_addr_r3,
+ (int)invalidate_addr_r4,
+ (int)invalidate_addr_r5,
+ (int)invalidate_addr_r6,
+ (int)invalidate_addr_r7,
+ (int)invalidate_addr_r8,
+ (int)invalidate_addr_r9,
+ (int)invalidate_addr_r10,
+ 0,
+ (int)invalidate_addr_r12,
+ 0,
+ 0,
+ 0};
+
#include "fpu.h"
unsigned int needs_clear_cache[1<<(TARGET_SIZE_2-17)];
@@ -2195,6 +2226,13 @@ void emit_addsr12(int rs1,int rs2,int rt)
output_w32(0xe0800620|rd_rn_rm(rt,rs1,rs2));
}
+void emit_callne(int a)
+{
+ assem_debug("blne %x\n",a);
+ u_int offset=genjmp(a);
+ output_w32(0x1b000000|offset);
+}
+
// Used to preload hash table entries
void emit_prefetch(void *addr)
{