Index: cpukit/libnetworking/rtems/rtems_glue.c
===================================================================
--- cpukit/libnetworking/rtems/rtems_glue.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/libnetworking/rtems/rtems_glue.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -373,20 +373,18 @@
 #ifdef RTEMS_FAST_MUTEX
 	Thread_queue_Context queue_context;
-	Thread_Control *executing;
+	Status_Control status;
 	if (!the_networkSemaphore)
 		rtems_panic ("rtems-net: network sema obtain: network not initialised\n");
 	_Thread_queue_Context_initialize(&queue_context, NULL);
 	_ISR_lock_ISR_disable(&queue_context.Lock_context);
-	executing = _Thread_Executing;
-	_CORE_mutex_Seize (
+	status = _CORE_mutex_Seize (
 		&the_networkSemaphore->Core_control.mutex,
-		executing,
+		_Thread_Executing,
 		1,		/* wait */
 		0,		/* forever */
 		&queue_context
 		);
-	if (executing->Wait.return_code)
-		rtems_panic ("rtems-net: can't obtain network sema: %d\n",
-                 executing->Wait.return_code);
+	if (status != STATUS_SUCCESSFUL)
+		rtems_panic ("rtems-net: can't obtain network sema: %d\n", status);
 #else
 	rtems_status_code sc;
@@ -407,5 +405,5 @@
 #ifdef RTEMS_FAST_MUTEX
 	Thread_queue_Context queue_context;
-	CORE_mutex_Status status;
+	Status_Control status;
 
 	if (!the_networkSemaphore)
@@ -417,5 +415,5 @@
 		&queue_context
 		);
-	if (status != CORE_MUTEX_STATUS_SUCCESSFUL)
+	if (status != STATUS_SUCCESSFUL)
 		rtems_panic ("rtems-net: can't release network sema: %i\n");
 #else
Index: cpukit/posix/Makefile.am
===================================================================
--- cpukit/posix/Makefile.am	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/Makefile.am	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -75,5 +75,5 @@
     src/barrierattrinit.c src/barrierattrsetpshared.c src/pbarrier.c \
     src/pbarrierdestroy.c src/pbarrierinit.c \
-    src/pbarriertranslatereturncode.c src/pbarrierwait.c
+    src/pbarrierwait.c
 
 ## CANCEL_C_FILES
@@ -100,5 +100,5 @@
     src/mqueuereceive.c src/mqueuerecvsupp.c src/mqueuesend.c \
     src/mqueuesendsupp.c src/mqueuesetattr.c src/mqueuetimedreceive.c \
-    src/mqueuetimedsend.c src/mqueuetranslatereturncode.c \
+    src/mqueuetimedsend.c \
     src/mqueueunlink.c
 
@@ -111,5 +111,5 @@
     src/mutexgetprioceiling.c src/mutexinit.c src/mutexlock.c \
     src/mutexlocksupp.c src/mutexsetprioceiling.c src/mutextimedlock.c \
-    src/mutextranslatereturncode.c src/mutextrylock.c src/mutexunlock.c
+    src/mutextrylock.c src/mutexunlock.c
 
 ## PTHREAD_C_FILES
@@ -176,11 +176,10 @@
     src/prwlocktryrdlock.c src/prwlocktrywrlock.c src/prwlockunlock.c \
     src/prwlockwrlock.c src/rwlockattrdestroy.c src/rwlockattrgetpshared.c \
-    src/rwlockattrinit.c src/rwlockattrsetpshared.c \
-    src/prwlocktranslatereturncode.c
+    src/rwlockattrinit.c src/rwlockattrsetpshared.c
 
 ## SEMAPHORE_C_FILES
 libposix_a_SOURCES += src/semaphore.c src/semaphorecreatesupp.c \
     src/semaphoredeletesupp.c \
-    src/semaphoretranslatereturncode.c src/semaphorewaitsupp.c \
+    src/semaphorewaitsupp.c \
     src/semclose.c src/semdestroy.c src/semgetvalue.c src/seminit.c \
     src/semopen.c src/sempost.c src/semtimedwait.c src/semtrywait.c \
@@ -189,5 +188,5 @@
 ## SPINLOCK_C_FILES
 libposix_a_SOURCES += src/pspin.c src/pspindestroy.c src/pspininit.c \
-    src/pspinlock.c src/pspinlocktranslatereturncode.c src/pspintrylock.c \
+    src/pspinlock.c src/pspintrylock.c \
     src/pspinunlock.c
 
Index: cpukit/posix/include/rtems/posix/barrierimpl.h
===================================================================
--- cpukit/posix/include/rtems/posix/barrierimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/include/rtems/posix/barrierimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -37,18 +37,4 @@
 
 extern Objects_Information _POSIX_Barrier_Information;
-
-/**
- * @brief POSIX translate barrier return code.
- * 
- * This routine translates SuperCore Barrier status codes into the
- * corresponding POSIX ones.
- *
- * @param[in] the_barrier_status is the SuperCore status.
- *
- * @return the corresponding POSIX status
- */
-int _POSIX_Barrier_Translate_core_barrier_return_code(
-  CORE_barrier_Status  the_barrier_status
-);
 
 /**
Index: cpukit/posix/include/rtems/posix/mqueueimpl.h
===================================================================
--- cpukit/posix/include/rtems/posix/mqueueimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/include/rtems/posix/mqueueimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -150,12 +150,4 @@
 
 /**
- *  @brief POSIX Message Queue Translate Score Return Code
- *
- */
-int _POSIX_Message_queue_Translate_core_message_queue_return_code(
-  uint32_t   the_message_queue_status
-);
-
-/**
  *  @brief POSIX Message Queue Remove from Namespace
  */
Index: cpukit/posix/include/rtems/posix/muteximpl.h
===================================================================
--- cpukit/posix/include/rtems/posix/muteximpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/include/rtems/posix/muteximpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -41,10 +41,4 @@
 
 /**
- *  This array contains a mapping from Score Mutex return codes to
- *  POSIX return codes.
- */
-extern const int _POSIX_Mutex_Return_codes[CORE_MUTEX_STATUS_LAST + 1];
-
-/**
  *  @brief POSIX Mutex Allocate
  *
@@ -84,40 +78,4 @@
 
 /**
- * @brief Convert Score mutex status codes into POSIX status values
- *
- * A support routine which converts core mutex status codes into the
- * appropriate POSIX status values.
- *
- * @param[in] the_mutex_status is the mutex status code to translate
- *
- * @retval 0 Mutex status code indicates the operation completed successfully.
- * @retval EBUSY Mutex status code indicates that the operation unable to 
- *         complete immediately because the resource was unavailable.
- * @retval EDEADLK Mutex status code indicates that an attempt was made to
- *         relock a mutex for which nesting is not configured.
- * @retval EPERM Mutex status code indicates that an attempt was made to 
- *         release a mutex by a thread other than the thread which locked it.
- * @retval EINVAL Mutex status code indicates that the thread was blocked
- *         waiting for an operation to complete and the mutex was deleted.
- * @retval ETIMEDOUT Mutex status code indicates that the calling task was
- *         willing to block but the operation was unable to complete
- *         within the time allotted because the resource never became
- *         available.
- */
-RTEMS_INLINE_ROUTINE int _POSIX_Mutex_Translate_core_mutex_return_code(
-  CORE_mutex_Status  the_mutex_status
-)
-{
-  /*
-   *  Internal consistency check for bad status from SuperCore
-   */
-  #if defined(RTEMS_DEBUG)
-    if ( the_mutex_status > CORE_MUTEX_STATUS_LAST )
-      return EINVAL;
-  #endif
-  return _POSIX_Mutex_Return_codes[the_mutex_status];
-}
-
-/**
  *  @brief POSIX Mutex Get (Interrupt Disable)
  *
Index: cpukit/posix/include/rtems/posix/posixapi.h
===================================================================
--- cpukit/posix/include/rtems/posix/posixapi.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/include/rtems/posix/posixapi.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -24,4 +24,6 @@
 #include <rtems/score/apimutex.h>
 #include <rtems/score/objectimpl.h>
+#include <rtems/score/threadimpl.h>
+#include <rtems/seterr.h>
 
 /**
@@ -59,4 +61,27 @@
   _Assert( (size_t) error < RTEMS_ARRAY_SIZE( _POSIX_Get_by_name_error_table ) );
   return _POSIX_Get_by_name_error_table[ error ];
+}
+
+RTEMS_INLINE_ROUTINE int _POSIX_Get_error( Status_Control status )
+{
+  return STATUS_GET_POSIX( status );
+}
+
+RTEMS_INLINE_ROUTINE int _POSIX_Get_error_after_wait(
+  const Thread_Control *executing
+)
+{
+  return _POSIX_Get_error( _Thread_Wait_get_status( executing ) );
+}
+
+RTEMS_INLINE_ROUTINE int _POSIX_Zero_or_minus_one_plus_errno(
+  Status_Control status
+)
+{
+  if ( status == STATUS_SUCCESSFUL ) {
+    return 0;
+  }
+
+  rtems_set_errno_and_return_minus_one( _POSIX_Get_error( status ) );
 }
 
Index: cpukit/posix/include/rtems/posix/rwlockimpl.h
===================================================================
--- cpukit/posix/include/rtems/posix/rwlockimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/include/rtems/posix/rwlockimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -39,27 +39,4 @@
 
 /**
- * @brief POSIX translate core RWLock return code.
- *
- * This routine translates SuperCore RWLock status codes into the
- * corresponding POSIX ones.
- *
- *
- * @param[in] the_RWLock_status is the SuperCore status.
- *
- * @return the corresponding POSIX status
- * @retval 0 The status indicates that the operation completed successfully.
- * @retval EINVAL The status indicates that the thread was blocked waiting for
- * an operation to complete and the RWLock was deleted.
- * @retval EBUSY This status indicates that the RWLock was not 
- * immediately available.
- * @retval ETIMEDOUT This status indicates that the calling task was 
- * willing to block but the operation was unable to complete within
- * the time allotted because the resource never became available.
- */
-int _POSIX_RWLock_Translate_core_RWLock_return_code(
-  CORE_RWLock_Status  the_RWLock_status
-);
-
-/**
  * @brief Allocate a RWLock control block.
  *
Index: cpukit/posix/include/rtems/posix/semaphoreimpl.h
===================================================================
--- cpukit/posix/include/rtems/posix/semaphoreimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/include/rtems/posix/semaphoreimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -34,10 +34,4 @@
  */
 extern Objects_Information _POSIX_Semaphore_Information;
-
-/**
- *  This defines the mapping from Score status codes to POSIX return codes.
- */
-extern const int
-  _POSIX_Semaphore_Return_codes[CORE_SEMAPHORE_STATUS_LAST + 1];
 
 RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control *
@@ -109,25 +103,4 @@
   Watchdog_Interval    timeout
 );
-
-/**
- *  @brief POSIX Semaphore Translate Score to POSIX Return Codes
- *
- *  A support routine which converts core semaphore status codes into the
- *  appropriate POSIX status values.
- */
-RTEMS_INLINE_ROUTINE int
-_POSIX_Semaphore_Translate_core_semaphore_return_code(
-  CORE_semaphore_Status  the_semaphore_status
-)
-{
-  /*
-   *  Internal consistency check for bad status from SuperCore
-   */
-  #if defined(RTEMS_DEBUG)
-    if ( the_semaphore_status > CORE_SEMAPHORE_STATUS_LAST )
-      return EINVAL;
-  #endif
-  return _POSIX_Semaphore_Return_codes[the_semaphore_status];
-}
  
 /**
Index: cpukit/posix/include/rtems/posix/spinlockimpl.h
===================================================================
--- cpukit/posix/include/rtems/posix/spinlockimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/include/rtems/posix/spinlockimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -36,18 +36,4 @@
 
 extern Objects_Information _POSIX_Spinlock_Information;
-
-/**
- * @brief Translate core spinlock status code.
- *
- * This routine translates SuperCore Spinlock status codes into the
- * corresponding POSIX ones.
- * 
- * @param[in] the_spinlock_status is the SuperCore status.
- *
- * @return the corresponding POSIX status
- */
-int _POSIX_Spinlock_Translate_core_spinlock_return_code(
-  CORE_spinlock_Status  the_spinlock_status
-);
 
 /**
Index: cpukit/posix/src/condwaitsupp.c
===================================================================
--- cpukit/posix/src/condwaitsupp.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/condwaitsupp.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -21,6 +21,8 @@
 #include <rtems/posix/condimpl.h>
 #include <rtems/posix/muteximpl.h>
+#include <rtems/posix/posixapi.h>
 #include <rtems/score/assert.h>
 #include <rtems/score/statesimpl.h>
+#include <rtems/score/status.h>
 #include <rtems/score/threaddispatch.h>
 
@@ -37,7 +39,7 @@
   POSIX_Mutex_Control               *the_mutex;
   Thread_queue_Context               queue_context;
-  int                                status;
-  int                                mutex_status;
-  CORE_mutex_Status                  core_mutex_status;
+  int                                error;
+  int                                mutex_error;
+  Status_Control                     status;
   Per_CPU_Control                   *cpu_self;
   Thread_Control                    *executing;
@@ -85,5 +87,4 @@
 
   if ( !already_timedout ) {
-    executing->Wait.return_code = 0;
     _Thread_queue_Enqueue_critical(
       &the_cond->Wait_queue.Queue,
@@ -92,19 +93,15 @@
       STATES_WAITING_FOR_CONDITION_VARIABLE,
       timeout,
-      ETIMEDOUT,
       &queue_context.Lock_context
     );
   } else {
     _POSIX_Condition_variables_Release( the_cond, &queue_context );
-    executing->Wait.return_code = ETIMEDOUT;
+    executing->Wait.return_code = STATUS_TIMEOUT;
   }
 
   _ISR_lock_ISR_disable( &queue_context.Lock_context );
-  core_mutex_status = _CORE_mutex_Surrender(
-    &the_mutex->Mutex,
-    &queue_context
-  );
-  _Assert( core_mutex_status == CORE_MUTEX_STATUS_SUCCESSFUL );
-  (void) core_mutex_status;
+  status = _CORE_mutex_Surrender( &the_mutex->Mutex, &queue_context );
+  _Assert( status == STATUS_SUCCESSFUL );
+  (void) status;
 
   /*
@@ -115,5 +112,5 @@
   _Thread_Dispatch_enable( cpu_self );
 
-  status = (int) executing->Wait.return_code;
+  error = _POSIX_Get_error_after_wait( executing );
 
   /*
@@ -125,6 +122,6 @@
    */
 
-  if ( status == EINTR ) {
-    status = 0;
+  if ( error == EINTR ) {
+    error = 0;
   }
 
@@ -133,9 +130,9 @@
    */
 
-  mutex_status = pthread_mutex_lock( mutex );
-  if ( mutex_status != 0 ) {
+  mutex_error = pthread_mutex_lock( mutex );
+  if ( mutex_error != 0 ) {
     return EINVAL;
   }
 
-  return status;
+  return error;
 }
Index: cpukit/posix/src/mqueuerecvsupp.c
===================================================================
--- cpukit/posix/src/mqueuerecvsupp.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/mqueuerecvsupp.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,4 +20,5 @@
 
 #include <rtems/posix/mqueueimpl.h>
+#include <rtems/posix/posixapi.h>
 
 #include <fcntl.h>
@@ -49,4 +50,5 @@
   bool                         do_wait;
   Thread_Control              *executing;
+  Status_Control               status;
 
   the_mq = _POSIX_Message_queue_Get( mqdes, &queue_context );
@@ -96,5 +98,5 @@
    */
   executing = _Thread_Executing;
-  _CORE_message_queue_Seize(
+  status = _CORE_message_queue_Seize(
     &the_mq->Message_queue,
     executing,
@@ -112,10 +114,6 @@
   }
 
-  if ( executing->Wait.return_code != CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL ) {
-    rtems_set_errno_and_return_minus_one(
-      _POSIX_Message_queue_Translate_core_message_queue_return_code(
-        executing->Wait.return_code
-      )
-    );
+  if ( status != STATUS_SUCCESSFUL ) {
+    rtems_set_errno_and_return_minus_one( _POSIX_Get_error( status ) );
   }
 
Index: cpukit/posix/src/mqueuesendsupp.c
===================================================================
--- cpukit/posix/src/mqueuesendsupp.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/mqueuesendsupp.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -46,5 +46,5 @@
   POSIX_Message_queue_Control *the_mq;
   Thread_queue_Context         queue_context;
-  CORE_message_queue_Status    msg_status;
+  Status_Control               status;
   bool                         do_wait;
   Thread_Control              *executing;
@@ -93,5 +93,5 @@
    */
   executing = _Thread_Executing;
-  msg_status = _CORE_message_queue_Submit(
+  status = _CORE_message_queue_Submit(
     &the_mq->Message_queue,
     executing,
@@ -103,13 +103,4 @@
     &queue_context
   );
-
-  if ( msg_status != CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL ) {
-    rtems_set_errno_and_return_minus_one(
-      _POSIX_Message_queue_Translate_core_message_queue_return_code(
-        msg_status
-      )
-    );
-  }
-
-  return 0;
+  return _POSIX_Zero_or_minus_one_plus_errno( status );
 }
Index: ukit/posix/src/mqueuetranslatereturncode.c
===================================================================
--- cpukit/posix/src/mqueuetranslatereturncode.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ 	(revision )
@@ -1,65 +1,0 @@
-/**
- * @file
- *
- * @brief POSIX Error Translation in Message Queue
- * @ingroup POSIXAPI
- */
-
-/*
- *  POSIX Message Queue Error Translation
- *
- *  COPYRIGHT (c) 1989-2007.
- *  On-Line Applications Research Corporation (OAR).
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <pthread.h>
-#include <errno.h>
-
-#include <rtems/system.h>
-#include <rtems/score/coremsg.h>
-#include <rtems/posix/mqueueimpl.h>
-
-/*
- *  _POSIX_Message_queue_Translate_core_message_queue_return_code
- *
- *  Input parameters:
- *    the_message_queue_status - message_queue status code to translate
- *
- *  Output parameters:
- *    status code - translated POSIX status code
- *
- */
-
-static
- int _POSIX_Message_queue_Return_codes[CORE_MESSAGE_QUEUE_STATUS_LAST + 1] = {
-  0,                     /* CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL */
-  EMSGSIZE,              /* CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE */
-  EAGAIN,                /* CORE_MESSAGE_QUEUE_STATUS_TOO_MANY */
-  ENOMEM,                /* CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED */
-  EAGAIN,                /* CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT */
-  EBADF,                 /* CORE_MESSAGE_QUEUE_STATUS_WAS_DELETED */
-  ETIMEDOUT              /* CORE_MESSAGE_QUEUE_STATUS_TIMEOUT */
-};
-
-
-int _POSIX_Message_queue_Translate_core_message_queue_return_code(
-  uint32_t   the_message_queue_status
-)
-{
-  /*
-   *  Internal consistency check for bad status from SuperCore
-   */
-  #if defined(RTEMS_DEBUG)
-    if ( the_message_queue_status > CORE_MESSAGE_QUEUE_STATUS_LAST )
-      return EINVAL;
-  #endif
-  return _POSIX_Message_queue_Return_codes[the_message_queue_status];
-}
Index: cpukit/posix/src/mutexlocksupp.c
===================================================================
--- cpukit/posix/src/mutexlocksupp.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/mutexlocksupp.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,4 +20,5 @@
 
 #include <rtems/posix/muteximpl.h>
+#include <rtems/posix/posixapi.h>
 
 THREAD_QUEUE_OBJECT_ASSERT( POSIX_Mutex_Control, Mutex.Wait_queue );
@@ -31,5 +32,5 @@
   POSIX_Mutex_Control  *the_mutex;
   Thread_queue_Context  queue_context;
-  Thread_Control       *executing;
+  Status_Control        status;
 
   the_mutex = _POSIX_Mutex_Get( mutex, &queue_context );
@@ -39,14 +40,11 @@
   }
 
-  executing = _Thread_Executing;
-  _CORE_mutex_Seize(
+  status = _CORE_mutex_Seize(
     &the_mutex->Mutex,
-    executing,
+    _Thread_Executing,
     blocking,
     timeout,
     &queue_context
   );
-  return _POSIX_Mutex_Translate_core_mutex_return_code(
-    (CORE_mutex_Status) executing->Wait.return_code
-  );
+  return _POSIX_Get_error( status );
 }
Index: ukit/posix/src/mutextranslatereturncode.c
===================================================================
--- cpukit/posix/src/mutextranslatereturncode.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ 	(revision )
@@ -1,31 +1,0 @@
-/**
- *  @file
- *
- *  @brief POSIX Mutex Translate Core Mutex Return Code
- *  @ingroup POSIX_MUTEX
- */
-
-/*
- *  COPYRIGHT (c) 1989-2008.
- *  On-Line Applications Research Corporation (OAR).
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <rtems/posix/muteximpl.h>
-
-const int _POSIX_Mutex_Return_codes[CORE_MUTEX_STATUS_LAST + 1] = {
-  0,                      /* CORE_MUTEX_STATUS_SUCCESSFUL */
-  EBUSY,                  /* CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT */
-  EDEADLK,                /* CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED */
-  EPERM,                  /* CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE */
-  EINVAL,                 /* CORE_MUTEX_WAS_DELETED */
-  ETIMEDOUT,              /* CORE_MUTEX_TIMEOUT */
-  EINVAL                  /* CORE_MUTEX_STATUS_CEILING_VIOLATED */
-};
Index: cpukit/posix/src/mutexunlock.c
===================================================================
--- cpukit/posix/src/mutexunlock.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/mutexunlock.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,4 +20,5 @@
 
 #include <rtems/posix/muteximpl.h>
+#include <rtems/posix/posixapi.h>
 
 /*
@@ -32,6 +33,6 @@
 {
   POSIX_Mutex_Control  *the_mutex;
-  CORE_mutex_Status     status;
   Thread_queue_Context  queue_context;
+  Status_Control        status;
 
   the_mutex = _POSIX_Mutex_Get( mutex, &queue_context );
@@ -42,4 +43,4 @@
 
   status = _CORE_mutex_Surrender( &the_mutex->Mutex, &queue_context );
-  return _POSIX_Mutex_Translate_core_mutex_return_code( status );
+  return _POSIX_Get_error( status );
 }
Index: cpukit/posix/src/nanosleep.c
===================================================================
--- cpukit/posix/src/nanosleep.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/nanosleep.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -93,6 +93,5 @@
     executing,
     STATES_DELAYING | STATES_INTERRUPTIBLE_BY_SIGNAL,
-    ticks,
-    0
+    ticks
   );
 
Index: ukit/posix/src/pbarriertranslatereturncode.c
===================================================================
--- cpukit/posix/src/pbarriertranslatereturncode.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ 	(revision )
@@ -1,61 +1,0 @@
-/**
- * @file
- *
- * @brief Function Translates POSIX Barrier Status Code
- * @ingroup POSIXAPI
- */
-
-/*
- *  Barrier Manager -- Translate SuperCore Status
- *
- *  COPYRIGHT (c) 1989-2007.
- *  On-Line Applications Research Corporation (OAR).
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <pthread.h>
-#include <errno.h>
-
-#include <rtems/system.h>
-#include <rtems/posix/barrierimpl.h>
-
-/*
- *  _POSIX_Barrier_Translate_core_barrier_return_code
- *
- *  Input parameters:
- *    the_barrier_status - barrier status code to translate
- *
- *  Output parameters:
- *    status code - translated POSIX status code
- *
- */
-
-static int _POSIX_Barrier_Return_codes[CORE_BARRIER_STATUS_LAST + 1] = {
-  0,                        /* CORE_BARRIER_STATUS_SUCCESSFUL */
-  PTHREAD_BARRIER_SERIAL_THREAD,
-                            /* CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED */
-  -1,                       /* CORE_BARRIER_WAS_DELETED */
-  0                         /* CORE_BARRIER_TIMEOUT */
-};
-
-
-int _POSIX_Barrier_Translate_core_barrier_return_code(
-  CORE_barrier_Status  the_barrier_status
-)
-{
-  /*
-   *  Internal consistency check for bad status from SuperCore
-   */
-  #if defined(RTEMS_DEBUG)
-    if ( the_barrier_status > CORE_BARRIER_STATUS_LAST )
-      return EINVAL;
-  #endif
-  return _POSIX_Barrier_Return_codes[the_barrier_status];
-}
Index: cpukit/posix/src/pbarrierwait.c
===================================================================
--- cpukit/posix/src/pbarrierwait.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/pbarrierwait.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,16 +20,7 @@
 
 #include <rtems/posix/barrierimpl.h>
+#include <rtems/posix/posixapi.h>
 
 THREAD_QUEUE_OBJECT_ASSERT( POSIX_Barrier_Control, Barrier.Wait_queue );
-
-/**
- * This directive allows a thread to wait at a barrier.
- *
- * @param[in] barrier is the barrier id
- *
- * @retval 0 if successful
- * @retval PTHREAD_BARRIER_SERIAL_THREAD if successful
- * @retval error_code if unsuccessful
- */
 
 int pthread_barrier_wait(
@@ -39,5 +30,5 @@
   POSIX_Barrier_Control *the_barrier;
   Thread_queue_Context   queue_context;
-  Thread_Control        *executing;
+  Status_Control         status;
 
   if ( barrier == NULL ) {
@@ -51,14 +42,11 @@
   }
 
-  executing = _Thread_Executing;
-  _CORE_barrier_Seize(
+  status = _CORE_barrier_Seize(
     &the_barrier->Barrier,
-    executing,
+    _Thread_Executing,
     true,
-    0,
+    WATCHDOG_NO_TIMEOUT,
     &queue_context
   );
-  return _POSIX_Barrier_Translate_core_barrier_return_code(
-    executing->Wait.return_code
-  );
+  return _POSIX_Get_error( status );
 }
Index: cpukit/posix/src/prwlockrdlock.c
===================================================================
--- cpukit/posix/src/prwlockrdlock.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/prwlockrdlock.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,4 +20,5 @@
 
 #include <rtems/posix/rwlockimpl.h>
+#include <rtems/posix/posixapi.h>
 
 int pthread_rwlock_rdlock(
@@ -27,5 +28,5 @@
   POSIX_RWLock_Control *the_rwlock;
   Thread_queue_Context  queue_context;
-  Thread_Control       *executing;
+  Status_Control        status;
 
   the_rwlock = _POSIX_RWLock_Get( rwlock, &queue_context );
@@ -35,14 +36,11 @@
   }
 
-  executing = _Thread_Executing;
-  _CORE_RWLock_Seize_for_reading(
+  status = _CORE_RWLock_Seize_for_reading(
     &the_rwlock->RWLock,
-    executing,
+    _Thread_Executing,
     true,                 /* we are willing to wait forever */
     0,
     &queue_context
   );
-  return _POSIX_RWLock_Translate_core_RWLock_return_code(
-    (CORE_RWLock_Status) executing->Wait.return_code
-  );
+  return _POSIX_Get_error( status );
 }
Index: cpukit/posix/src/prwlocktimedrdlock.c
===================================================================
--- cpukit/posix/src/prwlocktimedrdlock.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/prwlocktimedrdlock.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,4 +20,5 @@
 
 #include <rtems/posix/rwlockimpl.h>
+#include <rtems/posix/posixapi.h>
 #include <rtems/score/todimpl.h>
 
@@ -31,6 +32,6 @@
   Watchdog_Interval                        ticks;
   bool                                     do_wait;
-  TOD_Absolute_timeout_conversion_results  status;
-  Thread_Control                          *executing;
+  TOD_Absolute_timeout_conversion_results  timeout_status;
+  Status_Control                           status;
 
   /*
@@ -40,13 +41,13 @@
    *  So we check the abstime provided, and hold on to whether it
    *  is valid or not.  If it isn't correct and in the future,
-   *  then we do a polling operation and convert the UNSATISFIED
+   *  then we do a polling operation and convert the STATUS_UNAVAILABLE
    *  status into the appropriate error.
    *
-   *  If the status is TOD_ABSOLUTE_TIMEOUT_INVALID,
+   *  If the timeout status is TOD_ABSOLUTE_TIMEOUT_INVALID,
    *  TOD_ABSOLUTE_TIMEOUT_IS_IN_PAST, or TOD_ABSOLUTE_TIMEOUT_IS_NOW,
    *  then we should not wait.
    */
-  status = _TOD_Absolute_timeout_to_ticks( abstime, &ticks );
-  do_wait = ( status == TOD_ABSOLUTE_TIMEOUT_IS_IN_FUTURE );
+  timeout_status = _TOD_Absolute_timeout_to_ticks( abstime, &ticks );
+  do_wait = ( timeout_status == TOD_ABSOLUTE_TIMEOUT_IS_IN_FUTURE );
 
   the_rwlock = _POSIX_RWLock_Get( rwlock, &queue_context );
@@ -56,8 +57,7 @@
   }
 
-  executing = _Thread_Executing;
-  _CORE_RWLock_Seize_for_reading(
+  status = _CORE_RWLock_Seize_for_reading(
     &the_rwlock->RWLock,
-    executing,
+    _Thread_Executing,
     do_wait,
     ticks,
@@ -65,15 +65,12 @@
   );
 
-  if (
-    !do_wait
-      && ( executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE )
-  ) {
-    if ( status == TOD_ABSOLUTE_TIMEOUT_INVALID ) {
+  if ( !do_wait && status == STATUS_UNAVAILABLE ) {
+    if ( timeout_status == TOD_ABSOLUTE_TIMEOUT_INVALID ) {
       return EINVAL;
     }
 
     if (
-      status == TOD_ABSOLUTE_TIMEOUT_IS_IN_PAST
-        || status == TOD_ABSOLUTE_TIMEOUT_IS_NOW
+      timeout_status == TOD_ABSOLUTE_TIMEOUT_IS_IN_PAST
+        || timeout_status == TOD_ABSOLUTE_TIMEOUT_IS_NOW
     ) {
       return ETIMEDOUT;
@@ -81,6 +78,4 @@
   }
 
-  return _POSIX_RWLock_Translate_core_RWLock_return_code(
-    (CORE_RWLock_Status) executing->Wait.return_code
-  );
+  return _POSIX_Get_error( status );
 }
Index: cpukit/posix/src/prwlocktimedwrlock.c
===================================================================
--- cpukit/posix/src/prwlocktimedwrlock.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/prwlocktimedwrlock.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -22,4 +22,5 @@
 
 #include <rtems/posix/rwlockimpl.h>
+#include <rtems/posix/posixapi.h>
 #include <rtems/score/todimpl.h>
 
@@ -33,6 +34,6 @@
   Watchdog_Interval                        ticks;
   bool                                     do_wait;
-  TOD_Absolute_timeout_conversion_results  status;
-  Thread_Control                          *executing;
+  TOD_Absolute_timeout_conversion_results  timeout_status;
+  Status_Control                           status;
 
   /*
@@ -42,13 +43,13 @@
    *  So we check the abstime provided, and hold on to whether it
    *  is valid or not.  If it isn't correct and in the future,
-   *  then we do a polling operation and convert the UNSATISFIED
+   *  then we do a polling operation and convert the STATUS_UNAVAILABLE
    *  status into the appropriate error.
    *
-   *  If the status is TOD_ABSOLUTE_TIMEOUT_INVALID,
+   *  If the timeout status is TOD_ABSOLUTE_TIMEOUT_INVALID,
    *  TOD_ABSOLUTE_TIMEOUT_IS_IN_PAST, or TOD_ABSOLUTE_TIMEOUT_IS_NOW,
    *  then we should not wait.
    */
-  status = _TOD_Absolute_timeout_to_ticks( abstime, &ticks );
-  do_wait = ( status == TOD_ABSOLUTE_TIMEOUT_IS_IN_FUTURE );
+  timeout_status = _TOD_Absolute_timeout_to_ticks( abstime, &ticks );
+  do_wait = ( timeout_status == TOD_ABSOLUTE_TIMEOUT_IS_IN_FUTURE );
 
   the_rwlock = _POSIX_RWLock_Get( rwlock, &queue_context );
@@ -58,8 +59,7 @@
   }
 
-  executing = _Thread_Executing;
-  _CORE_RWLock_Seize_for_writing(
+  status = _CORE_RWLock_Seize_for_writing(
     &the_rwlock->RWLock,
-    executing,
+    _Thread_Executing,
     do_wait,
     ticks,
@@ -67,15 +67,12 @@
   );
 
-  if (
-    !do_wait
-      && ( executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE )
-  ) {
-    if ( status == TOD_ABSOLUTE_TIMEOUT_INVALID ) {
+  if ( !do_wait && status == STATUS_UNAVAILABLE ) {
+    if ( timeout_status == TOD_ABSOLUTE_TIMEOUT_INVALID ) {
       return EINVAL;
     }
 
     if (
-      status == TOD_ABSOLUTE_TIMEOUT_IS_IN_PAST
-        || status == TOD_ABSOLUTE_TIMEOUT_IS_NOW
+      timeout_status == TOD_ABSOLUTE_TIMEOUT_IS_IN_PAST
+        || timeout_status == TOD_ABSOLUTE_TIMEOUT_IS_NOW
     ) {
       return ETIMEDOUT;
@@ -83,6 +80,4 @@
   }
 
-  return _POSIX_RWLock_Translate_core_RWLock_return_code(
-    (CORE_RWLock_Status) executing->Wait.return_code
-  );
+  return _POSIX_Get_error( status );
 }
Index: ukit/posix/src/prwlocktranslatereturncode.c
===================================================================
--- cpukit/posix/src/prwlocktranslatereturncode.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ 	(revision )
@@ -1,47 +1,0 @@
-/**
- *  @file
- *
- *  @brief POSIX RWLock Translate Core RWLock Return Code
- *  @ingroup POSIX_RWLOCK
- */
-
-/*
- *  COPYRIGHT (c) 1989-2007.
- *  On-Line Applications Research Corporation (OAR).
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <pthread.h>
-#include <errno.h>
-
-#include <rtems/system.h>
-#include <rtems/posix/rwlockimpl.h>
-
-static int _POSIX_RWLock_Return_codes[CORE_RWLOCK_STATUS_LAST + 1] = {
-  0,                        /* CORE_RWLOCK_SUCCESSFUL */
-  EINVAL,                   /* CORE_RWLOCK_DELETED */
-  EBUSY,                    /* CORE_RWLOCK_UNAVAILABLE */
-  ETIMEDOUT,                /* CORE_RWLOCK_TIMEOUT */
-};
-
-
-int _POSIX_RWLock_Translate_core_RWLock_return_code(
-  CORE_RWLock_Status  the_rwlock_status
-)
-{
-  /*
-   *  Internal consistency check for bad status from SuperCore
-   */
-  #if defined(RTEMS_DEBUG)
-    if ( the_rwlock_status > CORE_RWLOCK_STATUS_LAST )
-      return EINVAL;
-  #endif
-  return _POSIX_RWLock_Return_codes[the_rwlock_status];
-}
Index: cpukit/posix/src/prwlocktryrdlock.c
===================================================================
--- cpukit/posix/src/prwlocktryrdlock.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/prwlocktryrdlock.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,4 +20,5 @@
 
 #include <rtems/posix/rwlockimpl.h>
+#include <rtems/posix/posixapi.h>
 
 int pthread_rwlock_tryrdlock(
@@ -27,5 +28,5 @@
   POSIX_RWLock_Control *the_rwlock;
   Thread_queue_Context  queue_context;
-  Thread_Control       *executing;
+  Status_Control        status;
 
   the_rwlock = _POSIX_RWLock_Get( rwlock, &queue_context );
@@ -35,14 +36,11 @@
   }
 
-  executing = _Thread_Executing;
-  _CORE_RWLock_Seize_for_reading(
+  status = _CORE_RWLock_Seize_for_reading(
     &the_rwlock->RWLock,
-    executing,
+    _Thread_Executing,
     false,                  /* do not wait for the rwlock */
     0,
     &queue_context
   );
-  return _POSIX_RWLock_Translate_core_RWLock_return_code(
-    (CORE_RWLock_Status) executing->Wait.return_code
-  );
+  return _POSIX_Get_error( status );
 }
Index: cpukit/posix/src/prwlocktrywrlock.c
===================================================================
--- cpukit/posix/src/prwlocktrywrlock.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/prwlocktrywrlock.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,4 +20,5 @@
 
 #include <rtems/posix/rwlockimpl.h>
+#include <rtems/posix/posixapi.h>
 
 int pthread_rwlock_trywrlock(
@@ -27,5 +28,5 @@
   POSIX_RWLock_Control *the_rwlock;
   Thread_queue_Context  queue_context;
-  Thread_Control       *executing;
+  Status_Control        status;
 
   the_rwlock = _POSIX_RWLock_Get( rwlock, &queue_context );
@@ -35,14 +36,11 @@
   }
 
-  executing = _Thread_Executing;
-  _CORE_RWLock_Seize_for_writing(
+  status = _CORE_RWLock_Seize_for_writing(
     &the_rwlock->RWLock,
-    executing,
+    _Thread_Executing,
     false,                 /* we are not willing to wait */
     0,
     &queue_context
   );
-  return _POSIX_RWLock_Translate_core_RWLock_return_code(
-    (CORE_RWLock_Status) executing->Wait.return_code
-  );
+  return _POSIX_Get_error( status );
 }
Index: cpukit/posix/src/prwlockunlock.c
===================================================================
--- cpukit/posix/src/prwlockunlock.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/prwlockunlock.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -22,4 +22,5 @@
 
 #include <rtems/posix/rwlockimpl.h>
+#include <rtems/posix/posixapi.h>
 
 int pthread_rwlock_unlock(
@@ -29,5 +30,5 @@
   POSIX_RWLock_Control *the_rwlock;
   Thread_queue_Context  queue_context;
-  CORE_RWLock_Status    status;
+  Status_Control        status;
 
   the_rwlock = _POSIX_RWLock_Get( rwlock, &queue_context );
@@ -38,4 +39,4 @@
 
   status = _CORE_RWLock_Surrender( &the_rwlock->RWLock, &queue_context );
-  return _POSIX_RWLock_Translate_core_RWLock_return_code( status );
+  return _POSIX_Get_error( status );
 }
Index: cpukit/posix/src/prwlockwrlock.c
===================================================================
--- cpukit/posix/src/prwlockwrlock.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/prwlockwrlock.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -21,8 +21,6 @@
 #endif
 
-#include <pthread.h>
-#include <errno.h>
-
 #include <rtems/posix/rwlockimpl.h>
+#include <rtems/posix/posixapi.h>
 
 THREAD_QUEUE_OBJECT_ASSERT( POSIX_RWLock_Control, RWLock.Wait_queue );
@@ -34,5 +32,5 @@
   POSIX_RWLock_Control *the_rwlock;
   Thread_queue_Context  queue_context;
-  Thread_Control       *executing;
+  Status_Control        status;
 
   the_rwlock = _POSIX_RWLock_Get( rwlock, &queue_context );
@@ -42,14 +40,11 @@
   }
 
-  executing = _Thread_Executing;
-  _CORE_RWLock_Seize_for_writing(
+  status = _CORE_RWLock_Seize_for_writing(
     &the_rwlock->RWLock,
-    executing,
+    _Thread_Executing,
     true,          /* do not timeout -- wait forever */
     0,
     &queue_context
   );
-  return _POSIX_RWLock_Translate_core_RWLock_return_code(
-    (CORE_RWLock_Status) executing->Wait.return_code
-  );
+  return _POSIX_Get_error( status );
 }
Index: cpukit/posix/src/psignalunblockthread.c
===================================================================
--- cpukit/posix/src/psignalunblockthread.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/psignalunblockthread.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -99,5 +99,5 @@
   POSIX_API_Control  *api;
   int                 signo;
-  int                 hold_errno;
+  uint32_t            hold_errno;
 
   (void) action;
@@ -199,5 +199,5 @@
 
     if ( (the_thread->Wait.option & mask) || (api->signals_unblocked & mask) ) {
-      the_thread->Wait.return_code = EINTR;
+      the_thread->Wait.return_code = STATUS_INTERRUPTED;
 
       the_info = (siginfo_t *) the_thread->Wait.return_argument;
@@ -241,5 +241,5 @@
 
     if ( _States_Is_interruptible_by_signal( the_thread->current_state ) ) {
-      the_thread->Wait.return_code = EINTR;
+      the_thread->Wait.return_code = STATUS_INTERRUPTED;
       _Thread_queue_Extract_with_proxy( the_thread );
     }
Index: cpukit/posix/src/pspinlock.c
===================================================================
--- cpukit/posix/src/pspinlock.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/pspinlock.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,6 +20,5 @@
 
 #include <rtems/posix/spinlockimpl.h>
-
-#include <errno.h>
+#include <rtems/posix/posixapi.h>
 
 int pthread_spin_lock( pthread_spinlock_t *spinlock )
@@ -27,5 +26,5 @@
   POSIX_Spinlock_Control *the_spinlock;
   ISR_lock_Context        lock_context;
-  CORE_spinlock_Status    status;
+  Status_Control          status;
 
   the_spinlock = _POSIX_Spinlock_Get( spinlock, &lock_context );
@@ -40,4 +39,4 @@
     &lock_context
   );
-  return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
+  return _POSIX_Get_error( status );
 }
Index: ukit/posix/src/pspinlocktranslatereturncode.c
===================================================================
--- cpukit/posix/src/pspinlocktranslatereturncode.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ 	(revision )
@@ -1,50 +1,0 @@
-/**
- *  @file
- *
- *  @brief POSIX Spinlock Translate Core Spinlock Return Code
- *  @ingroup POSIX_SPINLOCK
- */
-
-/*
- *  COPYRIGHT (c) 1989-2007.
- *  On-Line Applications Research Corporation (OAR).
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <pthread.h>
-#include <errno.h>
-
-#include <rtems/system.h>
-#include <rtems/score/corespinlock.h>
-#include <rtems/posix/spinlockimpl.h>
-
-static int _POSIX_Spinlock_Return_codes[CORE_SPINLOCK_STATUS_LAST + 1] = {
-  0,                        /* CORE_SPINLOCK_SUCCESSFUL */
-  EDEADLK,                  /* CORE_SPINLOCK_HOLDER_RELOCKING */
-  EPERM,                    /* CORE_SPINLOCK_NOT_HOLDER */
-  -1,                       /* CORE_SPINLOCK_TIMEOUT */
-  EBUSY,                    /* CORE_SPINLOCK_IS_BUSY */
-  EBUSY                     /* CORE_SPINLOCK_UNAVAILABLE */
-};
-
-
-int _POSIX_Spinlock_Translate_core_spinlock_return_code(
-  CORE_spinlock_Status  the_spinlock_status
-)
-{
-  /*
-   *  Internal consistency check for bad status from SuperCore
-   */
-  #if defined(RTEMS_DEBUG)
-    if ( the_spinlock_status > CORE_SPINLOCK_STATUS_LAST )
-      return EINVAL;
-  #endif
-  return _POSIX_Spinlock_Return_codes[the_spinlock_status];
-}
Index: cpukit/posix/src/pspintrylock.c
===================================================================
--- cpukit/posix/src/pspintrylock.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/pspintrylock.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,6 +20,5 @@
 
 #include <rtems/posix/spinlockimpl.h>
-
-#include <errno.h>
+#include <rtems/posix/posixapi.h>
 
 int pthread_spin_trylock( pthread_spinlock_t *spinlock )
@@ -27,5 +26,5 @@
   POSIX_Spinlock_Control *the_spinlock;
   ISR_lock_Context        lock_context;
-  CORE_spinlock_Status    status;
+  Status_Control          status;
 
   the_spinlock = _POSIX_Spinlock_Get( spinlock, &lock_context );
@@ -40,4 +39,4 @@
     &lock_context
   );
-  return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
+  return _POSIX_Get_error( status );
 }
Index: cpukit/posix/src/pspinunlock.c
===================================================================
--- cpukit/posix/src/pspinunlock.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/pspinunlock.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -22,6 +22,5 @@
 
 #include <rtems/posix/spinlockimpl.h>
-
-#include <errno.h>
+#include <rtems/posix/posixapi.h>
 
 int pthread_spin_unlock( pthread_spinlock_t *spinlock )
@@ -29,5 +28,5 @@
   POSIX_Spinlock_Control *the_spinlock;
   ISR_lock_Context        lock_context;
-  CORE_spinlock_Status    status;
+  Status_Control          status;
 
   the_spinlock = _POSIX_Spinlock_Get( spinlock, &lock_context );
@@ -37,4 +36,4 @@
 
   status = _CORE_spinlock_Surrender( &the_spinlock->Spinlock, &lock_context );
-  return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
+  return _POSIX_Get_error( status );
 }
Index: cpukit/posix/src/pthreadjoin.c
===================================================================
--- cpukit/posix/src/pthreadjoin.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/pthreadjoin.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -27,4 +27,5 @@
 
 #include <rtems/posix/threadsup.h>
+#include <rtems/posix/posixapi.h>
 #include <rtems/score/threadimpl.h>
 #include <rtems/score/statesimpl.h>
@@ -73,6 +74,6 @@
     );
 
-    if ( executing->Wait.return_code != 0 ) {
-      _Assert( executing->Wait.return_code == EINTR );
+    if ( _POSIX_Get_error_after_wait( executing ) != 0 ) {
+      _Assert( _POSIX_Get_error_after_wait( executing ) == EINTR );
       return EINTR;
     }
Index: ukit/posix/src/semaphoretranslatereturncode.c
===================================================================
--- cpukit/posix/src/semaphoretranslatereturncode.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ 	(revision )
@@ -1,31 +1,0 @@
-/**
- * @file
- *
- * @brief POSIX Semaphore Code Translation Error
- * @ingroup POSIXAPI
- */
-
-/*
- *  POSIX Semaphore Error Translation
- *
- *  COPYRIGHT (c) 1989-2007.
- *  On-Line Applications Research Corporation (OAR).
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <rtems/posix/semaphoreimpl.h>
-
-const int _POSIX_Semaphore_Return_codes[CORE_SEMAPHORE_STATUS_LAST + 1] = {
-  0,                   /* CORE_SEMAPHORE_STATUS_SUCCESSFUL */
-  EAGAIN,              /* CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT */
-  EINVAL,              /* CORE_SEMAPHORE_WAS_DELETED */
-  ETIMEDOUT,           /* CORE_SEMAPHORE_TIMEOUT */
-  EOVERFLOW            /* CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED */
-};
Index: cpukit/posix/src/semaphorewaitsupp.c
===================================================================
--- cpukit/posix/src/semaphorewaitsupp.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/semaphorewaitsupp.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -22,4 +22,5 @@
 
 #include <rtems/posix/semaphoreimpl.h>
+#include <rtems/posix/posixapi.h>
 
 THREAD_QUEUE_OBJECT_ASSERT( POSIX_Semaphore_Control, Semaphore.Wait_queue );
@@ -32,6 +33,6 @@
 {
   POSIX_Semaphore_Control *the_semaphore;
-  Thread_Control          *executing;
   Thread_queue_Context     queue_context;
+  Status_Control           status;
 
   the_semaphore = _POSIX_Semaphore_Get( sem, &queue_context );
@@ -41,22 +42,11 @@
   }
 
-  executing = _Thread_Executing;
-
-  _CORE_semaphore_Seize(
+  status = _CORE_semaphore_Seize(
     &the_semaphore->Semaphore,
-    executing,
+    _Thread_Executing,
     blocking,
     timeout,
     &queue_context
   );
-
-  if ( executing->Wait.return_code == CORE_SEMAPHORE_STATUS_SUCCESSFUL ) {
-    return 0;
-  }
-
-  rtems_set_errno_and_return_minus_one(
-    _POSIX_Semaphore_Translate_core_semaphore_return_code(
-      executing->Wait.return_code
-    )
-  );
+  return _POSIX_Zero_or_minus_one_plus_errno( status );
 }
Index: cpukit/posix/src/sempost.c
===================================================================
--- cpukit/posix/src/sempost.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/sempost.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -23,4 +23,5 @@
 
 #include <rtems/posix/semaphoreimpl.h>
+#include <rtems/posix/posixapi.h>
 
 int sem_post(
@@ -30,5 +31,5 @@
   POSIX_Semaphore_Control *the_semaphore;
   Thread_queue_Context     queue_context;
-  CORE_semaphore_Status    status;
+  Status_Control           status;
 
   the_semaphore = _POSIX_Semaphore_Get( sem, &queue_context );
@@ -43,11 +44,4 @@
     &queue_context
   );
-
-  if ( status == CORE_SEMAPHORE_STATUS_SUCCESSFUL ) {
-    return 0;
-  }
-
-  rtems_set_errno_and_return_minus_one(
-    _POSIX_Semaphore_Translate_core_semaphore_return_code( status )
-  );
+  return _POSIX_Zero_or_minus_one_plus_errno( status );
 }
Index: cpukit/posix/src/sigtimedwait.c
===================================================================
--- cpukit/posix/src/sigtimedwait.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/posix/src/sigtimedwait.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -19,12 +19,10 @@
 #endif
 
-#include <pthread.h>
 #include <signal.h>
-#include <errno.h>
 
 #include <rtems/posix/pthreadimpl.h>
 #include <rtems/posix/psignalimpl.h>
+#include <rtems/posix/posixapi.h>
 #include <rtems/score/threadqimpl.h>
-#include <rtems/seterr.h>
 #include <rtems/score/isr.h>
 
@@ -79,4 +77,5 @@
   int                signo;
   ISR_lock_Context   lock_context;
+  int                error;
 
   /*
@@ -151,5 +150,4 @@
   the_info->si_signo = -1;
 
-  executing->Wait.return_code     = EINTR;
   executing->Wait.option          = *set;
   executing->Wait.return_argument = the_info;
@@ -160,5 +158,4 @@
     STATES_WAITING_FOR_SIGNAL | STATES_INTERRUPTIBLE_BY_SIGNAL,
     interval,
-    EAGAIN,
     &lock_context
   );
@@ -183,8 +180,15 @@
    */
 
-  if ( (executing->Wait.return_code != EINTR)
-       || !(*set & signo_to_mask( the_info->si_signo )) ) {
-    errno = executing->Wait.return_code;
-    return -1;
+  error = _POSIX_Get_error_after_wait( executing );
+
+  if (
+    error != EINTR
+     || ( *set & signo_to_mask( the_info->si_signo ) ) == 0
+  ) {
+    if ( error == ETIMEDOUT ) {
+      error = EAGAIN;
+    }
+
+    rtems_set_errno_and_return_minus_one( error );
   }
 
Index: cpukit/rtems/Makefile.am
===================================================================
--- cpukit/rtems/Makefile.am	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/Makefile.am	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -130,5 +130,4 @@
 librtems_a_SOURCES += src/barrierdelete.c
 librtems_a_SOURCES += src/barrierident.c
-librtems_a_SOURCES += src/barriertranslatereturncode.c
 librtems_a_SOURCES += src/barrierrelease.c
 librtems_a_SOURCES += src/barrierwait.c
@@ -171,5 +170,4 @@
 librtems_a_SOURCES += src/msgqreceive.c
 librtems_a_SOURCES += src/msgqsend.c
-librtems_a_SOURCES += src/msgqtranslatereturncode.c
 librtems_a_SOURCES += src/msgqurgent.c
 
@@ -182,5 +180,4 @@
 librtems_a_SOURCES += src/semrelease.c
 librtems_a_SOURCES += src/semflush.c
-librtems_a_SOURCES += src/semtranslatereturncode.c
 librtems_a_SOURCES += src/semsetpriority.c
 
Index: cpukit/rtems/include/rtems/rtems/barrierimpl.h
===================================================================
--- cpukit/rtems/include/rtems/rtems/barrierimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/include/rtems/rtems/barrierimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -80,18 +80,4 @@
 }
 
-/**
- * @brief Translate SuperCore Barrier Status Code to RTEMS Status Code
- *
- * This function returns a RTEMS status code based on the barrier
- * status code specified.
- *
- * @param[in] the_status is the SuperCore Barrier status to translate.
- *
- * @retval a status code indicating success or the reason for failure.
- */
-rtems_status_code _Barrier_Translate_core_barrier_return_code (
-  CORE_barrier_Status  the_status
-);
-
 /**@}*/
 
Index: cpukit/rtems/include/rtems/rtems/eventimpl.h
===================================================================
--- cpukit/rtems/include/rtems/rtems/eventimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/include/rtems/rtems/eventimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -45,5 +45,5 @@
 #define EVENT_SETS_NONE_PENDING 0
 
-void _Event_Seize(
+rtems_status_code _Event_Seize(
   rtems_event_set    event_in,
   rtems_option       option_set,
Index: cpukit/rtems/include/rtems/rtems/messageimpl.h
===================================================================
--- cpukit/rtems/include/rtems/rtems/messageimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/include/rtems/rtems/messageimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -75,18 +75,4 @@
 
 /**
- * @brief Message queue Translate Core Message Queue Return Code
- *
- * This function returns a RTEMS status code based on
- * @a the_message_queue_status.
- *
- * @param[in] the_message_queue_status is the status code to translate
- *
- * @retval translated RTEMS status code
- */
-rtems_status_code _Message_queue_Translate_core_message_queue_return_code (
-  uint32_t   the_message_queue_status
-);
-
-/**
  *  @brief Deallocates a message queue control block into
  *  the inactive chain of free message queue control blocks.
Index: cpukit/rtems/include/rtems/rtems/semimpl.h
===================================================================
--- cpukit/rtems/include/rtems/rtems/semimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/include/rtems/rtems/semimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -32,80 +32,4 @@
  */
 extern Objects_Information _Semaphore_Information;
-
-extern const rtems_status_code
-  _Semaphore_Translate_core_mutex_return_code_[];
-
-extern const rtems_status_code
-  _Semaphore_Translate_core_semaphore_return_code_[];
-
-/**
- * @brief Semaphore Translate Core Mutex Return Code
- *
- * This function returns a RTEMS status code based on the mutex
- * status code specified.
- *
- * @param[in] status is the mutex status code to translate
- *
- * @retval translated RTEMS status code
- */
-RTEMS_INLINE_ROUTINE rtems_status_code
-_Semaphore_Translate_core_mutex_return_code(
-  uint32_t   status
-)
-{
-  /*
-   *  If this thread is blocking waiting for a result on a remote operation.
-   */
-  #if defined(RTEMS_MULTIPROCESSING)
-    if ( _Thread_Is_proxy_blocking(status) )
-      return RTEMS_PROXY_BLOCKING;
-  #endif
-
-  /*
-   *  Internal consistency check for bad status from SuperCore
-   */
-  #if defined(RTEMS_DEBUG)
-    if ( status > CORE_MUTEX_STATUS_LAST )
-      return RTEMS_INTERNAL_ERROR;
-  #endif
-  return _Semaphore_Translate_core_mutex_return_code_[status];
-}
-
-#if defined(RTEMS_SMP)
-RTEMS_INLINE_ROUTINE rtems_status_code
-_Semaphore_Translate_MRSP_status_code( MRSP_Status mrsp_status )
-{
-  return (rtems_status_code) mrsp_status;
-}
-#endif
-
-/**
- * @brief Semaphore Translate Core Semaphore Return Code
- *
- * This function returns a RTEMS status code based on the semaphore
- * status code specified.
- *
- * @param[in] status is the semaphore status code to translate
- *
- * @retval translated RTEMS status code
- */
-RTEMS_INLINE_ROUTINE rtems_status_code
-_Semaphore_Translate_core_semaphore_return_code(
-  uint32_t   status
-)
-{
-  #if defined(RTEMS_MULTIPROCESSING)
-    if ( _Thread_Is_proxy_blocking(status) )
-      return RTEMS_PROXY_BLOCKING;
-  #endif
-  /*
-   *  Internal consistency check for bad status from SuperCore
-   */
-  #if defined(RTEMS_DEBUG)
-    if ( status > CORE_SEMAPHORE_STATUS_LAST )
-      return RTEMS_INTERNAL_ERROR;
-  #endif
-  return _Semaphore_Translate_core_semaphore_return_code_[status];
-}
 
 /**
Index: cpukit/rtems/include/rtems/rtems/statusimpl.h
===================================================================
--- cpukit/rtems/include/rtems/rtems/statusimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/include/rtems/rtems/statusimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -19,4 +19,5 @@
 
 #include <rtems/rtems/status.h>
+#include <rtems/score/threadimpl.h>
 
 #ifdef __cplusplus
@@ -40,4 +41,18 @@
 extern const rtems_status_code _Status_Object_name_errors_to_status[];
 
+RTEMS_INLINE_ROUTINE rtems_status_code _Status_Get(
+  Status_Control status
+)
+{
+  return (rtems_status_code) STATUS_GET_CLASSIC( status );
+}
+
+RTEMS_INLINE_ROUTINE rtems_status_code _Status_Get_after_wait(
+  const Thread_Control *executing
+)
+{
+  return _Status_Get( _Thread_Wait_get_status( executing ) );
+}
+
 /**@}*/
 
Index: ukit/rtems/src/barriertranslatereturncode.c
===================================================================
--- cpukit/rtems/src/barriertranslatereturncode.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ 	(revision )
@@ -1,45 +1,0 @@
-/**
- *  @file
- *
- *  @brief Translate SuperCore Barrier Status Code to RTEMS Status Code
- *  @ingroup ClassicBarrier
- */
-
-/*
- *  COPYRIGHT (c) 1989-2007.
- *  On-Line Applications Research Corporation (OAR).
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <rtems/system.h>
-#include <rtems/rtems/status.h>
-#include <rtems/rtems/support.h>
-#include <rtems/rtems/barrierimpl.h>
-
-rtems_status_code _Barrier_Translate_core_barrier_return_code_[] = {
-  RTEMS_SUCCESSFUL,         /* CORE_BARRIER_STATUS_SUCCESSFUL */
-  RTEMS_SUCCESSFUL,         /* CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED */
-  RTEMS_OBJECT_WAS_DELETED, /* CORE_BARRIER_WAS_DELETED */
-  RTEMS_TIMEOUT             /* CORE_BARRIER_TIMEOUT */
-};
-
-rtems_status_code _Barrier_Translate_core_barrier_return_code (
-  CORE_barrier_Status  the_barrier_status
-)
-{
-  /*
-   *  Internal consistency check for bad status from SuperCore
-   */
-  #if defined(RTEMS_DEBUG)
-    if ( the_barrier_status > CORE_BARRIER_STATUS_LAST )
-      return RTEMS_INTERNAL_ERROR;
-  #endif
-  return _Barrier_Translate_core_barrier_return_code_[the_barrier_status];
-}
Index: cpukit/rtems/src/barrierwait.c
===================================================================
--- cpukit/rtems/src/barrierwait.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/barrierwait.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,4 +20,5 @@
 
 #include <rtems/rtems/barrierimpl.h>
+#include <rtems/rtems/statusimpl.h>
 
 THREAD_QUEUE_OBJECT_ASSERT( Barrier_Control, Barrier.Wait_queue );
@@ -30,5 +31,5 @@
   Barrier_Control      *the_barrier;
   Thread_queue_Context  queue_context;
-  Thread_Control       *executing;
+  Status_Control        status;
 
   the_barrier = _Barrier_Get( id, &queue_context );
@@ -38,14 +39,11 @@
   }
 
-  executing = _Thread_Executing;
-  _CORE_barrier_Seize(
+  status = _CORE_barrier_Seize(
     &the_barrier->Barrier,
-    executing,
+    _Thread_Executing,
     true,
     timeout,
     &queue_context
   );
-  return _Barrier_Translate_core_barrier_return_code(
-    executing->Wait.return_code
-  );
+  return _Status_Get( status );
 }
Index: cpukit/rtems/src/eventmp.c
===================================================================
--- cpukit/rtems/src/eventmp.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/eventmp.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,4 +20,5 @@
 
 #include <rtems/rtems/eventimpl.h>
+#include <rtems/rtems/statusimpl.h>
 #include <rtems/score/threadimpl.h>
 #include <rtems/score/statesimpl.h>
@@ -62,4 +63,5 @@
 {
   Event_MP_Packet *the_packet;
+  Status_Control   status;
 
   the_packet = _Event_MP_Get_packet( id );
@@ -75,10 +77,10 @@
   the_packet->event_in          = event_in;
 
-  return (rtems_status_code) _MPCI_Send_request_packet(
+  status = _MPCI_Send_request_packet(
     _Objects_Get_node( id ),
     &the_packet->Prefix,
-    STATES_READY,
-    RTEMS_TIMEOUT
+    STATES_READY
   );
+  return _Status_Get( status );
 }
 
Index: cpukit/rtems/src/eventreceive.c
===================================================================
--- cpukit/rtems/src/eventreceive.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/eventreceive.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -44,5 +44,5 @@
 
     if ( !_Event_sets_Is_empty( event_in ) ) {
-      _Event_Seize(
+      sc = _Event_Seize(
         event_in,
         option_set,
@@ -55,6 +55,4 @@
         &lock_context
       );
-
-      sc = executing->Wait.return_code;
     } else {
       *event_out = event->pending_events;
Index: cpukit/rtems/src/eventseize.c
===================================================================
--- cpukit/rtems/src/eventseize.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/eventseize.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -22,15 +22,9 @@
 #include <rtems/rtems/eventimpl.h>
 #include <rtems/rtems/optionsimpl.h>
+#include <rtems/rtems/statusimpl.h>
 #include <rtems/score/threadimpl.h>
 #include <rtems/score/watchdogimpl.h>
 
-/*
- *  INTERRUPT LATENCY:
- *    available
- *    wait
- *    check sync
- */
-
-void _Event_Seize(
+rtems_status_code _Event_Seize(
   rtems_event_set    event_in,
   rtems_option       option_set,
@@ -50,6 +44,4 @@
   Per_CPU_Control   *cpu_self;
 
-  executing->Wait.return_code = RTEMS_SUCCESSFUL;
-
   pending_events = event->pending_events;
   seized_events  = _Event_sets_Get( pending_events, event_in );
@@ -61,12 +53,11 @@
     _Thread_Lock_release_default( executing, lock_context );
     *event_out = seized_events;
-    return;
+    return RTEMS_SUCCESSFUL;
   }
 
   if ( _Options_Is_no_wait( option_set ) ) {
     _Thread_Lock_release_default( executing, lock_context );
-    executing->Wait.return_code = RTEMS_UNSATISFIED;
     *event_out = seized_events;
-    return;
+    return RTEMS_UNSATISFIED;
   }
 
@@ -81,4 +72,5 @@
    *        issue but better safe than sorry.
    */
+  executing->Wait.return_code     = STATUS_SUCCESSFUL;
   executing->Wait.option          = option_set;
   executing->Wait.count           = event_in;
@@ -90,5 +82,4 @@
 
   if ( ticks ) {
-    _Thread_Wait_set_timeout_code( executing, RTEMS_TIMEOUT );
     _Thread_Timer_insert_relative(
       executing,
@@ -118,4 +109,5 @@
 
   _Thread_Dispatch_enable( cpu_self );
+  return _Status_Get_after_wait( executing );
 }
 
Index: cpukit/rtems/src/msgmp.c
===================================================================
--- cpukit/rtems/src/msgmp.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/msgmp.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -21,4 +21,5 @@
 #include <rtems/rtems/messageimpl.h>
 #include <rtems/rtems/optionsimpl.h>
+#include <rtems/rtems/statusimpl.h>
 #include <rtems/score/coremsgimpl.h>
 #include <rtems/score/statesimpl.h>
@@ -106,4 +107,5 @@
 {
   Message_queue_MP_Packet *the_packet;
+  Status_Control           status;
 
   if ( !_Message_queue_MP_Is_remote( message_queue_id ) ) {
@@ -156,11 +158,10 @@
       }
 
-      return (rtems_status_code) _MPCI_Send_request_packet(
+      status = _MPCI_Send_request_packet(
         _Objects_Get_node(message_queue_id),
         &the_packet->Prefix,
-        STATES_WAITING_FOR_MESSAGE,
-        RTEMS_TIMEOUT
-      );
-      break;
+        STATES_WAITING_FOR_MESSAGE
+      );
+      return _Status_Get( status );
 
     case MESSAGE_QUEUE_MP_RECEIVE_REQUEST:
@@ -182,11 +183,10 @@
       _Thread_Executing->Wait.return_argument = size_p;
 
-      return (rtems_status_code) _MPCI_Send_request_packet(
+      status = _MPCI_Send_request_packet(
         _Objects_Get_node(message_queue_id),
         &the_packet->Prefix,
-        STATES_WAITING_FOR_MESSAGE,
-        RTEMS_TIMEOUT
-      );
-      break;
+        STATES_WAITING_FOR_MESSAGE
+      );
+      return _Status_Get( status );
 
     case MESSAGE_QUEUE_MP_ANNOUNCE_CREATE:
Index: cpukit/rtems/src/msgqbroadcast.c
===================================================================
--- cpukit/rtems/src/msgqbroadcast.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/msgqbroadcast.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,4 +20,5 @@
 
 #include <rtems/rtems/messageimpl.h>
+#include <rtems/rtems/statusimpl.h>
 
 rtems_status_code rtems_message_queue_broadcast(
@@ -28,7 +29,7 @@
 )
 {
-  Message_queue_Control     *the_message_queue;
-  Thread_queue_Context       queue_context;
-  CORE_message_queue_Status  status;
+  Message_queue_Control *the_message_queue;
+  Thread_queue_Context   queue_context;
+  Status_Control         status;
 
   if ( buffer == NULL ) {
@@ -61,4 +62,4 @@
     &queue_context
   );
-  return _Message_queue_Translate_core_message_queue_return_code( status );
+  return _Status_Get( status );
 }
Index: cpukit/rtems/src/msgqreceive.c
===================================================================
--- cpukit/rtems/src/msgqreceive.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/msgqreceive.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -21,4 +21,5 @@
 #include <rtems/rtems/messageimpl.h>
 #include <rtems/rtems/optionsimpl.h>
+#include <rtems/rtems/statusimpl.h>
 
 THREAD_QUEUE_OBJECT_ASSERT( Message_queue_Control, message_queue.Wait_queue );
@@ -35,4 +36,5 @@
   Thread_queue_Context   queue_context;
   Thread_Control        *executing;
+  Status_Control         status;
 
   if ( buffer == NULL ) {
@@ -60,5 +62,5 @@
 
   executing = _Thread_Executing;
-  _CORE_message_queue_Seize(
+  status = _CORE_message_queue_Seize(
     &the_message_queue->message_queue,
     executing,
@@ -69,6 +71,4 @@
     &queue_context
   );
-  return _Message_queue_Translate_core_message_queue_return_code(
-    executing->Wait.return_code
-  );
+  return _Status_Get( status );
 }
Index: cpukit/rtems/src/msgqsend.c
===================================================================
--- cpukit/rtems/src/msgqsend.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/msgqsend.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,4 +20,5 @@
 
 #include <rtems/rtems/messageimpl.h>
+#include <rtems/rtems/statusimpl.h>
 
 rtems_status_code rtems_message_queue_send(
@@ -27,7 +28,7 @@
 )
 {
-  Message_queue_Control     *the_message_queue;
-  Thread_queue_Context       queue_context;
-  CORE_message_queue_Status  status;
+  Message_queue_Control *the_message_queue;
+  Thread_queue_Context   queue_context;
+  Status_Control         status;
 
   if ( buffer == NULL ) {
@@ -61,10 +62,4 @@
     &queue_context
   );
-
-  /*
-   *  Since this API does not allow for blocking sends, we can directly
-   *  return the returned status.
-   */
-
-  return _Message_queue_Translate_core_message_queue_return_code( status );
+  return _Status_Get( status );
 }
Index: ukit/rtems/src/msgqtranslatereturncode.c
===================================================================
--- cpukit/rtems/src/msgqtranslatereturncode.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ 	(revision )
@@ -1,65 +1,0 @@
-/**
- *  @file
- *
- *  @brief Message queue Translate Core Message Queue Return Code
- *  @ingroup ClassicMessageQueue
- */
-
-/*
- *  COPYRIGHT (c) 1989-2007.
- *  On-Line Applications Research Corporation (OAR).
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <rtems/system.h>
-#include <rtems/score/chain.h>
-#include <rtems/score/isr.h>
-#include <rtems/score/coremsgimpl.h>
-#include <rtems/score/threadimpl.h>
-#include <rtems/score/wkspace.h>
-#include <rtems/rtems/status.h>
-#include <rtems/rtems/attrimpl.h>
-#include <rtems/rtems/messageimpl.h>
-#include <rtems/rtems/options.h>
-#include <rtems/rtems/support.h>
-
-rtems_status_code _Message_queue_Translate_core_return_code_[] = {
-  RTEMS_SUCCESSFUL,         /* CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL */
-  RTEMS_INVALID_SIZE,       /* CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE */
-  RTEMS_TOO_MANY,           /* CORE_MESSAGE_QUEUE_STATUS_TOO_MANY */
-  RTEMS_UNSATISFIED,        /* CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED */
-  RTEMS_UNSATISFIED,        /* CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT */
-  RTEMS_OBJECT_WAS_DELETED, /* CORE_MESSAGE_QUEUE_STATUS_WAS_DELETED */
-  RTEMS_TIMEOUT             /* CORE_MESSAGE_QUEUE_STATUS_TIMEOUT */
-};
-
-rtems_status_code _Message_queue_Translate_core_message_queue_return_code (
-  uint32_t   status
-)
-{
-  /*
-   *  Check for proxy blocking first since it is out of range
-   *  from the external status codes.
-   */
-  #if defined(RTEMS_MULTIPROCESSING)
-    if ( _Thread_Is_proxy_blocking(status) )
-      return RTEMS_PROXY_BLOCKING;
-  #endif
-
-  /*
-   *  Internal consistency check for bad status from SuperCore
-   */
-  #if defined(RTEMS_DEBUG)
-    if ( status > CORE_MESSAGE_QUEUE_STATUS_TIMEOUT )
-      return RTEMS_INTERNAL_ERROR;
-  #endif
-
-  return _Message_queue_Translate_core_return_code_[status];
-}
Index: cpukit/rtems/src/msgqurgent.c
===================================================================
--- cpukit/rtems/src/msgqurgent.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/msgqurgent.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,4 +20,5 @@
 
 #include <rtems/rtems/messageimpl.h>
+#include <rtems/rtems/statusimpl.h>
 
 rtems_status_code rtems_message_queue_urgent(
@@ -27,7 +28,7 @@
 )
 {
-  Message_queue_Control     *the_message_queue;
-  Thread_queue_Context       queue_context;
-  CORE_message_queue_Status  status;
+  Message_queue_Control *the_message_queue;
+  Thread_queue_Context   queue_context;
+  Status_Control         status;
 
   if ( buffer == NULL ) {
@@ -61,10 +62,4 @@
     &queue_context
   );
-
-  /*
-   *  Since this API does not allow for blocking sends, we can directly
-   *  return the returned status.
-   */
-
-  return _Message_queue_Translate_core_message_queue_return_code( status );
+  return _Status_Get( status );
 }
Index: cpukit/rtems/src/partmp.c
===================================================================
--- cpukit/rtems/src/partmp.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/partmp.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,4 +20,5 @@
 
 #include <rtems/rtems/partimpl.h>
+#include <rtems/rtems/statusimpl.h>
 #include <rtems/score/statesimpl.h>
 #include <rtems/score/threadimpl.h>
@@ -101,4 +102,5 @@
 {
   Partition_MP_Packet *the_packet;
+  Status_Control       status;
 
   if ( !_Partition_MP_Is_remote( partition_id ) ) {
@@ -115,13 +117,10 @@
       the_packet->buffer = buffer;
 
-      return
-        _MPCI_Send_request_packet(
-          _Objects_Get_node( partition_id ),
-          &the_packet->Prefix,
-          STATES_READY,     /* Not used */
-          RTEMS_TIMEOUT
-        );
-
-      break;
+      status = _MPCI_Send_request_packet(
+        _Objects_Get_node( partition_id ),
+        &the_packet->Prefix,
+        STATES_READY /* Not used */
+      );
+      return _Status_Get( status );
 
     case PARTITION_MP_ANNOUNCE_CREATE:
Index: cpukit/rtems/src/regiongetsegment.c
===================================================================
--- cpukit/rtems/src/regiongetsegment.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/regiongetsegment.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -21,4 +21,5 @@
 #include <rtems/rtems/regionimpl.h>
 #include <rtems/rtems/optionsimpl.h>
+#include <rtems/rtems/statusimpl.h>
 #include <rtems/score/threadqimpl.h>
 #include <rtems/score/statesimpl.h>
@@ -86,11 +87,10 @@
         executing,
         STATES_WAITING_FOR_SEGMENT,
-        timeout,
-        RTEMS_TIMEOUT
+        timeout
       );
 
       _Thread_Dispatch_enable( cpu_self );
 
-      return (rtems_status_code) executing->Wait.return_code;
+      return _Status_Get_after_wait( executing );
     }
   }
Index: cpukit/rtems/src/regionprocessqueue.c
===================================================================
--- cpukit/rtems/src/regionprocessqueue.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/regionprocessqueue.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,4 +20,5 @@
 
 #include <rtems/rtems/regionimpl.h>
+#include <rtems/score/status.h>
 #include <rtems/score/threadqimpl.h>
 
@@ -66,5 +67,5 @@
     *(void **)the_thread->Wait.return_argument = the_segment;
     _Thread_queue_Extract( the_thread );
-    the_thread->Wait.return_code = RTEMS_SUCCESSFUL;
+    the_thread->Wait.return_code = STATUS_SUCCESSFUL;
   }
 
Index: cpukit/rtems/src/semcreate.c
===================================================================
--- cpukit/rtems/src/semcreate.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/semcreate.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -26,4 +26,5 @@
 #include <rtems/rtems/options.h>
 #include <rtems/rtems/semimpl.h>
+#include <rtems/rtems/statusimpl.h>
 #include <rtems/rtems/tasksimpl.h>
 #include <rtems/score/coremuteximpl.h>
@@ -64,5 +65,5 @@
   CORE_mutex_Attributes       the_mutex_attr;
   CORE_semaphore_Disciplines  semaphore_discipline;
-  CORE_mutex_Status           mutex_status;
+  Status_Control              status;
 
   if ( !rtems_is_name_valid( name ) )
@@ -156,7 +157,8 @@
       count
     );
+    status = STATUS_SUCCESSFUL;
 #if defined(RTEMS_SMP)
   } else if ( _Attributes_Is_multiprocessor_resource_sharing( attribute_set ) ) {
-    MRSP_Status mrsp_status = _MRSP_Initialize(
+    status = _MRSP_Initialize(
       &the_semaphore->Core_control.mrsp,
       priority_ceiling,
@@ -164,11 +166,4 @@
       count != 1
     );
-
-    if ( mrsp_status != MRSP_SUCCESSFUL ) {
-      _Semaphore_Free( the_semaphore );
-      _Objects_Allocator_unlock();
-
-      return _Semaphore_Translate_MRSP_status_code( mrsp_status );
-    }
 #endif
   } else {
@@ -203,5 +198,5 @@
     }
 
-    mutex_status = _CORE_mutex_Initialize(
+    status = _CORE_mutex_Initialize(
       &the_semaphore->Core_control.mutex,
       _Thread_Get_executing(),
@@ -209,10 +204,10 @@
       count != 1
     );
-
-    if ( mutex_status == CORE_MUTEX_STATUS_CEILING_VIOLATED ) {
-      _Semaphore_Free( the_semaphore );
-      _Objects_Allocator_unlock();
-      return RTEMS_INVALID_PRIORITY;
-    }
+  }
+
+  if ( status != STATUS_SUCCESSFUL ) {
+    _Semaphore_Free( the_semaphore );
+    _Objects_Allocator_unlock();
+    return _Status_Get( status );
   }
 
Index: cpukit/rtems/src/semdelete.c
===================================================================
--- cpukit/rtems/src/semdelete.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/semdelete.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -21,4 +21,5 @@
 #include <rtems/rtems/semimpl.h>
 #include <rtems/rtems/attrimpl.h>
+#include <rtems/rtems/statusimpl.h>
 
 rtems_status_code rtems_semaphore_delete(
@@ -53,5 +54,5 @@
 #if defined(RTEMS_SMP)
   if ( _Attributes_Is_multiprocessor_resource_sharing( attribute_set ) ) {
-    MRSP_Status mrsp_status;
+    Status_Control status;
 
     _MRSP_Acquire_critical(
@@ -59,6 +60,6 @@
       &queue_context
     );
-    mrsp_status = _MRSP_Can_destroy( &the_semaphore->Core_control.mrsp );
-    if ( mrsp_status != MRSP_SUCCESSFUL ) {
+    status = _MRSP_Can_destroy( &the_semaphore->Core_control.mrsp );
+    if ( status != STATUS_SUCCESSFUL ) {
       _MRSP_Release(
         &the_semaphore->Core_control.mrsp,
@@ -66,5 +67,5 @@
       );
       _Objects_Allocator_unlock();
-      return _Semaphore_Translate_MRSP_status_code( mrsp_status );
+      return _Status_Get( status );
     }
   } else
@@ -104,5 +105,5 @@
     _CORE_mutex_Flush(
       &the_semaphore->Core_control.mutex,
-      _CORE_mutex_Was_deleted,
+      _Thread_queue_Flush_status_object_was_deleted,
       &queue_context
     );
Index: cpukit/rtems/src/semflush.c
===================================================================
--- cpukit/rtems/src/semflush.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/semflush.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -59,5 +59,5 @@
     _CORE_mutex_Flush(
       &the_semaphore->Core_control.mutex,
-      _CORE_mutex_Unsatisfied_nowait,
+      _Thread_queue_Flush_status_unavailable,
       &queue_context
     );
Index: cpukit/rtems/src/semmp.c
===================================================================
--- cpukit/rtems/src/semmp.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/semmp.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -21,4 +21,5 @@
 #include <rtems/rtems/semimpl.h>
 #include <rtems/rtems/optionsimpl.h>
+#include <rtems/rtems/statusimpl.h>
 
 RTEMS_STATIC_ASSERT(
@@ -81,4 +82,5 @@
 {
   Semaphore_MP_Packet *the_packet;
+  Status_Control       status;
 
   switch ( operation ) {
@@ -98,11 +100,10 @@
       the_packet->option_set        = option_set;
 
-      return _MPCI_Send_request_packet(
-          _Objects_Get_node( semaphore_id ),
-          &the_packet->Prefix,
-          STATES_WAITING_FOR_SEMAPHORE,
-          RTEMS_TIMEOUT
-        );
-      break;
+      status = _MPCI_Send_request_packet(
+        _Objects_Get_node( semaphore_id ),
+        &the_packet->Prefix,
+        STATES_WAITING_FOR_SEMAPHORE
+      );
+      return _Status_Get( status );
 
     case SEMAPHORE_MP_ANNOUNCE_CREATE:
Index: cpukit/rtems/src/semobtain.c
===================================================================
--- cpukit/rtems/src/semobtain.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/semobtain.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -22,4 +22,5 @@
 #include <rtems/rtems/attrimpl.h>
 #include <rtems/rtems/optionsimpl.h>
+#include <rtems/rtems/statusimpl.h>
 
 THREAD_QUEUE_OBJECT_ASSERT(
@@ -44,4 +45,5 @@
   rtems_attribute       attribute_set;
   bool                  wait;
+  Status_Control        status;
 
   the_semaphore = _Semaphore_Get( id, &queue_context, NULL );
@@ -60,7 +62,5 @@
 #if defined(RTEMS_SMP)
   if ( _Attributes_Is_multiprocessor_resource_sharing( attribute_set ) ) {
-    MRSP_Status mrsp_status;
-
-    mrsp_status = _MRSP_Seize(
+    status = _MRSP_Seize(
       &the_semaphore->Core_control.mrsp,
       executing,
@@ -69,9 +69,8 @@
       &queue_context
     );
-    return _Semaphore_Translate_MRSP_status_code( mrsp_status );
   } else
 #endif
   if ( !_Attributes_Is_counting_semaphore( attribute_set ) ) {
-    _CORE_mutex_Seize(
+    status = _CORE_mutex_Seize(
       &the_semaphore->Core_control.mutex,
       executing,
@@ -80,19 +79,15 @@
       &queue_context
     );
-    return _Semaphore_Translate_core_mutex_return_code(
-      executing->Wait.return_code
+  } else {
+    /* must be a counting semaphore */
+    status = _CORE_semaphore_Seize(
+      &the_semaphore->Core_control.semaphore,
+      executing,
+      wait,
+      timeout,
+      &queue_context
     );
   }
 
-  /* must be a counting semaphore */
-  _CORE_semaphore_Seize(
-    &the_semaphore->Core_control.semaphore,
-    executing,
-    wait,
-    timeout,
-    &queue_context
-  );
-  return _Semaphore_Translate_core_semaphore_return_code(
-    executing->Wait.return_code
-  );
+  return _Status_Get( status );
 }
Index: cpukit/rtems/src/semrelease.c
===================================================================
--- cpukit/rtems/src/semrelease.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/semrelease.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -24,12 +24,12 @@
 #include <rtems/rtems/semimpl.h>
 #include <rtems/rtems/attrimpl.h>
+#include <rtems/rtems/statusimpl.h>
 
 rtems_status_code rtems_semaphore_release( rtems_id id )
 {
-  Semaphore_Control     *the_semaphore;
-  CORE_mutex_Status      mutex_status;
-  CORE_semaphore_Status  semaphore_status;
-  rtems_attribute        attribute_set;
-  Thread_queue_Context   queue_context;
+  Semaphore_Control    *the_semaphore;
+  Thread_queue_Context  queue_context;
+  rtems_attribute       attribute_set;
+  Status_Control        status;
 
   the_semaphore = _Semaphore_Get(
@@ -50,27 +50,24 @@
 #if defined(RTEMS_SMP)
   if ( _Attributes_Is_multiprocessor_resource_sharing( attribute_set ) ) {
-    MRSP_Status mrsp_status;
-
-    mrsp_status = _MRSP_Surrender(
+    status = _MRSP_Surrender(
       &the_semaphore->Core_control.mrsp,
       _Thread_Executing,
       &queue_context
     );
-    return _Semaphore_Translate_MRSP_status_code( mrsp_status );
   } else
 #endif
   if ( !_Attributes_Is_counting_semaphore( attribute_set ) ) {
-    mutex_status = _CORE_mutex_Surrender(
+    status = _CORE_mutex_Surrender(
       &the_semaphore->Core_control.mutex,
       &queue_context
     );
-    return _Semaphore_Translate_core_mutex_return_code( mutex_status );
   } else {
-    semaphore_status = _CORE_semaphore_Surrender(
+    status = _CORE_semaphore_Surrender(
       &the_semaphore->Core_control.semaphore,
       UINT32_MAX,
       &queue_context
     );
-    return _Semaphore_Translate_core_semaphore_return_code( semaphore_status );
   }
+
+  return _Status_Get( status );
 }
Index: ukit/rtems/src/semtranslatereturncode.c
===================================================================
--- cpukit/rtems/src/semtranslatereturncode.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ 	(revision )
@@ -1,41 +1,0 @@
-/**
- *  @file
- *
- *  @brief Semaphore Translate Core Mutex and Semaphore Return Code
- *  @ingroup ClassicSem
- */
-
-/*
- *  COPYRIGHT (c) 1989-2009.
- *  On-Line Applications Research Corporation (OAR).
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <rtems/rtems/semimpl.h>
-
-const rtems_status_code _Semaphore_Translate_core_mutex_return_code_[] = {
-  RTEMS_SUCCESSFUL,         /* CORE_MUTEX_STATUS_SUCCESSFUL */
-  RTEMS_UNSATISFIED,        /* CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT */
-#if defined(RTEMS_POSIX_API)
-  RTEMS_UNSATISFIED,        /* CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED */
-#endif
-  RTEMS_NOT_OWNER_OF_RESOURCE, /* CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE */
-  RTEMS_OBJECT_WAS_DELETED, /* CORE_MUTEX_WAS_DELETED */
-  RTEMS_TIMEOUT,            /* CORE_MUTEX_TIMEOUT */
-  RTEMS_INVALID_PRIORITY   /* CORE_MUTEX_STATUS_CEILING_VIOLATED */
-};
-
-const rtems_status_code _Semaphore_Translate_core_semaphore_return_code_[] = {
-  RTEMS_SUCCESSFUL,         /* CORE_SEMAPHORE_STATUS_SUCCESSFUL */
-  RTEMS_UNSATISFIED,        /* CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT */
-  RTEMS_OBJECT_WAS_DELETED, /* CORE_SEMAPHORE_WAS_DELETED */
-  RTEMS_TIMEOUT,            /* CORE_SEMAPHORE_TIMEOUT  */
-  RTEMS_UNSATISFIED         /* CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED */
-};
Index: cpukit/rtems/src/signalmp.c
===================================================================
--- cpukit/rtems/src/signalmp.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/signalmp.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -21,4 +21,5 @@
 #include <rtems/rtems/signalimpl.h>
 #include <rtems/rtems/optionsimpl.h>
+#include <rtems/rtems/statusimpl.h>
 #include <rtems/score/statesimpl.h>
 #include <rtems/score/threadimpl.h>
@@ -72,4 +73,5 @@
 {
   Signal_MP_Packet *the_packet;
+  Status_Control    status;
 
   the_packet = _Signal_MP_Get_packet( id );
@@ -85,10 +87,10 @@
   the_packet->signal_set        = signal_set;
 
-  return (rtems_status_code) _MPCI_Send_request_packet(
+  status = _MPCI_Send_request_packet(
     _Objects_Get_node( id ),
     &the_packet->Prefix,
-    STATES_READY,
-    RTEMS_TIMEOUT
+    STATES_READY
   );
+  return _Status_Get( status );
 }
 
Index: cpukit/rtems/src/systemeventreceive.c
===================================================================
--- cpukit/rtems/src/systemeventreceive.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/systemeventreceive.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -50,5 +50,5 @@
 
     if ( !_Event_sets_Is_empty( event_in ) ) {
-      _Event_Seize(
+      sc = _Event_Seize(
         event_in,
         option_set,
@@ -61,6 +61,4 @@
         &lock_context
       );
-
-      sc = executing->Wait.return_code;
     } else {
       *event_out = event->pending_events;
Index: cpukit/rtems/src/taskmp.c
===================================================================
--- cpukit/rtems/src/taskmp.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/rtems/src/taskmp.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -21,4 +21,5 @@
 #include <rtems/rtems/tasksimpl.h>
 #include <rtems/rtems/optionsimpl.h>
+#include <rtems/rtems/statusimpl.h>
 #include <rtems/score/statesimpl.h>
 #include <rtems/score/threadimpl.h>
@@ -102,4 +103,6 @@
 )
 {
+  Status_Control status;
+
   the_packet->Prefix.the_class  = MP_PACKET_TASKS;
   the_packet->Prefix.length     = sizeof( *the_packet );
@@ -108,10 +111,10 @@
   the_packet->operation         = operation;
 
-  return _MPCI_Send_request_packet(
+  status = _MPCI_Send_request_packet(
     _Objects_Get_node( id ),
     &the_packet->Prefix,
-    STATES_READY,    /* Not used */
-    RTEMS_TIMEOUT
+    STATES_READY /* Not used */
   );
+  return _Status_Get( status );
 }
 
Index: cpukit/score/Makefile.am
===================================================================
--- cpukit/score/Makefile.am	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/Makefile.am	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -88,4 +88,5 @@
 include_rtems_score_HEADERS += include/rtems/score/states.h
 include_rtems_score_HEADERS += include/rtems/score/statesimpl.h
+include_rtems_score_HEADERS += include/rtems/score/status.h
 include_rtems_score_HEADERS += include/rtems/score/sysstate.h
 include_rtems_score_HEADERS += include/rtems/score/thread.h
Index: cpukit/score/include/rtems/score/corebarrierimpl.h
===================================================================
--- cpukit/score/include/rtems/score/corebarrierimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/include/rtems/score/corebarrierimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -21,4 +21,5 @@
 
 #include <rtems/score/corebarrier.h>
+#include <rtems/score/status.h>
 #include <rtems/score/threadqimpl.h>
 
@@ -31,33 +32,4 @@
  */
 /**@{**/
-
-/**
- *  Core Barrier handler return statuses.
- */
-typedef enum {
-  /** This status indicates that the operation completed successfully. */
-  CORE_BARRIER_STATUS_SUCCESSFUL,
-  /** This status indicates that the barrier is configured for automatic
-   *  release and the caller tripped the automatic release.  The caller
-   *  thus did not block.
-   */
-  CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED,
-  /** This status indicates that the thread was blocked waiting for an
-   *  operation to complete and the barrier was deleted.
-   */
-  CORE_BARRIER_WAS_DELETED,
-  /** This status indicates that the calling task was willing to block
-   *  but the operation was unable to complete within the time allotted
-   *  because the resource never became available.
-   */
-  CORE_BARRIER_TIMEOUT
-}   CORE_barrier_Status;
-
-/**
- *  @brief Core barrier last status value.
- *
- *  This is the last status value.
- */
-#define CORE_BARRIER_STATUS_LAST CORE_BARRIER_TIMEOUT
 
 #define CORE_BARRIER_TQ_OPERATIONS &_Thread_queue_Operations_FIFO
@@ -121,7 +93,7 @@
  *         thread unblocked is remote
  *
- * @note Status is returned via the thread control block.
+ * @return The method status.
  */
-void _CORE_barrier_Seize(
+Status_Control _CORE_barrier_Seize(
   CORE_barrier_Control *the_barrier,
   Thread_Control       *executing,
@@ -161,10 +133,4 @@
 }
 
-Thread_Control *_CORE_barrier_Was_deleted(
-  Thread_Control       *the_thread,
-  Thread_queue_Queue   *queue,
-  Thread_queue_Context *queue_context
-);
-
 RTEMS_INLINE_ROUTINE void _CORE_barrier_Flush(
   CORE_barrier_Control *the_barrier,
@@ -174,5 +140,5 @@
   _CORE_barrier_Do_flush(
     the_barrier,
-    _CORE_barrier_Was_deleted,
+    _Thread_queue_Flush_status_object_was_deleted,
     queue_context
   );
Index: cpukit/score/include/rtems/score/coremsgimpl.h
===================================================================
--- cpukit/score/include/rtems/score/coremsgimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/include/rtems/score/coremsgimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -21,4 +21,5 @@
 
 #include <rtems/score/coremsg.h>
+#include <rtems/score/status.h>
 #include <rtems/score/chainimpl.h>
 #include <rtems/score/threaddispatch.h>
@@ -64,38 +65,4 @@
  */
 typedef int CORE_message_queue_Submit_types;
-
-/**
- *  @brief The possible set of Core Message Queue handler return statuses.
- *
- *  This enumerated type defines the possible set of Core Message
- *  Queue handler return statuses.
- */
-typedef enum {
-  /** This value indicates the operation completed sucessfully. */
-  CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL,
-  /** This value indicates that the message was too large for this queue. */
-  CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE,
-  /** This value indicates that there are too many messages pending. */
-  CORE_MESSAGE_QUEUE_STATUS_TOO_MANY,
-  /** This value indicates that a receive was unsuccessful. */
-  CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED,
-  /** This value indicates that a blocking send was unsuccessful. */
-  CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT,
-  /** This value indicates that the message queue being blocked upon
-   *  was deleted while the thread was waiting.
-   */
-  CORE_MESSAGE_QUEUE_STATUS_WAS_DELETED,
-  /** This value indicates that the thread had to timeout while waiting
-   *  to receive a message because one did not become available.
-   */
-  CORE_MESSAGE_QUEUE_STATUS_TIMEOUT,
-}   CORE_message_queue_Status;
-
-/**
- *  @brief Core message queue last status value.
- *
- *  This is the last status value.
- */
-#define CORE_MESSAGE_QUEUE_STATUS_LAST CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
 
 /**
@@ -203,5 +170,5 @@
  *  @retval indication of the successful completion or reason for failure
  */
-CORE_message_queue_Status _CORE_message_queue_Broadcast(
+Status_Control _CORE_message_queue_Broadcast(
   CORE_message_queue_Control *the_message_queue,
   const void                 *buffer,
@@ -234,5 +201,5 @@
  *  @retval indication of the successful completion or reason for failure
  */
-CORE_message_queue_Status _CORE_message_queue_Submit(
+Status_Control _CORE_message_queue_Submit(
   CORE_message_queue_Control       *the_message_queue,
   Thread_Control                   *executing,
@@ -279,5 +246,5 @@
  *    + wait
  */
-void _CORE_message_queue_Seize(
+Status_Control _CORE_message_queue_Seize(
   CORE_message_queue_Control *the_message_queue,
   Thread_Control             *executing,
@@ -310,5 +277,5 @@
 );
 
-RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Send(
+RTEMS_INLINE_ROUTINE Status_Control _CORE_message_queue_Send(
   CORE_message_queue_Control       *the_message_queue,
   const void                       *buffer,
@@ -331,5 +298,5 @@
 }
 
-RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Urgent(
+RTEMS_INLINE_ROUTINE Status_Control _CORE_message_queue_Urgent(
   CORE_message_queue_Control       *the_message_queue,
   const void                       *buffer,
Index: cpukit/score/include/rtems/score/coremuteximpl.h
===================================================================
--- cpukit/score/include/rtems/score/coremuteximpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/include/rtems/score/coremuteximpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -21,4 +21,5 @@
 #include <rtems/score/coremutex.h>
 #include <rtems/score/chainimpl.h>
+#include <rtems/score/status.h>
 #include <rtems/score/sysstate.h>
 #include <rtems/score/threadimpl.h>
@@ -33,51 +34,4 @@
  */
 /**@{**/
-
-/**
- *  @brief The possible Mutex handler return statuses.
- *
- *  This enumerated type defines the possible Mutex handler return statuses.
- */
-typedef enum {
-  /** This status indicates that the operation completed successfully. */
-  CORE_MUTEX_STATUS_SUCCESSFUL,
-  /** This status indicates that the calling task did not want to block
-   *  and the operation was unable to complete immediately because the
-   *  resource was unavailable.
-   */
-  CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT,
-#if defined(RTEMS_POSIX_API)
-  /** This status indicates that an attempt was made to relock a mutex
-   *  for which nesting is not configured.
-   */
-  CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED,
-#endif
-  /** This status indicates that an attempt was made to release a mutex
-   *  by a thread other than the thread which locked it.
-   */
-  CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE,
-  /** This status indicates that the thread was blocked waiting for an
-   *  operation to complete and the mutex was deleted.
-   */
-  CORE_MUTEX_WAS_DELETED,
-  /** This status indicates that the calling task was willing to block
-   *  but the operation was unable to complete within the time allotted
-   *  because the resource never became available.
-   */
-  CORE_MUTEX_TIMEOUT,
-
-  /** This status indicates that a thread of logically greater importance
-   *  than the ceiling priority attempted to lock this mutex.
-   */
-  CORE_MUTEX_STATUS_CEILING_VIOLATED
-
-}   CORE_mutex_Status;
-
-/**
- *  @brief The last status value.
- *
- *  This is the last status value.
- */
-#define CORE_MUTEX_STATUS_LAST CORE_MUTEX_STATUS_CEILING_VIOLATED
 
 /**
@@ -93,7 +47,7 @@
  *  the executing thread.
  *
- *  @retval This method returns CORE_MUTEX_STATUS_SUCCESSFUL if successful.
- */
-CORE_mutex_Status _CORE_mutex_Initialize(
+ *  @retval This method returns STATUS_SUCCESSFUL if successful.
+ */
+Status_Control _CORE_mutex_Initialize(
   CORE_mutex_Control           *the_mutex,
   Thread_Control               *executing,
@@ -141,5 +95,5 @@
  *  @param[in] lock_context is the interrupt level
  */
-void _CORE_mutex_Seize_interrupt_blocking(
+Status_Control _CORE_mutex_Seize_interrupt_blocking(
   CORE_mutex_Control  *the_mutex,
   Thread_Control      *executing,
@@ -228,10 +182,8 @@
  *  @param[in] queue_context is the interrupt level
  *
- *  @retval This routine returns 0 if "trylock" can resolve whether or not
- *  the mutex is immediately obtained or there was an error attempting to
- *  get it.  It returns 1 to indicate that the caller cannot obtain
- *  the mutex and will have to block to do so.
- */
-RTEMS_INLINE_ROUTINE int _CORE_mutex_Seize_interrupt_trylock(
+ *  @retval STATUS_UNAVAILABLE The mutex is already locked.
+ *  @retval other Otherwise.
+ */
+RTEMS_INLINE_ROUTINE Status_Control _CORE_mutex_Seize_interrupt_trylock(
   CORE_mutex_Control   *the_mutex,
   Thread_Control       *executing,
@@ -241,5 +193,4 @@
   /* disabled when you get here */
 
-  executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;
   if ( !_CORE_mutex_Is_locked( the_mutex ) ) {
     the_mutex->holder     = executing;
@@ -252,11 +203,11 @@
     if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
       _CORE_mutex_Release( the_mutex, queue_context );
-      return 0;
-    } /* else must be CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING
+    } else {
+      /*
+       * must be CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING
        *
        * we possibly bump the priority of the current holder -- which
        * happens to be _Thread_Executing.
        */
-    {
       Priority_Control  ceiling;
       Priority_Control  current;
@@ -266,8 +217,5 @@
       if ( current == ceiling ) {
         _CORE_mutex_Release( the_mutex, queue_context );
-        return 0;
-      }
-
-      if ( current > ceiling ) {
+      } else if ( current > ceiling ) {
         Per_CPU_Control *cpu_self;
 
@@ -278,16 +226,14 @@
         _Thread_Raise_priority( executing, ceiling );
         _Thread_Dispatch_enable( cpu_self );
-        return 0;
-      }
-      /* if ( current < ceiling ) */ {
-        executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED;
+      } else /* if ( current < ceiling ) */ {
         the_mutex->holder = NULL;
         the_mutex->nest_count = 0;     /* undo locking above */
         executing->resource_count--;   /* undo locking above */
         _CORE_mutex_Release( the_mutex, queue_context );
-        return 0;
+        return STATUS_MUTEX_CEILING_VIOLATED;
       }
     }
-    return 0;
+
+    return STATUS_SUCCESSFUL;
   }
 
@@ -302,10 +248,9 @@
         the_mutex->nest_count++;
         _CORE_mutex_Release( the_mutex, queue_context );
-        return 0;
+        return STATUS_SUCCESSFUL;
       #if defined(RTEMS_POSIX_API)
         case CORE_MUTEX_NESTING_IS_ERROR:
-          executing->Wait.return_code = CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED;
           _CORE_mutex_Release( the_mutex, queue_context );
-          return 0;
+          return STATUS_NESTING_NOT_ALLOWED;
       #endif
       case CORE_MUTEX_NESTING_BLOCKS:
@@ -318,5 +263,5 @@
    *  of blocking.
    */
-  return 1;
+  return STATUS_UNAVAILABLE;
 }
 
@@ -347,5 +292,5 @@
  *      then they are blocked.
  */
-RTEMS_INLINE_ROUTINE void _CORE_mutex_Seize(
+RTEMS_INLINE_ROUTINE Status_Control _CORE_mutex_Seize(
   CORE_mutex_Control   *the_mutex,
   Thread_Control       *executing,
@@ -355,4 +300,6 @@
 )
 {
+  Status_Control status;
+
   if ( _CORE_mutex_Check_dispatch_for_seize( wait ) ) {
     _Terminate(
@@ -362,37 +309,32 @@
     );
   }
+
   _CORE_mutex_Acquire_critical( the_mutex, queue_context );
-  if (
-    _CORE_mutex_Seize_interrupt_trylock( the_mutex, executing, queue_context )
-  ) {
-    if ( !wait ) {
-      _CORE_mutex_Release( the_mutex, queue_context );
-      executing->Wait.return_code =
-        CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT;
-    } else {
-      _CORE_mutex_Seize_interrupt_blocking(
-        the_mutex,
-        executing,
-        timeout,
-        &queue_context->Lock_context
-      );
-    }
-  }
-}
-
-CORE_mutex_Status _CORE_mutex_Surrender(
-  CORE_mutex_Control   *the_mutex,
-  Thread_queue_Context *queue_context
-);
-
-Thread_Control *_CORE_mutex_Was_deleted(
-  Thread_Control       *the_thread,
-  Thread_queue_Queue   *queue,
-  Thread_queue_Context *queue_context
-);
-
-Thread_Control *_CORE_mutex_Unsatisfied_nowait(
-  Thread_Control       *the_thread,
-  Thread_queue_Queue   *queue,
+
+  status = _CORE_mutex_Seize_interrupt_trylock(
+    the_mutex,
+    executing,
+    queue_context
+  );
+
+  if ( status != STATUS_UNAVAILABLE ) {
+    return status;
+  }
+
+  if ( !wait ) {
+    _CORE_mutex_Release( the_mutex, queue_context );
+    return status;
+  }
+
+  return _CORE_mutex_Seize_interrupt_blocking(
+    the_mutex,
+    executing,
+    timeout,
+    &queue_context->Lock_context
+  );
+}
+
+Status_Control _CORE_mutex_Surrender(
+  CORE_mutex_Control   *the_mutex,
   Thread_queue_Context *queue_context
 );
Index: cpukit/score/include/rtems/score/corerwlockimpl.h
===================================================================
--- cpukit/score/include/rtems/score/corerwlockimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/include/rtems/score/corerwlockimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -23,4 +23,5 @@
 #include <rtems/score/thread.h>
 #include <rtems/score/threadqimpl.h>
+#include <rtems/score/status.h>
 #include <rtems/score/watchdog.h>
 
@@ -35,25 +36,4 @@
 
 #define CORE_RWLOCK_TQ_OPERATIONS &_Thread_queue_Operations_FIFO
-
-/**
- *  Core RWLock handler return statuses.
- */
-typedef enum {
-  /** This status indicates that the operation completed successfully. */
-  CORE_RWLOCK_SUCCESSFUL,
-  /** This status indicates that the thread was blocked waiting for an */
-  CORE_RWLOCK_WAS_DELETED,
-  /** This status indicates that the rwlock was not immediately available. */
-  CORE_RWLOCK_UNAVAILABLE,
-  /** This status indicates that the calling task was willing to block
-   *  but the operation was unable to complete within the time allotted
-   *  because the resource never became available.
-   */
-  CORE_RWLOCK_TIMEOUT
-}   CORE_RWLock_Status;
-
-/** This is the last status value.
- */
-#define CORE_RWLOCK_STATUS_LAST CORE_RWLOCK_TIMEOUT
 
 /**
@@ -118,9 +98,7 @@
  *  @param[in] timeout is the number of ticks the calling thread is willing
  *         to wait if @a wait is true.
- *
- * @note Status is returned via the thread control block.
  */
 
-void _CORE_RWLock_Seize_for_reading(
+Status_Control _CORE_RWLock_Seize_for_reading(
   CORE_RWLock_Control  *the_rwlock,
   Thread_Control       *executing,
@@ -139,8 +117,6 @@
  *  @param[in] timeout is the number of ticks the calling thread is willing
  *         to wait if @a wait is true.
- *
- * @note Status is returned via the thread control block.
  */
-void _CORE_RWLock_Seize_for_writing(
+Status_Control _CORE_RWLock_Seize_for_writing(
   CORE_RWLock_Control  *the_rwlock,
   Thread_Control       *executing,
@@ -160,5 +136,5 @@
  *  @retval Status is returned to indicate successful or failure.
  */
-CORE_RWLock_Status _CORE_RWLock_Surrender(
+Status_Control _CORE_RWLock_Surrender(
   CORE_RWLock_Control  *the_rwlock,
   Thread_queue_Context *queue_context
Index: cpukit/score/include/rtems/score/coresemimpl.h
===================================================================
--- cpukit/score/include/rtems/score/coresemimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/include/rtems/score/coresemimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -23,6 +23,8 @@
 #include <rtems/score/objectimpl.h>
 #include <rtems/score/threaddispatch.h>
+#include <rtems/score/threadimpl.h>
 #include <rtems/score/threadqimpl.h>
 #include <rtems/score/statesimpl.h>
+#include <rtems/score/status.h>
 
 #ifdef __cplusplus
@@ -34,37 +36,4 @@
  */
 /**@{**/
-
-/**
- *  Core Semaphore handler return statuses.
- */
-typedef enum {
-  /** This status indicates that the operation completed successfully. */
-  CORE_SEMAPHORE_STATUS_SUCCESSFUL,
-  /** This status indicates that the calling task did not want to block
-   *  and the operation was unable to complete immediately because the
-   *  resource was unavailable.
-   */
-  CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT,
-  /** This status indicates that the thread was blocked waiting for an
-   *  operation to complete and the semaphore was deleted.
-   */
-  CORE_SEMAPHORE_WAS_DELETED,
-  /** This status indicates that the calling task was willing to block
-   *  but the operation was unable to complete within the time allotted
-   *  because the resource never became available.
-   */
-  CORE_SEMAPHORE_TIMEOUT,
-  /** This status indicates that an attempt was made to unlock the semaphore
-   *  and this would have made its count greater than that allowed.
-   */
-  CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED
-}   CORE_semaphore_Status;
-
-/**
- *  @brief Core semaphore last status value.
- *
- *  This is the last status value.
- */
-#define CORE_SEMAPHORE_STATUS_LAST CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED
 
 /**
@@ -109,16 +78,4 @@
 }
 
-Thread_Control *_CORE_semaphore_Was_deleted(
-  Thread_Control       *the_thread,
-  Thread_queue_Queue   *queue,
-  Thread_queue_Context *queue_context
-);
-
-Thread_Control *_CORE_semaphore_Unsatisfied_nowait(
-  Thread_Control       *the_thread,
-  Thread_queue_Queue   *queue,
-  Thread_queue_Context *queue_context
-);
-
 RTEMS_INLINE_ROUTINE void _CORE_semaphore_Destroy(
   CORE_semaphore_Control *the_semaphore,
@@ -129,5 +86,5 @@
     &the_semaphore->Wait_queue.Queue,
     the_semaphore->operations,
-    _CORE_semaphore_Was_deleted,
+    _Thread_queue_Flush_status_object_was_deleted,
     queue_context
   );
@@ -148,5 +105,5 @@
  *  @retval an indication of whether the routine succeeded or failed
  */
-RTEMS_INLINE_ROUTINE CORE_semaphore_Status _CORE_semaphore_Surrender(
+RTEMS_INLINE_ROUTINE Status_Control _CORE_semaphore_Surrender(
   CORE_semaphore_Control  *the_semaphore,
   uint32_t                 maximum_count,
@@ -155,7 +112,7 @@
 {
   Thread_Control *the_thread;
-  CORE_semaphore_Status status;
-
-  status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
+  Status_Control  status;
+
+  status = STATUS_SUCCESSFUL;
 
   _CORE_semaphore_Acquire_critical( the_semaphore, queue_context );
@@ -176,5 +133,5 @@
       the_semaphore->count += 1;
     else
-      status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
+      status = STATUS_MAXIMUM_COUNT_EXCEEDED;
 
     _CORE_semaphore_Release( the_semaphore, queue_context );
@@ -192,5 +149,5 @@
     &the_semaphore->Wait_queue.Queue,
     the_semaphore->operations,
-    _CORE_semaphore_Unsatisfied_nowait,
+    _Thread_queue_Flush_status_unavailable,
     queue_context
   );
@@ -226,5 +183,5 @@
  * @note There is currently no MACRO version of this routine.
  */
-RTEMS_INLINE_ROUTINE void _CORE_semaphore_Seize(
+RTEMS_INLINE_ROUTINE Status_Control _CORE_semaphore_Seize(
   CORE_semaphore_Control *the_semaphore,
   Thread_Control         *executing,
@@ -236,16 +193,14 @@
   /* disabled when you get here */
 
-  executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
   _CORE_semaphore_Acquire_critical( the_semaphore, queue_context );
   if ( the_semaphore->count != 0 ) {
     the_semaphore->count -= 1;
     _CORE_semaphore_Release( the_semaphore, queue_context );
-    return;
+    return STATUS_SUCCESSFUL;
   }
 
   if ( !wait ) {
     _CORE_semaphore_Release( the_semaphore, queue_context );
-    executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT;
-    return;
+    return STATUS_UNSATISFIED;
   }
 
@@ -256,7 +211,7 @@
     STATES_WAITING_FOR_SEMAPHORE,
     timeout,
-    CORE_SEMAPHORE_TIMEOUT,
     &queue_context->Lock_context
   );
+  return _Thread_Wait_get_status( executing );
 }
 
Index: cpukit/score/include/rtems/score/corespinlockimpl.h
===================================================================
--- cpukit/score/include/rtems/score/corespinlockimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/include/rtems/score/corespinlockimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -21,4 +21,5 @@
 
 #include <rtems/score/corespinlock.h>
+#include <rtems/score/status.h>
 #include <rtems/score/watchdog.h>
 
@@ -33,35 +34,4 @@
  */
 /**@{**/
-
-/**
- *  Core Spinlock handler return statuses.
- */
-typedef enum {
-  /** This status indicates that the operation completed successfully. */
-  CORE_SPINLOCK_SUCCESSFUL,
-  /** This status indicates that the current thread already holds the spinlock.
-   *  An attempt to relock it will result in deadlock.
-   */
-  CORE_SPINLOCK_HOLDER_RELOCKING,
-  /** This status indicates that the current thread is attempting to unlock a
-   *  spinlock that is held by another thread.
-   */
-  CORE_SPINLOCK_NOT_HOLDER,
-  /** This status indicates that a thread reached the limit of time it
-   *  was willing to wait on the spin lock.
-   */
-  CORE_SPINLOCK_TIMEOUT,
-  /** This status indicates that a thread is currently waiting for this
-   *  spin lock.
-   */
-  CORE_SPINLOCK_IS_BUSY,
-  /** This status indicates that the spinlock is currently locked and thus
-   *  unavailable.
-   */
-  CORE_SPINLOCK_UNAVAILABLE
-}   CORE_spinlock_Status;
-
-/** This is a shorthand for the last status code. */
-#define CORE_SPINLOCK_STATUS_LAST CORE_SPINLOCK_UNAVAILABLE
 
 /** This indicates the lock is available. */
@@ -116,5 +86,5 @@
  *         this operation.
  */
-CORE_spinlock_Status _CORE_spinlock_Seize(
+Status_Control _CORE_spinlock_Seize(
   CORE_spinlock_Control *the_spinlock,
   bool                   wait,
@@ -131,5 +101,5 @@
  *  @param[in] the_spinlock is the spinlock to surrender
  */
-CORE_spinlock_Status _CORE_spinlock_Surrender(
+Status_Control _CORE_spinlock_Surrender(
   CORE_spinlock_Control *the_spinlock,
   ISR_lock_Context      *lock_context
Index: cpukit/score/include/rtems/score/mpciimpl.h
===================================================================
--- cpukit/score/include/rtems/score/mpciimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/include/rtems/score/mpciimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,4 +20,5 @@
 
 #include <rtems/score/mpci.h>
+#include <rtems/score/status.h>
 
 #ifdef __cplusplus
@@ -163,13 +164,11 @@
  *             may indicate the caller is blocking on a message queue
  *             operation.
- *  @param[in] timeout_code is the timeout code
  *
  *  @retval This method returns the operation status from the remote node.
  */
-uint32_t _MPCI_Send_request_packet (
-  uint32_t           destination,
-  MP_packet_Prefix  *the_packet,
-  States_Control     extra_state,
-  uint32_t           timeout_code
+Status_Control _MPCI_Send_request_packet(
+  uint32_t          destination,
+  MP_packet_Prefix *the_packet,
+  States_Control    extra_state
 );
 
Index: cpukit/score/include/rtems/score/mrsp.h
===================================================================
--- cpukit/score/include/rtems/score/mrsp.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/include/rtems/score/mrsp.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -52,29 +52,4 @@
  */
 
-/**
- * @brief MrsP status code.
- *
- * The values are chosen to directly map to RTEMS status codes.  In case this
- * implementation is used for other APIs, then for example the errno values can
- * be added with a bit shift.
- */
-typedef enum {
-  MRSP_SUCCESSFUL = 0,
-  MRSP_TIMEOUT = 6,
-  MRSP_INVALID_NUMBER = 10,
-  MRSP_RESOUCE_IN_USE = 12,
-  MRSP_UNSATISFIED = 13,
-  MRSP_INCORRECT_STATE = 14,
-  MRSP_INVALID_PRIORITY = 19,
-  MRSP_NOT_OWNER_OF_RESOURCE = 23,
-  MRSP_NO_MEMORY = 26,
-
-  /**
-   * @brief Internal state used for MRSP_Rival::status to indicate that this
-   * rival waits for resource ownership.
-   */
-  MRSP_WAIT_FOR_OWNERSHIP = 255
-} MRSP_Status;
-
 typedef struct MRSP_Control MRSP_Control;
 
@@ -125,8 +100,8 @@
    *
    * Initially the status is set to MRSP_WAIT_FOR_OWNERSHIP.  The rival will
-   * busy wait until a status change happens.  This can be MRSP_SUCCESSFUL or
-   * MRSP_TIMEOUT.  State changes are protected by the MrsP control lock.
+   * busy wait until a status change happens.  This can be STATUS_SUCCESSFUL or
+   * STATUS_TIMEOUT.  State changes are protected by the MrsP control lock.
    */
-  volatile MRSP_Status status;
+  volatile int status;
 
   /**
Index: cpukit/score/include/rtems/score/mrspimpl.h
===================================================================
--- cpukit/score/include/rtems/score/mrspimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/include/rtems/score/mrspimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -24,4 +24,5 @@
 #include <rtems/score/resourceimpl.h>
 #include <rtems/score/schedulerimpl.h>
+#include <rtems/score/status.h>
 #include <rtems/score/watchdogimpl.h>
 #include <rtems/score/wkspace.h>
@@ -36,4 +37,10 @@
  * @{
  */
+
+/**
+ * @brief Internal state used for MRSP_Rival::status to indicate that this
+ * rival waits for resource ownership.
+ */
+#define MRSP_WAIT_FOR_OWNERSHIP STATUS_MINUS_ONE
 
 /*
@@ -127,5 +134,5 @@
 }
 
-RTEMS_INLINE_ROUTINE MRSP_Status _MRSP_Initialize(
+RTEMS_INLINE_ROUTINE Status_Control _MRSP_Initialize(
   MRSP_Control     *mrsp,
   Priority_Control  ceiling_priority,
@@ -138,5 +145,5 @@
 
   if ( initially_locked ) {
-    return MRSP_INVALID_NUMBER;
+    return STATUS_INVALID_NUMBER;
   }
 
@@ -145,5 +152,5 @@
   );
   if ( mrsp->ceiling_priorities == NULL ) {
-    return MRSP_NO_MEMORY;
+    return STATUS_NO_MEMORY;
   }
 
@@ -156,5 +163,5 @@
   _ISR_lock_Initialize( &mrsp->Lock, "MrsP" );
 
-  return MRSP_SUCCESSFUL;
+  return STATUS_SUCCESSFUL;
 }
 
@@ -200,5 +207,5 @@
     _MRSP_Giant_release( &giant_lock_context );
 
-    rival->status = MRSP_TIMEOUT;
+    rival->status = STATUS_TIMEOUT;
 
     _MRSP_Release( mrsp, &queue_context );
@@ -208,5 +215,5 @@
 }
 
-RTEMS_INLINE_ROUTINE MRSP_Status _MRSP_Wait_for_ownership(
+RTEMS_INLINE_ROUTINE Status_Control _MRSP_Wait_for_ownership(
   MRSP_Control         *mrsp,
   Resource_Node        *owner,
@@ -218,5 +225,5 @@
 )
 {
-  MRSP_Status status;
+  Status_Control status;
   MRSP_Rival rival;
   Thread_Life_state life_state;
@@ -279,5 +286,5 @@
     _ISR_Local_enable( level );
 
-    if ( status == MRSP_TIMEOUT ) {
+    if ( status == STATUS_TIMEOUT ) {
       _MRSP_Restore_priority( executing, initial_priority );
     }
@@ -287,5 +294,5 @@
 }
 
-RTEMS_INLINE_ROUTINE MRSP_Status _MRSP_Seize(
+RTEMS_INLINE_ROUTINE Status_Control _MRSP_Seize(
   MRSP_Control         *mrsp,
   Thread_Control       *executing,
@@ -295,5 +302,5 @@
 )
 {
-  MRSP_Status status;
+  Status_Control status;
   const Scheduler_Control *scheduler = _Scheduler_Get_own( executing );
   uint32_t scheduler_index = _Scheduler_Get_index( scheduler );
@@ -309,5 +316,5 @@
   if ( !priority_ok) {
     _ISR_lock_ISR_enable( &queue_context->Lock_context );
-    return MRSP_INVALID_PRIORITY;
+    return STATUS_MUTEX_CEILING_VIOLATED;
   }
 
@@ -322,5 +329,5 @@
       queue_context
     );
-    status = MRSP_SUCCESSFUL;
+    status = STATUS_SUCCESSFUL;
   } else if (
     wait
@@ -339,5 +346,5 @@
     _MRSP_Release( mrsp, queue_context );
     /* Not available, nested access or deadlock */
-    status = MRSP_UNSATISFIED;
+    status = STATUS_UNAVAILABLE;
   }
 
@@ -345,5 +352,5 @@
 }
 
-RTEMS_INLINE_ROUTINE MRSP_Status _MRSP_Surrender(
+RTEMS_INLINE_ROUTINE Status_Control _MRSP_Surrender(
   MRSP_Control         *mrsp,
   Thread_Control       *executing,
@@ -357,5 +364,5 @@
   if ( _Resource_Get_owner( &mrsp->Resource ) != &executing->Resource_node ) {
     _ISR_lock_ISR_enable( &queue_context->Lock_context );
-    return MRSP_NOT_OWNER_OF_RESOURCE;
+    return STATUS_NOT_OWNER;
   }
 
@@ -367,5 +374,5 @@
   ) {
     _ISR_lock_ISR_enable( &queue_context->Lock_context );
-    return MRSP_INCORRECT_STATE;
+    return STATUS_RELEASE_ORDER_VIOLATION;
   }
 
@@ -389,5 +396,5 @@
      * potential double extraction in _MRSP_Timeout().
      */
-    rival->status = MRSP_SUCCESSFUL;
+    rival->status = STATUS_SUCCESSFUL;
 
     new_owner = rival->thread;
@@ -414,14 +421,14 @@
   _Thread_Dispatch_enable( cpu_self );
 
-  return MRSP_SUCCESSFUL;
-}
-
-RTEMS_INLINE_ROUTINE MRSP_Status _MRSP_Can_destroy( MRSP_Control *mrsp )
+  return STATUS_SUCCESSFUL;
+}
+
+RTEMS_INLINE_ROUTINE Status_Control _MRSP_Can_destroy( MRSP_Control *mrsp )
 {
   if ( _Resource_Get_owner( &mrsp->Resource ) != NULL ) {
-    return MRSP_RESOUCE_IN_USE;
-  }
-
-  return MRSP_SUCCESSFUL;
+    return STATUS_RESOURCE_IN_USE;
+  }
+
+  return STATUS_SUCCESSFUL;
 }
 
Index: cpukit/score/include/rtems/score/status.h
===================================================================
--- cpukit/score/include/rtems/score/status.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
+++ cpukit/score/include/rtems/score/status.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 2016 embedded brains GmbH.  All rights reserved.
+ *
+ *  embedded brains GmbH
+ *  Dornierstr. 4
+ *  82178 Puchheim
+ *  Germany
+ *  <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#ifndef _RTEMS_SCORE_STATUS_H
+#define _RTEMS_SCORE_STATUS_H
+
+#include <rtems/score/basedefs.h>
+
+#if defined(RTEMS_POSIX_API)
+#include <errno.h>
+#include <pthread.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * @brief Status code parts for the Classic API.
+ *
+ * Must be in synchronization with rtems_status_code.
+ */
+typedef enum {
+  STATUS_CLASSIC_INCORRECT_STATE = 14,
+  STATUS_CLASSIC_INTERNAL_ERROR = 13,
+  STATUS_CLASSIC_INVALID_NUMBER = 10,
+  STATUS_CLASSIC_INVALID_PRIORITY = 19,
+  STATUS_CLASSIC_INVALID_SIZE = 8,
+  STATUS_CLASSIC_NO_MEMORY = 26,
+  STATUS_CLASSIC_NOT_OWNER_OF_RESOURCE = 23,
+  STATUS_CLASSIC_OBJECT_WAS_DELETED = 7,
+  STATUS_CLASSIC_RESOURCE_IN_USE = 12,
+  STATUS_CLASSIC_SUCCESSFUL = 0,
+  STATUS_CLASSIC_TIMEOUT = 6,
+  STATUS_CLASSIC_TOO_MANY = 5,
+  STATUS_CLASSIC_UNSATISFIED = 13
+} Status_Classic;
+
+/**
+ * @brief Macro to build a status code from Classic and POSIX API parts.
+ */
+#if defined(RTEMS_POSIX_API)
+  #define STATUS_BUILD( classic_status, posix_status ) \
+    ( ( ( posix_status ) << 8 ) | ( classic_status ) )
+#else
+  #define STATUS_BUILD( classic_status, posix_status ) \
+    ( classic_status )
+#endif
+
+/**
+ * @brief Macro to get the Classic API status code.
+ */
+#define STATUS_GET_CLASSIC( status ) \
+  ( ( status ) & 0xff )
+
+/**
+ * @brief Macro to get the POSIX API status code.
+ *
+ * Performs an arithmetic shift to reconstruct a negative POSIX status.
+ */
+#define STATUS_GET_POSIX( status ) \
+  ( ( ( (int) ( status ) ) | 0xff ) >> 8 )
+
+/**
+ * @brief Status codes.
+ */
+typedef enum {
+  STATUS_BARRIER_AUTOMATICALLY_RELEASED =
+    STATUS_BUILD( STATUS_CLASSIC_SUCCESSFUL, PTHREAD_BARRIER_SERIAL_THREAD ),
+  STATUS_DEADLOCK =
+    STATUS_BUILD( STATUS_CLASSIC_INCORRECT_STATE, EDEADLK ),
+  STATUS_FLUSHED =
+    STATUS_BUILD( STATUS_CLASSIC_UNSATISFIED, EAGAIN ),
+  STATUS_INTERRUPTED =
+    STATUS_BUILD( STATUS_CLASSIC_INTERNAL_ERROR, EINTR ),
+  STATUS_INVALID_NUMBER =
+    STATUS_BUILD( STATUS_CLASSIC_INVALID_NUMBER, EINVAL ),
+  STATUS_MAXIMUM_COUNT_EXCEEDED =
+    STATUS_BUILD( STATUS_CLASSIC_INTERNAL_ERROR, EOVERFLOW ),
+  STATUS_MESSAGE_INVALID_SIZE =
+    STATUS_BUILD( STATUS_CLASSIC_INVALID_SIZE, EMSGSIZE ),
+  STATUS_MESSAGE_QUEUE_WAIT_IN_ISR =
+    STATUS_BUILD( STATUS_CLASSIC_INTERNAL_ERROR, ENOMEM ),
+  STATUS_MESSAGE_QUEUE_WAS_DELETED =
+    STATUS_BUILD( STATUS_CLASSIC_OBJECT_WAS_DELETED, EBADF ),
+  STATUS_MINUS_ONE =
+    -1,
+  STATUS_MUTEX_CEILING_VIOLATED =
+    STATUS_BUILD( STATUS_CLASSIC_INVALID_PRIORITY, EINVAL ),
+  STATUS_NESTING_NOT_ALLOWED =
+    STATUS_BUILD( STATUS_CLASSIC_UNSATISFIED, EDEADLK ),
+  STATUS_NO_MEMORY =
+    STATUS_BUILD( STATUS_CLASSIC_NO_MEMORY, EINVAL ),
+  STATUS_NOT_OWNER =
+    STATUS_BUILD( STATUS_CLASSIC_NOT_OWNER_OF_RESOURCE, EPERM ),
+  STATUS_OBJECT_WAS_DELETED =
+    STATUS_BUILD( STATUS_CLASSIC_OBJECT_WAS_DELETED, EINVAL ),
+  STATUS_RELEASE_ORDER_VIOLATION =
+    STATUS_BUILD( STATUS_CLASSIC_INCORRECT_STATE, EPERM ),
+  STATUS_RESOURCE_IN_USE =
+    STATUS_BUILD( STATUS_CLASSIC_RESOURCE_IN_USE, EBUSY ),
+  STATUS_SUCCESSFUL =
+    STATUS_BUILD( STATUS_CLASSIC_SUCCESSFUL, 0 ),
+  STATUS_TIMEOUT =
+    STATUS_BUILD( STATUS_CLASSIC_TIMEOUT, ETIMEDOUT ),
+  STATUS_TOO_MANY =
+    STATUS_BUILD( STATUS_CLASSIC_TOO_MANY, EAGAIN ),
+  STATUS_UNAVAILABLE =
+    STATUS_BUILD( STATUS_CLASSIC_UNSATISFIED, EBUSY ),
+  STATUS_UNSATISFIED =
+    STATUS_BUILD( STATUS_CLASSIC_UNSATISFIED, EAGAIN )
+} Status_Control;
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _RTEMS_SCORE_STATUS_H */
Index: cpukit/score/include/rtems/score/thread.h
===================================================================
--- cpukit/score/include/rtems/score/thread.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/include/rtems/score/thread.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -289,9 +289,4 @@
 
   /**
-   * @brief Code to set the timeout return code in _Thread_Timeout().
-   */
-  uint32_t timeout_code;
-
-  /**
    * @brief The current thread queue.
    *
Index: cpukit/score/include/rtems/score/threadimpl.h
===================================================================
--- cpukit/score/include/rtems/score/threadimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/include/rtems/score/threadimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -30,4 +30,5 @@
 #include <rtems/score/resourceimpl.h>
 #include <rtems/score/statesimpl.h>
+#include <rtems/score/status.h>
 #include <rtems/score/sysstate.h>
 #include <rtems/score/threadqimpl.h>
@@ -1451,18 +1452,4 @@
 
 /**
- * @brief Sets the thread wait timeout code.
- *
- * @param[in] the_thread The thread.
- * @param[in] timeout_code The new thread wait timeout code.
- */
-RTEMS_INLINE_ROUTINE void _Thread_Wait_set_timeout_code(
-  Thread_Control *the_thread,
-  uint32_t        timeout_code
-)
-{
-  the_thread->Wait.timeout_code = timeout_code;
-}
-
-/**
  * @brief Returns the object identifier of the object containing the current
  * thread wait queue.
@@ -1480,4 +1467,11 @@
 Objects_Id _Thread_Wait_get_id( const Thread_Control *the_thread );
 
+RTEMS_INLINE_ROUTINE Status_Control _Thread_Wait_get_status(
+  const Thread_Control *the_thread
+)
+{
+  return (Status_Control) the_thread->Wait.return_code;
+}
+
 /**
  * @brief General purpose thread wait timeout.
Index: cpukit/score/include/rtems/score/threadqimpl.h
===================================================================
--- cpukit/score/include/rtems/score/threadqimpl.h	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/include/rtems/score/threadqimpl.h	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -342,5 +342,4 @@
  * @param[in] timeout Interval to wait.  Use WATCHDOG_NO_TIMEOUT to block
  * potentially forever.
- * @param[in] timeout_code The return code in case a timeout occurs.
  * @param[in] lock_context The lock context of the lock acquire.
  */
@@ -351,5 +350,4 @@
   States_Control                 state,
   Watchdog_Interval              timeout,
-  uint32_t                       timeout_code,
   ISR_lock_Context              *lock_context
 );
@@ -364,6 +362,5 @@
   Thread_Control                *the_thread,
   States_Control                 state,
-  Watchdog_Interval              timeout,
-  uint32_t                       timeout_code
+  Watchdog_Interval              timeout
 )
 {
@@ -377,5 +374,4 @@
     state,
     timeout,
-    timeout_code,
     &lock_context
   );
@@ -623,4 +619,38 @@
  */
 Thread_Control *_Thread_queue_Flush_default_filter(
+  Thread_Control       *the_thread,
+  Thread_queue_Queue   *queue,
+  Thread_queue_Context *queue_context
+);
+
+/**
+ * @brief Status unavailable thread queue flush filter function.
+ *
+ * Sets the thread wait return code of the thread to STATUS_UNAVAILABLE.
+ *
+ * @param the_thread The thread to extract.
+ * @param queue Unused.
+ * @param queue_context Unused.
+ *
+ * @retval the_thread Extract this thread.
+ */
+Thread_Control *_Thread_queue_Flush_status_unavailable(
+  Thread_Control       *the_thread,
+  Thread_queue_Queue   *queue,
+  Thread_queue_Context *queue_context
+);
+
+/**
+ * @brief Status object was deleted thread queue flush filter function.
+ *
+ * Sets the thread wait return code of the thread to STATUS_OBJECT_WAS_DELETED
+ *
+ * @param the_thread The thread to extract.
+ * @param queue Unused.
+ * @param queue_context Unused.
+ *
+ * @retval the_thread Extract this thread.
+ */
+Thread_Control *_Thread_queue_Flush_status_object_was_deleted(
   Thread_Control       *the_thread,
   Thread_queue_Queue   *queue,
Index: cpukit/score/preinstall.am
===================================================================
--- cpukit/score/preinstall.am	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/preinstall.am	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -316,4 +316,8 @@
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/statesimpl.h
 PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/statesimpl.h
+
+$(PROJECT_INCLUDE)/rtems/score/status.h: include/rtems/score/status.h $(PROJECT_INCLUDE)/rtems/score/$(dirstamp)
+	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/status.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/status.h
 
 $(PROJECT_INCLUDE)/rtems/score/sysstate.h: include/rtems/score/sysstate.h $(PROJECT_INCLUDE)/rtems/score/$(dirstamp)
Index: cpukit/score/src/condition.c
===================================================================
--- cpukit/score/src/condition.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/condition.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -92,5 +92,4 @@
   cpu_self = _Thread_Dispatch_disable_critical( lock_context );
 
-  executing->Wait.return_code = 0;
   _Thread_queue_Enqueue_critical(
     &condition->Queue.Queue,
@@ -99,5 +98,4 @@
     STATES_WAITING_FOR_SYS_LOCK_CONDITION,
     timeout,
-    ETIMEDOUT,
     lock_context
   );
@@ -153,5 +151,5 @@
   executing = cpu_self->executing;
   _Thread_Dispatch_enable( cpu_self );
-  eno = (int) executing->Wait.return_code;
+  eno = STATUS_GET_POSIX( _Thread_Wait_get_status( executing ) );
   _Mutex_Acquire( _mutex );
 
@@ -213,5 +211,5 @@
   executing = cpu_self->executing;
   _Thread_Dispatch_enable( cpu_self );
-  eno = (int) executing->Wait.return_code;
+  eno = STATUS_GET_POSIX( _Thread_Wait_get_status( executing ) );
   _Mutex_recursive_Acquire( _mutex );
   _mutex->_nest_level = nest_level;
Index: cpukit/score/src/corebarrier.c
===================================================================
--- cpukit/score/src/corebarrier.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/corebarrier.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -32,13 +32,2 @@
   _Thread_queue_Initialize( &the_barrier->Wait_queue );
 }
-
-Thread_Control *_CORE_barrier_Was_deleted(
-  Thread_Control       *the_thread,
-  Thread_queue_Queue   *queue,
-  Thread_queue_Context *queue_context
-)
-{
-  the_thread->Wait.return_code = CORE_BARRIER_WAS_DELETED;
-
-  return the_thread;
-}
Index: cpukit/score/src/corebarrierwait.c
===================================================================
--- cpukit/score/src/corebarrierwait.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/corebarrierwait.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -21,6 +21,7 @@
 #include <rtems/score/corebarrierimpl.h>
 #include <rtems/score/statesimpl.h>
+#include <rtems/score/threadimpl.h>
 
-void _CORE_barrier_Seize(
+Status_Control _CORE_barrier_Seize(
   CORE_barrier_Control *the_barrier,
   Thread_Control       *executing,
@@ -31,6 +32,4 @@
 {
   uint32_t number_of_waiting_threads;
-
-  executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL;
 
   _CORE_barrier_Acquire_critical( the_barrier, queue_context );
@@ -43,6 +42,6 @@
       && number_of_waiting_threads == the_barrier->Attributes.maximum_count
   ) {
-    executing->Wait.return_code = CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED;
     _CORE_barrier_Surrender( the_barrier, queue_context );
+    return STATUS_BARRIER_AUTOMATICALLY_RELEASED;
   } else {
     the_barrier->number_of_waiting_threads = number_of_waiting_threads;
@@ -53,7 +52,7 @@
       STATES_WAITING_FOR_BARRIER,
       timeout,
-      CORE_BARRIER_TIMEOUT,
       &queue_context->Lock_context
     );
+    return _Thread_Wait_get_status( executing );
   }
 }
Index: cpukit/score/src/coremsgbroadcast.c
===================================================================
--- cpukit/score/src/coremsgbroadcast.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/coremsgbroadcast.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -22,5 +22,5 @@
 #include <rtems/score/objectimpl.h>
 
-CORE_message_queue_Status _CORE_message_queue_Broadcast(
+Status_Control _CORE_message_queue_Broadcast(
   CORE_message_queue_Control *the_message_queue,
   const void                 *buffer,
@@ -35,5 +35,5 @@
   if ( size > the_message_queue->maximum_message_size ) {
     _ISR_lock_ISR_enable( &queue_context->Lock_context );
-    return CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE;
+    return STATUS_MESSAGE_INVALID_SIZE;
   }
 
@@ -61,4 +61,4 @@
 
   *count = number_broadcasted;
-  return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
+  return STATUS_SUCCESSFUL;
 }
Index: cpukit/score/src/coremsgclose.c
===================================================================
--- cpukit/score/src/coremsgclose.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/coremsgclose.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -28,5 +28,5 @@
 )
 {
-  the_thread->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_WAS_DELETED;
+  the_thread->Wait.return_code = STATUS_MESSAGE_QUEUE_WAS_DELETED;
 
   return the_thread;
Index: cpukit/score/src/coremsgseize.c
===================================================================
--- cpukit/score/src/coremsgseize.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/coremsgseize.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -23,8 +23,8 @@
 #include <rtems/score/isr.h>
 #include <rtems/score/coremsgimpl.h>
-#include <rtems/score/thread.h>
+#include <rtems/score/threadimpl.h>
 #include <rtems/score/statesimpl.h>
 
-void _CORE_message_queue_Seize(
+Status_Control _CORE_message_queue_Seize(
   CORE_message_queue_Control *the_message_queue,
   Thread_Control             *executing,
@@ -38,5 +38,4 @@
   CORE_message_queue_Buffer_control *the_message;
 
-  executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
   the_message = _CORE_message_queue_Get_pending_message( the_message_queue );
   if ( the_message != NULL ) {
@@ -59,5 +58,5 @@
       _CORE_message_queue_Free_message_buffer(the_message_queue, the_message);
       _CORE_message_queue_Release( the_message_queue, queue_context );
-      return;
+      return STATUS_SUCCESSFUL;
     #else
     {
@@ -81,5 +80,5 @@
         );
         _CORE_message_queue_Release( the_message_queue, queue_context );
-        return;
+        return STATUS_SUCCESSFUL;
       }
 
@@ -102,5 +101,5 @@
         queue_context
       );
-      return;
+      return STATUS_SUCCESSFUL;
     }
     #endif
@@ -109,6 +108,5 @@
   if ( !wait ) {
     _CORE_message_queue_Release( the_message_queue, queue_context );
-    executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
-    return;
+    return STATUS_UNSATISFIED;
   }
 
@@ -123,6 +121,6 @@
     STATES_WAITING_FOR_MESSAGE,
     timeout,
-    CORE_MESSAGE_QUEUE_STATUS_TIMEOUT,
     &queue_context->Lock_context
   );
+  return _Thread_Wait_get_status( executing );
 }
Index: cpukit/score/src/coremsgsubmit.c
===================================================================
--- cpukit/score/src/coremsgsubmit.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/coremsgsubmit.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -23,8 +23,9 @@
 #include <rtems/score/objectimpl.h>
 #include <rtems/score/isr.h>
+#include <rtems/score/threadimpl.h>
 #include <rtems/score/statesimpl.h>
 #include <rtems/score/wkspace.h>
 
-CORE_message_queue_Status _CORE_message_queue_Submit(
+Status_Control _CORE_message_queue_Submit(
   CORE_message_queue_Control       *the_message_queue,
   Thread_Control                   *executing,
@@ -42,5 +43,5 @@
   if ( size > the_message_queue->maximum_message_size ) {
     _CORE_message_queue_Release( the_message_queue, queue_context );
-    return CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE;
+    return STATUS_MESSAGE_INVALID_SIZE;
   }
 
@@ -57,5 +58,5 @@
   );
   if ( the_thread != NULL ) {
-    return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
+    return STATUS_SUCCESSFUL;
   }
 
@@ -96,10 +97,10 @@
 #endif
 
-    return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
+    return STATUS_SUCCESSFUL;
   }
 
   #if !defined(RTEMS_SCORE_COREMSG_ENABLE_BLOCKING_SEND)
     _CORE_message_queue_Release( the_message_queue, queue_context );
-    return CORE_MESSAGE_QUEUE_STATUS_TOO_MANY;
+    return STATUS_TOO_MANY;
   #else
     /*
@@ -110,5 +111,5 @@
     if ( !wait ) {
       _CORE_message_queue_Release( the_message_queue, queue_context );
-      return CORE_MESSAGE_QUEUE_STATUS_TOO_MANY;
+      return STATUS_TOO_MANY;
     }
 
@@ -119,5 +120,5 @@
     if ( _ISR_Is_in_progress() ) {
       _CORE_message_queue_Release( the_message_queue, queue_context );
-      return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED;
+      return STATUS_MESSAGE_QUEUE_WAIT_IN_ISR;
     }
 
@@ -128,5 +129,4 @@
      *  would be to use this variable prior to here.
      */
-    executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
     executing->Wait.return_argument_second.immutable_object = buffer;
     executing->Wait.option = (uint32_t) size;
@@ -139,8 +139,7 @@
       STATES_WAITING_FOR_MESSAGE,
       timeout,
-      CORE_MESSAGE_QUEUE_STATUS_TIMEOUT,
       &queue_context->Lock_context
     );
-    return executing->Wait.return_code;
+    return _Thread_Wait_get_status( executing );
   #endif
 }
Index: cpukit/score/src/coremutex.c
===================================================================
--- cpukit/score/src/coremutex.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/coremutex.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -24,5 +24,5 @@
 #include <rtems/score/thread.h>
 
-CORE_mutex_Status _CORE_mutex_Initialize(
+Status_Control _CORE_mutex_Initialize(
   CORE_mutex_Control           *the_mutex,
   Thread_Control               *executing,
@@ -65,5 +65,5 @@
          */
         _Thread_Dispatch_enable( cpu_self );
-        return CORE_MUTEX_STATUS_CEILING_VIOLATED;
+        return STATUS_MUTEX_CEILING_VIOLATED;
       }
 
@@ -89,26 +89,4 @@
   }
 
-  return CORE_MUTEX_STATUS_SUCCESSFUL;
+  return STATUS_SUCCESSFUL;
 }
-
-Thread_Control *_CORE_mutex_Was_deleted(
-  Thread_Control       *the_thread,
-  Thread_queue_Queue   *queue,
-  Thread_queue_Context *queue_context
-)
-{
-  the_thread->Wait.return_code = CORE_MUTEX_WAS_DELETED;
-
-  return the_thread;
-}
-
-Thread_Control *_CORE_mutex_Unsatisfied_nowait(
-  Thread_Control       *the_thread,
-  Thread_queue_Queue   *queue,
-  Thread_queue_Context *queue_context
-)
-{
-  the_thread->Wait.return_code = CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT;
-
-  return the_thread;
-}
Index: cpukit/score/src/coremutexseize.c
===================================================================
--- cpukit/score/src/coremutexseize.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/coremutexseize.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -25,5 +25,5 @@
 #include <rtems/score/thread.h>
 
-void _CORE_mutex_Seize_interrupt_blocking(
+Status_Control _CORE_mutex_Seize_interrupt_blocking(
   CORE_mutex_Control  *the_mutex,
   Thread_Control      *executing,
@@ -68,5 +68,4 @@
     STATES_WAITING_FOR_MUTEX,
     timeout,
-    CORE_MUTEX_TIMEOUT,
     lock_context
   );
@@ -75,4 +74,6 @@
   _Thread_Dispatch_enable( _Per_CPU_Get() );
 #endif
+
+  return _Thread_Wait_get_status( executing );
 }
 
Index: cpukit/score/src/coremutexsurrender.c
===================================================================
--- cpukit/score/src/coremutexsurrender.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/coremutexsurrender.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -24,5 +24,5 @@
 #include <rtems/score/thread.h>
 
-CORE_mutex_Status _CORE_mutex_Surrender(
+Status_Control _CORE_mutex_Surrender(
   CORE_mutex_Control   *the_mutex,
   Thread_queue_Context *queue_context
@@ -45,5 +45,5 @@
     if ( !_Thread_Is_executing( holder ) ) {
       _ISR_lock_ISR_enable( &queue_context->Lock_context );
-      return CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE;
+      return STATUS_NOT_OWNER;
     }
   }
@@ -55,5 +55,5 @@
   if ( !the_mutex->nest_count ) {
     _CORE_mutex_Release( the_mutex, queue_context );
-    return CORE_MUTEX_STATUS_SUCCESSFUL;
+    return STATUS_SUCCESSFUL;
   }
 
@@ -70,10 +70,10 @@
         case CORE_MUTEX_NESTING_ACQUIRES:
           _CORE_mutex_Release( the_mutex, queue_context );
-          return CORE_MUTEX_STATUS_SUCCESSFUL;
+          return STATUS_SUCCESSFUL;
         #if defined(RTEMS_POSIX_API)
           case CORE_MUTEX_NESTING_IS_ERROR:
             /* should never occur */
             _CORE_mutex_Release( the_mutex, queue_context );
-            return CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED;
+            return STATUS_NESTING_NOT_ALLOWED;
         #endif
         case CORE_MUTEX_NESTING_BLOCKS:
@@ -84,5 +84,5 @@
       _CORE_mutex_Release( the_mutex, queue_context );
       /* must be CORE_MUTEX_NESTING_ACQUIRES or we wouldn't be here */
-      return CORE_MUTEX_STATUS_SUCCESSFUL;
+      return STATUS_SUCCESSFUL;
     #endif
   }
@@ -180,4 +180,4 @@
   }
 
-  return CORE_MUTEX_STATUS_SUCCESSFUL;
+  return STATUS_SUCCESSFUL;
 }
Index: cpukit/score/src/corerwlockobtainread.c
===================================================================
--- cpukit/score/src/corerwlockobtainread.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/corerwlockobtainread.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,9 +20,10 @@
 
 #include <rtems/score/corerwlockimpl.h>
+#include <rtems/score/threadimpl.h>
 #include <rtems/score/threadqimpl.h>
 #include <rtems/score/statesimpl.h>
 #include <rtems/score/watchdog.h>
 
-void _CORE_RWLock_Seize_for_reading(
+Status_Control _CORE_RWLock_Seize_for_reading(
   CORE_RWLock_Control  *the_rwlock,
   Thread_Control       *executing,
@@ -45,6 +46,5 @@
       the_rwlock->number_of_readers += 1;
       _CORE_RWLock_Release( the_rwlock, queue_context );
-      executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
-      return;
+      return STATUS_SUCCESSFUL;
 
     case CORE_RWLOCK_LOCKED_FOR_READING: {
@@ -57,6 +57,5 @@
         the_rwlock->number_of_readers += 1;
         _CORE_RWLock_Release( the_rwlock, queue_context );
-        executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
-        return;
+        return STATUS_SUCCESSFUL;
       }
       break;
@@ -72,6 +71,5 @@
   if ( !wait ) {
     _CORE_RWLock_Release( the_rwlock, queue_context );
-    executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
-    return;
+    return STATUS_UNAVAILABLE;
   }
 
@@ -80,6 +78,5 @@
    */
 
-  executing->Wait.option      = CORE_RWLOCK_THREAD_WAITING_FOR_READ;
-  executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
+  executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_READ;
 
   _Thread_queue_Enqueue_critical(
@@ -89,6 +86,6 @@
      STATES_WAITING_FOR_RWLOCK,
      timeout,
-     CORE_RWLOCK_TIMEOUT,
      &queue_context->Lock_context
   );
+  return _Thread_Wait_get_status( executing );
 }
Index: cpukit/score/src/corerwlockobtainwrite.c
===================================================================
--- cpukit/score/src/corerwlockobtainwrite.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/corerwlockobtainwrite.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,9 +20,10 @@
 
 #include <rtems/score/corerwlockimpl.h>
+#include <rtems/score/threadimpl.h>
 #include <rtems/score/threadqimpl.h>
 #include <rtems/score/statesimpl.h>
 #include <rtems/score/watchdog.h>
 
-void _CORE_RWLock_Seize_for_writing(
+Status_Control _CORE_RWLock_Seize_for_writing(
   CORE_RWLock_Control  *the_rwlock,
   Thread_Control       *executing,
@@ -45,6 +46,5 @@
       the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING;
       _CORE_RWLock_Release( the_rwlock, queue_context );
-      executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
-      return;
+      return STATUS_SUCCESSFUL;
 
     case CORE_RWLOCK_LOCKED_FOR_READING:
@@ -59,6 +59,5 @@
   if ( !wait ) {
     _CORE_RWLock_Release( the_rwlock, queue_context );
-    executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
-    return;
+    return STATUS_UNAVAILABLE;
   }
 
@@ -67,6 +66,5 @@
    */
 
-  executing->Wait.option      = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE;
-  executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
+  executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE;
 
   _Thread_queue_Enqueue_critical(
@@ -76,6 +74,6 @@
      STATES_WAITING_FOR_RWLOCK,
      timeout,
-     CORE_RWLOCK_TIMEOUT,
      &queue_context->Lock_context
   );
+  return _Thread_Wait_get_status( executing );
 }
Index: cpukit/score/src/corerwlockrelease.c
===================================================================
--- cpukit/score/src/corerwlockrelease.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/corerwlockrelease.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -74,5 +74,5 @@
 }
 
-CORE_RWLock_Status _CORE_RWLock_Surrender(
+Status_Control _CORE_RWLock_Surrender(
   CORE_RWLock_Control  *the_rwlock,
   Thread_queue_Context *queue_context
@@ -91,5 +91,5 @@
     /* This is an error at the caller site */
     _CORE_RWLock_Release( the_rwlock, queue_context );
-    return CORE_RWLOCK_SUCCESSFUL;
+    return STATUS_SUCCESSFUL;
   }
 
@@ -100,5 +100,5 @@
       /* must be unlocked again */
       _CORE_RWLock_Release( the_rwlock, queue_context );
-      return CORE_RWLOCK_SUCCESSFUL;
+      return STATUS_SUCCESSFUL;
     }
   }
@@ -122,4 +122,4 @@
     queue_context
   );
-  return CORE_RWLOCK_SUCCESSFUL;
+  return STATUS_SUCCESSFUL;
 }
Index: cpukit/score/src/coresem.c
===================================================================
--- cpukit/score/src/coresem.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/coresem.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -37,24 +37,2 @@
   }
 }
-
-Thread_Control *_CORE_semaphore_Was_deleted(
-  Thread_Control       *the_thread,
-  Thread_queue_Queue   *queue,
-  Thread_queue_Context *queue_context
-)
-{
-  the_thread->Wait.return_code = CORE_SEMAPHORE_WAS_DELETED;
-
-  return the_thread;
-}
-
-Thread_Control *_CORE_semaphore_Unsatisfied_nowait(
-  Thread_Control       *the_thread,
-  Thread_queue_Queue   *queue,
-  Thread_queue_Context *queue_context
-)
-{
-  the_thread->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT;
-
-  return the_thread;
-}
Index: cpukit/score/src/corespinlockrelease.c
===================================================================
--- cpukit/score/src/corespinlockrelease.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/corespinlockrelease.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -22,5 +22,5 @@
 #include <rtems/score/percpu.h>
 
-CORE_spinlock_Status _CORE_spinlock_Surrender(
+Status_Control _CORE_spinlock_Surrender(
   CORE_spinlock_Control *the_spinlock,
   ISR_lock_Context      *lock_context
@@ -37,5 +37,5 @@
     ) {
       _CORE_spinlock_Release( the_spinlock, lock_context );
-      return CORE_SPINLOCK_NOT_HOLDER;
+      return STATUS_NOT_OWNER;
     }
 
@@ -48,4 +48,4 @@
 
   _CORE_spinlock_Release( the_spinlock, lock_context );
-  return CORE_SPINLOCK_SUCCESSFUL;
+  return STATUS_SUCCESSFUL;
 }
Index: cpukit/score/src/corespinlockwait.c
===================================================================
--- cpukit/score/src/corespinlockwait.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/corespinlockwait.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -22,5 +22,5 @@
 #include <rtems/score/percpu.h>
 
-CORE_spinlock_Status _CORE_spinlock_Seize(
+Status_Control _CORE_spinlock_Seize(
   CORE_spinlock_Control *the_spinlock,
   bool                   wait,
@@ -41,5 +41,5 @@
          the_spinlock->holder == executing ) {
       _CORE_spinlock_Release( the_spinlock, lock_context );
-      return CORE_SPINLOCK_HOLDER_RELOCKING;
+      return STATUS_NESTING_NOT_ALLOWED;
     }
     the_spinlock->users += 1;
@@ -49,5 +49,5 @@
         the_spinlock->holder = executing;
         _CORE_spinlock_Release( the_spinlock, lock_context );
-        return CORE_SPINLOCK_SUCCESSFUL;
+        return STATUS_SUCCESSFUL;
       }
 
@@ -58,5 +58,5 @@
         the_spinlock->users -= 1;
         _CORE_spinlock_Release( the_spinlock, lock_context );
-        return CORE_SPINLOCK_UNAVAILABLE;
+        return STATUS_UNAVAILABLE;
       }
 
@@ -68,5 +68,5 @@
           the_spinlock->users -= 1;
           _CORE_spinlock_Release( the_spinlock, lock_context );
-          return CORE_SPINLOCK_TIMEOUT;
+          return STATUS_TIMEOUT;
         }
       #endif
Index: cpukit/score/src/futex.c
===================================================================
--- cpukit/score/src/futex.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/futex.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -91,6 +91,5 @@
       executing,
       STATES_WAITING_FOR_SYS_LOCK_FUTEX,
-      0,
-      0,
+      WATCHDOG_NO_TIMEOUT,
       &lock_context
     );
Index: cpukit/score/src/mpci.c
===================================================================
--- cpukit/score/src/mpci.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/mpci.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -226,9 +226,8 @@
 }
 
-uint32_t   _MPCI_Send_request_packet (
-  uint32_t            destination,
-  MP_packet_Prefix   *the_packet,
-  States_Control      extra_state,
-  uint32_t            timeout_code
+Status_Control _MPCI_Send_request_packet(
+  uint32_t          destination,
+  MP_packet_Prefix *the_packet,
+  States_Control    extra_state
 )
 {
@@ -261,11 +260,10 @@
       executing,
       STATES_WAITING_FOR_RPC_REPLY | extra_state,
-      the_packet->timeout,
-      timeout_code
+      the_packet->timeout
     );
 
   _Thread_Dispatch_enable( cpu_self );
 
-  return executing->Wait.return_code;
+  return _Thread_Wait_get_status( executing );
 }
 
Index: cpukit/score/src/mutex.c
===================================================================
--- cpukit/score/src/mutex.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/mutex.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -120,5 +120,4 @@
     STATES_WAITING_FOR_SYS_LOCK_MUTEX,
     timeout,
-    ETIMEDOUT,
     lock_context
   );
@@ -263,8 +262,7 @@
     }
 
-    executing->Wait.return_code = 0;
     _Mutex_Acquire_slow( mutex, owner, executing, ticks, &lock_context );
 
-    return (int) executing->Wait.return_code;
+    return STATUS_GET_POSIX( _Thread_Wait_get_status( executing ) );
   }
 }
@@ -383,5 +381,4 @@
     }
 
-    executing->Wait.return_code = 0;
     _Mutex_Acquire_slow(
       &mutex->Mutex,
@@ -392,5 +389,5 @@
     );
 
-    return (int) executing->Wait.return_code;
+    return STATUS_GET_POSIX( _Thread_Wait_get_status( executing ) );
   }
 }
Index: cpukit/score/src/semaphore.c
===================================================================
--- cpukit/score/src/semaphore.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/semaphore.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -102,6 +102,5 @@
       executing,
       STATES_WAITING_FOR_SYS_LOCK_SEMAPHORE,
-      0,
-      0,
+      WATCHDOG_NO_TIMEOUT,
       &lock_context
     );
Index: cpukit/score/src/threadmp.c
===================================================================
--- cpukit/score/src/threadmp.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/threadmp.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -147,5 +147,4 @@
     the_proxy->Wait.option                  = executing->Wait.option;
     the_proxy->Wait.return_code             = executing->Wait.return_code;
-    the_proxy->Wait.timeout_code            = executing->Wait.timeout_code;
 
     the_proxy->thread_queue_callout = _Thread_queue_MP_callout_do_nothing;
Index: cpukit/score/src/threadqenqueue.c
===================================================================
--- cpukit/score/src/threadqenqueue.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/threadqenqueue.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -23,4 +23,5 @@
 #include <rtems/score/threaddispatch.h>
 #include <rtems/score/threadimpl.h>
+#include <rtems/score/status.h>
 #include <rtems/score/watchdogimpl.h>
 
@@ -40,5 +41,4 @@
   States_Control                 state,
   Watchdog_Interval              timeout,
-  uint32_t                       timeout_code,
   ISR_lock_Context              *lock_context
 )
@@ -55,4 +55,5 @@
   _Thread_Lock_set( the_thread, &queue->Lock );
 
+  the_thread->Wait.return_code = STATUS_SUCCESSFUL;
   _Thread_Wait_set_queue( the_thread, queue );
   _Thread_Wait_set_operations( the_thread, operations );
@@ -73,5 +74,4 @@
    */
   if ( timeout != WATCHDOG_NO_TIMEOUT ) {
-    _Thread_Wait_set_timeout_code( the_thread, timeout_code );
     _Thread_Timer_insert_relative(
       the_thread,
Index: cpukit/score/src/threadqflush.c
===================================================================
--- cpukit/score/src/threadqflush.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/threadqflush.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -20,4 +20,5 @@
 
 #include <rtems/score/threadimpl.h>
+#include <rtems/score/status.h>
 
 Thread_Control *_Thread_queue_Flush_default_filter(
@@ -27,4 +28,30 @@
 )
 {
+  (void) queue;
+  (void) queue_context;
+  return the_thread;
+}
+
+Thread_Control *_Thread_queue_Flush_status_object_was_deleted(
+  Thread_Control       *the_thread,
+  Thread_queue_Queue   *queue,
+  Thread_queue_Context *queue_context
+)
+{
+  the_thread->Wait.return_code = STATUS_OBJECT_WAS_DELETED;
+
+  (void) queue;
+  (void) queue_context;
+  return the_thread;
+}
+
+Thread_Control *_Thread_queue_Flush_status_unavailable(
+  Thread_Control       *the_thread,
+  Thread_queue_Queue   *queue,
+  Thread_queue_Context *queue_context
+)
+{
+  the_thread->Wait.return_code = STATUS_UNAVAILABLE;
+
   (void) queue;
   (void) queue_context;
Index: cpukit/score/src/threadrestart.c
===================================================================
--- cpukit/score/src/threadrestart.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/threadrestart.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -444,8 +444,8 @@
 
 void _Thread_Join(
-  Thread_Control    *the_thread,
-  States_Control     waiting_for_join,
-  Thread_Control    *executing,
-  ISR_lock_Context  *lock_context
+  Thread_Control   *the_thread,
+  States_Control    waiting_for_join,
+  Thread_Control   *executing,
+  ISR_lock_Context *lock_context
 )
 {
@@ -454,5 +454,4 @@
 
 #if defined(RTEMS_POSIX_API)
-  executing->Wait.return_code = 0;
   executing->Wait.return_argument = NULL;
 #endif
@@ -464,5 +463,4 @@
     waiting_for_join,
     WATCHDOG_NO_TIMEOUT,
-    0,
     lock_context
   );
Index: cpukit/score/src/threadtimeout.c
===================================================================
--- cpukit/score/src/threadtimeout.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ cpukit/score/src/threadtimeout.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -21,8 +21,9 @@
 
 #include <rtems/score/threadimpl.h>
+#include <rtems/score/status.h>
 
 static void _Thread_Do_timeout( Thread_Control *the_thread )
 {
-  the_thread->Wait.return_code = the_thread->Wait.timeout_code;
+  the_thread->Wait.return_code = STATUS_TIMEOUT;
   ( *the_thread->Wait.operations->extract )(
     the_thread->Wait.queue,
Index: testsuites/sptests/spintrcritical10/init.c
===================================================================
--- testsuites/sptests/spintrcritical10/init.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ testsuites/sptests/spintrcritical10/init.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -61,5 +61,5 @@
       *(rtems_event_set *) thread->Wait.return_argument == DEADBEEF
     );
-    rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL);
+    rtems_test_assert(_Thread_Wait_get_status(thread) == STATUS_SUCCESSFUL);
 
     sc = rtems_event_send(thread->Object.id, GREEN);
@@ -69,5 +69,5 @@
       *(rtems_event_set *) thread->Wait.return_argument == GREEN
     );
-    rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL);
+    rtems_test_assert(_Thread_Wait_get_status(thread) == STATUS_SUCCESSFUL);
 
     sc = rtems_event_send(thread->Object.id, RED);
@@ -77,5 +77,5 @@
       *(rtems_event_set *) thread->Wait.return_argument == GREEN
     );
-    rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL);
+    rtems_test_assert(_Thread_Wait_get_status(thread) == STATUS_SUCCESSFUL);
 
     _Thread_Timeout(&thread->Timer.Watchdog);
@@ -84,5 +84,5 @@
       *(rtems_event_set *) thread->Wait.return_argument == GREEN
     );
-    rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL);
+    rtems_test_assert(_Thread_Wait_get_status(thread) == STATUS_SUCCESSFUL);
 
     if (ctx->hit) {
@@ -158,5 +158,5 @@
       *(rtems_event_set *) thread->Wait.return_argument == DEADBEEF
     );
-    rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL);
+    rtems_test_assert(_Thread_Wait_get_status(thread) == STATUS_SUCCESSFUL);
 
     sc = rtems_event_send(thread->Object.id, GREEN);
@@ -166,5 +166,5 @@
       *(rtems_event_set *) thread->Wait.return_argument == DEADBEEF
     );
-    rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL);
+    rtems_test_assert(_Thread_Wait_get_status(thread) == STATUS_SUCCESSFUL);
 
     sc = rtems_event_send(thread->Object.id, RED);
@@ -174,5 +174,5 @@
       *(rtems_event_set *) thread->Wait.return_argument == EVENTS
     );
-    rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL);
+    rtems_test_assert(_Thread_Wait_get_status(thread) == STATUS_SUCCESSFUL);
 
     _Thread_Timeout(&thread->Timer.Watchdog);
@@ -181,5 +181,5 @@
       *(rtems_event_set *) thread->Wait.return_argument == EVENTS
     );
-    rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL);
+    rtems_test_assert(_Thread_Wait_get_status(thread) == STATUS_SUCCESSFUL);
 
     if (ctx->hit) {
@@ -250,5 +250,5 @@
       *(rtems_event_set *) thread->Wait.return_argument == DEADBEEF
     );
-    rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL);
+    rtems_test_assert(_Thread_Wait_get_status(thread) == STATUS_SUCCESSFUL);
 
     _Thread_Timeout(&thread->Timer.Watchdog);
@@ -257,5 +257,5 @@
       *(rtems_event_set *) thread->Wait.return_argument == DEADBEEF
     );
-    rtems_test_assert(thread->Wait.return_code == RTEMS_TIMEOUT);
+    rtems_test_assert(_Thread_Wait_get_status(thread) == STATUS_TIMEOUT);
 
     sc = rtems_event_send(thread->Object.id, EVENTS);
@@ -265,5 +265,5 @@
       *(rtems_event_set *) thread->Wait.return_argument == DEADBEEF
     );
-    rtems_test_assert(thread->Wait.return_code == RTEMS_TIMEOUT);
+    rtems_test_assert(_Thread_Wait_get_status(thread) == STATUS_TIMEOUT);
 
     if (ctx->hit) {
Index: testsuites/sptests/spintrcritical20/init.c
===================================================================
--- testsuites/sptests/spintrcritical20/init.c	(revision d887c1b5b30733fd2d6cf07a4a264f57ab9f4b4b)
+++ testsuites/sptests/spintrcritical20/init.c	(revision dce487912d98835b8168e755b60514f5a8592b27)
@@ -19,4 +19,5 @@
 #include <tmacros.h>
 #include <intrcritical.h>
+#include <rtems/score/threadimpl.h>
 #include <rtems/score/threadqimpl.h>
 #include <rtems/rtems/semimpl.h>
@@ -45,8 +46,4 @@
 
   ctx->semaphore_task_tcb = _Thread_Get_executing();
-  _Thread_Wait_set_timeout_code(
-    ctx->semaphore_task_tcb,
-    CORE_SEMAPHORE_TIMEOUT
-  );
 
   while (true) {
@@ -77,6 +74,5 @@
 
   rtems_test_assert(
-    ctx->semaphore_task_tcb->Wait.return_code
-      == CORE_SEMAPHORE_STATUS_SUCCESSFUL
+    _Thread_Wait_get_status( ctx->semaphore_task_tcb ) == STATUS_SUCCESSFUL
   );
 
@@ -95,9 +91,9 @@
   _Thread_Timeout(&ctx->semaphore_task_tcb->Timer.Watchdog);
 
-  switch (ctx->semaphore_task_tcb->Wait.return_code) {
-    case CORE_SEMAPHORE_STATUS_SUCCESSFUL:
+  switch (_Thread_Wait_get_status(ctx->semaphore_task_tcb)) {
+    case STATUS_SUCCESSFUL:
       ctx->status_was_successful = true;
       break;
-    case CORE_SEMAPHORE_TIMEOUT:
+    case STATUS_TIMEOUT:
       ctx->status_was_timeout = true;
       break;
