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
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