Index: trunk/include/VBox/log.h
===================================================================
--- trunk/include/VBox/log.h	(revision 107283)
+++ trunk/include/VBox/log.h	(revision 107308)
@@ -757,4 +757,6 @@
     /** PDM Driver group. */
     LOG_GROUP_PDM_DRIVER,
+    /** PDM GIC group. */
+    LOG_GROUP_PDM_GIC,
     /** PDM Loader group. */
     LOG_GROUP_PDM_LDR,
@@ -1224,4 +1226,5 @@
     "PDM_DEVICE", \
     "PDM_DRIVER", \
+    "PDM_GIC", \
     "PDM_LDR", \
     "PDM_QUEUE", \
Index: trunk/include/VBox/vmm/gic.h
===================================================================
--- trunk/include/VBox/vmm/gic.h	(revision 107283)
+++ 	(revision )
@@ -1,82 +1,0 @@
-/** @file
- * GIC - Generic Interrupt Controller Architecture (GICv3).
- */
-
-/*
- * Copyright (C) 2023-2024 Oracle and/or its affiliates.
- *
- * This file is part of VirtualBox base platform packages, as
- * available from https://www.virtualbox.org.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, in version 3 of the
- * License.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <https://www.gnu.org/licenses>.
- *
- * The contents of this file may alternatively be used under the terms
- * of the Common Development and Distribution License Version 1.0
- * (CDDL), a copy of it is provided in the "COPYING.CDDL" file included
- * in the VirtualBox distribution, in which case the provisions of the
- * CDDL are applicable instead of those of the GPL.
- *
- * You may elect to license modified versions of this file under the
- * terms and conditions of either the GPL or the CDDL or both.
- *
- * SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
- */
-
-#ifndef VBOX_INCLUDED_vmm_gic_h
-#define VBOX_INCLUDED_vmm_gic_h
-#ifndef RT_WITHOUT_PRAGMA_ONCE
-# pragma once
-#endif
-
-#include <VBox/types.h>
-struct PDMDEVREGCB;
-
-/** @defgroup grp_gic    The local GIC VMM API
- * @ingroup grp_vmm
- * @{
- */
-
-RT_C_DECLS_BEGIN
-
-#ifdef VBOX_INCLUDED_vmm_pdmdev_h
-extern const PDMDEVREG g_DeviceGIC;
-extern const PDMDEVREG g_DeviceGICNem;
-#endif
-
-/* These functions are VMM internal. */
-VMM_INT_DECL(VBOXSTRICTRC)  GICReadSysReg(PVMCPUCC pVCpu, uint32_t u32Reg, uint64_t *pu64Value);
-VMM_INT_DECL(VBOXSTRICTRC)  GICWriteSysReg(PVMCPUCC pVCpu, uint32_t u32Reg, uint64_t u64Value);
-VMM_INT_DECL(int)           GICSpiSet(PVMCC pVM, uint32_t uIntId, bool fAsserted);
-VMM_INT_DECL(int)           GICPpiSet(PVMCPUCC pVCpu, uint32_t uIntId, bool fAsserted);
-VMM_INT_DECL(int)           GICSgiSet(PVMCPUCC pVCpu, uint32_t uIntId, bool fAsserted);
-
-#ifdef IN_RING3
-/** @defgroup grp_gic_r3  The GIC Host Context Ring-3 API
- * @{
- */
-VMMR3_INT_DECL(int)         GICR3RegisterDevice(struct PDMDEVREGCB *pCallbacks);
-VMMR3_INT_DECL(void)        GICR3InitIpi(PVMCPU pVCpu);
-
-/* Access to the NEM provided GICv3. */
-VMMR3_INT_DECL(int)         GICR3NemSpiSet(PVMCC pVM, uint32_t uIntId, bool fAsserted);
-VMMR3_INT_DECL(int)         GICR3NemPpiSet(PVMCPUCC pVCpu, uint32_t uIntId, bool fAsserted);
-/** @} */
-#endif /* IN_RING3 */
-
-RT_C_DECLS_END
-
-/** @} */
-
-#endif /* !VBOX_INCLUDED_vmm_gic_h */
-
Index: trunk/include/VBox/vmm/pdmapic.h
===================================================================
--- trunk/include/VBox/vmm/pdmapic.h	(revision 107283)
+++ trunk/include/VBox/vmm/pdmapic.h	(revision 107308)
@@ -844,4 +844,6 @@
     DECLRCCALLBACKMEMBER(int, pfnReserved9, (void));
     DECLRCCALLBACKMEMBER(int, pfnReserved10, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved11, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved12, (void));
     /** @} */
 } PDMAPICBACKENDRC;
Index: trunk/include/VBox/vmm/pdmdev.h
===================================================================
--- trunk/include/VBox/vmm/pdmdev.h	(revision 107283)
+++ trunk/include/VBox/vmm/pdmdev.h	(revision 107308)
@@ -752,8 +752,13 @@
 #endif
 
-/**
- * The PDM APIC device registration structure.
- */
+#if defined(VBOX_VMM_TARGET_X86) || defined(VBOX_VMM_TARGET_AGNOSTIC)
+/** The PDM APIC device registration structure. */
 extern const PDMDEVREG g_DeviceAPIC;
+#elif defined(VBOX_VMM_TARGET_ARMV8)
+/** The PDM GIC device registration structure. */
+extern const PDMDEVREG g_DeviceGIC;
+/** The PDM GIC NEM device registration structure. */
+extern const PDMDEVREG g_DeviceGICNem;
+#endif
 
 /**
@@ -4264,10 +4269,10 @@
 
     /**
-     * Register the APIC device.
-     *
-     * @returns VBox status code.
-     * @param   pDevIns             The device instance.
-     */
-    DECLR3CALLBACKMEMBER(int, pfnApicRegister,(PPDMDEVINS pDevIns));
+     * Register the Interrupt Controller device.
+     *
+     * @returns VBox status code.
+     * @param   pDevIns             The device instance.
+     */
+    DECLR3CALLBACKMEMBER(int, pfnIcRegister,(PPDMDEVINS pDevIns));
 
     /**
@@ -5430,10 +5435,10 @@
      *
      * This must be called after ring-3 has registered the APIC using
-     * PDMDevHlpApicRegister().
+     * PDMDevHlpIcRegister().
      *
      * @returns VBox status code.
      * @param   pDevIns     The device instance.
      */
-    DECLRCCALLBACKMEMBER(int, pfnApicSetUpContext,(PPDMDEVINS pDevIns));
+    DECLRCCALLBACKMEMBER(int, pfnIcSetUpContext,(PPDMDEVINS pDevIns));
 
     /**
@@ -5926,10 +5931,10 @@
      *
      * This must be called after ring-3 has registered the APIC using
-     * PDMDevHlpApicRegister().
+     * PDMDevHlpIcRegister().
      *
      * @returns VBox status code.
      * @param   pDevIns     The device instance.
      */
-    DECLR0CALLBACKMEMBER(int, pfnApicSetUpContext,(PPDMDEVINS pDevIns));
+    DECLR0CALLBACKMEMBER(int, pfnIcSetUpContext,(PPDMDEVINS pDevIns));
 
     /**
@@ -9180,9 +9185,9 @@
 
 /**
- * @copydoc PDMDEVHLPR3::pfnApicRegister
- */
-DECLINLINE(int) PDMDevHlpApicRegister(PPDMDEVINS pDevIns)
-{
-    return pDevIns->pHlpR3->pfnApicRegister(pDevIns);
+ * @copydoc PDMDEVHLPR3::pfnIcRegister
+ */
+DECLINLINE(int) PDMDevHlpIcRegister(PPDMDEVINS pDevIns)
+{
+    return pDevIns->pHlpR3->pfnIcRegister(pDevIns);
 }
 
@@ -9344,9 +9349,9 @@
 
 /**
- * @copydoc PDMDEVHLPR0::pfnApicSetUpContext
- */
-DECLINLINE(int) PDMDevHlpApicSetUpContext(PPDMDEVINS pDevIns)
-{
-    return pDevIns->CTX_SUFF(pHlp)->pfnApicSetUpContext(pDevIns);
+ * @copydoc PDMDEVHLPR0::pfnIcSetUpContext
+ */
+DECLINLINE(int) PDMDevHlpIcSetUpContext(PPDMDEVINS pDevIns)
+{
+    return pDevIns->CTX_SUFF(pHlp)->pfnIcSetUpContext(pDevIns);
 }
 
Index: trunk/include/VBox/vmm/pdmgic.h
===================================================================
--- trunk/include/VBox/vmm/pdmgic.h	(revision 107308)
+++ trunk/include/VBox/vmm/pdmgic.h	(revision 107308)
@@ -0,0 +1,279 @@
+/** @file
+ * PDM - Pluggable Device Manager, GICv3 Interface.
+ */
+
+/*
+ * Copyright (C) 2023-2024 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * The contents of this file may alternatively be used under the terms
+ * of the Common Development and Distribution License Version 1.0
+ * (CDDL), a copy of it is provided in the "COPYING.CDDL" file included
+ * in the VirtualBox distribution, in which case the provisions of the
+ * CDDL are applicable instead of those of the GPL.
+ *
+ * You may elect to license modified versions of this file under the
+ * terms and conditions of either the GPL or the CDDL or both.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
+ */
+
+#ifndef VBOX_INCLUDED_vmm_pdmgic_h
+#define VBOX_INCLUDED_vmm_pdmgic_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+#include <VBox/types.h>
+struct PDMDEVREGCB;
+
+/** @defgroup grp_pdm_gic    The local GIC PDM API
+ * @ingroup grp_pdm
+ * @{
+ */
+
+RT_C_DECLS_BEGIN
+
+/**
+ * The type of PDM GIC backend.
+ */
+typedef enum PDMGICBACKENDTYPE
+{
+    /** None/Invalid PDM GIC backend. */
+    PDMGICBACKENDTYPE_NONE = 0,
+    /** VirtualBox backend. */
+    PDMGICBACKENDTYPE_VBOX,
+    /** KVM backend. */
+    PDMGICBACKENDTYPE_KVM,
+    /** Hyper-V backend. */
+    PDMGICBACKENDTYPE_HYPERV,
+    /** Hypervisor.Framework backend. */
+    PDMGICBACKENDTYPE_HVF,
+    /** End of valid PDM GIC backend values. */
+    PDMGICBACKENDTYPE_END,
+    /** The usual 32-bit paranoia. */
+    PDMGICBACKENDTYPE_32BIT_HACK = 0x7fffffff
+} PDMGICBACKENDTYPE;
+
+/**
+ * PDM GIC backend ring-3 API.
+ */
+typedef struct PDMGICBACKENDR3
+{
+    /**
+     * Reads a GIC system register.
+     *
+     * @returns Strict VBox status code.
+     * @param   pVCpu           The cross context virtual CPU structure.
+     * @param   u32Reg          The system register being read.
+     * @param   pu64Value       Where to store the read value.
+     */
+    DECLR3CALLBACKMEMBER(VBOXSTRICTRC, pfnReadSysReg, (PVMCPUCC pVCpu, uint32_t u32Reg, uint64_t *pu64Value));
+
+    /**
+     * Writes an GIC system register.
+     *
+     * @returns Strict VBox status code.
+     * @param   pVCpu           The cross context virtual CPU structure.
+     * @param   u32Reg          The system register being written (IPRT system  register identifier).
+     * @param   u64Value        The value to write.
+     */
+    DECLR3CALLBACKMEMBER(VBOXSTRICTRC, pfnWriteSysReg, (PVMCPUCC pVCpu, uint32_t u32Reg, uint64_t u64Value));
+
+    /**
+     * Sets the specified shared peripheral interrupt starting.
+     *
+     * @returns VBox status code.
+     * @param   pVM                 The cross context virtual machine structure.
+     * @param   uIntId              The SPI ID (minus GIC_INTID_RANGE_SPI_START) to assert/de-assert.
+     * @param   fAsserted           Flag whether to mark the interrupt as asserted/de-asserted.
+     */
+    DECLR3CALLBACKMEMBER(int, pfnSetSpi, (PVMCC pVM, uint32_t uIntId, bool fAsserted));
+
+    /**
+     * Sets the specified private peripheral interrupt starting.
+     *
+     * @returns VBox status code.
+     * @param   pVCpu               The cross context virtual CPU structure.
+     * @param   uIntId              The PPI ID (minus GIC_INTID_RANGE_PPI_START) to assert/de-assert.
+     * @param   fAsserted           Flag whether to mark the interrupt as asserted/de-asserted.
+     */
+    DECLR3CALLBACKMEMBER(int, pfnSetPpi, (PVMCPUCC pVCpu, uint32_t uIntId, bool fAsserted));
+
+    /** @name Reserved for future (MBZ).
+     * @{ */
+    DECLR3CALLBACKMEMBER(int, pfnReserved0, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved1, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved2, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved3, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved4, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved5, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved6, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved7, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved8, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved9, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved10, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved11, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved12, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved13, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved14, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved15, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved16, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved17, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved18, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved19, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved20, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved21, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved22, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved23, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved24, (void));
+    DECLR3CALLBACKMEMBER(int, pfnReserved25, (void));
+    /** @} */
+} PDMGICBACKENDR3;
+/** Pointer to ring-3 GIC backend. */
+typedef R3PTRTYPE(struct PDMGICBACKENDR3 *) PPDMGICBACKENDR3;
+/** Const pointer to ring-3 GIC backend. */
+typedef R3PTRTYPE(const struct PDMGICBACKENDR3 *) PCPDMGICBACKENDR3;
+AssertCompileSizeAlignment(PDMGICBACKENDR3, 8);
+
+/**
+ * PDM GIC backend ring-0 API.
+ */
+typedef struct PDMGICBACKENDR0
+{
+    /** @name Reserved for future (MBZ).
+     * @{ */
+    DECLR0CALLBACKMEMBER(int, pfnReserved0, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved1, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved2, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved3, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved4, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved5, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved6, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved7, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved8, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved9, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved10, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved11, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved12, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved13, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved14, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved15, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved16, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved17, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved18, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved19, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved20, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved21, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved22, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved23, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved24, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved25, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved26, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved27, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved28, (void));
+    DECLR0CALLBACKMEMBER(int, pfnReserved29, (void));
+    /** @} */
+} PDMGICBACKENDR0;
+/** Pointer to ring-0 GIC backend. */
+typedef R0PTRTYPE(struct PDMGICBACKENDR0 *) PPDMGICBACKENDR0;
+/** Const pointer to ring-0 GIC backend. */
+typedef R0PTRTYPE(const struct PDMGICBACKENDR0 *) PCPDMGICBACKENDR0;
+AssertCompileSizeAlignment(PDMGICBACKENDR0, 8);
+
+/**
+ * PDM GIC backend RC API.
+ */
+typedef struct PDMGICBACKENDRC
+{
+    /** @name Reserved for future (MBZ).
+     * @{ */
+    DECLRCCALLBACKMEMBER(int, pfnReserved0, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved1, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved2, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved3, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved4, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved5, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved6, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved7, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved8, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved9, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved10, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved11, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved12, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved13, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved14, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved15, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved16, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved17, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved18, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved19, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved20, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved21, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved22, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved23, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved24, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved25, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved26, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved27, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved28, (void));
+    DECLRCCALLBACKMEMBER(int, pfnReserved29, (void));
+    /** @} */
+} PDMGICBACKENDRC;
+/** Pointer to raw-mode context GIC backend. */
+typedef RCPTRTYPE(struct PDMGICBACKENDRC *) PPDMGICBACKENDRC;
+/** Const pointer to raw-mode context GIC backend. */
+typedef RCPTRTYPE(const struct PDMGICBACKENDRC *) PCPDMGICBACKENDRC;
+AssertCompileSizeAlignment(PDMGICBACKENDRC, 8);
+AssertCompile(sizeof(PDMGICBACKENDR3) == sizeof(PDMGICBACKENDR0));
+
+/** @typedef PDMGICBACKENDR3
+ * A current context PDM GIC backend. */
+/** @typedef PPDMGICBACKENDR3
+ * Pointer to a current context PDM GIC backend. */
+/** @typedef PCPDMGICBACKENDR3
+ * Pointer to a const current context PDM GIC backend. */
+#if defined(IN_RING3) || defined(DOXYGEN_RUNNING)
+typedef PDMGICBACKENDR3        PDMGICBACKEND;
+typedef PPDMGICBACKENDR3       PPDMGICBACKEND;
+typedef PCPDMGICBACKENDR3      PCPDMGICBACKEND;
+#elif defined(IN_RING0)
+typedef PDMGICBACKENDR0        PDMGICBACKEND;
+typedef PPDMGICBACKENDR0       PPDMGICBACKEND;
+typedef PCPDMGICBACKENDR0      PCPDMGICBACKEND;
+#elif defined(IN_RC)
+typedef PDMGICBACKENDRC        PDMGICBACKEND;
+typedef PPDMGICBACKENDRC       PPDMGICBACKEND;
+typedef PCPDMGICBACKENDRC      PCPDMGICBACKEND;
+#else
+# error "Not IN_RING3, IN_RING0 or IN_RC"
+#endif
+
+VMM_INT_DECL(int)           PDMGicRegisterBackend(PVMCC pVM, PDMGICBACKENDTYPE enmBackendType, PCPDMGICBACKEND pBackend);
+
+VMM_INT_DECL(VBOXSTRICTRC)  PDMGicReadSysReg(PVMCPUCC pVCpu, uint32_t u32Reg, uint64_t *pu64Value);
+VMM_INT_DECL(VBOXSTRICTRC)  PDMGicWriteSysReg(PVMCPUCC pVCpu, uint32_t u32Reg, uint64_t u64Value);
+VMM_INT_DECL(int)           PDMGicSetSpi(PVMCC pVM, uint32_t uIntId, bool fAsserted);
+VMM_INT_DECL(int)           PDMGicSetPpi(PVMCPUCC pVCpu, uint32_t uIntId, bool fAsserted);
+
+RT_C_DECLS_END
+
+/** @} */
+
+#endif /* !VBOX_INCLUDED_vmm_pdmgic_h */
+
