diff options
Diffstat (limited to 'include/VBox/pdmdev.h')
-rw-r--r-- | include/VBox/pdmdev.h | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/include/VBox/pdmdev.h b/include/VBox/pdmdev.h index 9e46cc016..844f941c4 100644 --- a/include/VBox/pdmdev.h +++ b/include/VBox/pdmdev.h @@ -1039,6 +1039,16 @@ typedef struct PDMAPICREG DECLR3CALLBACKMEMBER(int, pfnBusDeliverR3,(PPDMDEVINS pDevIns, uint8_t u8Dest, uint8_t u8DestMode, uint8_t u8DeliveryMode, uint8_t iVector, uint8_t u8Polarity, uint8_t u8TriggerMode)); + /** + * Deliver a signal to CPU's local interrupt pins (LINT0/LINT1). Used for + * virtual wire mode when interrupts from the PIC are passed through LAPIC. + * + * @returns status code. + * @param pDevIns Device instance of the APIC. + * @param u8Pin Local pin number (0 or 1 for current CPUs). + */ + DECLR3CALLBACKMEMBER(int, pfnLocalInterruptR3,(PPDMDEVINS pDevIns, uint8_t u8Pin, uint8_t u8Level)); + /** The name of the RC GetInterrupt entry point. */ const char *pszGetInterruptRC; /** The name of the RC HasPendingIrq entry point. */ @@ -1057,6 +1067,8 @@ typedef struct PDMAPICREG const char *pszReadMSRRC; /** The name of the RC BusDeliver entry point. */ const char *pszBusDeliverRC; + /** The name of the RC LocalInterrupt entry point. */ + const char *pszLocalInterruptRC; /** The name of the R0 GetInterrupt entry point. */ const char *pszGetInterruptR0; @@ -1076,6 +1088,8 @@ typedef struct PDMAPICREG const char *pszReadMSRR0; /** The name of the R0 BusDeliver entry point. */ const char *pszBusDeliverR0; + /** The name of the R0 LocalInterrupt entry point. */ + const char *pszLocalInterruptR0; } PDMAPICREG; /** Pointer to an APIC registration structure. */ @@ -1115,6 +1129,8 @@ typedef enum PDMAPICIRQ PDMAPICIRQ_NMI, /** SMI. */ PDMAPICIRQ_SMI, + /** ExtINT (HW interrupt via PIC). */ + PDMAPICIRQ_EXTINT, /** The usual 32-bit paranoia. */ PDMAPICIRQ_32BIT_HACK = 0x7fffffff } PDMAPICIRQ; @@ -1141,9 +1157,10 @@ typedef struct PDMAPICHLPRC * Clear the interrupt force action flag. * * @param pDevIns Device instance of the APIC. + * @param enmType IRQ type. * @param idCpu Virtual CPU to clear flag upon. */ - DECLRCCALLBACKMEMBER(void, pfnClearInterruptFF,(PPDMDEVINS pDevIns, VMCPUID idCpu)); + DECLRCCALLBACKMEMBER(void, pfnClearInterruptFF,(PPDMDEVINS pDevIns, PDMAPICIRQ enmType, VMCPUID idCpu)); /** * Modifies APIC-related bits in the CPUID feature mask. @@ -1210,9 +1227,10 @@ typedef struct PDMAPICHLPR0 * Clear the interrupt force action flag. * * @param pDevIns Device instance of the APIC. + * @param enmType IRQ type. * @param idCpu Virtual CPU to clear flag upon. */ - DECLR0CALLBACKMEMBER(void, pfnClearInterruptFF,(PPDMDEVINS pDevIns, VMCPUID idCpu)); + DECLR0CALLBACKMEMBER(void, pfnClearInterruptFF,(PPDMDEVINS pDevIns, PDMAPICIRQ enmType, VMCPUID idCpu)); /** * Modifies APIC-related bits in the CPUID feature mask. @@ -1278,9 +1296,10 @@ typedef struct PDMAPICHLPR3 * Clear the interrupt force action flag. * * @param pDevIns Device instance of the APIC. + * @param enmType IRQ type. * @param idCpu Virtual CPU to clear flag upon. */ - DECLR3CALLBACKMEMBER(void, pfnClearInterruptFF,(PPDMDEVINS pDevIns, VMCPUID idCpu)); + DECLR3CALLBACKMEMBER(void, pfnClearInterruptFF,(PPDMDEVINS pDevIns, PDMAPICIRQ enmType, VMCPUID idCpu)); /** * Modifies APIC-related bits in the CPUID feature mask. |