Index: c/src/exec/score/inline/rtems/score/coresem.inl
===================================================================
--- c/src/exec/score/inline/rtems/score/coresem.inl	(revision c6f111bac0e297d698e0f88a39f5431d4437c240)
+++ c/src/exec/score/inline/rtems/score/coresem.inl	(revision 8d5b438b9e9b410872123ff421c3b38bba3c36dd)
@@ -16,4 +16,7 @@
 #ifndef __INLINE_CORE_SEMAPHORE_inl
 #define __INLINE_CORE_SEMAPHORE_inl
+
+#include <rtems/score/thread.h>
+#include <rtems/score/threadq.h>
 
 /*PAGE
@@ -50,4 +53,57 @@
 }
 
+/*PAGE
+ *
+ *  _CORE_semaphore_Seize_isr_disable
+ *
+ *  DESCRIPTION:
+ *
+ *  This routine attempts to receive a unit from the_semaphore.
+ *  If a unit is available or if the wait flag is FALSE, then the routine
+ *  returns.  Otherwise, the calling task is blocked until a unit becomes
+ *  available.
+ *
+ *  NOTE: There is currently no MACRO version of this routine.
+ */
+ 
+RTEMS_INLINE_ROUTINE void _CORE_semaphore_Seize_isr_disable(
+  CORE_semaphore_Control  *the_semaphore,
+  Objects_Id               id,
+  boolean                  wait,
+  Watchdog_Interval        timeout,
+  ISR_Level               *level_p
+) 
+{ 
+  Thread_Control *executing;
+  ISR_Level       level = *level_p;
+
+  /* disabled when you get here */
+  
+  executing = _Thread_Executing;
+  executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
+  if ( the_semaphore->count != 0 ) {
+    the_semaphore->count -= 1;
+    _ISR_Enable( level );
+    return;
+  }
+
+  if ( !wait ) {
+    _ISR_Enable( level );
+    executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT;
+    return;
+  }
+
+  _Thread_Disable_dispatch();
+  _ISR_Enable( level );
+  _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue );
+  executing->Wait.queue          = &the_semaphore->Wait_queue;
+  executing->Wait.id             = id;
+  _ISR_Enable( level );
+
+  _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
+  _Thread_Enable_dispatch();
+}
+#endif
+
 #endif
 /* end of include file */
Index: cpukit/score/inline/rtems/score/coresem.inl
===================================================================
--- cpukit/score/inline/rtems/score/coresem.inl	(revision c6f111bac0e297d698e0f88a39f5431d4437c240)
+++ cpukit/score/inline/rtems/score/coresem.inl	(revision 8d5b438b9e9b410872123ff421c3b38bba3c36dd)
@@ -16,4 +16,7 @@
 #ifndef __INLINE_CORE_SEMAPHORE_inl
 #define __INLINE_CORE_SEMAPHORE_inl
+
+#include <rtems/score/thread.h>
+#include <rtems/score/threadq.h>
 
 /*PAGE
@@ -50,4 +53,57 @@
 }
 
+/*PAGE
+ *
+ *  _CORE_semaphore_Seize_isr_disable
+ *
+ *  DESCRIPTION:
+ *
+ *  This routine attempts to receive a unit from the_semaphore.
+ *  If a unit is available or if the wait flag is FALSE, then the routine
+ *  returns.  Otherwise, the calling task is blocked until a unit becomes
+ *  available.
+ *
+ *  NOTE: There is currently no MACRO version of this routine.
+ */
+ 
+RTEMS_INLINE_ROUTINE void _CORE_semaphore_Seize_isr_disable(
+  CORE_semaphore_Control  *the_semaphore,
+  Objects_Id               id,
+  boolean                  wait,
+  Watchdog_Interval        timeout,
+  ISR_Level               *level_p
+) 
+{ 
+  Thread_Control *executing;
+  ISR_Level       level = *level_p;
+
+  /* disabled when you get here */
+  
+  executing = _Thread_Executing;
+  executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
+  if ( the_semaphore->count != 0 ) {
+    the_semaphore->count -= 1;
+    _ISR_Enable( level );
+    return;
+  }
+
+  if ( !wait ) {
+    _ISR_Enable( level );
+    executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT;
+    return;
+  }
+
+  _Thread_Disable_dispatch();
+  _ISR_Enable( level );
+  _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue );
+  executing->Wait.queue          = &the_semaphore->Wait_queue;
+  executing->Wait.id             = id;
+  _ISR_Enable( level );
+
+  _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
+  _Thread_Enable_dispatch();
+}
+#endif
+
 #endif
 /* end of include file */
