fix bug with IPC FIFO IRQs
This commit is contained in:
parent
8ea2aaad5a
commit
b10a0d64a2
6
NDS.cpp
6
NDS.cpp
|
@ -1433,8 +1433,9 @@ void ARM9IOWrite32(u32 addr, u32 val)
|
||||||
IPCFIFOCnt9 |= 0x4000;
|
IPCFIFOCnt9 |= 0x4000;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
bool wasempty = IPCFIFO9->IsEmpty();
|
||||||
IPCFIFO9->Write(val);
|
IPCFIFO9->Write(val);
|
||||||
if (IPCFIFOCnt7 & 0x0400)
|
if ((IPCFIFOCnt7 & 0x0400) && wasempty)
|
||||||
TriggerIRQ(1, IRQ_IPCRecv);
|
TriggerIRQ(1, IRQ_IPCRecv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1736,8 +1737,9 @@ void ARM7IOWrite32(u32 addr, u32 val)
|
||||||
IPCFIFOCnt7 |= 0x4000;
|
IPCFIFOCnt7 |= 0x4000;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
bool wasempty = IPCFIFO7->IsEmpty();
|
||||||
IPCFIFO7->Write(val);
|
IPCFIFO7->Write(val);
|
||||||
if (IPCFIFOCnt9 & 0x0400)
|
if ((IPCFIFOCnt9 & 0x0400) && wasempty)
|
||||||
TriggerIRQ(0, IRQ_IPCRecv);
|
TriggerIRQ(0, IRQ_IPCRecv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,7 +67,7 @@
|
||||||
|
|
||||||
1481037554 c:\documents\sources\melonds\cp15.h
|
1481037554 c:\documents\sources\melonds\cp15.h
|
||||||
|
|
||||||
1484524458 source:c:\documents\sources\melonds\cp15.cpp
|
1484616493 source:c:\documents\sources\melonds\cp15.cpp
|
||||||
<stdio.h>
|
<stdio.h>
|
||||||
"NDS.h"
|
"NDS.h"
|
||||||
"ARM.h"
|
"ARM.h"
|
||||||
|
|
Loading…
Reference in New Issue