summaryrefslogtreecommitdiff
path: root/include/VBox/pdmdev.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/VBox/pdmdev.h')
-rw-r--r--include/VBox/pdmdev.h25
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.