IPC: Clear X1 when acknowledging a reply

Hardware tests indicate that IOS clears X1 when it acknowledges
an IPC request.
This commit is contained in:
Léo Lam 2018-02-28 17:00:26 +01:00
parent 1a71076e50
commit d029f2a7b6
3 changed files with 7 additions and 0 deletions

View File

@ -211,6 +211,11 @@ static void UpdateInterrupts(u64 userdata, s64 cyclesLate)
!!(ppc_irq_flags & ppc_irq_masks)); !!(ppc_irq_flags & ppc_irq_masks));
} }
void ClearX1()
{
ctrl.X1 = 0;
}
void GenerateAck(u32 _Address) void GenerateAck(u32 _Address)
{ {
ctrl.Y2 = 1; ctrl.Y2 = 1;

View File

@ -42,6 +42,7 @@ void DoState(PointerWrap& p);
void RegisterMMIO(MMIO::Mapping* mmio, u32 base); void RegisterMMIO(MMIO::Mapping* mmio, u32 base);
void ClearX1();
void GenerateAck(u32 _Address); void GenerateAck(u32 _Address);
void GenerateReply(u32 _Address); void GenerateReply(u32 _Address);

View File

@ -629,6 +629,7 @@ void Kernel::UpdateIPC()
if (m_request_queue.size()) if (m_request_queue.size())
{ {
ClearX1();
GenerateAck(m_request_queue.front()); GenerateAck(m_request_queue.front());
u32 command = m_request_queue.front(); u32 command = m_request_queue.front();
m_request_queue.pop_front(); m_request_queue.pop_front();