diff --git a/desmume/src/bios.cpp b/desmume/src/bios.cpp index c1394bc96..5c815c84f 100644 --- a/desmume/src/bios.cpp +++ b/desmume/src/bios.cpp @@ -211,7 +211,30 @@ TEMPLATE static u32 WaitByLoop() return cpu->R[0] * 4; } -//u32 oldmode[2]; +TEMPLATE static u32 wait4IRQ() +{ + //execute= FALSE; + u32 instructAddr = cpu->instruct_adr; + if(cpu->wirq) + { + if(!cpu->waitIRQ) + { + cpu->waitIRQ = 0; + cpu->wirq = 0; + //cpu->switchMode(oldmode[cpu->proc_ID]); + return 1; + } + cpu->R[15] = instructAddr; + cpu->next_instruction = instructAddr; + return 1; + } + cpu->waitIRQ = 1; + cpu->wirq = 1; + cpu->R[15] = instructAddr; + cpu->next_instruction = instructAddr; + //oldmode[cpu->proc_ID] = cpu->switchMode(SVC); + return 1; +} TEMPLATE u32 intrWaitARM() { @@ -258,31 +281,6 @@ TEMPLATE static u32 waitVBlankARM() return intrWaitARM(); } -TEMPLATE static u32 wait4IRQ() -{ - //execute= FALSE; - u32 instructAddr = cpu->instruct_adr; - if(cpu->wirq) - { - if(!cpu->waitIRQ) - { - cpu->waitIRQ = 0; - cpu->wirq = 0; - //cpu->switchMode(oldmode[cpu->proc_ID]); - return 1; - } - cpu->R[15] = instructAddr; - cpu->next_instruction = instructAddr; - return 1; - } - cpu->waitIRQ = 1; - cpu->wirq = 1; - cpu->R[15] = instructAddr; - cpu->next_instruction = instructAddr; - //oldmode[cpu->proc_ID] = cpu->switchMode(SVC); - return 1; -} - TEMPLATE static u32 sleep() { _MMU_write08(0x04000301, 0xC0);