gte_neon: hook into recompiler
authornotaz <notasas@gmail.com>
Sat, 26 Feb 2011 21:56:06 +0000 (23:56 +0200)
committernotaz <notasas@gmail.com>
Mon, 28 Feb 2011 23:06:37 +0000 (01:06 +0200)
libpcsxcore/new_dynarec/assem_arm.c
libpcsxcore/new_dynarec/emu_if.c

index eed584e..9530410 100644 (file)
@@ -3757,10 +3757,11 @@ void c2op_assemble(int i,struct regstat *i_regs)
 
   if (gte_handlers[c2op]!=NULL) {
     int cc=get_reg(i_regs->regmap,CCREG);
-    emit_movimm(source[i],temp); // opcode
+    emit_movimm(source[i],1); // opcode
     if (cc>=0&&gte_cycletab[c2op])
-      emit_addimm(cc,gte_cycletab[c2op]/2,cc); // XXX: cound just adjust ccadj?
-    emit_writeword(temp,(int)&psxRegs.code);
+      emit_addimm(cc,gte_cycletab[c2op]/2,cc); // XXX: could just adjust ccadj?
+    emit_addimm(FP,(int)&psxRegs.CP2D.r[0]-(int)&dynarec_local,0); // cop2 regs
+    emit_writeword(1,(int)&psxRegs.code);
     emit_call((int)gte_handlers[c2op]);
   }
 
index b44feb3..f337b65 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Gražvydas "notaz" Ignotas, 2010
+ * (C) Gražvydas "notaz" Ignotas, 2010-2011
  *
  * This work is licensed under the terms of GNU GPL version 2 or later.
  * See the COPYING file in the top-level directory.
@@ -14,6 +14,7 @@
 #include "../cdrom.h"
 #include "../psxdma.h"
 #include "../mdec.h"
+#include "../gte_neon.h"
 
 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
 
@@ -163,7 +164,12 @@ static int ari64_init()
        for (i = 0; i < ARRAY_SIZE(gte_handlers); i++)
                if (psxCP2[i] != psxNULL)
                        gte_handlers[i] = psxCP2[i];
-
+#ifdef __arm__
+       gte_handlers[0x01] = gteRTPS_neon;
+       gte_handlers[0x30] = gteRTPT_neon;
+       gte_handlers[0x12] = gteMVMVA_neon;
+       gte_handlers[0x06] = gteNCLIP_neon;
+#endif
        psxH_ptr = psxH;
 
        return 0;