Lines Matching defs:iVector

67 DECLINLINE(MsixTableRecord*) msixGetVectorRecord(PPCIDEVICE pDev, uint32_t iVector)
69 return (MsixTableRecord*)msixGetPageOffset(pDev, iVector * VBOX_MSIX_ENTRY_SIZE);
72 DECLINLINE(RTGCPHYS) msixGetMsiAddress(PPCIDEVICE pDev, uint32_t iVector)
74 MsixTableRecord* pRec = msixGetVectorRecord(pDev, iVector);
78 DECLINLINE(uint32_t) msixGetMsiData(PPCIDEVICE pDev, uint32_t iVector)
80 return msixGetVectorRecord(pDev, iVector)->u32MsgData;
83 DECLINLINE(uint32_t) msixIsVectorMasked(PPCIDEVICE pDev, uint32_t iVector)
85 return (msixGetVectorRecord(pDev, iVector)->u32VectorControl & 0x1) != 0;
88 DECLINLINE(uint8_t*) msixPendingByte(PPCIDEVICE pDev, uint32_t iVector)
90 return msixGetPageOffset(pDev, 0x800 + iVector / 8);
93 DECLINLINE(void) msixSetPending(PPCIDEVICE pDev, uint32_t iVector)
95 *msixPendingByte(pDev, iVector) |= (1 << (iVector & 0x7));
98 DECLINLINE(void) msixClearPending(PPCIDEVICE pDev, uint32_t iVector)
100 *msixPendingByte(pDev, iVector) &= ~(1 << (iVector & 0x7));
103 DECLINLINE(bool) msixIsPending(PPCIDEVICE pDev, uint32_t iVector)
105 return (*msixPendingByte(pDev, iVector) & (1 << (iVector & 0x7))) != 0;
108 static void msixCheckPendingVector(PPDMDEVINS pDevIns, PCPDMPCIHLP pPciHlp, PPCIDEVICE pDev, uint32_t iVector)
110 if (msixIsPending(pDev, iVector) && !msixIsVectorMasked(pDev, iVector))
111 MsixNotify(pDevIns, pPciHlp, pDev, iVector, 1 /* iLevel */, 0 /*uTagSrc*/);
241 void MsixNotify(PPDMDEVINS pDevIns, PCPDMPCIHLP pPciHlp, PPCIDEVICE pDev, int iVector, int iLevel, uint32_t uTagSrc)
254 if (msixIsMasked(pDev) || msixIsVectorMasked(pDev, iVector))
257 msixSetPending(pDev, iVector);
262 msixClearPending(pDev, iVector);
264 RTGCPHYS GCAddr = msixGetMsiAddress(pDev, iVector);
265 uint32_t u32Value = msixGetMsiData(pDev, iVector);