Index: /trunk/src/VBox/Runtime/r0drv/darwin/threadpreempt-r0drv-darwin.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r0drv/darwin/threadpreempt-r0drv-darwin.cpp	(revision 37039)
+++ /trunk/src/VBox/Runtime/r0drv/darwin/threadpreempt-r0drv-darwin.cpp	(revision 37040)
@@ -108,9 +108,10 @@
     /* HACK ALERT! This ASSUMES that the cpu_pending_ast member of cpu_data_t doesn't move. */
     uint32_t ast_pending;
-#if 1
+#if defined(RT_ARCH_X86) || defined(RT_ARCH_AMD64)
     __asm__ volatile("movl %%gs:%P1,%0\n\t"
                      : "=r" (ast_pending)
-                     : "i"  (7*sizeof(void*) + 7*sizeof(int)));
+                     : "i"  (7*sizeof(void*) + (7 + (ARCH_BITS == 64)) *sizeof(int)) );
 #else
+# error fixme.
     cpu_data_t *pCpu = current_cpu_datap(void);
     AssertCompileMemberOffset(cpu_data_t, cpu_pending_ast, 7*sizeof(void*) + 7*sizeof(int));
@@ -124,5 +125,5 @@
 RTDECL(bool) RTThreadPreemptIsPendingTrusty(void)
 {
-    /* yes, we think thaat RTThreadPreemptIsPending is reliable... */
+    /* yes, we think that RTThreadPreemptIsPending is reliable... */
     return true;
 }
