Index: /trunk/src/VBox/Runtime/r0drv/darwin/the-darwin-kernel.h
===================================================================
--- /trunk/src/VBox/Runtime/r0drv/darwin/the-darwin-kernel.h	(revision 37040)
+++ /trunk/src/VBox/Runtime/r0drv/darwin/the-darwin-kernel.h	(revision 37041)
@@ -111,4 +111,28 @@
 extern void mp_rendezvous_no_intrs(void (*)(void *), void *);
 
+/* osfmk/i386/cpu_data.h */
+struct my_cpu_data_x86
+{
+    struct my_cpu_data_x86 *cpu_this;
+    thread_t                cpu_active_thread;
+    void                   *cpu_int_state;
+    vm_offset_t             cpu_active_stack;
+    vm_offset_t             cpu_kernel_stack;
+    vm_offset_t             cpu_int_stack_top;
+    int                     cpu_preemption_level;
+    int                     cpu_simple_lock_count;
+    int                     cpu_interrupt_level;
+    int                     cpu_number;
+    int                     cpu_phys_number;
+    cpu_id_t                cpu_id;
+    int                     cpu_signals;
+    int                     cpu_mcount_off;
+    /*ast_t*/uint32_t       cpu_pending_ast;
+    int                     cpu_type;
+    int                     cpu_subtype;
+    int                     cpu_threadtype;
+    int                     cpu_running;
+};
+
 /* osfmk/i386/cpu_number.h */
 extern int cpu_number(void);
Index: /trunk/src/VBox/Runtime/r0drv/darwin/threadpreempt-r0drv-darwin.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r0drv/darwin/threadpreempt-r0drv-darwin.cpp	(revision 37040)
+++ /trunk/src/VBox/Runtime/r0drv/darwin/threadpreempt-r0drv-darwin.cpp	(revision 37041)
@@ -111,10 +111,7 @@
     __asm__ volatile("movl %%gs:%P1,%0\n\t"
                      : "=r" (ast_pending)
-                     : "i"  (7*sizeof(void*) + (7 + (ARCH_BITS == 64)) *sizeof(int)) );
+                     : "i"  (__builtin_offsetof(struct my_cpu_data_x86, cpu_pending_ast)) );
 #else
-# error fixme.
-    cpu_data_t *pCpu = current_cpu_datap(void);
-    AssertCompileMemberOffset(cpu_data_t, cpu_pending_ast, 7*sizeof(void*) + 7*sizeof(int));
-    cpu_pending_ast = pCpu->cpu_pending_ast;
+# error "Port me"
 #endif
     AssertMsg(!(ast_pending & UINT32_C(0xfffff000)),("%#x\n", ast_pending));
