MCPcopy Create free account
hub / github.com/RPCSX/rpcsx / syncLFQueueInitialize

Function syncLFQueueInitialize

ps3fw/cellSync.cpp:727–765  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

725// LFQueue functions
726
727void syncLFQueueInitialize(vm::ptr<CellSyncLFQueue> queue, vm::cptr<void> buffer, u32 size, u32 depth, u32 direction, vm::ptr<void> eaSignal)
728{
729 queue->m_size = size;
730 queue->m_depth = depth;
731 queue->m_buffer = buffer;
732 queue->m_direction = direction;
733 memset(queue->m_hs1, 0, sizeof(queue->m_hs1));
734 memset(queue->m_hs2, 0, sizeof(queue->m_hs2));
735 queue->m_eaSignal = eaSignal;
736
737 if (direction == CELL_SYNC_QUEUE_ANY2ANY)
738 {
739 queue->pop1.store({});
740 queue->push1.store({});
741 queue->m_buffer.set(queue->m_buffer.addr() | 1);
742 queue->m_bs[0] = -1;
743 queue->m_bs[1] = -1;
744 // m_bs[2]
745 // m_bs[3]
746 queue->m_v1 = -1;
747 queue->push2.store({0xffff});
748 queue->pop2.store({0xffff});
749 }
750 else
751 {
752 queue->pop1.store({0, 0, queue->pop1.load().m_h3, 0});
753 queue->push1.store({0, 0, queue->push1.load().m_h7, 0});
754 queue->m_bs[0] = -1; // written as u32
755 queue->m_bs[1] = -1;
756 queue->m_bs[2] = -1;
757 queue->m_bs[3] = -1;
758 queue->m_v1 = 0;
759 queue->push2.store({});
760 queue->pop2.store({});
761 }
762
763 queue->m_v2 = 0;
764 queue->m_eq_id = 0;
765}
766
767error_code cellSyncLFQueueInitialize(vm::ptr<CellSyncLFQueue> queue, vm::cptr<void> buffer, u32 size, u32 depth, u32 direction, vm::ptr<void> eaSignal)
768{

Callers 1

Calls 4

storeMethod · 0.45
setMethod · 0.45
addrMethod · 0.45
loadMethod · 0.45

Tested by

no test coverage detected