| 725 | // LFQueue functions |
| 726 | |
| 727 | void 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 | |
| 767 | error_code cellSyncLFQueueInitialize(vm::ptr<CellSyncLFQueue> queue, vm::cptr<void> buffer, u32 size, u32 depth, u32 direction, vm::ptr<void> eaSignal) |
| 768 | { |
no test coverage detected