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:
parent
1a71076e50
commit
d029f2a7b6
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Reference in New Issue