Index: /trunk/src/VBox/Devices/EFI/DevSmc.cpp
===================================================================
--- /trunk/src/VBox/Devices/EFI/DevSmc.cpp	(revision 87283)
+++ /trunk/src/VBox/Devices/EFI/DevSmc.cpp	(revision 87284)
@@ -32,9 +32,9 @@
 #include <iprt/assert.h>
 #include <iprt/string.h>
-#ifdef IN_RING0
+#if defined(IN_RING0) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86))
 # include <iprt/asm-amd64-x86.h>
 # include <iprt/once.h>
 #endif
-#if defined(RT_OS_DARWIN) && defined(IN_RING3)
+#if defined(RT_OS_DARWIN) && defined(IN_RING3) && !defined(VBOX_DEVICE_STRUCT_TESTCASE) /* drags in bad PAGE_SIZE */
 # include "IOKit/IOKitLib.h"
 #endif
@@ -352,5 +352,6 @@
 };
 
-#ifdef IN_RING0
+#if defined(IN_RING0) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86))
+
 /** Do once for the SMC ring-0 static data (g_abOsk0And1, g_fHaveOsk). */
 static RTONCE   g_SmcR0Once = RTONCE_INITIALIZER;
@@ -503,5 +504,5 @@
 }
 
-#endif /* IN_RING0 */
+#endif /* IN_RING0 && (AMD64 || X86) */
 
 #if defined(IN_RING3) && defined(RT_OS_DARWIN)
@@ -1569,5 +1570,9 @@
     /* .pfnDestruct = */            NULL,
     /* .pfnFinalDestruct = */       NULL,
+# if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)
     /* .pfnRequest = */             devR0SmcReqHandler,
+# else
+    /* .pfnRequest = */             NULL,
+# endif
     /* .pfnReserved0 = */           NULL,
     /* .pfnReserved1 = */           NULL,
