mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-24 11:43:05 +01:00
Weird MFC_PUTR_CMD handling
This commit is contained in:
parent
c9a421f12f
commit
4aa6ddf3dd
@ -4,13 +4,16 @@
|
||||
enum
|
||||
{
|
||||
MFC_PUT_CMD = 0x20, MFC_PUTB_CMD = 0x21, MFC_PUTF_CMD = 0x22,
|
||||
MFC_PUTR_CMD = 0x30, MFC_PUTRB_CMD = 0x31, MFC_PUTRF_CMD = 0x32,
|
||||
MFC_GET_CMD = 0x40, MFC_GETB_CMD = 0x41, MFC_GETF_CMD = 0x42,
|
||||
MFC_PUTL_CMD = 0x24, MFC_PUTLB_CMD = 0x25, MFC_PUTLF_CMD = 0x26,
|
||||
MFC_PUTRL_CMD = 0x34, MFC_PUTRLB_CMD = 0x35, MFC_PUTRLF_CMD = 0x36,
|
||||
MFC_GETL_CMD = 0x44, MFC_GETLB_CMD = 0x45, MFC_GETLF_CMD = 0x46,
|
||||
MFC_GETLLAR_CMD = 0xD0,
|
||||
MFC_PUTLLC_CMD = 0xB4,
|
||||
MFC_PUTLLUC_CMD = 0xB0,
|
||||
MFC_PUTQLLUC_CMD = 0xB8,
|
||||
|
||||
MFC_SNDSIG_CMD = 0xA0, MFC_SNDSIGB_CMD = 0xA1, MFC_SNDSIGF_CMD = 0xA2,
|
||||
MFC_BARRIER_CMD = 0xC0,
|
||||
MFC_EIEIO_CMD = 0xC8,
|
||||
@ -19,6 +22,8 @@ enum
|
||||
MFC_BARRIER_MASK = 0x01,
|
||||
MFC_FENCE_MASK = 0x02,
|
||||
MFC_LIST_MASK = 0x04,
|
||||
MFC_START_MASK = 0x08, // ???
|
||||
MFC_RESULT_MASK = 0x10, // ???
|
||||
MFC_MASK_CMD = 0xffff,
|
||||
};
|
||||
|
||||
|
@ -568,8 +568,7 @@ public:
|
||||
// LS access
|
||||
ea = spu->dmac.ls_offset + addr;
|
||||
}
|
||||
else if ((cmd & ~(MFC_BARRIER_MASK | MFC_FENCE_MASK | MFC_LIST_MASK)) == MFC_PUT_CMD &&
|
||||
size == 4 && (addr == SYS_SPU_THREAD_SNR1 || addr == SYS_SPU_THREAD_SNR2))
|
||||
else if ((cmd & MFC_PUT_CMD) && size == 4 && (addr == SYS_SPU_THREAD_SNR1 || addr == SYS_SPU_THREAD_SNR2))
|
||||
{
|
||||
spu->WriteSNR(SYS_SPU_THREAD_SNR2 == addr, Memory.Read32(dmac.ls_offset + lsa));
|
||||
return true;
|
||||
@ -587,7 +586,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
switch(cmd & ~(MFC_BARRIER_MASK | MFC_FENCE_MASK | MFC_LIST_MASK))
|
||||
switch(cmd & ~(MFC_BARRIER_MASK | MFC_FENCE_MASK | MFC_LIST_MASK | MFC_RESULT_MASK))
|
||||
{
|
||||
case MFC_PUT_CMD:
|
||||
{
|
||||
@ -694,10 +693,12 @@ public:
|
||||
switch(op & ~(MFC_BARRIER_MASK | MFC_FENCE_MASK))
|
||||
{
|
||||
case MFC_PUT_CMD:
|
||||
case MFC_PUTR_CMD: // ???
|
||||
case MFC_GET_CMD:
|
||||
{
|
||||
if (Ini.HLELogging.GetValue()) ConLog.Write("DMA %s%s%s: lsa = 0x%x, ea = 0x%llx, tag = 0x%x, size = 0x%x, cmd = 0x%x",
|
||||
wxString(op & MFC_PUT_CMD ? "PUT" : "GET").wx_str(),
|
||||
if (Ini.HLELogging.GetValue()) ConLog.Write("DMA %s%s%s%s: lsa = 0x%x, ea = 0x%llx, tag = 0x%x, size = 0x%x, cmd = 0x%x",
|
||||
wxString(op & MFC_PUT_CMD ? "PUT" : "GET").wx_str(),
|
||||
wxString(op & MFC_RESULT_MASK ? "R" : "").wx_str(),
|
||||
wxString(op & MFC_BARRIER_MASK ? "B" : "").wx_str(),
|
||||
wxString(op & MFC_FENCE_MASK ? "F" : "").wx_str(),
|
||||
lsa, ea, tag, size, cmd);
|
||||
@ -719,10 +720,12 @@ public:
|
||||
break;
|
||||
|
||||
case MFC_PUTL_CMD:
|
||||
case MFC_PUTRL_CMD: // ???
|
||||
case MFC_GETL_CMD:
|
||||
{
|
||||
if (Ini.HLELogging.GetValue()) ConLog.Write("DMA %s%s%s: lsa = 0x%x, list = 0x%llx, tag = 0x%x, size = 0x%x, cmd = 0x%x",
|
||||
wxString(op & MFC_PUT_CMD ? "PUTL" : "GETL").wx_str(),
|
||||
if (Ini.HLELogging.GetValue()) ConLog.Write("DMA %s%s%s%s: lsa = 0x%x, list = 0x%llx, tag = 0x%x, size = 0x%x, cmd = 0x%x",
|
||||
wxString(op & MFC_PUT_CMD ? "PUT" : "GET").wx_str(),
|
||||
wxString(op & MFC_RESULT_MASK ? "RL" : "L").wx_str(),
|
||||
wxString(op & MFC_BARRIER_MASK ? "B" : "").wx_str(),
|
||||
wxString(op & MFC_FENCE_MASK ? "F" : "").wx_str(),
|
||||
lsa, ea, tag, size, cmd);
|
||||
|
Loading…
Reference in New Issue
Block a user