32x: drc: new debug facility (pdb). Few fixes thanks to it.
[picodrive.git] / cpu / Cyclone / OpLogic.cpp
index d32d34e..d6b8933 100644 (file)
@@ -40,7 +40,7 @@ int OpBtstReg(int op)
 \r
   EaCalcReadNoSE((type>0)?8:-1,0,tea,size,0x003f);\r
 \r
-  if (tea>=0x11)\r
+  if (tea>=0x10)\r
        ot("  and r11,r11,#7  ;@ mem - do mod 8\n");  // size always 0\r
   else ot("  and r11,r11,#31 ;@ reg - do mod 32\n"); // size always 2\r
   ot("\n");\r
@@ -94,7 +94,7 @@ int OpBtstImm(int op)
   EaCalcReadNoSE(-1,0,sea,0,0);\r
   ot("  mov r11,#1\n");\r
   ot("  bic r10,r10,#0x40000000 ;@ Blank Z flag\n");\r
-  if (tea>=0x11)\r
+  if (tea>=0x10)\r
        ot("  and r0,r0,#7    ;@ mem - do mod 8\n");  // size always 0\r
   else ot("  and r0,r0,#0x1F ;@ reg - do mod 32\n"); // size always 2\r
   ot("  mov r11,r11,lsl r0 ;@ Make bit mask\n");\r
@@ -119,6 +119,11 @@ int OpBtstImm(int op)
     if (type==3) ot("  orr r1,r0,r11 ;@ Set bit\n");\r
     ot("\n");\r
     EaWrite(8,   1,tea,size,0x003f,0,0);\r
+#if CYCLONE_FOR_GENESIS && !MEMHANDLERS_CHANGE_CYCLES\r
+    // this is a bit hacky (device handlers might modify cycles)\r
+    if (tea==0x38||tea==0x39)\r
+      ot("  ldr r5,[r7,#0x5c] ;@ Load Cycles\n");\r
+#endif\r
   }\r
 \r
   OpEnd(sea,tea);\r
@@ -301,7 +306,7 @@ int OpSet(int op)
 {\r
   int cc=0,ea=0;\r
   int size=0,use=0,changed_cycles=0;\r
-  char *cond[16]=\r
+  static const char * const cond[16]=\r
   {\r
     "al","", "hi","ls","cc","cs","ne","eq",\r
     "vc","vs","pl","mi","ge","lt","gt","le"\r