Index: /trunk/src/VBox/Runtime/r0drv/darwin/semevent-r0drv-darwin.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r0drv/darwin/semevent-r0drv-darwin.cpp	(revision 76054)
+++ /trunk/src/VBox/Runtime/r0drv/darwin/semevent-r0drv-darwin.cpp	(revision 76055)
@@ -170,4 +170,5 @@
     IPRT_DARWIN_SAVE_EFL_AC();
 
+    RTCCUINTREG const fIntSaved = ASMIntDisableFlags();
     lck_spin_lock(pThis->pSpinlock);
 
@@ -184,4 +185,5 @@
 
     lck_spin_unlock(pThis->pSpinlock);
+    ASMSetFlags(fIntSaved);
     rtR0SemEventDarwinRelease(pThis);
 
@@ -209,8 +211,6 @@
     IPRT_DARWIN_SAVE_EFL_AC();
 
+    RTCCUINTREG const fIntSaved = ASMIntDisableFlags();
     rtR0SemEventDarwinRetain(pThis);
-
-    /** @todo should probably disable interrupts here... update
-     *        semspinmutex-r0drv-generic.c when done. */
     lck_spin_lock(pThis->pSpinlock);
 
@@ -233,4 +233,5 @@
 
     lck_spin_unlock(pThis->pSpinlock);
+    ASMSetFlags(fIntSaved);
     rtR0SemEventDarwinRelease(pThis);
 
@@ -264,4 +265,5 @@
     IPRT_DARWIN_SAVE_EFL_AC();
 
+    RTCCUINTREG const fIntSaved = ASMIntDisableFlags();
     rtR0SemEventDarwinRetain(pThis);
     lck_spin_lock(pThis->pSpinlock);
@@ -390,5 +392,7 @@
 
     lck_spin_unlock(pThis->pSpinlock);
+    ASMSetFlags(fIntSaved);
     rtR0SemEventDarwinRelease(pThis);
+
     IPRT_DARWIN_RESTORE_EFL_AC();
     return rc;
Index: /trunk/src/VBox/Runtime/r0drv/darwin/semeventmulti-r0drv-darwin.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r0drv/darwin/semeventmulti-r0drv-darwin.cpp	(revision 76054)
+++ /trunk/src/VBox/Runtime/r0drv/darwin/semeventmulti-r0drv-darwin.cpp	(revision 76055)
@@ -175,4 +175,5 @@
     IPRT_DARWIN_SAVE_EFL_AC();
 
+    RTCCUINTREG const fIntSaved = ASMIntDisableFlags();
     lck_spin_lock(pThis->pSpinlock);
 
@@ -186,4 +187,5 @@
 
     lck_spin_unlock(pThis->pSpinlock);
+    ASMSetFlags(fIntSaved);
     rtR0SemEventMultiDarwinRelease(pThis);
 
@@ -206,8 +208,9 @@
      * as RTMemFree does not work with interrupts disabled (IOFree/kfree takes zone mutex).
      */
-    //RT_ASSERT_INTS_ON(); - we may be called from interrupt context, which seems to be perfectly fine.
+    //RT_ASSERT_INTS_ON(); - we may be called from interrupt context, which seems to be perfectly fine if we disable interrupts.
 
     IPRT_DARWIN_SAVE_EFL_AC();
 
+    RTCCUINTREG const fIntSaved = ASMIntDisableFlags();
     rtR0SemEventMultiDarwinRetain(pThis);
     lck_spin_lock(pThis->pSpinlock);
@@ -231,4 +234,5 @@
 
     lck_spin_unlock(pThis->pSpinlock);
+    ASMSetFlags(fIntSaved);
     rtR0SemEventMultiDarwinRelease(pThis);
 
@@ -249,4 +253,5 @@
     IPRT_DARWIN_SAVE_EFL_AC();
 
+    RTCCUINTREG const fIntSaved = ASMIntDisableFlags();
     rtR0SemEventMultiDarwinRetain(pThis);
     lck_spin_lock(pThis->pSpinlock);
@@ -255,4 +260,5 @@
 
     lck_spin_unlock(pThis->pSpinlock);
+    ASMSetFlags(fIntSaved);
     rtR0SemEventMultiDarwinRelease(pThis);
 
@@ -287,4 +293,5 @@
     IPRT_DARWIN_SAVE_EFL_AC();
 
+    RTCCUINTREG const fIntSaved = ASMIntDisableFlags();
     rtR0SemEventMultiDarwinRetain(pThis);
     lck_spin_lock(pThis->pSpinlock);
@@ -408,4 +415,5 @@
 
     lck_spin_unlock(pThis->pSpinlock);
+    ASMSetFlags(fIntSaved);
     rtR0SemEventMultiDarwinRelease(pThis);
 
