Index: trunk/src/VBox/VMM/include/EMHandleRCTmpl.h
===================================================================
--- trunk/src/VBox/VMM/include/EMHandleRCTmpl.h	(revision 99027)
+++ trunk/src/VBox/VMM/include/EMHandleRCTmpl.h	(revision 99051)
@@ -113,4 +113,5 @@
             break;
 
+#if !defined(VBOX_VMM_TARGET_ARMV8)
         /*
          * Execute pending I/O Port access.
@@ -122,4 +123,5 @@
             rc = VBOXSTRICTRC_TODO(emR3ExecutePendingIoPortRead(pVM, pVCpu));
             break;
+#endif
 
         /*
@@ -167,7 +169,9 @@
             break;
 
+#if !defined(VBOX_VMM_TARGET_ARMV8)
         case VINF_EM_EMULATE_SPLIT_LOCK:
             rc = VBOXSTRICTRC_TODO(emR3ExecuteSplitLockInstruction(pVM, pVCpu));
             break;
+#endif
 
 
Index: trunk/src/VBox/VMM/include/IOMInternal.h
===================================================================
--- trunk/src/VBox/VMM/include/IOMInternal.h	(revision 99027)
+++ trunk/src/VBox/VMM/include/IOMInternal.h	(revision 99051)
@@ -574,6 +574,8 @@
 
 #ifdef IN_RING3
+# if !defined(VBOX_VMM_TARGET_ARMV8)
 DECLCALLBACK(void)  iomR3IoPortInfo(PVM pVM, PCDBGFINFOHLP pHlp, const char *pszArgs);
 void                iomR3IoPortRegStats(PVM pVM, PIOMIOPORTENTRYR3 pRegEntry);
+# endif
 DECLCALLBACK(void)  iomR3MmioInfo(PVM pVM, PCDBGFINFOHLP pHlp, const char *pszArgs);
 void                iomR3MmioRegStats(PVM pVM, PIOMMMIOENTRYR3 pRegEntry);
Index: trunk/src/VBox/VMM/include/NEMInternal.h
===================================================================
--- trunk/src/VBox/VMM/include/NEMInternal.h	(revision 99027)
+++ trunk/src/VBox/VMM/include/NEMInternal.h	(revision 99051)
@@ -42,5 +42,9 @@
 #include <iprt/critsect.h>
 #elif defined(RT_OS_DARWIN)
-# include "VMXInternal.h"
+# if defined(VBOX_VMM_TARGET_ARMV8)
+#  include <Hypervisor/Hypervisor.h>
+# else
+#  include "VMXInternal.h"
+# endif
 #endif
 
@@ -108,8 +112,10 @@
 
 #ifdef RT_OS_DARWIN
+# if !defined(VBOX_VMM_TARGET_ARMV8)
 /** vCPU ID declaration to avoid dragging in HV headers here. */
 typedef unsigned hv_vcpuid_t;
 /** The HV VM memory space ID (ASID). */
 typedef unsigned hv_vm_space_t;
+# endif
 
 
@@ -122,7 +128,13 @@
 /** @} */
 
+# if defined(VBOX_VMM_TARGET_ARMV8)
 /** The CPUMCTX_EXTRN_XXX mask for IEM. */
-# define NEM_DARWIN_CPUMCTX_EXTRN_MASK_FOR_IEM      (  IEM_CPUMCTX_EXTRN_MUST_MASK | CPUMCTX_EXTRN_INHIBIT_INT \
-                                                     | CPUMCTX_EXTRN_INHIBIT_NMI )
+#  define NEM_DARWIN_CPUMCTX_EXTRN_MASK_FOR_IEM      (  IEM_CPUMCTX_EXTRN_MUST_MASK )
+# else
+/** The CPUMCTX_EXTRN_XXX mask for IEM. */
+#  define NEM_DARWIN_CPUMCTX_EXTRN_MASK_FOR_IEM      (  IEM_CPUMCTX_EXTRN_MUST_MASK | CPUMCTX_EXTRN_INHIBIT_INT \
+                                                      | CPUMCTX_EXTRN_INHIBIT_NMI )
+#endif
+
 /** The CPUMCTX_EXTRN_XXX mask for IEM when raising exceptions. */
 # define NEM_DARWIN_CPUMCTX_EXTRN_MASK_FOR_IEM_XCPT (IEM_CPUMCTX_EXTRN_XCPT_MASK | NEM_DARWIN_CPUMCTX_EXTRN_MASK_FOR_IEM)
@@ -274,4 +286,7 @@
     /** Set if hv_vm_create() was called successfully. */
     bool                        fCreatedVm   : 1;
+# if defined(VBOX_VMM_TARGET_ARMV8)
+    /** @todo */
+# else
     /** Set if hv_vm_space_create() was called successfully. */
     bool                        fCreatedAsid : 1;
@@ -310,4 +325,5 @@
     /** The last valid host LBR info stack range. */
     uint32_t                    idLbrInfoMsrLast;
+# endif
 
     STAMCOUNTER                 StatMapPage;
@@ -460,4 +476,12 @@
 
 #elif defined(RT_OS_DARWIN)
+# if defined(VBOX_VMM_TARGET_ARMV8)
+    /** The vCPU handle associated with the EMT executing this vCPU. */
+    hv_vcpu_t                   hVCpu;
+    /** Pointer to the exit information structure. */
+    hv_vcpu_exit_t              *pHvExit;
+    /** Flag whether an event is pending. */
+    bool                        fEventPending;
+# else
     /** The vCPU handle associated with the EMT executing this vCPU. */
     hv_vcpuid_t                 hVCpuId;
@@ -530,4 +554,5 @@
     /** Pointer to the VMX statistics. */
     PVMXSTATISTICS              pVmxStats;
+# endif
 
     /** @name Statistics
Index: trunk/src/VBox/VMM/include/PGMInline.h
===================================================================
--- trunk/src/VBox/VMM/include/PGMInline.h	(revision 99027)
+++ trunk/src/VBox/VMM/include/PGMInline.h	(revision 99051)
@@ -374,4 +374,5 @@
 
 
+#ifndef VBOX_VMM_TARGET_ARMV8
 /**
  * Checks if the no-execute (NX) feature is active (EFER.NXE=1).
@@ -978,4 +979,5 @@
     return NULL;
 }
+#endif /* !VBOX_VMM_TARGET_ARMV8 */
 
 
Index: trunk/src/VBox/VMM/include/PGMInternal.h
===================================================================
--- trunk/src/VBox/VMM/include/PGMInternal.h	(revision 99027)
+++ trunk/src/VBox/VMM/include/PGMInternal.h	(revision 99051)
@@ -374,6 +374,6 @@
  * @param   GCVirt      The virtual address of the page to invalidate.
  */
-#ifdef IN_RING0
-# define PGM_INVL_PG_ALL_VCPU(pVM, GCVirt)      HMInvalidatePageOnAllVCpus(pVM, (RTGCPTR)(GCVirt))
+#if defined(VBOX_VMM_TARGET_ARMV8)
+# define PGM_INVL_PG_ALL_VCPU(pVM, GCVirt)      do { } while(0)
 #else
 # define PGM_INVL_PG_ALL_VCPU(pVM, GCVirt)      HMInvalidatePageOnAllVCpus(pVM, (RTGCPTR)(GCVirt))
@@ -386,6 +386,6 @@
  * @param   GCVirt      The virtual address within the page directory to invalidate.
  */
-#ifdef IN_RING0
-# define PGM_INVL_BIG_PG(pVCpu, GCVirt)         HMFlushTlb(pVCpu)
+#if defined(VBOX_VMM_TARGET_ARMV8)
+# define PGM_INVL_BIG_PG(pVCpu, GCVirt)         do { } while(0)
 #else
 # define PGM_INVL_BIG_PG(pVCpu, GCVirt)         HMFlushTlb(pVCpu)
@@ -397,6 +397,6 @@
  * @param   pVCpu       The cross context virtual CPU structure.
  */
-#ifdef IN_RING0
-# define PGM_INVL_VCPU_TLBS(pVCpu)             HMFlushTlb(pVCpu)
+#if defined(VBOX_VMM_TARGET_ARMV8)
+# define PGM_INVL_VCPU_TLBS(pVCpu)             do { } while(0)
 #else
 # define PGM_INVL_VCPU_TLBS(pVCpu)             HMFlushTlb(pVCpu)
@@ -408,6 +408,6 @@
  * @param   pVM         The cross context VM structure.
  */
-#ifdef IN_RING0
-# define PGM_INVL_ALL_VCPU_TLBS(pVM)            HMFlushTlbOnAllVCpus(pVM)
+#if defined(VBOX_VMM_TARGET_ARMV8)
+# define PGM_INVL_ALL_VCPU_TLBS(pVM)            do { } while(0)
 #else
 # define PGM_INVL_ALL_VCPU_TLBS(pVM)            HMFlushTlbOnAllVCpus(pVM)
