fix barrier type mfc transfers

This commit is contained in:
eladash 2018-07-10 11:25:11 +03:00 committed by Ivan
parent c5dcef52fa
commit a5d4e58ddd

View file

@ -895,7 +895,7 @@ bool SPUThread::do_dma_check(const spu_mfc_cmd& args)
{ {
const u32 mask = 1u << args.tag; const u32 mask = 1u << args.tag;
if (UNLIKELY(mfc_barrier & mask || (args.cmd & MFC_FENCE_MASK && mfc_fence & mask))) if (UNLIKELY(mfc_barrier & mask || (args.cmd & (MFC_BARRIER_MASK | MFC_FENCE_MASK) && mfc_fence & mask)))
{ {
// Check for special value combination (normally impossible) // Check for special value combination (normally impossible)
if (false) if (false)
@ -1080,8 +1080,13 @@ void SPUThread::do_mfc(bool wait)
return false; return false;
} }
if (args.cmd & MFC_FENCE_MASK && fence & mask) if (args.cmd & (MFC_BARRIER_MASK | MFC_FENCE_MASK) && fence & mask)
{ {
if (args.cmd & MFC_BARRIER_MASK)
{
barrier |= mask;
}
return false; return false;
} }