gfx_cd finished, bugfixes
[picodrive.git] / cpu / Cyclone / Main.cpp
index aca7f4f..3bb129d 100644 (file)
@@ -86,11 +86,10 @@ static void PrintException(int ints)
 void CheckInterrupt(int op)\r
 {\r
   ot(";@ CheckInterrupt:\n");\r
-  ot("  ldr r0,[r7,#0x44]\n"); // same as  ldrb r0,[r7,#0x47]\r
-  ot("  movs r0,r0,lsr #24 ;@ Get IRQ level (loading word is faster)\n");\r
+  ot("  ldr r1,[r7,#0x44] ;@ Get SR high T_S__III and irq level\n");\r
+  ot("  movs r0,r1,lsr #24 ;@ Get IRQ level\n"); // same as  ldrb r0,[r7,#0x47]\r
   ot("  beq NoInts%x\n",op);\r
   ot("  cmp r0,#6 ;@ irq>6 ?\n");\r
-  ot("  ldrleb r1,[r7,#0x44] ;@ Get SR high: T_S__III\n");\r
   ot("  andle r1,r1,#7 ;@ Get interrupt mask\n");\r
   ot("  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?\n");\r
   ot("  blgt CycloneDoInterrupt\n");\r
@@ -113,15 +112,14 @@ static void PrintFramework()
   ot("  ldr r5,[r7,#0x5c]  ;@ r5 = Cycles\n");\r
   ot("  ldr r4,[r7,#0x40]  ;@ r4 = Current PC + Memory Base\n");\r
   ot("                     ;@ r8 = Current Opcode\n");\r
-  ot("  ldr r0,[r7,#0x44]\n");\r
+  ot("  ldr r1,[r7,#0x44]  ;@ Get SR high T_S__III and irq level\n");\r
   ot("  mov r9,r9,lsl #28  ;@ r9 = Flags 0xf0000000, cpsr format\n");\r
   ot("                     ;@ r10 = Source value / Memory Base\n");\r
   ot("\n");\r
   ot(";@ CheckInterrupt:\n");\r
-  ot("  movs r0,r0,lsr #24 ;@ Get IRQ level\n"); // same as  ldrb r0,[r7,#0x47]\r
+  ot("  movs r0,r1,lsr #24 ;@ Get IRQ level\n"); // same as  ldrb r0,[r7,#0x47]\r
   ot("  beq NoInts0\n");\r
   ot("  cmp r0,#6 ;@ irq>6 ?\n");\r
-  ot("  ldrleb r1,[r7,#0x44] ;@ Get SR high: T_S__III\n");\r
   ot("  andle r1,r1,#7 ;@ Get interrupt mask\n");\r
   ot("  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?\n");\r
   ot("  blgt CycloneDoInterrupt\n");\r