RTEMS 4.11
Annotated Report
Sun Dec 23 00:48:04 2012

ffc116ec <TOD_MICROSECONDS_TO_TICKS>: /** * We should ensure the ticks not be truncated by integer division. We * need to have it be greater than or equal to the requested time. It * should not be shorter. */ microseconds_per_tick = rtems_configuration_get_microseconds_per_tick();
ffc116ec:	3d 20 ff c3 	lis     r9,-61                                 
ffc116f0:	81 49 97 b4 	lwz     r10,-26700(r9)                         
  ticks                 = microseconds / microseconds_per_tick;       
ffc116f4:	7d 23 53 96 	divwu   r9,r3,r10                              
  if ( (microseconds % microseconds_per_tick) != 0 )                  
ffc116f8:	7d 49 51 d6 	mullw   r10,r9,r10                             
ffc116fc:	7f 83 50 00 	cmpw    cr7,r3,r10                             
ffc11700:	41 9e 00 08 	beq-    cr7,ffc11708 <TOD_MICROSECONDS_TO_TICKS+0x1c><== ALWAYS TAKEN
    ticks += 1;                                                       
ffc11704:	39 29 00 01 	addi    r9,r9,1                                <== NOT EXECUTED
                                                                      
  return ticks;                                                       
}                                                                     
ffc11708:	7d 23 4b 78 	mr      r3,r9                                  
ffc1170c:	4e 80 00 20 	blr                                            
                                                                      

ffc0b7a8 <TOD_MILLISECONDS_TO_TICKS>: /** * We should ensure the ticks not be truncated by integer division. We * need to have it be greater than or equal to the requested time. It * should not be shorter. */ milliseconds_per_tick = rtems_configuration_get_milliseconds_per_tick();
ffc0b7a8:	3d 20 ff c2 	lis     r9,-62                                 
ffc0b7ac:	81 29 ff a4 	lwz     r9,-92(r9)                             
ffc0b7b0:	3d 40 10 62 	lis     r10,4194                               
ffc0b7b4:	61 4a 4d d3 	ori     r10,r10,19923                          
ffc0b7b8:	7d 49 50 16 	mulhwu  r10,r9,r10                             
ffc0b7bc:	55 4a d1 be 	rlwinm  r10,r10,26,6,31                        
  ticks                 = milliseconds / milliseconds_per_tick;       
ffc0b7c0:	7d 23 53 96 	divwu   r9,r3,r10                              
  if ( (milliseconds % milliseconds_per_tick) != 0 )                  
ffc0b7c4:	7d 49 51 d6 	mullw   r10,r9,r10                             
ffc0b7c8:	7f 83 50 00 	cmpw    cr7,r3,r10                             
ffc0b7cc:	41 9e 00 08 	beq-    cr7,ffc0b7d4 <TOD_MILLISECONDS_TO_TICKS+0x2c><== ALWAYS TAKEN
    ticks += 1;                                                       
ffc0b7d0:	39 29 00 01 	addi    r9,r9,1                                <== NOT EXECUTED
                                                                      
  return ticks;                                                       
}                                                                     
ffc0b7d4:	7d 23 4b 78 	mr      r3,r9                                  
ffc0b7d8:	4e 80 00 20 	blr                                            
                                                                      

ffc0a65c <_API_extensions_Run_postdriver>: } } #endif void _API_extensions_Run_postdriver( void ) {
ffc0a65c:	94 21 ff f0 	stwu    r1,-16(r1)                             
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
ffc0a660:	3d 20 00 00 	lis     r9,0                                   
ffc0a664:	7c 08 02 a6 	mflr    r0                                     
ffc0a668:	93 c1 00 08 	stw     r30,8(r1)                              
ffc0a66c:	3b c9 2e 34 	addi    r30,r9,11828                           
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
ffc0a670:	3b de 00 04 	addi    r30,r30,4                              
    }                                                                 
  }                                                                   
#endif                                                                
                                                                      
void _API_extensions_Run_postdriver( void )                           
{                                                                     
ffc0a674:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc0a678:	83 e9 2e 34 	lwz     r31,11828(r9)                          
ffc0a67c:	90 01 00 14 	stw     r0,20(r1)                              
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
ffc0a680:	7f 9f f0 00 	cmpw    cr7,r31,r30                            
ffc0a684:	41 9e 00 1c 	beq-    cr7,ffc0a6a0 <_API_extensions_Run_postdriver+0x44><== NEVER TAKEN
     *  Currently all APIs configure this hook so it is always non-NULL.
     */                                                               
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)              
    if ( the_extension->postdriver_hook )                             
#endif                                                                
      (*the_extension->postdriver_hook)();                            
ffc0a688:	81 3f 00 08 	lwz     r9,8(r31)                              
ffc0a68c:	7d 29 03 a6 	mtctr   r9                                     
ffc0a690:	4e 80 04 21 	bctrl                                          
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
        !_Chain_Is_tail( &_API_extensions_List, the_node ) ;          
        the_node = the_node->next ) {                                 
ffc0a694:	83 ff 00 00 	lwz     r31,0(r31)                             
void _API_extensions_Run_postdriver( void )                           
{                                                                     
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
ffc0a698:	7f 9f f0 00 	cmpw    cr7,r31,r30                            
ffc0a69c:	40 9e ff ec 	bne+    cr7,ffc0a688 <_API_extensions_Run_postdriver+0x2c>
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)              
    if ( the_extension->postdriver_hook )                             
#endif                                                                
      (*the_extension->postdriver_hook)();                            
  }                                                                   
}                                                                     
ffc0a6a0:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0a6a4:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0a6a8:	7c 08 03 a6 	mtlr    r0                                     
ffc0a6ac:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0a6b0:	38 21 00 10 	addi    r1,r1,16                               
ffc0a6b4:	4e 80 00 20 	blr                                            
                                                                      

ffc0cf98 <_CORE_RWLock_Release>: #include <rtems/score/watchdog.h> CORE_RWLock_Status _CORE_RWLock_Release( CORE_RWLock_Control *the_rwlock ) {
ffc0cf98:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0cf9c:	7c 08 02 a6 	mflr    r0                                     
  ISR_Level       level;                                              
  Thread_Control *executing = _Thread_Executing;                      
ffc0cfa0:	3d 20 00 00 	lis     r9,0                                   
#include <rtems/score/watchdog.h>                                     
                                                                      
CORE_RWLock_Status _CORE_RWLock_Release(                              
  CORE_RWLock_Control  *the_rwlock                                    
)                                                                     
{                                                                     
ffc0cfa4:	90 01 00 14 	stw     r0,20(r1)                              
ffc0cfa8:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc0cfac:	7c 7f 1b 78 	mr      r31,r3                                 
  ISR_Level       level;                                              
  Thread_Control *executing = _Thread_Executing;                      
ffc0cfb0:	81 09 31 b0 	lwz     r8,12720(r9)                           
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0cfb4:	7d 40 00 a6 	mfmsr   r10                                    
ffc0cfb8:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc0cfbc:	7d 49 48 78 	andc    r9,r10,r9                              
ffc0cfc0:	7d 20 01 24 	mtmsr   r9                                     
   *  If locked for reading and no waiters, then OK to read.          
   *  If any thread is waiting, then we wait.                         
   */                                                                 
                                                                      
  _ISR_Disable( level );                                              
    if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){          
ffc0cfc4:	81 23 00 44 	lwz     r9,68(r3)                              
ffc0cfc8:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0cfcc:	41 9e 00 cc 	beq-    cr7,ffc0d098 <_CORE_RWLock_Release+0x100>
      _ISR_Enable( level );                                           
      executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;          
      return CORE_RWLOCK_SUCCESSFUL;                                  
    }                                                                 
    if ( the_rwlock->current_state == CORE_RWLOCK_LOCKED_FOR_READING ) {
ffc0cfd0:	2f 89 00 01 	cmpwi   cr7,r9,1                               
ffc0cfd4:	41 9e 00 94 	beq-    cr7,ffc0d068 <_CORE_RWLock_Release+0xd0>
          return CORE_RWLOCK_SUCCESSFUL;                              
        }                                                             
    }                                                                 
                                                                      
    /* CORE_RWLOCK_LOCKED_FOR_WRITING or READING with readers */      
    executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;             
ffc0cfd8:	39 20 00 00 	li      r9,0                                   
ffc0cfdc:	91 28 00 34 	stw     r9,52(r8)                              
                                                                      
    /*                                                                
     * Implicitly transition to "unlocked" and find another thread interested
     * in obtaining this rwlock.                                      
     */                                                               
    the_rwlock->current_state = CORE_RWLOCK_UNLOCKED;                 
ffc0cfe0:	91 3f 00 44 	stw     r9,68(r31)                             
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0cfe4:	7d 40 01 24 	mtmsr   r10                                    
  _ISR_Enable( level );                                               
                                                                      
  next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue );            
ffc0cfe8:	7f e3 fb 78 	mr      r3,r31                                 
ffc0cfec:	48 00 23 0d 	bl      ffc0f2f8 <_Thread_queue_Dequeue>       
                                                                      
  if ( next ) {                                                       
ffc0cff0:	2c 03 00 00 	cmpwi   r3,0                                   
ffc0cff4:	41 82 00 5c 	beq-    ffc0d050 <_CORE_RWLock_Release+0xb8>   
    if ( next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) {
ffc0cff8:	81 23 00 30 	lwz     r9,48(r3)                              
ffc0cffc:	2f 89 00 01 	cmpwi   cr7,r9,1                               
ffc0d000:	41 9e 00 bc 	beq-    cr7,ffc0d0bc <_CORE_RWLock_Release+0x124>
    }                                                                 
                                                                      
    /*                                                                
     * Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING                 
     */                                                               
    the_rwlock->number_of_readers += 1;                               
ffc0d004:	81 3f 00 48 	lwz     r9,72(r31)                             
ffc0d008:	39 29 00 01 	addi    r9,r9,1                                
ffc0d00c:	91 3f 00 48 	stw     r9,72(r31)                             
    the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING;       
ffc0d010:	39 20 00 01 	li      r9,1                                   
ffc0d014:	91 3f 00 44 	stw     r9,68(r31)                             
ffc0d018:	48 00 00 20 	b       ffc0d038 <_CORE_RWLock_Release+0xa0>   
    /*                                                                
     * Now see if more readers can be let go.                         
     */                                                               
    while ( 1 ) {                                                     
      next = _Thread_queue_First( &the_rwlock->Wait_queue );          
      if ( !next ||                                                   
ffc0d01c:	81 29 00 30 	lwz     r9,48(r9)                              
ffc0d020:	2f 89 00 01 	cmpwi   cr7,r9,1                               
ffc0d024:	41 9e 00 2c 	beq-    cr7,ffc0d050 <_CORE_RWLock_Release+0xb8><== NEVER TAKEN
           next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE )
        return CORE_RWLOCK_SUCCESSFUL;                                
      the_rwlock->number_of_readers += 1;                             
ffc0d028:	81 3f 00 48 	lwz     r9,72(r31)                             
ffc0d02c:	39 29 00 01 	addi    r9,r9,1                                
ffc0d030:	91 3f 00 48 	stw     r9,72(r31)                             
      _Thread_queue_Extract( &the_rwlock->Wait_queue, next );         
ffc0d034:	48 00 27 8d 	bl      ffc0f7c0 <_Thread_queue_Extract>       
                                                                      
    /*                                                                
     * Now see if more readers can be let go.                         
     */                                                               
    while ( 1 ) {                                                     
      next = _Thread_queue_First( &the_rwlock->Wait_queue );          
ffc0d038:	7f e3 fb 78 	mr      r3,r31                                 
ffc0d03c:	48 00 28 e1 	bl      ffc0f91c <_Thread_queue_First>         
      if ( !next ||                                                   
ffc0d040:	7c 69 1b 79 	mr.     r9,r3                                  
           next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE )
        return CORE_RWLOCK_SUCCESSFUL;                                
      the_rwlock->number_of_readers += 1;                             
      _Thread_queue_Extract( &the_rwlock->Wait_queue, next );         
ffc0d044:	7f e3 fb 78 	mr      r3,r31                                 
ffc0d048:	7d 24 4b 78 	mr      r4,r9                                  
    /*                                                                
     * Now see if more readers can be let go.                         
     */                                                               
    while ( 1 ) {                                                     
      next = _Thread_queue_First( &the_rwlock->Wait_queue );          
      if ( !next ||                                                   
ffc0d04c:	40 82 ff d0 	bne+    ffc0d01c <_CORE_RWLock_Release+0x84>   
  }                                                                   
                                                                      
  /* indentation is to match _ISR_Disable at top */                   
                                                                      
  return CORE_RWLOCK_SUCCESSFUL;                                      
}                                                                     
ffc0d050:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0d054:	38 60 00 00 	li      r3,0                                   
ffc0d058:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0d05c:	7c 08 03 a6 	mtlr    r0                                     
ffc0d060:	38 21 00 10 	addi    r1,r1,16                               
ffc0d064:	4e 80 00 20 	blr                                            
      _ISR_Enable( level );                                           
      executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;          
      return CORE_RWLOCK_SUCCESSFUL;                                  
    }                                                                 
    if ( the_rwlock->current_state == CORE_RWLOCK_LOCKED_FOR_READING ) {
	the_rwlock->number_of_readers -= 1;                                  
ffc0d068:	81 23 00 48 	lwz     r9,72(r3)                              
ffc0d06c:	39 29 ff ff 	addi    r9,r9,-1                               
	if ( the_rwlock->number_of_readers != 0 ) {                          
ffc0d070:	2f 89 00 00 	cmpwi   cr7,r9,0                               
      _ISR_Enable( level );                                           
      executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;          
      return CORE_RWLOCK_SUCCESSFUL;                                  
    }                                                                 
    if ( the_rwlock->current_state == CORE_RWLOCK_LOCKED_FOR_READING ) {
	the_rwlock->number_of_readers -= 1;                                  
ffc0d074:	91 23 00 48 	stw     r9,72(r3)                              
	if ( the_rwlock->number_of_readers != 0 ) {                          
ffc0d078:	41 9e ff 60 	beq+    cr7,ffc0cfd8 <_CORE_RWLock_Release+0x40>
ffc0d07c:	7d 40 01 24 	mtmsr   r10                                    
  }                                                                   
                                                                      
  /* indentation is to match _ISR_Disable at top */                   
                                                                      
  return CORE_RWLOCK_SUCCESSFUL;                                      
}                                                                     
ffc0d080:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0d084:	38 60 00 00 	li      r3,0                                   
ffc0d088:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0d08c:	7c 08 03 a6 	mtlr    r0                                     
ffc0d090:	38 21 00 10 	addi    r1,r1,16                               
ffc0d094:	4e 80 00 20 	blr                                            
ffc0d098:	7d 40 01 24 	mtmsr   r10                                    
ffc0d09c:	80 01 00 14 	lwz     r0,20(r1)                              
   */                                                                 
                                                                      
  _ISR_Disable( level );                                              
    if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){          
      _ISR_Enable( level );                                           
      executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;          
ffc0d0a0:	39 20 00 02 	li      r9,2                                   
  }                                                                   
                                                                      
  /* indentation is to match _ISR_Disable at top */                   
                                                                      
  return CORE_RWLOCK_SUCCESSFUL;                                      
}                                                                     
ffc0d0a4:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0d0a8:	38 60 00 00 	li      r3,0                                   
ffc0d0ac:	7c 08 03 a6 	mtlr    r0                                     
   */                                                                 
                                                                      
  _ISR_Disable( level );                                              
    if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){          
      _ISR_Enable( level );                                           
      executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;          
ffc0d0b0:	91 28 00 34 	stw     r9,52(r8)                              
  }                                                                   
                                                                      
  /* indentation is to match _ISR_Disable at top */                   
                                                                      
  return CORE_RWLOCK_SUCCESSFUL;                                      
}                                                                     
ffc0d0b4:	38 21 00 10 	addi    r1,r1,16                               
ffc0d0b8:	4e 80 00 20 	blr                                            
                                                                      
  next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue );            
                                                                      
  if ( next ) {                                                       
    if ( next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) {
      the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING;     
ffc0d0bc:	39 20 00 02 	li      r9,2                                   
ffc0d0c0:	91 3f 00 44 	stw     r9,68(r31)                             
      return CORE_RWLOCK_SUCCESSFUL;                                  
ffc0d0c4:	4b ff ff 8c 	b       ffc0d050 <_CORE_RWLock_Release+0xb8>   
                                                                      

ffc0d0c8 <_CORE_RWLock_Timeout>: void _CORE_RWLock_Timeout( Objects_Id id, void *ignored ) {
ffc0d0c8:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0d0cc:	7c 08 02 a6 	mflr    r0                                     
  Thread_Control       *the_thread;                                   
  Objects_Locations     location;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
ffc0d0d0:	38 81 00 08 	addi    r4,r1,8                                
                                                                      
void _CORE_RWLock_Timeout(                                            
  Objects_Id  id,                                                     
  void       *ignored                                                 
)                                                                     
{                                                                     
ffc0d0d4:	90 01 00 1c 	stw     r0,28(r1)                              
  Thread_Control       *the_thread;                                   
  Objects_Locations     location;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
ffc0d0d8:	48 00 1e 21 	bl      ffc0eef8 <_Thread_Get>                 
  switch ( location ) {                                               
ffc0d0dc:	81 21 00 08 	lwz     r9,8(r1)                               
ffc0d0e0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0d0e4:	40 9e 00 18 	bne-    cr7,ffc0d0fc <_CORE_RWLock_Timeout+0x34><== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
      break;                                                          
    case OBJECTS_LOCAL:                                               
      _Thread_queue_Process_timeout( the_thread );                    
ffc0d0e8:	48 00 29 49 	bl      ffc0fa30 <_Thread_queue_Process_timeout>
   *                                                                  
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc0d0ec:	3d 20 00 00 	lis     r9,0                                   
ffc0d0f0:	81 49 28 90 	lwz     r10,10384(r9)                          
                                                                      
    --level;                                                          
ffc0d0f4:	39 4a ff ff 	addi    r10,r10,-1                             
    _Thread_Dispatch_disable_level = level;                           
ffc0d0f8:	91 49 28 90 	stw     r10,10384(r9)                          
      _Thread_Unnest_dispatch();                                      
      break;                                                          
  }                                                                   
}                                                                     
ffc0d0fc:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0d100:	38 21 00 18 	addi    r1,r1,24                               
ffc0d104:	7c 08 03 a6 	mtlr    r0                                     
ffc0d108:	4e 80 00 20 	blr                                            
                                                                      

ffc0aa44 <_CORE_mutex_Seize>: Objects_Id _id, bool _wait, Watchdog_Interval _timeout, ISR_Level _level ) {
ffc0aa44:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc0aa48:	7c 08 02 a6 	mflr    r0                                     
ffc0aa4c:	93 e1 00 24 	stw     r31,36(r1)                             
   * This routine returns true if thread dispatch indicates           
   * that we are in a critical section.                               
   */                                                                 
  RTEMS_INLINE_ROUTINE bool _Thread_Dispatch_in_critical_section(void)
  {                                                                   
     if (  _Thread_Dispatch_disable_level == 0 )                      
ffc0aa50:	3f e0 00 00 	lis     r31,0                                  
ffc0aa54:	81 3f 28 68 	lwz     r9,10344(r31)                          
ffc0aa58:	93 61 00 14 	stw     r27,20(r1)                             
ffc0aa5c:	7c db 33 78 	mr      r27,r6                                 
ffc0aa60:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0aa64:	93 81 00 18 	stw     r28,24(r1)                             
ffc0aa68:	7c 9c 23 78 	mr      r28,r4                                 
ffc0aa6c:	93 a1 00 1c 	stw     r29,28(r1)                             
ffc0aa70:	7c 7d 1b 78 	mr      r29,r3                                 
ffc0aa74:	93 c1 00 20 	stw     r30,32(r1)                             
ffc0aa78:	7c be 2b 78 	mr      r30,r5                                 
ffc0aa7c:	90 01 00 2c 	stw     r0,44(r1)                              
ffc0aa80:	90 e1 00 08 	stw     r7,8(r1)                               
ffc0aa84:	41 9e 00 88 	beq-    cr7,ffc0ab0c <_CORE_mutex_Seize+0xc8>  
  _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 
ffc0aa88:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc0aa8c:	41 9e 00 d4 	beq-    cr7,ffc0ab60 <_CORE_mutex_Seize+0x11c> 
ffc0aa90:	3d 20 00 00 	lis     r9,0                                   
ffc0aa94:	81 29 28 90 	lwz     r9,10384(r9)                           
ffc0aa98:	2b 89 00 01 	cmplwi  cr7,r9,1                               
ffc0aa9c:	41 9d 00 d8 	bgt-    cr7,ffc0ab74 <_CORE_mutex_Seize+0x130> 
ffc0aaa0:	38 81 00 08 	addi    r4,r1,8                                
ffc0aaa4:	48 00 5b 75 	bl      ffc10618 <_CORE_mutex_Seize_interrupt_trylock>
ffc0aaa8:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0aaac:	41 9e 00 3c 	beq-    cr7,ffc0aae8 <_CORE_mutex_Seize+0xa4>  <== ALWAYS TAKEN
ffc0aab0:	3d 20 00 00 	lis     r9,0                                   
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc0aab4:	81 5f 28 68 	lwz     r10,10344(r31)                         
ffc0aab8:	81 29 31 b0 	lwz     r9,12720(r9)                           
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (      
  Thread_queue_Control *the_thread_queue                              
)                                                                     
{                                                                     
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
ffc0aabc:	39 00 00 01 	li      r8,1                                   
ffc0aac0:	91 1d 00 30 	stw     r8,48(r29)                             
                                                                      
    ++level;                                                          
ffc0aac4:	39 4a 00 01 	addi    r10,r10,1                              
ffc0aac8:	93 a9 00 44 	stw     r29,68(r9)                             
ffc0aacc:	93 89 00 20 	stw     r28,32(r9)                             
    _Thread_Dispatch_disable_level = level;                           
ffc0aad0:	91 5f 28 68 	stw     r10,10344(r31)                         
ffc0aad4:	81 21 00 08 	lwz     r9,8(r1)                               
ffc0aad8:	7d 20 01 24 	mtmsr   r9                                     
ffc0aadc:	7f a3 eb 78 	mr      r3,r29                                 
ffc0aae0:	7f 64 db 78 	mr      r4,r27                                 
ffc0aae4:	4b ff fe 81 	bl      ffc0a964 <_CORE_mutex_Seize_interrupt_blocking>
}                                                                     
ffc0aae8:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc0aaec:	83 61 00 14 	lwz     r27,20(r1)                             
ffc0aaf0:	7c 08 03 a6 	mtlr    r0                                     
ffc0aaf4:	83 81 00 18 	lwz     r28,24(r1)                             
ffc0aaf8:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc0aafc:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc0ab00:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc0ab04:	38 21 00 28 	addi    r1,r1,40                               
ffc0ab08:	4e 80 00 20 	blr                                            
  bool                 _wait,                                         
  Watchdog_Interval    _timeout,                                      
  ISR_Level            _level                                         
)                                                                     
{                                                                     
  _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 
ffc0ab0c:	38 81 00 08 	addi    r4,r1,8                                
ffc0ab10:	48 00 5b 09 	bl      ffc10618 <_CORE_mutex_Seize_interrupt_trylock>
ffc0ab14:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0ab18:	41 be ff d0 	beq-    cr7,ffc0aae8 <_CORE_mutex_Seize+0xa4>  
ffc0ab1c:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
ffc0ab20:	40 be ff 90 	bne-    cr7,ffc0aab0 <_CORE_mutex_Seize+0x6c>  
ffc0ab24:	81 21 00 08 	lwz     r9,8(r1)                               
ffc0ab28:	7d 20 01 24 	mtmsr   r9                                     
}                                                                     
ffc0ab2c:	80 01 00 2c 	lwz     r0,44(r1)                              
  bool                 _wait,                                         
  Watchdog_Interval    _timeout,                                      
  ISR_Level            _level                                         
)                                                                     
{                                                                     
  _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 
ffc0ab30:	3d 20 00 00 	lis     r9,0                                   
ffc0ab34:	81 29 31 b0 	lwz     r9,12720(r9)                           
ffc0ab38:	39 40 00 01 	li      r10,1                                  
}                                                                     
ffc0ab3c:	7c 08 03 a6 	mtlr    r0                                     
ffc0ab40:	83 61 00 14 	lwz     r27,20(r1)                             
ffc0ab44:	83 81 00 18 	lwz     r28,24(r1)                             
ffc0ab48:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc0ab4c:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc0ab50:	83 e1 00 24 	lwz     r31,36(r1)                             
  bool                 _wait,                                         
  Watchdog_Interval    _timeout,                                      
  ISR_Level            _level                                         
)                                                                     
{                                                                     
  _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 
ffc0ab54:	91 49 00 34 	stw     r10,52(r9)                             
}                                                                     
ffc0ab58:	38 21 00 28 	addi    r1,r1,40                               
ffc0ab5c:	4e 80 00 20 	blr                                            
  bool                 _wait,                                         
  Watchdog_Interval    _timeout,                                      
  ISR_Level            _level                                         
)                                                                     
{                                                                     
  _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 
ffc0ab60:	38 81 00 08 	addi    r4,r1,8                                
ffc0ab64:	48 00 5a b5 	bl      ffc10618 <_CORE_mutex_Seize_interrupt_trylock>
ffc0ab68:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0ab6c:	40 9e ff b8 	bne+    cr7,ffc0ab24 <_CORE_mutex_Seize+0xe0>  <== NEVER TAKEN
ffc0ab70:	4b ff ff 78 	b       ffc0aae8 <_CORE_mutex_Seize+0xa4>      
ffc0ab74:	38 60 00 00 	li      r3,0                                   
ffc0ab78:	38 80 00 00 	li      r4,0                                   
ffc0ab7c:	38 a0 00 12 	li      r5,18                                  
ffc0ab80:	48 00 07 f1 	bl      ffc0b370 <_Internal_error_Occurred>    
                                                                      

ffc0ad14 <_CORE_semaphore_Surrender>: CORE_semaphore_Status _CORE_semaphore_Surrender( CORE_semaphore_Control *the_semaphore, Objects_Id id, CORE_semaphore_API_mp_support_callout api_semaphore_mp_support ) {
ffc0ad14:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0ad18:	7c 08 02 a6 	mflr    r0                                     
ffc0ad1c:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc0ad20:	7c 7f 1b 78 	mr      r31,r3                                 
ffc0ad24:	90 01 00 14 	stw     r0,20(r1)                              
  ISR_Level       level;                                              
  CORE_semaphore_Status status;                                       
                                                                      
  status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;                          
                                                                      
  if ( (the_thread = _Thread_queue_Dequeue(&the_semaphore->Wait_queue)) ) {
ffc0ad28:	48 00 21 b5 	bl      ffc0cedc <_Thread_queue_Dequeue>       
ffc0ad2c:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0ad30:	41 9e 00 1c 	beq-    cr7,ffc0ad4c <_CORE_semaphore_Surrender+0x38>
        status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;               
    _ISR_Enable( level );                                             
  }                                                                   
                                                                      
  return status;                                                      
}                                                                     
ffc0ad34:	80 01 00 14 	lwz     r0,20(r1)                              
{                                                                     
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  CORE_semaphore_Status status;                                       
                                                                      
  status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;                          
ffc0ad38:	38 60 00 00 	li      r3,0                                   
        status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;               
    _ISR_Enable( level );                                             
  }                                                                   
                                                                      
  return status;                                                      
}                                                                     
ffc0ad3c:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0ad40:	7c 08 03 a6 	mtlr    r0                                     
ffc0ad44:	38 21 00 10 	addi    r1,r1,16                               
ffc0ad48:	4e 80 00 20 	blr                                            
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0ad4c:	7d 00 00 a6 	mfmsr   r8                                     
ffc0ad50:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc0ad54:	7d 09 48 78 	andc    r9,r8,r9                               
ffc0ad58:	7d 20 01 24 	mtmsr   r9                                     
      (*api_semaphore_mp_support) ( the_thread, id );                 
#endif                                                                
                                                                      
  } else {                                                            
    _ISR_Disable( level );                                            
      if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
ffc0ad5c:	81 3f 00 48 	lwz     r9,72(r31)                             
        the_semaphore->count += 1;                                    
      else                                                            
        status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;               
ffc0ad60:	38 60 00 04 	li      r3,4                                   
      (*api_semaphore_mp_support) ( the_thread, id );                 
#endif                                                                
                                                                      
  } else {                                                            
    _ISR_Disable( level );                                            
      if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
ffc0ad64:	81 5f 00 40 	lwz     r10,64(r31)                            
ffc0ad68:	7f 89 50 40 	cmplw   cr7,r9,r10                             
ffc0ad6c:	40 9c 00 10 	bge-    cr7,ffc0ad7c <_CORE_semaphore_Surrender+0x68><== NEVER TAKEN
        the_semaphore->count += 1;                                    
ffc0ad70:	39 29 00 01 	addi    r9,r9,1                                
ffc0ad74:	91 3f 00 48 	stw     r9,72(r31)                             
{                                                                     
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  CORE_semaphore_Status status;                                       
                                                                      
  status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;                          
ffc0ad78:	38 60 00 00 	li      r3,0                                   
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0ad7c:	7d 00 01 24 	mtmsr   r8                                     
        status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;               
    _ISR_Enable( level );                                             
  }                                                                   
                                                                      
  return status;                                                      
}                                                                     
ffc0ad80:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0ad84:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0ad88:	7c 08 03 a6 	mtlr    r0                                     
ffc0ad8c:	38 21 00 10 	addi    r1,r1,16                               
ffc0ad90:	4e 80 00 20 	blr                                            
                                                                      

ffc0a83c <_Chain_Initialize>: Chain_Node *current = head; Chain_Node *next = starting_address; head->previous = NULL; while ( count-- ) {
ffc0a83c:	2f 85 00 00 	cmpwi   cr7,r5,0                               
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
ffc0a840:	39 20 00 00 	li      r9,0                                   
  size_t         node_size                                            
)                                                                     
{                                                                     
  size_t count = number_nodes;                                        
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
ffc0a844:	39 03 00 04 	addi    r8,r3,4                                
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
ffc0a848:	91 23 00 04 	stw     r9,4(r3)                               
                                                                      
  while ( count-- ) {                                                 
ffc0a84c:	38 e5 ff ff 	addi    r7,r5,-1                               
ffc0a850:	41 9e 00 38 	beq-    cr7,ffc0a888 <_Chain_Initialize+0x4c>  <== NEVER TAKEN
ffc0a854:	7c a9 03 a6 	mtctr   r5                                     
ffc0a858:	7c 89 23 78 	mr      r9,r4                                  
ffc0a85c:	7c 6a 1b 78 	mr      r10,r3                                 
    current->next  = next;                                            
ffc0a860:	91 2a 00 00 	stw     r9,0(r10)                              
    next->previous = current;                                         
ffc0a864:	91 49 00 04 	stw     r10,4(r9)                              
ffc0a868:	7d 2a 4b 78 	mr      r10,r9                                 
    current        = next;                                            
    next           = (Chain_Node *)                                   
ffc0a86c:	7d 29 32 14 	add     r9,r9,r6                               
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
                                                                      
  while ( count-- ) {                                                 
ffc0a870:	42 00 ff f0 	bdnz+   ffc0a860 <_Chain_Initialize+0x24>      
#include <rtems/system.h>                                             
#include <rtems/score/address.h>                                      
#include <rtems/score/chain.h>                                        
#include <rtems/score/isr.h>                                          
                                                                      
void _Chain_Initialize(                                               
ffc0a874:	7c c6 39 d6 	mullw   r6,r6,r7                               
ffc0a878:	7c c4 32 14 	add     r6,r4,r6                               
    current        = next;                                            
    next           = (Chain_Node *)                                   
                        _Addresses_Add_offset( (void *) next, node_size );
  }                                                                   
                                                                      
  current->next = tail;                                               
ffc0a87c:	91 06 00 00 	stw     r8,0(r6)                               
  tail->previous = current;                                           
ffc0a880:	90 c3 00 08 	stw     r6,8(r3)                               
ffc0a884:	4e 80 00 20 	blr                                            
)                                                                     
{                                                                     
  size_t count = number_nodes;                                        
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *current = head;                                         
ffc0a888:	7c 66 1b 78 	mr      r6,r3                                  <== NOT EXECUTED
ffc0a88c:	4b ff ff f0 	b       ffc0a87c <_Chain_Initialize+0x40>      <== NOT EXECUTED
                                                                      

ffc0952c <_Event_Surrender>: rtems_event_set event_in, Event_Control *event, Thread_blocking_operation_States *sync_state, States_Control wait_state ) {
ffc0952c:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc09530:	7c 08 02 a6 	mflr    r0                                     
ffc09534:	90 01 00 14 	stw     r0,20(r1)                              
ffc09538:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc0953c:	7c 7f 1b 78 	mr      r31,r3                                 
  rtems_event_set pending_events;                                     
  rtems_event_set event_condition;                                    
  rtems_event_set seized_events;                                      
  rtems_option    option_set;                                         
                                                                      
  option_set = the_thread->Wait.option;                               
ffc09540:	81 63 00 30 	lwz     r11,48(r3)                             
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc09544:	7d 40 00 a6 	mfmsr   r10                                    
ffc09548:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc0954c:	7d 49 48 78 	andc    r9,r10,r9                              
ffc09550:	7d 20 01 24 	mtmsr   r9                                     
RTEMS_INLINE_ROUTINE void _Event_sets_Post(                           
  rtems_event_set  the_new_events,                                    
  rtems_event_set *the_event_set                                      
)                                                                     
{                                                                     
  *the_event_set |= the_new_events;                                   
ffc09554:	81 25 00 00 	lwz     r9,0(r5)                               
ffc09558:	7c 84 4b 78 	or      r4,r4,r9                               
ffc0955c:	90 85 00 00 	stw     r4,0(r5)                               
                                                                      
  _ISR_Disable( level );                                              
  _Event_sets_Post( event_in, &event->pending_events );               
  pending_events  = event->pending_events;                            
  event_condition = the_thread->Wait.count;                           
ffc09560:	81 23 00 24 	lwz     r9,36(r3)                              
  seized_events = _Event_sets_Get( pending_events, event_condition ); 
                                                                      
  /*                                                                  
   *  No events were seized in this operation                         
   */                                                                 
  if ( _Event_sets_Is_empty( seized_events ) ) {                      
ffc09564:	7c 88 48 39 	and.    r8,r4,r9                               
ffc09568:	41 82 00 d4 	beq-    ffc0963c <_Event_Surrender+0x110>      
                                                                      
  /*                                                                  
   *  If we are in an ISR and sending to the current thread, then     
   *  we have a critical section issue to deal with.                  
   */                                                                 
  if ( _ISR_Is_in_progress() &&                                       
ffc0956c:	3c 60 00 00 	lis     r3,0                                   
ffc09570:	38 63 31 a0 	addi    r3,r3,12704                            
ffc09574:	80 03 00 08 	lwz     r0,8(r3)                               
ffc09578:	2f 80 00 00 	cmpwi   cr7,r0,0                               
ffc0957c:	41 9e 00 10 	beq-    cr7,ffc0958c <_Event_Surrender+0x60>   
ffc09580:	80 63 00 10 	lwz     r3,16(r3)                              
ffc09584:	7f 9f 18 00 	cmpw    cr7,r31,r3                             
ffc09588:	41 9e 00 74 	beq-    cr7,ffc095fc <_Event_Surrender+0xd0>   
RTEMS_INLINE_ROUTINE bool _States_Are_set (                           
  States_Control the_states,                                          
  States_Control mask                                                 
)                                                                     
{                                                                     
   return ( (the_states & mask) != STATES_READY);                     
ffc0958c:	80 df 00 10 	lwz     r6,16(r31)                             
  }                                                                   
                                                                      
  /*                                                                  
   *  Otherwise, this is a normal send to another thread              
   */                                                                 
  if ( _States_Are_set( the_thread->current_state, wait_state ) ) {   
ffc09590:	7c e3 30 39 	and.    r3,r7,r6                               
ffc09594:	41 82 00 a8 	beq-    ffc0963c <_Event_Surrender+0x110>      
    if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
ffc09598:	7f 89 40 00 	cmpw    cr7,r9,r8                              
ffc0959c:	41 9e 00 0c 	beq-    cr7,ffc095a8 <_Event_Surrender+0x7c>   
ffc095a0:	71 69 00 02 	andi.   r9,r11,2                               
ffc095a4:	41 82 00 98 	beq-    ffc0963c <_Event_Surrender+0x110>      <== NEVER TAKEN
      event->pending_events = _Event_sets_Clear(                      
        pending_events,                                               
        seized_events                                                 
      );                                                              
      the_thread->Wait.count = 0;                                     
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
ffc095a8:	81 3f 00 28 	lwz     r9,40(r31)                             
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear(               
 rtems_event_set the_event_set,                                       
 rtems_event_set the_mask                                             
)                                                                     
{                                                                     
   return ( the_event_set & ~(the_mask) );                            
ffc095ac:	7c 84 40 78 	andc    r4,r4,r8                               
    if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
      event->pending_events = _Event_sets_Clear(                      
        pending_events,                                               
        seized_events                                                 
      );                                                              
      the_thread->Wait.count = 0;                                     
ffc095b0:	38 e0 00 00 	li      r7,0                                   
  /*                                                                  
   *  Otherwise, this is a normal send to another thread              
   */                                                                 
  if ( _States_Are_set( the_thread->current_state, wait_state ) ) {   
    if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
      event->pending_events = _Event_sets_Clear(                      
ffc095b4:	90 85 00 00 	stw     r4,0(r5)                               
        pending_events,                                               
        seized_events                                                 
      );                                                              
      the_thread->Wait.count = 0;                                     
ffc095b8:	90 ff 00 24 	stw     r7,36(r31)                             
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
ffc095bc:	91 09 00 00 	stw     r8,0(r9)                               
                                                                      
static inline void ppc_interrupt_flash( uint32_t level )              
{                                                                     
  uint32_t current_level;                                             
                                                                      
  __asm__ volatile (                                                  
ffc095c0:	7d 20 00 a6 	mfmsr   r9                                     
ffc095c4:	7d 40 01 24 	mtmsr   r10                                    
ffc095c8:	7d 20 01 24 	mtmsr   r9                                     
                                                                      
      _ISR_Flash( level );                                            
                                                                      
      if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {             
ffc095cc:	81 3f 00 50 	lwz     r9,80(r31)                             
ffc095d0:	2f 89 00 02 	cmpwi   cr7,r9,2                               
ffc095d4:	41 9e 00 80 	beq-    cr7,ffc09654 <_Event_Surrender+0x128>  
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc095d8:	7d 40 01 24 	mtmsr   r10                                    
      }                                                               
      return;                                                         
    }                                                                 
  }                                                                   
  _ISR_Enable( level );                                               
}                                                                     
ffc095dc:	80 01 00 14 	lwz     r0,20(r1)                              
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
ffc095e0:	7f e3 fb 78 	mr      r3,r31                                 
ffc095e4:	3c 80 10 07 	lis     r4,4103                                
ffc095e8:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc095ec:	7c 08 03 a6 	mtlr    r0                                     
ffc095f0:	60 84 ff f8 	ori     r4,r4,65528                            
ffc095f4:	38 21 00 10 	addi    r1,r1,16                               
ffc095f8:	48 00 2f c8 	b       ffc0c5c0 <_Thread_Clear_state>         
   *  If we are in an ISR and sending to the current thread, then     
   *  we have a critical section issue to deal with.                  
   */                                                                 
  if ( _ISR_Is_in_progress() &&                                       
       _Thread_Is_executing( the_thread ) &&                          
       ((*sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||         
ffc095fc:	80 66 00 00 	lwz     r3,0(r6)                               
ffc09600:	38 63 ff ff 	addi    r3,r3,-1                               
  /*                                                                  
   *  If we are in an ISR and sending to the current thread, then     
   *  we have a critical section issue to deal with.                  
   */                                                                 
  if ( _ISR_Is_in_progress() &&                                       
       _Thread_Is_executing( the_thread ) &&                          
ffc09604:	2b 83 00 01 	cmplwi  cr7,r3,1                               
ffc09608:	41 9d ff 84 	bgt+    cr7,ffc0958c <_Event_Surrender+0x60>   
       ((*sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||         
        (*sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
    if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
ffc0960c:	7f 89 40 00 	cmpw    cr7,r9,r8                              
ffc09610:	41 9e 00 0c 	beq-    cr7,ffc0961c <_Event_Surrender+0xf0>   
ffc09614:	71 63 00 02 	andi.   r3,r11,2                               
ffc09618:	41 82 00 24 	beq-    ffc0963c <_Event_Surrender+0x110>      <== NEVER TAKEN
      event->pending_events = _Event_sets_Clear(                      
        pending_events,                                               
        seized_events                                                 
      );                                                              
      the_thread->Wait.count = 0;                                     
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
ffc0961c:	81 3f 00 28 	lwz     r9,40(r31)                             
ffc09620:	7c 84 40 78 	andc    r4,r4,r8                               
    if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
      event->pending_events = _Event_sets_Clear(                      
        pending_events,                                               
        seized_events                                                 
      );                                                              
      the_thread->Wait.count = 0;                                     
ffc09624:	38 e0 00 00 	li      r7,0                                   
  if ( _ISR_Is_in_progress() &&                                       
       _Thread_Is_executing( the_thread ) &&                          
       ((*sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||         
        (*sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
    if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
      event->pending_events = _Event_sets_Clear(                      
ffc09628:	90 85 00 00 	stw     r4,0(r5)                               
        pending_events,                                               
        seized_events                                                 
      );                                                              
      the_thread->Wait.count = 0;                                     
ffc0962c:	90 ff 00 24 	stw     r7,36(r31)                             
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
ffc09630:	91 09 00 00 	stw     r8,0(r9)                               
      *sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;              
ffc09634:	39 20 00 03 	li      r9,3                                   
ffc09638:	91 26 00 00 	stw     r9,0(r6)                               
ffc0963c:	7d 40 01 24 	mtmsr   r10                                    
      }                                                               
      return;                                                         
    }                                                                 
  }                                                                   
  _ISR_Enable( level );                                               
}                                                                     
ffc09640:	80 01 00 14 	lwz     r0,20(r1)                              
ffc09644:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc09648:	7c 08 03 a6 	mtlr    r0                                     
ffc0964c:	38 21 00 10 	addi    r1,r1,16                               
ffc09650:	4e 80 00 20 	blr                                            
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(                       
  Watchdog_Control *the_watchdog                                      
)                                                                     
{                                                                     
                                                                      
  the_watchdog->state = WATCHDOG_REMOVE_IT;                           
ffc09654:	39 20 00 03 	li      r9,3                                   
ffc09658:	91 3f 00 50 	stw     r9,80(r31)                             
ffc0965c:	7d 40 01 24 	mtmsr   r10                                    
        _ISR_Enable( level );                                         
        _Thread_Unblock( the_thread );                                
      } else {                                                        
        _Watchdog_Deactivate( &the_thread->Timer );                   
        _ISR_Enable( level );                                         
        (void) _Watchdog_Remove( &the_thread->Timer );                
ffc09660:	38 7f 00 48 	addi    r3,r31,72                              
ffc09664:	48 00 45 c9 	bl      ffc0dc2c <_Watchdog_Remove>            
ffc09668:	4b ff ff 74 	b       ffc095dc <_Event_Surrender+0xb0>       
                                                                      

ffc0966c <_Event_Timeout>: void _Event_Timeout( Objects_Id id, void *arg ) {
ffc0966c:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc09670:	7c 08 02 a6 	mflr    r0                                     
ffc09674:	93 e1 00 1c 	stw     r31,28(r1)                             
ffc09678:	7c 9f 23 78 	mr      r31,r4                                 
  ISR_Level                         level;                            
  Thread_blocking_operation_States *sync_state;                       
                                                                      
  sync_state = arg;                                                   
                                                                      
  the_thread = _Thread_Get( id, &location );                          
ffc0967c:	38 81 00 08 	addi    r4,r1,8                                
                                                                      
void _Event_Timeout(                                                  
  Objects_Id  id,                                                     
  void       *arg                                                     
)                                                                     
{                                                                     
ffc09680:	90 01 00 24 	stw     r0,36(r1)                              
  ISR_Level                         level;                            
  Thread_blocking_operation_States *sync_state;                       
                                                                      
  sync_state = arg;                                                   
                                                                      
  the_thread = _Thread_Get( id, &location );                          
ffc09684:	48 00 34 59 	bl      ffc0cadc <_Thread_Get>                 
  switch ( location ) {                                               
ffc09688:	81 21 00 08 	lwz     r9,8(r1)                               
ffc0968c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc09690:	40 9e 00 50 	bne-    cr7,ffc096e0 <_Event_Timeout+0x74>     <== NEVER TAKEN
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc09694:	7d 40 00 a6 	mfmsr   r10                                    
ffc09698:	7d 10 42 a6 	mfsprg  r8,0                                   
ffc0969c:	7d 48 40 78 	andc    r8,r10,r8                              
ffc096a0:	7d 00 01 24 	mtmsr   r8                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (                      
  const Thread_Control *the_thread                                    
)                                                                     
{                                                                     
  return ( the_thread == _Thread_Executing );                         
ffc096a4:	3d 00 00 00 	lis     r8,0                                   
            return;                                                   
          }                                                           
        #endif                                                        
                                                                      
        the_thread->Wait.count = 0;                                   
        if ( _Thread_Is_executing( the_thread ) ) {                   
ffc096a8:	81 08 31 b0 	lwz     r8,12720(r8)                           
            _ISR_Enable( level );                                     
            return;                                                   
          }                                                           
        #endif                                                        
                                                                      
        the_thread->Wait.count = 0;                                   
ffc096ac:	91 23 00 24 	stw     r9,36(r3)                              
        if ( _Thread_Is_executing( the_thread ) ) {                   
ffc096b0:	7f 83 40 00 	cmpw    cr7,r3,r8                              
ffc096b4:	41 9e 00 40 	beq-    cr7,ffc096f4 <_Event_Timeout+0x88>     
          if ( *sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
            *sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;          
        }                                                             
                                                                      
        the_thread->Wait.return_code = RTEMS_TIMEOUT;                 
ffc096b8:	39 20 00 06 	li      r9,6                                   
ffc096bc:	91 23 00 34 	stw     r9,52(r3)                              
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc096c0:	7d 40 01 24 	mtmsr   r10                                    
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
ffc096c4:	3c 80 10 07 	lis     r4,4103                                
ffc096c8:	60 84 ff f8 	ori     r4,r4,65528                            
ffc096cc:	48 00 2e f5 	bl      ffc0c5c0 <_Thread_Clear_state>         
   *                                                                  
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc096d0:	3d 20 00 00 	lis     r9,0                                   
ffc096d4:	81 49 28 68 	lwz     r10,10344(r9)                          
                                                                      
    --level;                                                          
ffc096d8:	39 4a ff ff 	addi    r10,r10,-1                             
    _Thread_Dispatch_disable_level = level;                           
ffc096dc:	91 49 28 68 	stw     r10,10344(r9)                          
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
}                                                                     
ffc096e0:	80 01 00 24 	lwz     r0,36(r1)                              
ffc096e4:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc096e8:	7c 08 03 a6 	mtlr    r0                                     
ffc096ec:	38 21 00 20 	addi    r1,r1,32                               
ffc096f0:	4e 80 00 20 	blr                                            
          }                                                           
        #endif                                                        
                                                                      
        the_thread->Wait.count = 0;                                   
        if ( _Thread_Is_executing( the_thread ) ) {                   
          if ( *sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
ffc096f4:	81 3f 00 00 	lwz     r9,0(r31)                              
ffc096f8:	2f 89 00 01 	cmpwi   cr7,r9,1                               
ffc096fc:	40 9e ff bc 	bne+    cr7,ffc096b8 <_Event_Timeout+0x4c>     
            *sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;          
ffc09700:	39 20 00 02 	li      r9,2                                   
ffc09704:	91 3f 00 00 	stw     r9,0(r31)                              
ffc09708:	4b ff ff b0 	b       ffc096b8 <_Event_Timeout+0x4c>         
                                                                      

ffc10768 <_Heap_Allocate_aligned_with_boundary>: Heap_Control *heap, uintptr_t alloc_size, uintptr_t alignment, uintptr_t boundary ) {
ffc10768:	7c 87 23 78 	mr      r7,r4                                  
ffc1076c:	7d 80 00 26 	mfcr    r12                                    
  Heap_Statistics *const stats = &heap->stats;                        
  uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
ffc10770:	38 84 00 04 	addi    r4,r4,4                                
  Heap_Control *heap,                                                 
  uintptr_t alloc_size,                                               
  uintptr_t alignment,                                                
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
ffc10774:	94 21 ff e0 	stwu    r1,-32(r1)                             
  Heap_Block *block = NULL;                                           
  uintptr_t alloc_begin = 0;                                          
  uint32_t search_count = 0;                                          
  bool search_again = false;                                          
                                                                      
  if ( block_size_floor < alloc_size ) {                              
ffc10778:	7f 87 20 40 	cmplw   cr7,r7,r4                              
  Heap_Control *heap,                                                 
  uintptr_t alloc_size,                                               
  uintptr_t alignment,                                                
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
ffc1077c:	7c 08 02 a6 	mflr    r0                                     
ffc10780:	93 a1 00 14 	stw     r29,20(r1)                             
ffc10784:	7c 7d 1b 78 	mr      r29,r3                                 
ffc10788:	90 01 00 24 	stw     r0,36(r1)                              
ffc1078c:	93 61 00 0c 	stw     r27,12(r1)                             
ffc10790:	93 81 00 10 	stw     r28,16(r1)                             
ffc10794:	93 c1 00 18 	stw     r30,24(r1)                             
ffc10798:	93 e1 00 1c 	stw     r31,28(r1)                             
ffc1079c:	91 81 00 08 	stw     r12,8(r1)                              
  Heap_Statistics *const stats = &heap->stats;                        
  uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
    - HEAP_ALLOC_BONUS;                                               
  uintptr_t const page_size = heap->page_size;                        
ffc107a0:	81 63 00 10 	lwz     r11,16(r3)                             
  Heap_Block *block = NULL;                                           
  uintptr_t alloc_begin = 0;                                          
  uint32_t search_count = 0;                                          
  bool search_again = false;                                          
                                                                      
  if ( block_size_floor < alloc_size ) {                              
ffc107a4:	41 9d 01 c8 	bgt-    cr7,ffc1096c <_Heap_Allocate_aligned_with_boundary+0x204>
    /* Integer overflow occured */                                    
    return NULL;                                                      
  }                                                                   
                                                                      
  if ( boundary != 0 ) {                                              
ffc107a8:	2c 06 00 00 	cmpwi   r6,0                                   
ffc107ac:	40 82 01 a8 	bne-    ffc10954 <_Heap_Allocate_aligned_with_boundary+0x1ec>
  return &heap->free_list;                                            
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{                                                                     
  return _Heap_Free_list_head(heap)->next;                            
ffc107b0:	81 3d 00 08 	lwz     r9,8(r29)                              
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
ffc107b4:	7f 9d 48 00 	cmpw    cr7,r29,r9                             
ffc107b8:	41 9e 01 e4 	beq-    cr7,ffc1099c <_Heap_Allocate_aligned_with_boundary+0x234>
       * The HEAP_PREV_BLOCK_USED flag is always set in the block size_and_flag
       * field.  Thus the value is about one unit larger than the real block
       * size.  The greater than operator takes this into account.    
       */                                                             
      if ( block->size_and_flag > block_size_floor ) {                
        if ( alignment == 0 ) {                                       
ffc107bc:	2c 85 00 00 	cmpwi   cr1,r5,0                               
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
ffc107c0:	3b c0 00 00 	li      r30,0                                  
  uintptr_t const block_begin = (uintptr_t) block;                    
  uintptr_t const block_size = _Heap_Block_size( block );             
  uintptr_t const block_end = block_begin + block_size;               
                                                                      
  uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size    
ffc107c4:	3b 6b 00 07 	addi    r27,r11,7                              
    + HEAP_BLOCK_HEADER_SIZE + page_size - 1;                         
                                                                      
  uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;                 
ffc107c8:	23 87 00 04 	subfic  r28,r7,4                               
ffc107cc:	48 00 00 24 	b       ffc107f0 <_Heap_Allocate_aligned_with_boundary+0x88>
       * The HEAP_PREV_BLOCK_USED flag is always set in the block size_and_flag
       * field.  Thus the value is about one unit larger than the real block
       * size.  The greater than operator takes this into account.    
       */                                                             
      if ( block->size_and_flag > block_size_floor ) {                
        if ( alignment == 0 ) {                                       
ffc107d0:	40 86 00 7c 	bne-    cr1,ffc1084c <_Heap_Allocate_aligned_with_boundary+0xe4>
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(             
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;                  
ffc107d4:	3b e9 00 08 	addi    r31,r9,8                               
      }                                                               
                                                                      
      /* Statistics */                                                
      ++search_count;                                                 
                                                                      
      if ( alloc_begin != 0 ) {                                       
ffc107d8:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
          );                                                          
        }                                                             
      }                                                               
                                                                      
      /* Statistics */                                                
      ++search_count;                                                 
ffc107dc:	3b de 00 01 	addi    r30,r30,1                              
                                                                      
      if ( alloc_begin != 0 ) {                                       
ffc107e0:	40 9e 01 38 	bne-    cr7,ffc10918 <_Heap_Allocate_aligned_with_boundary+0x1b0>
        break;                                                        
      }                                                               
                                                                      
      block = block->next;                                            
ffc107e4:	81 29 00 08 	lwz     r9,8(r9)                               
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
ffc107e8:	7f 9d 48 00 	cmpw    cr7,r29,r9                             
ffc107ec:	41 9e 00 20 	beq-    cr7,ffc1080c <_Heap_Allocate_aligned_with_boundary+0xa4>
      /*                                                              
       * The HEAP_PREV_BLOCK_USED flag is always set in the block size_and_flag
       * field.  Thus the value is about one unit larger than the real block
       * size.  The greater than operator takes this into account.    
       */                                                             
      if ( block->size_and_flag > block_size_floor ) {                
ffc107f0:	81 49 00 04 	lwz     r10,4(r9)                              
ffc107f4:	7f 84 50 40 	cmplw   cr7,r4,r10                             
ffc107f8:	41 bc ff d8 	blt-    cr7,ffc107d0 <_Heap_Allocate_aligned_with_boundary+0x68>
                                                                      
      if ( alloc_begin != 0 ) {                                       
        break;                                                        
      }                                                               
                                                                      
      block = block->next;                                            
ffc107fc:	81 29 00 08 	lwz     r9,8(r9)                               
          );                                                          
        }                                                             
      }                                                               
                                                                      
      /* Statistics */                                                
      ++search_count;                                                 
ffc10800:	3b de 00 01 	addi    r30,r30,1                              
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
ffc10804:	7f 9d 48 00 	cmpw    cr7,r29,r9                             
ffc10808:	40 9e ff e8 	bne+    cr7,ffc107f0 <_Heap_Allocate_aligned_with_boundary+0x88>
          );                                                          
        }                                                             
      }                                                               
                                                                      
      /* Statistics */                                                
      ++search_count;                                                 
ffc1080c:	38 60 00 00 	li      r3,0                                   
      boundary                                                        
    );                                                                
  }                                                                   
                                                                      
  /* Statistics */                                                    
  if ( stats->max_search < search_count ) {                           
ffc10810:	81 3d 00 44 	lwz     r9,68(r29)                             
ffc10814:	7f 89 f0 40 	cmplw   cr7,r9,r30                             
ffc10818:	40 9c 00 08 	bge-    cr7,ffc10820 <_Heap_Allocate_aligned_with_boundary+0xb8>
    stats->max_search = search_count;                                 
ffc1081c:	93 dd 00 44 	stw     r30,68(r29)                            
  }                                                                   
                                                                      
  return (void *) alloc_begin;                                        
}                                                                     
ffc10820:	80 01 00 24 	lwz     r0,36(r1)                              
ffc10824:	81 81 00 08 	lwz     r12,8(r1)                              
ffc10828:	7c 08 03 a6 	mtlr    r0                                     
ffc1082c:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc10830:	83 81 00 10 	lwz     r28,16(r1)                             
ffc10834:	7d 80 81 20 	mtcrf   8,r12                                  
ffc10838:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc1083c:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc10840:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc10844:	38 21 00 20 	addi    r1,r1,32                               
ffc10848:	4e 80 00 20 	blr                                            
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
ffc1084c:	55 4a 00 3c 	rlwinm  r10,r10,0,0,30                         
ffc10850:	80 1d 00 14 	lwz     r0,20(r29)                             
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const min_block_size = heap->min_block_size;              
                                                                      
  uintptr_t const block_begin = (uintptr_t) block;                    
  uintptr_t const block_size = _Heap_Block_size( block );             
  uintptr_t const block_end = block_begin + block_size;               
ffc10854:	7d 49 52 14 	add     r10,r9,r10                             
  uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size    
    + HEAP_BLOCK_HEADER_SIZE + page_size - 1;                         
                                                                      
  uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;                 
  uintptr_t alloc_begin = alloc_end - alloc_size;                     
ffc10858:	7f fc 52 14 	add     r31,r28,r10                            
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
ffc1085c:	7f ff 2b 96 	divwu   r31,r31,r5                             
ffc10860:	7f ff 29 d6 	mullw   r31,r31,r5                             
  uintptr_t const block_size = _Heap_Block_size( block );             
  uintptr_t const block_end = block_begin + block_size;               
                                                                      
  uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size    
    + HEAP_BLOCK_HEADER_SIZE + page_size - 1;                         
ffc10864:	7d 00 d8 50 	subf    r8,r0,r27                              
  uintptr_t const block_begin = (uintptr_t) block;                    
  uintptr_t const block_size = _Heap_Block_size( block );             
  uintptr_t const block_end = block_begin + block_size;               
                                                                      
  uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size    
ffc10868:	7d 48 52 14 	add     r10,r8,r10                             
  uintptr_t alloc_begin = alloc_end - alloc_size;                     
                                                                      
  alloc_begin = _Heap_Align_down( alloc_begin, alignment );           
                                                                      
  /* Ensure that the we have a valid new block at the end */          
  if ( alloc_begin > alloc_begin_ceiling ) {                          
ffc1086c:	7f 8a f8 40 	cmplw   cr7,r10,r31                            
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(             
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;                  
ffc10870:	39 89 00 08 	addi    r12,r9,8                               
ffc10874:	40 9c 00 0c 	bge-    cr7,ffc10880 <_Heap_Allocate_aligned_with_boundary+0x118>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
ffc10878:	7d 4a 2b 96 	divwu   r10,r10,r5                             
ffc1087c:	7f ea 29 d6 	mullw   r31,r10,r5                             
  }                                                                   
                                                                      
  alloc_end = alloc_begin + alloc_size;                               
                                                                      
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
ffc10880:	41 82 00 60 	beq-    ffc108e0 <_Heap_Allocate_aligned_with_boundary+0x178>
  /* Ensure that the we have a valid new block at the end */          
  if ( alloc_begin > alloc_begin_ceiling ) {                          
    alloc_begin = _Heap_Align_down( alloc_begin_ceiling, alignment ); 
  }                                                                   
                                                                      
  alloc_end = alloc_begin + alloc_size;                               
ffc10884:	7d 1f 3a 14 	add     r8,r31,r7                              
ffc10888:	7d 48 33 96 	divwu   r10,r8,r6                              
ffc1088c:	7d 4a 31 d6 	mullw   r10,r10,r6                             
                                                                      
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
    uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;  
ffc10890:	7c 6c 3a 14 	add     r3,r12,r7                              
    uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
                                                                      
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
ffc10894:	7f 9f 50 40 	cmplw   cr7,r31,r10                            
ffc10898:	40 9c 00 48 	bge-    cr7,ffc108e0 <_Heap_Allocate_aligned_with_boundary+0x178>
ffc1089c:	7f 88 50 40 	cmplw   cr7,r8,r10                             
ffc108a0:	40 9d 00 40 	ble-    cr7,ffc108e0 <_Heap_Allocate_aligned_with_boundary+0x178>
      if ( boundary_line < boundary_floor ) {                         
ffc108a4:	7f 83 50 40 	cmplw   cr7,r3,r10                             
ffc108a8:	40 bd 00 10 	ble+    cr7,ffc108b8 <_Heap_Allocate_aligned_with_boundary+0x150>
ffc108ac:	48 00 00 a0 	b       ffc1094c <_Heap_Allocate_aligned_with_boundary+0x1e4>
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
    uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;  
    uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
                                                                      
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
ffc108b0:	40 91 00 30 	ble-    cr4,ffc108e0 <_Heap_Allocate_aligned_with_boundary+0x178>
      if ( boundary_line < boundary_floor ) {                         
ffc108b4:	41 99 00 98 	bgt-    cr6,ffc1094c <_Heap_Allocate_aligned_with_boundary+0x1e4><== NEVER TAKEN
        return 0;                                                     
      }                                                               
      alloc_begin = boundary_line - alloc_size;                       
ffc108b8:	7f e7 50 50 	subf    r31,r7,r10                             
ffc108bc:	7f ff 2b 96 	divwu   r31,r31,r5                             
ffc108c0:	7f ff 29 d6 	mullw   r31,r31,r5                             
      alloc_begin = _Heap_Align_down( alloc_begin, alignment );       
      alloc_end = alloc_begin + alloc_size;                           
ffc108c4:	7d 1f 3a 14 	add     r8,r31,r7                              
ffc108c8:	7d 48 33 96 	divwu   r10,r8,r6                              
ffc108cc:	7d 4a 31 d6 	mullw   r10,r10,r6                             
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
    uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;  
    uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
                                                                      
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
ffc108d0:	7f 9f 50 40 	cmplw   cr7,r31,r10                            
ffc108d4:	7e 08 50 40 	cmplw   cr4,r8,r10                             
      if ( boundary_line < boundary_floor ) {                         
ffc108d8:	7f 03 50 40 	cmplw   cr6,r3,r10                             
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
    uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;  
    uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
                                                                      
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
ffc108dc:	41 9c ff d4 	blt+    cr7,ffc108b0 <_Heap_Allocate_aligned_with_boundary+0x148>
      boundary_line = _Heap_Align_down( alloc_end, boundary );        
    }                                                                 
  }                                                                   
                                                                      
  /* Ensure that the we have a valid new block at the beginning */    
  if ( alloc_begin >= alloc_begin_floor ) {                           
ffc108e0:	7f 8c f8 40 	cmplw   cr7,r12,r31                            
ffc108e4:	41 9d 00 68 	bgt-    cr7,ffc1094c <_Heap_Allocate_aligned_with_boundary+0x1e4>
ffc108e8:	7d 5f 5b 96 	divwu   r10,r31,r11                            
ffc108ec:	7d 4a 59 d6 	mullw   r10,r10,r11                            
ffc108f0:	21 09 ff f8 	subfic  r8,r9,-8                               
    uintptr_t const alloc_block_begin =                               
      (uintptr_t) _Heap_Block_of_alloc_area( alloc_begin, page_size );
    uintptr_t const free_size = alloc_block_begin - block_begin;      
ffc108f4:	7d 48 52 14 	add     r10,r8,r10                             
                                                                      
    if ( free_size >= min_block_size || free_size == 0 ) {            
ffc108f8:	7f 80 50 40 	cmplw   cr7,r0,r10                             
ffc108fc:	40 bd fe dc 	ble-    cr7,ffc107d8 <_Heap_Allocate_aligned_with_boundary+0x70>
    uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;  
    uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
                                                                      
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
      if ( boundary_line < boundary_floor ) {                         
        return 0;                                                     
ffc10900:	31 4a ff ff 	addic   r10,r10,-1                             
ffc10904:	7d 4a 51 10 	subfe   r10,r10,r10                            
ffc10908:	7f ff 50 38 	and     r31,r31,r10                            
      }                                                               
                                                                      
      /* Statistics */                                                
      ++search_count;                                                 
                                                                      
      if ( alloc_begin != 0 ) {                                       
ffc1090c:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
          );                                                          
        }                                                             
      }                                                               
                                                                      
      /* Statistics */                                                
      ++search_count;                                                 
ffc10910:	3b de 00 01 	addi    r30,r30,1                              
                                                                      
      if ( alloc_begin != 0 ) {                                       
ffc10914:	41 9e fe d0 	beq+    cr7,ffc107e4 <_Heap_Allocate_aligned_with_boundary+0x7c>
    search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
ffc10918:	81 5d 00 48 	lwz     r10,72(r29)                            
    stats->searches += search_count;                                  
                                                                      
    block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
ffc1091c:	7f a3 eb 78 	mr      r3,r29                                 
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
    stats->searches += search_count;                                  
ffc10920:	81 1d 00 4c 	lwz     r8,76(r29)                             
                                                                      
    block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
ffc10924:	7d 24 4b 78 	mr      r4,r9                                  
    search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
ffc10928:	39 4a 00 01 	addi    r10,r10,1                              
    stats->searches += search_count;                                  
ffc1092c:	7d 08 f2 14 	add     r8,r8,r30                              
    search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
ffc10930:	91 5d 00 48 	stw     r10,72(r29)                            
    stats->searches += search_count;                                  
                                                                      
    block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
ffc10934:	7f e5 fb 78 	mr      r5,r31                                 
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
    stats->searches += search_count;                                  
ffc10938:	91 1d 00 4c 	stw     r8,76(r29)                             
                                                                      
    block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
ffc1093c:	7c e6 3b 78 	mr      r6,r7                                  
ffc10940:	4b ff a8 c5 	bl      ffc0b204 <_Heap_Block_allocate>        
ffc10944:	7f e3 fb 78 	mr      r3,r31                                 
ffc10948:	4b ff fe c8 	b       ffc10810 <_Heap_Allocate_aligned_with_boundary+0xa8>
    uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;  
    uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
                                                                      
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
      if ( boundary_line < boundary_floor ) {                         
        return 0;                                                     
ffc1094c:	3b e0 00 00 	li      r31,0                                  
ffc10950:	4b ff fe 88 	b       ffc107d8 <_Heap_Allocate_aligned_with_boundary+0x70>
    /* Integer overflow occured */                                    
    return NULL;                                                      
  }                                                                   
                                                                      
  if ( boundary != 0 ) {                                              
    if ( boundary < alloc_size ) {                                    
ffc10954:	7f 87 30 40 	cmplw   cr7,r7,r6                              
ffc10958:	41 9d 00 14 	bgt-    cr7,ffc1096c <_Heap_Allocate_aligned_with_boundary+0x204>
      return NULL;                                                    
    }                                                                 
                                                                      
    if ( alignment == 0 ) {                                           
ffc1095c:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc10960:	40 be fe 50 	bne-    cr7,ffc107b0 <_Heap_Allocate_aligned_with_boundary+0x48>
      alignment = page_size;                                          
ffc10964:	7d 65 5b 78 	mr      r5,r11                                 
ffc10968:	4b ff fe 48 	b       ffc107b0 <_Heap_Allocate_aligned_with_boundary+0x48>
  if ( stats->max_search < search_count ) {                           
    stats->max_search = search_count;                                 
  }                                                                   
                                                                      
  return (void *) alloc_begin;                                        
}                                                                     
ffc1096c:	80 01 00 24 	lwz     r0,36(r1)                              
  uint32_t search_count = 0;                                          
  bool search_again = false;                                          
                                                                      
  if ( block_size_floor < alloc_size ) {                              
    /* Integer overflow occured */                                    
    return NULL;                                                      
ffc10970:	38 60 00 00 	li      r3,0                                   
  if ( stats->max_search < search_count ) {                           
    stats->max_search = search_count;                                 
  }                                                                   
                                                                      
  return (void *) alloc_begin;                                        
}                                                                     
ffc10974:	81 81 00 08 	lwz     r12,8(r1)                              
ffc10978:	7c 08 03 a6 	mtlr    r0                                     
ffc1097c:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc10980:	83 81 00 10 	lwz     r28,16(r1)                             
ffc10984:	7d 80 81 20 	mtcrf   8,r12                                  
ffc10988:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc1098c:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc10990:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc10994:	38 21 00 20 	addi    r1,r1,32                               
ffc10998:	4e 80 00 20 	blr                                            
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
ffc1099c:	3b c0 00 00 	li      r30,0                                  
ffc109a0:	4b ff fe 6c 	b       ffc1080c <_Heap_Allocate_aligned_with_boundary+0xa4>
                                                                      

ffc104fc <_Heap_Extend>: Heap_Control *heap, void *extend_area_begin_ptr, uintptr_t extend_area_size, uintptr_t unused __attribute__((unused)) ) {
ffc104fc:	94 21 ff c0 	stwu    r1,-64(r1)                             
ffc10500:	7d 80 00 26 	mfcr    r12                                    
ffc10504:	7c 08 02 a6 	mflr    r0                                     
  Heap_Block *start_block = first_block;                              
  Heap_Block *merge_below_block = NULL;                               
  Heap_Block *merge_above_block = NULL;                               
  Heap_Block *link_below_block = NULL;                                
  Heap_Block *link_above_block = NULL;                                
  Heap_Block *extend_first_block = NULL;                              
ffc10508:	39 20 00 00 	li      r9,0                                   
  Heap_Control *heap,                                                 
  void *extend_area_begin_ptr,                                        
  uintptr_t extend_area_size,                                         
  uintptr_t unused __attribute__((unused))                            
)                                                                     
{                                                                     
ffc1050c:	93 a1 00 34 	stw     r29,52(r1)                             
  Heap_Block *extend_first_block = NULL;                              
  Heap_Block *extend_last_block = NULL;                               
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const min_block_size = heap->min_block_size;              
  uintptr_t const extend_area_begin = (uintptr_t) extend_area_begin_ptr;
  uintptr_t const extend_area_end = extend_area_begin + extend_area_size;
ffc10510:	7f a4 2a 14 	add     r29,r4,r5                              
  uintptr_t const free_size = stats->free_size;                       
  uintptr_t extend_first_block_size = 0;                              
  uintptr_t extended_size = 0;                                        
  bool extend_area_ok = false;                                        
                                                                      
  if ( extend_area_end < extend_area_begin ) {                        
ffc10514:	7f 84 e8 40 	cmplw   cr7,r4,r29                             
  Heap_Control *heap,                                                 
  void *extend_area_begin_ptr,                                        
  uintptr_t extend_area_size,                                         
  uintptr_t unused __attribute__((unused))                            
)                                                                     
{                                                                     
ffc10518:	90 01 00 44 	stw     r0,68(r1)                              
ffc1051c:	93 41 00 28 	stw     r26,40(r1)                             
ffc10520:	93 61 00 2c 	stw     r27,44(r1)                             
ffc10524:	93 81 00 30 	stw     r28,48(r1)                             
ffc10528:	93 c1 00 38 	stw     r30,56(r1)                             
ffc1052c:	7c 7e 1b 78 	mr      r30,r3                                 
ffc10530:	93 e1 00 3c 	stw     r31,60(r1)                             
ffc10534:	7c 9f 23 78 	mr      r31,r4                                 
ffc10538:	93 01 00 20 	stw     r24,32(r1)                             
ffc1053c:	93 21 00 24 	stw     r25,36(r1)                             
ffc10540:	91 81 00 1c 	stw     r12,28(r1)                             
  Heap_Statistics *const stats = &heap->stats;                        
  Heap_Block *const first_block = heap->first_block;                  
ffc10544:	83 63 00 20 	lwz     r27,32(r3)                             
  Heap_Block *start_block = first_block;                              
  Heap_Block *merge_below_block = NULL;                               
  Heap_Block *merge_above_block = NULL;                               
  Heap_Block *link_below_block = NULL;                                
  Heap_Block *link_above_block = NULL;                                
  Heap_Block *extend_first_block = NULL;                              
ffc10548:	91 21 00 0c 	stw     r9,12(r1)                              
  Heap_Block *extend_last_block = NULL;                               
ffc1054c:	91 21 00 08 	stw     r9,8(r1)                               
  uintptr_t const page_size = heap->page_size;                        
ffc10550:	83 83 00 10 	lwz     r28,16(r3)                             
  uintptr_t const min_block_size = heap->min_block_size;              
ffc10554:	80 c3 00 14 	lwz     r6,20(r3)                              
  uintptr_t const extend_area_begin = (uintptr_t) extend_area_begin_ptr;
  uintptr_t const extend_area_end = extend_area_begin + extend_area_size;
  uintptr_t const free_size = stats->free_size;                       
ffc10558:	83 43 00 30 	lwz     r26,48(r3)                             
  uintptr_t extend_first_block_size = 0;                              
  uintptr_t extended_size = 0;                                        
  bool extend_area_ok = false;                                        
                                                                      
  if ( extend_area_end < extend_area_begin ) {                        
ffc1055c:	40 9d 00 40 	ble-    cr7,ffc1059c <_Heap_Extend+0xa0>       
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
                                                                      
  return extended_size;                                               
}                                                                     
ffc10560:	80 01 00 44 	lwz     r0,68(r1)                              
  uintptr_t extend_first_block_size = 0;                              
  uintptr_t extended_size = 0;                                        
  bool extend_area_ok = false;                                        
                                                                      
  if ( extend_area_end < extend_area_begin ) {                        
    return 0;                                                         
ffc10564:	38 60 00 00 	li      r3,0                                   
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
                                                                      
  return extended_size;                                               
}                                                                     
ffc10568:	81 81 00 1c 	lwz     r12,28(r1)                             
ffc1056c:	7c 08 03 a6 	mtlr    r0                                     
ffc10570:	83 01 00 20 	lwz     r24,32(r1)                             
ffc10574:	83 21 00 24 	lwz     r25,36(r1)                             
ffc10578:	7d 80 81 20 	mtcrf   8,r12                                  
ffc1057c:	83 41 00 28 	lwz     r26,40(r1)                             
ffc10580:	83 61 00 2c 	lwz     r27,44(r1)                             
ffc10584:	83 81 00 30 	lwz     r28,48(r1)                             
ffc10588:	83 a1 00 34 	lwz     r29,52(r1)                             
ffc1058c:	83 c1 00 38 	lwz     r30,56(r1)                             
ffc10590:	83 e1 00 3c 	lwz     r31,60(r1)                             
ffc10594:	38 21 00 40 	addi    r1,r1,64                               
ffc10598:	4e 80 00 20 	blr                                            
                                                                      
  if ( extend_area_end < extend_area_begin ) {                        
    return 0;                                                         
  }                                                                   
                                                                      
  extend_area_ok = _Heap_Get_first_and_last_block(                    
ffc1059c:	7c 83 23 78 	mr      r3,r4                                  
ffc105a0:	38 e1 00 0c 	addi    r7,r1,12                               
ffc105a4:	7c a4 2b 78 	mr      r4,r5                                  
ffc105a8:	39 01 00 08 	addi    r8,r1,8                                
ffc105ac:	7f 85 e3 78 	mr      r5,r28                                 
ffc105b0:	4b ff a6 7d 	bl      ffc0ac2c <_Heap_Get_first_and_last_block>
    page_size,                                                        
    min_block_size,                                                   
    &extend_first_block,                                              
    &extend_last_block                                                
  );                                                                  
  if (!extend_area_ok ) {                                             
ffc105b4:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc105b8:	41 be ff a8 	beq-    cr7,ffc10560 <_Heap_Extend+0x64>       
ffc105bc:	7f 69 db 78 	mr      r9,r27                                 
ffc105c0:	3b 00 00 00 	li      r24,0                                  
ffc105c4:	38 a0 00 00 	li      r5,0                                   
ffc105c8:	3b 20 00 00 	li      r25,0                                  
ffc105cc:	38 c0 00 00 	li      r6,0                                   
ffc105d0:	48 00 00 38 	b       ffc10608 <_Heap_Extend+0x10c>          
      return 0;                                                       
    }                                                                 
                                                                      
    if ( extend_area_end == sub_area_begin ) {                        
      merge_below_block = start_block;                                
    } else if ( extend_area_end < sub_area_end ) {                    
ffc105d4:	7f 9d 50 40 	cmplw   cr7,r29,r10                            
ffc105d8:	40 9c 00 08 	bge-    cr7,ffc105e0 <_Heap_Extend+0xe4>       
ffc105dc:	7d 25 4b 78 	mr      r5,r9                                  
      link_below_block = start_block;                                 
    }                                                                 
                                                                      
    if ( sub_area_end == extend_area_begin ) {                        
ffc105e0:	7f 8a f8 00 	cmpw    cr7,r10,r31                            
ffc105e4:	41 9e 00 64 	beq-    cr7,ffc10648 <_Heap_Extend+0x14c>      
      start_block->prev_size = extend_area_end;                       
                                                                      
      merge_above_block = end_block;                                  
    } else if ( sub_area_end < extend_area_begin ) {                  
ffc105e8:	7f 9f 50 40 	cmplw   cr7,r31,r10                            
ffc105ec:	40 9d 00 08 	ble-    cr7,ffc105f4 <_Heap_Extend+0xf8>       
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_of_alloc_area(           
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
ffc105f0:	7d 18 43 78 	mr      r24,r8                                 
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
ffc105f4:	81 28 00 04 	lwz     r9,4(r8)                               
ffc105f8:	55 29 00 3c 	rlwinm  r9,r9,0,0,30                           
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
ffc105fc:	7d 29 42 14 	add     r9,r9,r8                               
      link_above_block = end_block;                                   
    }                                                                 
                                                                      
    start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );
  } while ( start_block != first_block );                             
ffc10600:	7f 9b 48 00 	cmpw    cr7,r27,r9                             
ffc10604:	41 9e 00 60 	beq-    cr7,ffc10664 <_Heap_Extend+0x168>      
    return 0;                                                         
  }                                                                   
                                                                      
  do {                                                                
    uintptr_t const sub_area_begin = (start_block != first_block) ?   
      (uintptr_t) start_block : heap->area_begin;                     
ffc10608:	7f 89 d8 00 	cmpw    cr7,r9,r27                             
ffc1060c:	41 9e 01 a4 	beq-    cr7,ffc107b0 <_Heap_Extend+0x2b4>      
ffc10610:	7d 27 4b 78 	mr      r7,r9                                  
    uintptr_t const sub_area_end = start_block->prev_size;            
ffc10614:	81 49 00 00 	lwz     r10,0(r9)                              
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
ffc10618:	7d 0a e3 96 	divwu   r8,r10,r28                             
    Heap_Block *const end_block =                                     
      _Heap_Block_of_alloc_area( sub_area_end, page_size );           
                                                                      
    if (                                                              
ffc1061c:	7f 9f 50 40 	cmplw   cr7,r31,r10                            
ffc10620:	7d 08 e1 d6 	mullw   r8,r8,r28                              
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
ffc10624:	39 08 ff f8 	addi    r8,r8,-8                               
ffc10628:	40 9c 00 0c 	bge-    cr7,ffc10634 <_Heap_Extend+0x138>      
      sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
ffc1062c:	7f 87 e8 40 	cmplw   cr7,r7,r29                             
ffc10630:	41 bc ff 30 	blt-    cr7,ffc10560 <_Heap_Extend+0x64>       
    ) {                                                               
      return 0;                                                       
    }                                                                 
                                                                      
    if ( extend_area_end == sub_area_begin ) {                        
ffc10634:	7f 87 e8 00 	cmpw    cr7,r7,r29                             
ffc10638:	40 9e ff 9c 	bne+    cr7,ffc105d4 <_Heap_Extend+0xd8>       
      merge_below_block = start_block;                                
    } else if ( extend_area_end < sub_area_end ) {                    
      link_below_block = start_block;                                 
    }                                                                 
                                                                      
    if ( sub_area_end == extend_area_begin ) {                        
ffc1063c:	7f 8a f8 00 	cmpw    cr7,r10,r31                            
      sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
    ) {                                                               
      return 0;                                                       
    }                                                                 
                                                                      
    if ( extend_area_end == sub_area_begin ) {                        
ffc10640:	7d 26 4b 78 	mr      r6,r9                                  
      merge_below_block = start_block;                                
    } else if ( extend_area_end < sub_area_end ) {                    
      link_below_block = start_block;                                 
    }                                                                 
                                                                      
    if ( sub_area_end == extend_area_begin ) {                        
ffc10644:	40 9e ff a4 	bne+    cr7,ffc105e8 <_Heap_Extend+0xec>       <== ALWAYS TAKEN
      start_block->prev_size = extend_area_end;                       
ffc10648:	93 a9 00 00 	stw     r29,0(r9)                              
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_of_alloc_area(           
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
ffc1064c:	7d 19 43 78 	mr      r25,r8                                 
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
ffc10650:	81 28 00 04 	lwz     r9,4(r8)                               
ffc10654:	55 29 00 3c 	rlwinm  r9,r9,0,0,30                           
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
ffc10658:	7d 29 42 14 	add     r9,r9,r8                               
    } else if ( sub_area_end < extend_area_begin ) {                  
      link_above_block = end_block;                                   
    }                                                                 
                                                                      
    start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );
  } while ( start_block != first_block );                             
ffc1065c:	7f 9b 48 00 	cmpw    cr7,r27,r9                             
ffc10660:	40 9e ff a8 	bne+    cr7,ffc10608 <_Heap_Extend+0x10c>      <== NEVER TAKEN
                                                                      
  if ( extend_area_begin < heap->area_begin ) {                       
ffc10664:	81 3e 00 18 	lwz     r9,24(r30)                             
ffc10668:	7f 9f 48 40 	cmplw   cr7,r31,r9                             
ffc1066c:	41 9c 01 4c 	blt-    cr7,ffc107b8 <_Heap_Extend+0x2bc>      
    heap->area_begin = extend_area_begin;                             
  } else if ( heap->area_end < extend_area_end ) {                    
ffc10670:	81 3e 00 1c 	lwz     r9,28(r30)                             
ffc10674:	7f 9d 48 40 	cmplw   cr7,r29,r9                             
ffc10678:	40 9d 00 08 	ble-    cr7,ffc10680 <_Heap_Extend+0x184>      
    heap->area_end = extend_area_end;                                 
ffc1067c:	93 be 00 1c 	stw     r29,28(r30)                            
                                                                      
  extend_last_block->prev_size = extend_first_block_size;             
  extend_last_block->size_and_flag = 0;                               
  _Heap_Protection_block_initialize( heap, extend_last_block );       
                                                                      
  if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
ffc10680:	81 1e 00 20 	lwz     r8,32(r30)                             
  } else if ( heap->area_end < extend_area_end ) {                    
    heap->area_end = extend_area_end;                                 
  }                                                                   
                                                                      
  extend_first_block_size =                                           
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;   
ffc10684:	81 21 00 0c 	lwz     r9,12(r1)                              
ffc10688:	81 41 00 08 	lwz     r10,8(r1)                              
                                                                      
  extend_last_block->prev_size = extend_first_block_size;             
  extend_last_block->size_and_flag = 0;                               
  _Heap_Protection_block_initialize( heap, extend_last_block );       
                                                                      
  if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
ffc1068c:	7f 88 48 40 	cmplw   cr7,r8,r9                              
  }                                                                   
                                                                      
  extend_first_block_size =                                           
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;   
                                                                      
  extend_first_block->prev_size = extend_area_end;                    
ffc10690:	93 a9 00 00 	stw     r29,0(r9)                              
    heap->area_begin = extend_area_begin;                             
  } else if ( heap->area_end < extend_area_end ) {                    
    heap->area_end = extend_area_end;                                 
  }                                                                   
                                                                      
  extend_first_block_size =                                           
ffc10694:	7d 09 50 50 	subf    r8,r9,r10                              
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;   
                                                                      
  extend_first_block->prev_size = extend_area_end;                    
  extend_first_block->size_and_flag =                                 
    extend_first_block_size | HEAP_PREV_BLOCK_USED;                   
ffc10698:	61 07 00 01 	ori     r7,r8,1                                
  _Heap_Protection_block_initialize( heap, extend_first_block );      
                                                                      
  extend_last_block->prev_size = extend_first_block_size;             
ffc1069c:	91 0a 00 00 	stw     r8,0(r10)                              
                                                                      
  extend_first_block_size =                                           
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;   
                                                                      
  extend_first_block->prev_size = extend_area_end;                    
  extend_first_block->size_and_flag =                                 
ffc106a0:	90 e9 00 04 	stw     r7,4(r9)                               
    extend_first_block_size | HEAP_PREV_BLOCK_USED;                   
  _Heap_Protection_block_initialize( heap, extend_first_block );      
                                                                      
  extend_last_block->prev_size = extend_first_block_size;             
  extend_last_block->size_and_flag = 0;                               
ffc106a4:	38 e0 00 00 	li      r7,0                                   
ffc106a8:	90 ea 00 04 	stw     r7,4(r10)                              
  _Heap_Protection_block_initialize( heap, extend_last_block );       
                                                                      
  if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
ffc106ac:	40 9d 01 40 	ble-    cr7,ffc107ec <_Heap_Extend+0x2f0>      <== ALWAYS TAKEN
    heap->first_block = extend_first_block;                           
ffc106b0:	91 3e 00 20 	stw     r9,32(r30)                             
  } else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
    heap->last_block = extend_last_block;                             
  }                                                                   
                                                                      
  if ( merge_below_block != NULL ) {                                  
ffc106b4:	2e 06 00 00 	cmpwi   cr4,r6,0                               
ffc106b8:	41 92 01 48 	beq-    cr4,ffc10800 <_Heap_Extend+0x304>      
  Heap_Control *heap,                                                 
  uintptr_t extend_area_begin,                                        
  Heap_Block *first_block                                             
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
ffc106bc:	81 3e 00 10 	lwz     r9,16(r30)                             
  uintptr_t const new_first_block_alloc_begin =                       
    _Heap_Align_up( extend_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );
ffc106c0:	3b ff 00 08 	addi    r31,r31,8                              
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(                        
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  uintptr_t remainder = value % alignment;                            
ffc106c4:	7d 5f 4b 96 	divwu   r10,r31,r9                             
ffc106c8:	7d 4a 49 d6 	mullw   r10,r10,r9                             
                                                                      
  if ( remainder != 0 ) {                                             
ffc106cc:	7d 0a f8 51 	subf.   r8,r10,r31                             
ffc106d0:	41 82 00 0c 	beq-    ffc106dc <_Heap_Extend+0x1e0>          <== NEVER TAKEN
    return value - remainder + alignment;                             
ffc106d4:	7f ff 4a 14 	add     r31,r31,r9                             
ffc106d8:	7f e8 f8 50 	subf    r31,r8,r31                             
  uintptr_t const new_first_block_begin =                             
ffc106dc:	38 9f ff f8 	addi    r4,r31,-8                              
  uintptr_t const first_block_begin = (uintptr_t) first_block;        
  uintptr_t const new_first_block_size =                              
    first_block_begin - new_first_block_begin;                        
  Heap_Block *const new_first_block = (Heap_Block *) new_first_block_begin;
                                                                      
  new_first_block->prev_size = first_block->prev_size;                
ffc106e0:	81 26 00 00 	lwz     r9,0(r6)                               
  uintptr_t const new_first_block_alloc_begin =                       
    _Heap_Align_up( extend_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );
  uintptr_t const new_first_block_begin =                             
    new_first_block_alloc_begin - HEAP_BLOCK_HEADER_SIZE;             
  uintptr_t const first_block_begin = (uintptr_t) first_block;        
  uintptr_t const new_first_block_size =                              
ffc106e4:	7c c4 30 50 	subf    r6,r4,r6                               
    first_block_begin - new_first_block_begin;                        
  Heap_Block *const new_first_block = (Heap_Block *) new_first_block_begin;
                                                                      
  new_first_block->prev_size = first_block->prev_size;                
  new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;
ffc106e8:	60 c6 00 01 	ori     r6,r6,1                                
  uintptr_t const first_block_begin = (uintptr_t) first_block;        
  uintptr_t const new_first_block_size =                              
    first_block_begin - new_first_block_begin;                        
  Heap_Block *const new_first_block = (Heap_Block *) new_first_block_begin;
                                                                      
  new_first_block->prev_size = first_block->prev_size;                
ffc106ec:	91 3f ff f8 	stw     r9,-8(r31)                             
  new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;
                                                                      
  _Heap_Free_block( heap, new_first_block );                          
ffc106f0:	7f c3 f3 78 	mr      r3,r30                                 
  uintptr_t const new_first_block_size =                              
    first_block_begin - new_first_block_begin;                        
  Heap_Block *const new_first_block = (Heap_Block *) new_first_block_begin;
                                                                      
  new_first_block->prev_size = first_block->prev_size;                
  new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;
ffc106f4:	90 c4 00 04 	stw     r6,4(r4)                               
                                                                      
  _Heap_Free_block( heap, new_first_block );                          
ffc106f8:	4b ff fd 95 	bl      ffc1048c <_Heap_Free_block>            
      link_below_block,                                               
      extend_last_block                                               
    );                                                                
  }                                                                   
                                                                      
  if ( merge_above_block != NULL ) {                                  
ffc106fc:	2f 99 00 00 	cmpwi   cr7,r25,0                              
ffc10700:	41 9e 01 18 	beq-    cr7,ffc10818 <_Heap_Extend+0x31c>      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
ffc10704:	81 5e 00 10 	lwz     r10,16(r30)                            
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const last_block_begin = (uintptr_t) last_block;          
  uintptr_t const last_block_new_size = _Heap_Align_down(             
    extend_area_end - last_block_begin - HEAP_BLOCK_HEADER_SIZE,      
ffc10708:	39 3d ff f8 	addi    r9,r29,-8                              
  uintptr_t extend_area_end                                           
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const last_block_begin = (uintptr_t) last_block;          
  uintptr_t const last_block_new_size = _Heap_Align_down(             
ffc1070c:	7d 39 48 50 	subf    r9,r25,r9                              
  );                                                                  
  Heap_Block *const new_last_block =                                  
    _Heap_Block_at( last_block, last_block_new_size );                
                                                                      
  new_last_block->size_and_flag =                                     
    (last_block->size_and_flag - last_block_new_size)                 
ffc10710:	81 19 00 04 	lwz     r8,4(r25)                              
ffc10714:	7d 29 53 96 	divwu   r9,r9,r10                              
ffc10718:	7d 29 51 d6 	mullw   r9,r9,r10                              
      | HEAP_PREV_BLOCK_USED;                                         
                                                                      
  _Heap_Block_set_size( last_block, last_block_new_size );            
                                                                      
  _Heap_Free_block( heap, last_block );                               
ffc1071c:	7f c3 f3 78 	mr      r3,r30                                 
  );                                                                  
  Heap_Block *const new_last_block =                                  
    _Heap_Block_at( last_block, last_block_new_size );                
                                                                      
  new_last_block->size_and_flag =                                     
    (last_block->size_and_flag - last_block_new_size)                 
ffc10720:	7d 09 40 50 	subf    r8,r9,r8                               
    page_size                                                         
  );                                                                  
  Heap_Block *const new_last_block =                                  
    _Heap_Block_at( last_block, last_block_new_size );                
                                                                      
  new_last_block->size_and_flag =                                     
ffc10724:	7d 49 ca 14 	add     r10,r9,r25                             
    (last_block->size_and_flag - last_block_new_size)                 
      | HEAP_PREV_BLOCK_USED;                                         
ffc10728:	61 08 00 01 	ori     r8,r8,1                                
    page_size                                                         
  );                                                                  
  Heap_Block *const new_last_block =                                  
    _Heap_Block_at( last_block, last_block_new_size );                
                                                                      
  new_last_block->size_and_flag =                                     
ffc1072c:	91 0a 00 04 	stw     r8,4(r10)                              
    (last_block->size_and_flag - last_block_new_size)                 
      | HEAP_PREV_BLOCK_USED;                                         
                                                                      
  _Heap_Block_set_size( last_block, last_block_new_size );            
                                                                      
  _Heap_Free_block( heap, last_block );                               
ffc10730:	7f 24 cb 78 	mr      r4,r25                                 
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(                       
  Heap_Block *block,                                                  
  uintptr_t size                                                      
)                                                                     
{                                                                     
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;       
ffc10734:	81 59 00 04 	lwz     r10,4(r25)                             
ffc10738:	55 4a 07 fe 	clrlwi  r10,r10,31                             
                                                                      
  block->size_and_flag = size | flag;                                 
ffc1073c:	7d 29 53 78 	or      r9,r9,r10                              
ffc10740:	91 39 00 04 	stw     r9,4(r25)                              
ffc10744:	4b ff fd 49 	bl      ffc1048c <_Heap_Free_block>            
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
                                                                      
  return extended_size;                                               
}                                                                     
ffc10748:	81 3e 00 24 	lwz     r9,36(r30)                             
 * This feature will be used to terminate the scattered heap area list.  See
 * also _Heap_Extend().                                               
 */                                                                   
RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap )
{                                                                     
  _Heap_Block_set_size(                                               
ffc1074c:	81 1e 00 20 	lwz     r8,32(r30)                             
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(                       
  Heap_Block *block,                                                  
  uintptr_t size                                                      
)                                                                     
{                                                                     
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;       
ffc10750:	81 49 00 04 	lwz     r10,4(r9)                              
 * This feature will be used to terminate the scattered heap area list.  See
 * also _Heap_Extend().                                               
 */                                                                   
RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap )
{                                                                     
  _Heap_Block_set_size(                                               
ffc10754:	7d 09 40 50 	subf    r8,r9,r8                               
ffc10758:	80 01 00 44 	lwz     r0,68(r1)                              
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(                       
  Heap_Block *block,                                                  
  uintptr_t size                                                      
)                                                                     
{                                                                     
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;       
ffc1075c:	55 4a 07 fe 	clrlwi  r10,r10,31                             
ffc10760:	81 81 00 1c 	lwz     r12,28(r1)                             
                                                                      
  block->size_and_flag = size | flag;                                 
ffc10764:	7d 4a 43 78 	or      r10,r10,r8                             
ffc10768:	7c 08 03 a6 	mtlr    r0                                     
ffc1076c:	91 49 00 04 	stw     r10,4(r9)                              
ffc10770:	7d 80 81 20 	mtcrf   8,r12                                  
    _Heap_Free_block( heap, extend_first_block );                     
  }                                                                   
                                                                      
  _Heap_Set_last_block_size( heap );                                  
                                                                      
  extended_size = stats->free_size - free_size;                       
ffc10774:	80 7e 00 30 	lwz     r3,48(r30)                             
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
ffc10778:	81 3e 00 2c 	lwz     r9,44(r30)                             
    _Heap_Free_block( heap, extend_first_block );                     
  }                                                                   
                                                                      
  _Heap_Set_last_block_size( heap );                                  
                                                                      
  extended_size = stats->free_size - free_size;                       
ffc1077c:	7c 7a 18 50 	subf    r3,r26,r3                              
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
                                                                      
  return extended_size;                                               
}                                                                     
ffc10780:	83 01 00 20 	lwz     r24,32(r1)                             
  _Heap_Set_last_block_size( heap );                                  
                                                                      
  extended_size = stats->free_size - free_size;                       
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
ffc10784:	7d 29 1a 14 	add     r9,r9,r3                               
                                                                      
  return extended_size;                                               
}                                                                     
ffc10788:	83 21 00 24 	lwz     r25,36(r1)                             
  _Heap_Set_last_block_size( heap );                                  
                                                                      
  extended_size = stats->free_size - free_size;                       
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
ffc1078c:	91 3e 00 2c 	stw     r9,44(r30)                             
                                                                      
  return extended_size;                                               
}                                                                     
ffc10790:	83 41 00 28 	lwz     r26,40(r1)                             
ffc10794:	83 61 00 2c 	lwz     r27,44(r1)                             
ffc10798:	83 81 00 30 	lwz     r28,48(r1)                             
ffc1079c:	83 a1 00 34 	lwz     r29,52(r1)                             
ffc107a0:	83 c1 00 38 	lwz     r30,56(r1)                             
ffc107a4:	83 e1 00 3c 	lwz     r31,60(r1)                             
ffc107a8:	38 21 00 40 	addi    r1,r1,64                               
ffc107ac:	4e 80 00 20 	blr                                            
    return 0;                                                         
  }                                                                   
                                                                      
  do {                                                                
    uintptr_t const sub_area_begin = (start_block != first_block) ?   
      (uintptr_t) start_block : heap->area_begin;                     
ffc107b0:	80 fe 00 18 	lwz     r7,24(r30)                             
ffc107b4:	4b ff fe 60 	b       ffc10614 <_Heap_Extend+0x118>          
                                                                      
  extend_last_block->prev_size = extend_first_block_size;             
  extend_last_block->size_and_flag = 0;                               
  _Heap_Protection_block_initialize( heap, extend_last_block );       
                                                                      
  if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
ffc107b8:	81 1e 00 20 	lwz     r8,32(r30)                             
  } else if ( heap->area_end < extend_area_end ) {                    
    heap->area_end = extend_area_end;                                 
  }                                                                   
                                                                      
  extend_first_block_size =                                           
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;   
ffc107bc:	81 21 00 0c 	lwz     r9,12(r1)                              
ffc107c0:	81 41 00 08 	lwz     r10,8(r1)                              
                                                                      
  extend_last_block->prev_size = extend_first_block_size;             
  extend_last_block->size_and_flag = 0;                               
  _Heap_Protection_block_initialize( heap, extend_last_block );       
                                                                      
  if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
ffc107c4:	7f 88 48 40 	cmplw   cr7,r8,r9                              
                                                                      
    start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );
  } while ( start_block != first_block );                             
                                                                      
  if ( extend_area_begin < heap->area_begin ) {                       
    heap->area_begin = extend_area_begin;                             
ffc107c8:	93 fe 00 18 	stw     r31,24(r30)                            
  } else if ( heap->area_end < extend_area_end ) {                    
    heap->area_end = extend_area_end;                                 
  }                                                                   
                                                                      
  extend_first_block_size =                                           
ffc107cc:	7d 09 50 50 	subf    r8,r9,r10                              
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;   
                                                                      
  extend_first_block->prev_size = extend_area_end;                    
  extend_first_block->size_and_flag =                                 
    extend_first_block_size | HEAP_PREV_BLOCK_USED;                   
ffc107d0:	61 07 00 01 	ori     r7,r8,1                                
  }                                                                   
                                                                      
  extend_first_block_size =                                           
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;   
                                                                      
  extend_first_block->prev_size = extend_area_end;                    
ffc107d4:	93 a9 00 00 	stw     r29,0(r9)                              
  extend_first_block->size_and_flag =                                 
ffc107d8:	90 e9 00 04 	stw     r7,4(r9)                               
    extend_first_block_size | HEAP_PREV_BLOCK_USED;                   
  _Heap_Protection_block_initialize( heap, extend_first_block );      
                                                                      
  extend_last_block->prev_size = extend_first_block_size;             
  extend_last_block->size_and_flag = 0;                               
ffc107dc:	38 e0 00 00 	li      r7,0                                   
  extend_first_block->prev_size = extend_area_end;                    
  extend_first_block->size_and_flag =                                 
    extend_first_block_size | HEAP_PREV_BLOCK_USED;                   
  _Heap_Protection_block_initialize( heap, extend_first_block );      
                                                                      
  extend_last_block->prev_size = extend_first_block_size;             
ffc107e0:	91 0a 00 00 	stw     r8,0(r10)                              
  extend_last_block->size_and_flag = 0;                               
ffc107e4:	90 ea 00 04 	stw     r7,4(r10)                              
  _Heap_Protection_block_initialize( heap, extend_last_block );       
                                                                      
  if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
ffc107e8:	41 bd fe c8 	bgt-    cr7,ffc106b0 <_Heap_Extend+0x1b4>      <== ALWAYS TAKEN
    heap->first_block = extend_first_block;                           
  } else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
ffc107ec:	81 3e 00 24 	lwz     r9,36(r30)                             
ffc107f0:	7f 89 50 40 	cmplw   cr7,r9,r10                             
ffc107f4:	40 bc fe c0 	bge-    cr7,ffc106b4 <_Heap_Extend+0x1b8>      
    heap->last_block = extend_last_block;                             
ffc107f8:	91 5e 00 24 	stw     r10,36(r30)                            
ffc107fc:	4b ff fe b8 	b       ffc106b4 <_Heap_Extend+0x1b8>          
  }                                                                   
                                                                      
  if ( merge_below_block != NULL ) {                                  
    _Heap_Merge_below( heap, extend_area_begin, merge_below_block );  
  } else if ( link_below_block != NULL ) {                            
ffc10800:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc10804:	41 be fe f8 	beq-    cr7,ffc106fc <_Heap_Extend+0x200>      
{                                                                     
  uintptr_t const last_block_begin = (uintptr_t) last_block;          
  uintptr_t const link_begin = (uintptr_t) link;                      
                                                                      
  last_block->size_and_flag =                                         
    (link_begin - last_block_begin) | HEAP_PREV_BLOCK_USED;           
ffc10808:	7c aa 28 50 	subf    r5,r10,r5                              
ffc1080c:	60 a5 00 01 	ori     r5,r5,1                                
)                                                                     
{                                                                     
  uintptr_t const last_block_begin = (uintptr_t) last_block;          
  uintptr_t const link_begin = (uintptr_t) link;                      
                                                                      
  last_block->size_and_flag =                                         
ffc10810:	90 aa 00 04 	stw     r5,4(r10)                              
ffc10814:	4b ff fe e8 	b       ffc106fc <_Heap_Extend+0x200>          
    );                                                                
  }                                                                   
                                                                      
  if ( merge_above_block != NULL ) {                                  
    _Heap_Merge_above( heap, merge_above_block, extend_area_end );    
  } else if ( link_above_block != NULL ) {                            
ffc10818:	2f 98 00 00 	cmpwi   cr7,r24,0                              
ffc1081c:	41 9e 00 2c 	beq-    cr7,ffc10848 <_Heap_Extend+0x34c>      
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(                       
  Heap_Block *block,                                                  
  uintptr_t size                                                      
)                                                                     
{                                                                     
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;       
ffc10820:	81 38 00 04 	lwz     r9,4(r24)                              
ffc10824:	55 2a 07 fe 	clrlwi  r10,r9,31                              
)                                                                     
{                                                                     
  uintptr_t const link_begin = (uintptr_t) link;                      
  uintptr_t const first_block_begin = (uintptr_t) first_block;        
                                                                      
  _Heap_Block_set_size( link, first_block_begin - link_begin );       
ffc10828:	81 21 00 0c 	lwz     r9,12(r1)                              
ffc1082c:	7d 38 48 50 	subf    r9,r24,r9                              
                                                                      
  block->size_and_flag = size | flag;                                 
ffc10830:	7d 4a 4b 78 	or      r10,r10,r9                             
  }                                                                   
                                                                      
  if ( merge_above_block != NULL ) {                                  
    _Heap_Merge_above( heap, merge_above_block, extend_area_end );    
  } else if ( link_above_block != NULL ) {                            
    _Heap_Link_above(                                                 
ffc10834:	81 21 00 08 	lwz     r9,8(r1)                               
ffc10838:	91 58 00 04 	stw     r10,4(r24)                             
  uintptr_t const link_begin = (uintptr_t) link;                      
  uintptr_t const first_block_begin = (uintptr_t) first_block;        
                                                                      
  _Heap_Block_set_size( link, first_block_begin - link_begin );       
                                                                      
  last_block->size_and_flag |= HEAP_PREV_BLOCK_USED;                  
ffc1083c:	81 49 00 04 	lwz     r10,4(r9)                              
ffc10840:	61 4a 00 01 	ori     r10,r10,1                              
ffc10844:	91 49 00 04 	stw     r10,4(r9)                              
      extend_first_block,                                             
      extend_last_block                                               
    );                                                                
  }                                                                   
                                                                      
  if ( merge_below_block == NULL && merge_above_block == NULL ) {     
ffc10848:	40 92 ff 00 	bne+    cr4,ffc10748 <_Heap_Extend+0x24c>      
    _Heap_Free_block( heap, extend_first_block );                     
ffc1084c:	80 81 00 0c 	lwz     r4,12(r1)                              
ffc10850:	7f c3 f3 78 	mr      r3,r30                                 
ffc10854:	4b ff fc 39 	bl      ffc1048c <_Heap_Free_block>            
ffc10858:	4b ff fe f0 	b       ffc10748 <_Heap_Extend+0x24c>          
                                                                      

ffc109a4 <_Heap_Free>: /* * If NULL return true so a free on NULL is considered a valid release. This * is a special case that could be handled by the in heap check how-ever that * would result in false being returned which is wrong. */ if ( alloc_begin_ptr == NULL ) {
ffc109a4:	2c 04 00 00 	cmpwi   r4,0                                   
    return do_free;                                                   
  }                                                                   
#endif                                                                
                                                                      
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )          
{                                                                     
ffc109a8:	7c 69 1b 78 	mr      r9,r3                                  
  /*                                                                  
   * If NULL return true so a free on NULL is considered a valid release. This
   * is a special case that could be handled by the in heap check how-ever that
   * would result in false being returned which is wrong.             
   */                                                                 
  if ( alloc_begin_ptr == NULL ) {                                    
ffc109ac:	41 82 00 dc 	beq-    ffc10a88 <_Heap_Free+0xe4>             
ffc109b0:	81 03 00 10 	lwz     r8,16(r3)                              
RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in_heap(                     
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
ffc109b4:	80 e3 00 20 	lwz     r7,32(r3)                              
                                                                      
  alloc_begin = (uintptr_t) alloc_begin_ptr;                          
  block = _Heap_Block_of_alloc_area( alloc_begin, heap->page_size );  
                                                                      
  if ( !_Heap_Is_block_in_heap( heap, block ) ) {                     
    return false;                                                     
ffc109b8:	38 60 00 00 	li      r3,0                                   
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
ffc109bc:	7d 44 43 96 	divwu   r10,r4,r8                              
ffc109c0:	7d 4a 41 d6 	mullw   r10,r10,r8                             
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
ffc109c4:	39 4a ff f8 	addi    r10,r10,-8                             
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
ffc109c8:	7f 8a 38 40 	cmplw   cr7,r10,r7                             
ffc109cc:	4d 9c 00 20 	bltlr   cr7                                    
ffc109d0:	80 c9 00 24 	lwz     r6,36(r9)                              
ffc109d4:	7f 8a 30 40 	cmplw   cr7,r10,r6                             
ffc109d8:	40 9d 00 08 	ble-    cr7,ffc109e0 <_Heap_Free+0x3c>         <== ALWAYS TAKEN
ffc109dc:	4e 80 00 20 	blr                                            <== NOT EXECUTED
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
ffc109e0:	81 6a 00 04 	lwz     r11,4(r10)                             
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
ffc109e4:	55 65 00 3c 	rlwinm  r5,r11,0,0,30                          
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
ffc109e8:	7d 05 52 14 	add     r8,r5,r10                              
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
ffc109ec:	7f 87 40 40 	cmplw   cr7,r7,r8                              
ffc109f0:	41 9d 00 94 	bgt-    cr7,ffc10a84 <_Heap_Free+0xe0>         <== NEVER TAKEN
ffc109f4:	7f 86 40 40 	cmplw   cr7,r6,r8                              
ffc109f8:	41 9c 00 88 	blt-    cr7,ffc10a80 <_Heap_Free+0xdc>         <== NEVER TAKEN
ffc109fc:	80 88 00 04 	lwz     r4,4(r8)                               
    return false;                                                     
  }                                                                   
                                                                      
  _Heap_Protection_block_check( heap, next_block );                   
                                                                      
  if ( !_Heap_Is_prev_used( next_block ) ) {                          
ffc10a00:	70 80 00 01 	andi.   r0,r4,1                                
ffc10a04:	41 82 00 8c 	beq-    ffc10a90 <_Heap_Free+0xec>             
    return true;                                                      
  }                                                                   
                                                                      
  next_block_size = _Heap_Block_size( next_block );                   
  next_is_free = next_block != heap->last_block                       
    && !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
ffc10a08:	7f 86 40 00 	cmpw    cr7,r6,r8                              
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
ffc10a0c:	54 84 00 3c 	rlwinm  r4,r4,0,0,30                           
ffc10a10:	41 9e 00 84 	beq-    cr7,ffc10a94 <_Heap_Free+0xf0>         
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
ffc10a14:	7c 68 22 14 	add     r3,r8,r4                               
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
ffc10a18:	80 63 00 04 	lwz     r3,4(r3)                               
    return true;                                                      
  }                                                                   
                                                                      
  next_block_size = _Heap_Block_size( next_block );                   
  next_is_free = next_block != heap->last_block                       
    && !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
ffc10a1c:	70 60 00 01 	andi.   r0,r3,1                                
ffc10a20:	40 82 00 74 	bne-    ffc10a94 <_Heap_Free+0xf0>             
                                                                      
  if ( !_Heap_Is_prev_used( block ) ) {                               
ffc10a24:	71 60 00 01 	andi.   r0,r11,1                               
ffc10a28:	41 82 01 50 	beq-    ffc10b78 <_Heap_Free+0x1d4>            
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
ffc10a2c:	80 e8 00 08 	lwz     r7,8(r8)                               
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
      next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;             
      next_block->prev_size = size;                                   
    }                                                                 
  } else if ( next_is_free ) {    /* coalesce next */                 
    uintptr_t const size = block_size + next_block_size;              
ffc10a30:	7c 84 2a 14 	add     r4,r4,r5                               
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
ffc10a34:	81 08 00 0c 	lwz     r8,12(r8)                              
      next_block->prev_size = size;                                   
    }                                                                 
  } else if ( next_is_free ) {    /* coalesce next */                 
    uintptr_t const size = block_size + next_block_size;              
    _Heap_Free_list_replace( next_block, block );                     
    block->size_and_flag = size | HEAP_PREV_BLOCK_USED;               
ffc10a38:	60 86 00 01 	ori     r6,r4,1                                
)                                                                     
{                                                                     
  Heap_Block *next = old_block->next;                                 
  Heap_Block *prev = old_block->prev;                                 
                                                                      
  new_block->next = next;                                             
ffc10a3c:	90 ea 00 08 	stw     r7,8(r10)                              
  new_block->prev = prev;                                             
ffc10a40:	91 0a 00 0c 	stw     r8,12(r10)                             
                                                                      
  next->prev = new_block;                                             
  prev->next = new_block;                                             
ffc10a44:	91 48 00 08 	stw     r10,8(r8)                              
  Heap_Block *prev = old_block->prev;                                 
                                                                      
  new_block->next = next;                                             
  new_block->prev = prev;                                             
                                                                      
  next->prev = new_block;                                             
ffc10a48:	91 47 00 0c 	stw     r10,12(r7)                             
ffc10a4c:	90 ca 00 04 	stw     r6,4(r10)                              
    next_block  = _Heap_Block_at( block, size );                      
    next_block->prev_size = size;                                     
ffc10a50:	7c 84 51 2e 	stwx    r4,r4,r10                              
      stats->max_free_blocks = stats->free_blocks;                    
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
ffc10a54:	81 09 00 40 	lwz     r8,64(r9)                              
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
ffc10a58:	38 60 00 01 	li      r3,1                                   
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
ffc10a5c:	81 49 00 50 	lwz     r10,80(r9)                             
  stats->free_size += block_size;                                     
ffc10a60:	80 e9 00 30 	lwz     r7,48(r9)                              
      stats->max_free_blocks = stats->free_blocks;                    
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
ffc10a64:	39 08 ff ff 	addi    r8,r8,-1                               
  ++stats->frees;                                                     
ffc10a68:	39 4a 00 01 	addi    r10,r10,1                              
      stats->max_free_blocks = stats->free_blocks;                    
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
ffc10a6c:	91 09 00 40 	stw     r8,64(r9)                              
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
ffc10a70:	7c a7 2a 14 	add     r5,r7,r5                               
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
ffc10a74:	91 49 00 50 	stw     r10,80(r9)                             
  stats->free_size += block_size;                                     
ffc10a78:	90 a9 00 30 	stw     r5,48(r9)                              
                                                                      
  return( true );                                                     
ffc10a7c:	4e 80 00 20 	blr                                            
ffc10a80:	4e 80 00 20 	blr                                            <== NOT EXECUTED
ffc10a84:	4e 80 00 20 	blr                                            <== NOT EXECUTED
   * If NULL return true so a free on NULL is considered a valid release. This
   * is a special case that could be handled by the in heap check how-ever that
   * would result in false being returned which is wrong.             
   */                                                                 
  if ( alloc_begin_ptr == NULL ) {                                    
    return true;                                                      
ffc10a88:	38 60 00 01 	li      r3,1                                   
ffc10a8c:	4e 80 00 20 	blr                                            
ffc10a90:	4e 80 00 20 	blr                                            
                                                                      
  next_block_size = _Heap_Block_size( next_block );                   
  next_is_free = next_block != heap->last_block                       
    && !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
                                                                      
  if ( !_Heap_Is_prev_used( block ) ) {                               
ffc10a94:	71 63 00 01 	andi.   r3,r11,1                               
ffc10a98:	40 82 00 28 	bne-    ffc10ac0 <_Heap_Free+0x11c>            
  if ( !_Heap_Protection_determine_block_free( heap, block ) ) {      
    return true;                                                      
  }                                                                   
                                                                      
  next_block_size = _Heap_Block_size( next_block );                   
  next_is_free = next_block != heap->last_block                       
ffc10a9c:	39 80 00 00 	li      r12,0                                  
    && !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
                                                                      
  if ( !_Heap_Is_prev_used( block ) ) {                               
    uintptr_t const prev_size = block->prev_size;                     
ffc10aa0:	80 0a 00 00 	lwz     r0,0(r10)                              
                                                                      
  alloc_begin = (uintptr_t) alloc_begin_ptr;                          
  block = _Heap_Block_of_alloc_area( alloc_begin, heap->page_size );  
                                                                      
  if ( !_Heap_Is_block_in_heap( heap, block ) ) {                     
    return false;                                                     
ffc10aa4:	38 60 00 00 	li      r3,0                                   
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
ffc10aa8:	7d 60 50 50 	subf    r11,r0,r10                             
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
ffc10aac:	7f 87 58 40 	cmplw   cr7,r7,r11                             
ffc10ab0:	4d 9d 00 20 	bgtlr   cr7                                    
ffc10ab4:	7f 86 58 40 	cmplw   cr7,r6,r11                             
ffc10ab8:	40 9c 00 54 	bge-    cr7,ffc10b0c <_Heap_Free+0x168>        <== ALWAYS TAKEN
ffc10abc:	4e 80 00 20 	blr                                            <== NOT EXECUTED
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;         
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
    next_block->prev_size = block_size;                               
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
ffc10ac0:	80 e9 00 38 	lwz     r7,56(r9)                              
    next_block->prev_size = size;                                     
  } else {                        /* no coalesce */                   
    /* Add 'block' to the head of the free blocks list as it tends to 
       produce less fragmentation than adding to the tail. */         
    _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block );
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;         
ffc10ac4:	60 a4 00 01 	ori     r4,r5,1                                
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
    next_block->prev_size = block_size;                               
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
    if ( stats->max_free_blocks < stats->free_blocks ) {              
ffc10ac8:	80 c9 00 3c 	lwz     r6,60(r9)                              
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;         
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
    next_block->prev_size = block_size;                               
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
ffc10acc:	38 e7 00 01 	addi    r7,r7,1                                
    next_block->prev_size = size;                                     
  } else {                        /* no coalesce */                   
    /* Add 'block' to the head of the free blocks list as it tends to 
       produce less fragmentation than adding to the tail. */         
    _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block );
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;         
ffc10ad0:	90 8a 00 04 	stw     r4,4(r10)                              
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
    next_block->prev_size = block_size;                               
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
    if ( stats->max_free_blocks < stats->free_blocks ) {              
ffc10ad4:	7f 87 30 40 	cmplw   cr7,r7,r6                              
  } else {                        /* no coalesce */                   
    /* Add 'block' to the head of the free blocks list as it tends to 
       produce less fragmentation than adding to the tail. */         
    _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block );
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;         
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
ffc10ad8:	80 88 00 04 	lwz     r4,4(r8)                               
RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after(               
  Heap_Block *block_before,                                           
  Heap_Block *new_block                                               
)                                                                     
{                                                                     
  Heap_Block *next = block_before->next;                              
ffc10adc:	80 c9 00 08 	lwz     r6,8(r9)                               
ffc10ae0:	54 84 00 3c 	rlwinm  r4,r4,0,0,30                           
                                                                      
  new_block->next = next;                                             
  new_block->prev = block_before;                                     
ffc10ae4:	91 2a 00 0c 	stw     r9,12(r10)                             
  Heap_Block *new_block                                               
)                                                                     
{                                                                     
  Heap_Block *next = block_before->next;                              
                                                                      
  new_block->next = next;                                             
ffc10ae8:	90 ca 00 08 	stw     r6,8(r10)                              
ffc10aec:	90 88 00 04 	stw     r4,4(r8)                               
  new_block->prev = block_before;                                     
  block_before->next = new_block;                                     
  next->prev = new_block;                                             
ffc10af0:	91 46 00 0c 	stw     r10,12(r6)                             
    next_block->prev_size = block_size;                               
ffc10af4:	7c a5 51 2e 	stwx    r5,r5,r10                              
{                                                                     
  Heap_Block *next = block_before->next;                              
                                                                      
  new_block->next = next;                                             
  new_block->prev = block_before;                                     
  block_before->next = new_block;                                     
ffc10af8:	91 49 00 08 	stw     r10,8(r9)                              
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
ffc10afc:	90 e9 00 38 	stw     r7,56(r9)                              
    if ( stats->max_free_blocks < stats->free_blocks ) {              
ffc10b00:	40 bd ff 54 	ble-    cr7,ffc10a54 <_Heap_Free+0xb0>         
      stats->max_free_blocks = stats->free_blocks;                    
ffc10b04:	90 e9 00 3c 	stw     r7,60(r9)                              
ffc10b08:	4b ff ff 4c 	b       ffc10a54 <_Heap_Free+0xb0>             
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
ffc10b0c:	80 eb 00 04 	lwz     r7,4(r11)                              
      return( false );                                                
    }                                                                 
                                                                      
    /* As we always coalesce free blocks, the block that preceedes prev_block
       must have been used. */                                        
    if ( !_Heap_Is_prev_used ( prev_block) ) {                        
ffc10b10:	70 e6 00 01 	andi.   r6,r7,1                                
ffc10b14:	41 82 00 60 	beq-    ffc10b74 <_Heap_Free+0x1d0>            <== NEVER TAKEN
      _HAssert( false );                                              
      return( false );                                                
    }                                                                 
                                                                      
    if ( next_is_free ) {       /* coalesce both */                   
ffc10b18:	2f 8c 00 00 	cmpwi   cr7,r12,0                              
ffc10b1c:	41 9e 00 38 	beq-    cr7,ffc10b54 <_Heap_Free+0x1b0>        
      uintptr_t const size = block_size + prev_size + next_block_size;
      _Heap_Free_list_remove( next_block );                           
      stats->free_blocks -= 1;                                        
ffc10b20:	80 c9 00 38 	lwz     r6,56(r9)                              
      _HAssert( false );                                              
      return( false );                                                
    }                                                                 
                                                                      
    if ( next_is_free ) {       /* coalesce both */                   
      uintptr_t const size = block_size + prev_size + next_block_size;
ffc10b24:	7c 05 02 14 	add     r0,r5,r0                               
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
ffc10b28:	80 e8 00 08 	lwz     r7,8(r8)                               
      _HAssert( false );                                              
      return( false );                                                
    }                                                                 
                                                                      
    if ( next_is_free ) {       /* coalesce both */                   
      uintptr_t const size = block_size + prev_size + next_block_size;
ffc10b2c:	7c 80 22 14 	add     r4,r0,r4                               
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
ffc10b30:	81 48 00 0c 	lwz     r10,12(r8)                             
    }                                                                 
                                                                      
    if ( next_is_free ) {       /* coalesce both */                   
      uintptr_t const size = block_size + prev_size + next_block_size;
      _Heap_Free_list_remove( next_block );                           
      stats->free_blocks -= 1;                                        
ffc10b34:	38 c6 ff ff 	addi    r6,r6,-1                               
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
ffc10b38:	60 88 00 01 	ori     r8,r4,1                                
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block ) 
{                                                                     
  Heap_Block *next = block->next;                                     
  Heap_Block *prev = block->prev;                                     
                                                                      
  prev->next = next;                                                  
ffc10b3c:	90 ea 00 08 	stw     r7,8(r10)                              
  next->prev = prev;                                                  
ffc10b40:	91 47 00 0c 	stw     r10,12(r7)                             
    }                                                                 
                                                                      
    if ( next_is_free ) {       /* coalesce both */                   
      uintptr_t const size = block_size + prev_size + next_block_size;
      _Heap_Free_list_remove( next_block );                           
      stats->free_blocks -= 1;                                        
ffc10b44:	90 c9 00 38 	stw     r6,56(r9)                              
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
ffc10b48:	91 0b 00 04 	stw     r8,4(r11)                              
      next_block = _Heap_Block_at( prev_block, size );                
      _HAssert(!_Heap_Is_prev_used( next_block));                     
      next_block->prev_size = size;                                   
ffc10b4c:	7c 84 59 2e 	stwx    r4,r4,r11                              
ffc10b50:	4b ff ff 04 	b       ffc10a54 <_Heap_Free+0xb0>             
    } else {                      /* coalesce prev */                 
      uintptr_t const size = block_size + prev_size;                  
ffc10b54:	7c 05 02 14 	add     r0,r5,r0                               
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
ffc10b58:	60 07 00 01 	ori     r7,r0,1                                
      next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;             
      next_block->prev_size = size;                                   
ffc10b5c:	7c 05 51 2e 	stwx    r0,r5,r10                              
      next_block = _Heap_Block_at( prev_block, size );                
      _HAssert(!_Heap_Is_prev_used( next_block));                     
      next_block->prev_size = size;                                   
    } else {                      /* coalesce prev */                 
      uintptr_t const size = block_size + prev_size;                  
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
ffc10b60:	90 eb 00 04 	stw     r7,4(r11)                              
      next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;             
ffc10b64:	80 e8 00 04 	lwz     r7,4(r8)                               
ffc10b68:	54 e7 00 3c 	rlwinm  r7,r7,0,0,30                           
ffc10b6c:	90 e8 00 04 	stw     r7,4(r8)                               
ffc10b70:	4b ff fe e4 	b       ffc10a54 <_Heap_Free+0xb0>             
ffc10b74:	4e 80 00 20 	blr                                            <== NOT EXECUTED
  if ( !_Heap_Protection_determine_block_free( heap, block ) ) {      
    return true;                                                      
  }                                                                   
                                                                      
  next_block_size = _Heap_Block_size( next_block );                   
  next_is_free = next_block != heap->last_block                       
ffc10b78:	39 80 00 01 	li      r12,1                                  
ffc10b7c:	4b ff ff 24 	b       ffc10aa0 <_Heap_Free+0xfc>             
                                                                      

ffc15dc0 <_Heap_Get_free_information>: return &heap->free_list; } RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap ) { return _Heap_Free_list_head(heap)->next;
ffc15dc0:	81 23 00 08 	lwz     r9,8(r3)                               
)                                                                     
{                                                                     
  Heap_Block *the_block;                                              
  Heap_Block *const tail = _Heap_Free_list_tail(the_heap);            
                                                                      
  info->number = 0;                                                   
ffc15dc4:	39 40 00 00 	li      r10,0                                  
ffc15dc8:	91 44 00 00 	stw     r10,0(r4)                              
  info->largest = 0;                                                  
  info->total = 0;                                                    
                                                                      
  for(the_block = _Heap_Free_list_first(the_heap);                    
ffc15dcc:	38 e0 00 01 	li      r7,1                                   
ffc15dd0:	7f 83 48 00 	cmpw    cr7,r3,r9                              
{                                                                     
  Heap_Block *the_block;                                              
  Heap_Block *const tail = _Heap_Free_list_tail(the_heap);            
                                                                      
  info->number = 0;                                                   
  info->largest = 0;                                                  
ffc15dd4:	91 44 00 04 	stw     r10,4(r4)                              
  info->total = 0;                                                    
                                                                      
  for(the_block = _Heap_Free_list_first(the_heap);                    
ffc15dd8:	38 c0 00 00 	li      r6,0                                   
ffc15ddc:	39 00 00 00 	li      r8,0                                   
  Heap_Block *the_block;                                              
  Heap_Block *const tail = _Heap_Free_list_tail(the_heap);            
                                                                      
  info->number = 0;                                                   
  info->largest = 0;                                                  
  info->total = 0;                                                    
ffc15de0:	91 44 00 08 	stw     r10,8(r4)                              
                                                                      
  for(the_block = _Heap_Free_list_first(the_heap);                    
ffc15de4:	40 be 00 10 	bne+    cr7,ffc15df4 <_Heap_Get_free_information+0x34><== ALWAYS TAKEN
ffc15de8:	4e 80 00 20 	blr                                            <== NOT EXECUTED
ffc15dec:	80 c4 00 04 	lwz     r6,4(r4)                               
ffc15df0:	7c a7 2b 78 	mr      r7,r5                                  
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
ffc15df4:	81 49 00 04 	lwz     r10,4(r9)                              
ffc15df8:	38 a7 00 01 	addi    r5,r7,1                                
ffc15dfc:	55 4a 00 3c 	rlwinm  r10,r10,0,0,30                         
    /* As we always coalesce free blocks, prev block must have been used. */
    _HAssert(_Heap_Is_prev_used(the_block));                          
                                                                      
    info->number++;                                                   
    info->total += the_size;                                          
    if ( info->largest < the_size )                                   
ffc15e00:	7f 8a 30 40 	cmplw   cr7,r10,r6                             
                                                                      
    /* As we always coalesce free blocks, prev block must have been used. */
    _HAssert(_Heap_Is_prev_used(the_block));                          
                                                                      
    info->number++;                                                   
    info->total += the_size;                                          
ffc15e04:	7d 08 52 14 	add     r8,r8,r10                              
    if ( info->largest < the_size )                                   
ffc15e08:	40 9d 00 08 	ble-    cr7,ffc15e10 <_Heap_Get_free_information+0x50>
        info->largest = the_size;                                     
ffc15e0c:	91 44 00 04 	stw     r10,4(r4)                              
  info->largest = 0;                                                  
  info->total = 0;                                                    
                                                                      
  for(the_block = _Heap_Free_list_first(the_heap);                    
      the_block != tail;                                              
      the_block = the_block->next)                                    
ffc15e10:	81 29 00 08 	lwz     r9,8(r9)                               
                                                                      
  info->number = 0;                                                   
  info->largest = 0;                                                  
  info->total = 0;                                                    
                                                                      
  for(the_block = _Heap_Free_list_first(the_heap);                    
ffc15e14:	7f 83 48 00 	cmpw    cr7,r3,r9                              
ffc15e18:	40 9e ff d4 	bne+    cr7,ffc15dec <_Heap_Get_free_information+0x2c>
ffc15e1c:	90 e4 00 00 	stw     r7,0(r4)                               
ffc15e20:	91 04 00 08 	stw     r8,8(r4)                               
ffc15e24:	4e 80 00 20 	blr                                            
                                                                      

ffc0d448 <_Heap_Greedy_allocate>: Heap_Block *_Heap_Greedy_allocate( Heap_Control *heap, const uintptr_t *block_sizes, size_t block_count ) {
ffc0d448:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc0d44c:	7c 08 02 a6 	mflr    r0                                     
ffc0d450:	93 61 00 0c 	stw     r27,12(r1)                             
  Heap_Block *allocated_blocks = NULL;                                
  Heap_Block *blocks = NULL;                                          
  Heap_Block *current;                                                
  size_t i;                                                           
                                                                      
  for (i = 0; i < block_count; ++i) {                                 
ffc0d454:	7c bb 2b 79 	mr.     r27,r5                                 
Heap_Block *_Heap_Greedy_allocate(                                    
  Heap_Control *heap,                                                 
  const uintptr_t *block_sizes,                                       
  size_t block_count                                                  
)                                                                     
{                                                                     
ffc0d458:	93 c1 00 18 	stw     r30,24(r1)                             
ffc0d45c:	7c 7e 1b 78 	mr      r30,r3                                 
ffc0d460:	90 01 00 24 	stw     r0,36(r1)                              
ffc0d464:	93 81 00 10 	stw     r28,16(r1)                             
ffc0d468:	93 a1 00 14 	stw     r29,20(r1)                             
ffc0d46c:	93 e1 00 1c 	stw     r31,28(r1)                             
  Heap_Block *allocated_blocks = NULL;                                
  Heap_Block *blocks = NULL;                                          
  Heap_Block *current;                                                
  size_t i;                                                           
                                                                      
  for (i = 0; i < block_count; ++i) {                                 
ffc0d470:	41 82 00 e0 	beq-    ffc0d550 <_Heap_Greedy_allocate+0x108> 
  #include "config.h"                                                 
#endif                                                                
                                                                      
#include <rtems/score/heap.h>                                         
                                                                      
Heap_Block *_Heap_Greedy_allocate(                                    
ffc0d474:	3b 84 ff fc 	addi    r28,r4,-4                              
  Heap_Block *allocated_blocks = NULL;                                
  Heap_Block *blocks = NULL;                                          
  Heap_Block *current;                                                
  size_t i;                                                           
                                                                      
  for (i = 0; i < block_count; ++i) {                                 
ffc0d478:	3b e0 00 00 	li      r31,0                                  
  const uintptr_t *block_sizes,                                       
  size_t block_count                                                  
)                                                                     
{                                                                     
  Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );    
  Heap_Block *allocated_blocks = NULL;                                
ffc0d47c:	3b a0 00 00 	li      r29,0                                  
 * @brief See _Heap_Allocate_aligned_with_boundary() with alignment and
 * boundary equals zero.                                              
 */                                                                   
RTEMS_INLINE_ROUTINE void *_Heap_Allocate( Heap_Control *heap, uintptr_t size )
{                                                                     
  return _Heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );    
ffc0d480:	84 9c 00 04 	lwzu    r4,4(r28)                              
ffc0d484:	7f c3 f3 78 	mr      r3,r30                                 
ffc0d488:	38 a0 00 00 	li      r5,0                                   
ffc0d48c:	38 c0 00 00 	li      r6,0                                   
ffc0d490:	48 00 8f 19 	bl      ffc163a8 <_Heap_Allocate_aligned_with_boundary>
  Heap_Block *blocks = NULL;                                          
  Heap_Block *current;                                                
  size_t i;                                                           
                                                                      
  for (i = 0; i < block_count; ++i) {                                 
ffc0d494:	3b ff 00 01 	addi    r31,r31,1                              
    void *next = _Heap_Allocate( heap, block_sizes [i] );             
                                                                      
    if ( next != NULL ) {                                             
ffc0d498:	2c 03 00 00 	cmpwi   r3,0                                   
  Heap_Block *allocated_blocks = NULL;                                
  Heap_Block *blocks = NULL;                                          
  Heap_Block *current;                                                
  size_t i;                                                           
                                                                      
  for (i = 0; i < block_count; ++i) {                                 
ffc0d49c:	7f 9f d8 00 	cmpw    cr7,r31,r27                            
    void *next = _Heap_Allocate( heap, block_sizes [i] );             
                                                                      
    if ( next != NULL ) {                                             
ffc0d4a0:	41 82 00 1c 	beq-    ffc0d4bc <_Heap_Greedy_allocate+0x74>  <== NEVER TAKEN
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
ffc0d4a4:	81 3e 00 10 	lwz     r9,16(r30)                             
ffc0d4a8:	7c 63 4b 96 	divwu   r3,r3,r9                               
ffc0d4ac:	7d 23 49 d6 	mullw   r9,r3,r9                               
      Heap_Block *next_block = _Heap_Block_of_alloc_area(             
        (uintptr_t) next,                                             
        heap->page_size                                               
      );                                                              
                                                                      
      next_block->next = allocated_blocks;                            
ffc0d4b0:	93 a9 00 00 	stw     r29,0(r9)                              
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
ffc0d4b4:	39 29 ff f8 	addi    r9,r9,-8                               
ffc0d4b8:	7d 3d 4b 78 	mr      r29,r9                                 
  Heap_Block *allocated_blocks = NULL;                                
  Heap_Block *blocks = NULL;                                          
  Heap_Block *current;                                                
  size_t i;                                                           
                                                                      
  for (i = 0; i < block_count; ++i) {                                 
ffc0d4bc:	40 9e ff c4 	bne+    cr7,ffc0d480 <_Heap_Greedy_allocate+0x38>
  return &heap->free_list;                                            
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{                                                                     
  return _Heap_Free_list_head(heap)->next;                            
ffc0d4c0:	83 fe 00 08 	lwz     r31,8(r30)                             
      next_block->next = allocated_blocks;                            
      allocated_blocks = next_block;                                  
    }                                                                 
  }                                                                   
                                                                      
  while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {
ffc0d4c4:	7f 9e f8 00 	cmpw    cr7,r30,r31                            
ffc0d4c8:	41 9e 00 90 	beq-    cr7,ffc0d558 <_Heap_Greedy_allocate+0x110><== NEVER TAKEN
ffc0d4cc:	3b 80 00 00 	li      r28,0                                  
ffc0d4d0:	48 00 00 08 	b       ffc0d4d8 <_Heap_Greedy_allocate+0x90>  
ffc0d4d4:	7d 3f 4b 78 	mr      r31,r9                                 
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
ffc0d4d8:	80 df 00 04 	lwz     r6,4(r31)                              
    _Heap_Block_allocate(                                             
ffc0d4dc:	7f e4 fb 78 	mr      r4,r31                                 
ffc0d4e0:	38 bf 00 08 	addi    r5,r31,8                               
ffc0d4e4:	54 c6 00 3c 	rlwinm  r6,r6,0,0,30                           
ffc0d4e8:	7f c3 f3 78 	mr      r3,r30                                 
ffc0d4ec:	38 c6 ff f8 	addi    r6,r6,-8                               
ffc0d4f0:	48 00 03 e5 	bl      ffc0d8d4 <_Heap_Block_allocate>        
      current,                                                        
      _Heap_Alloc_area_of_block( current ),                           
      _Heap_Block_size( current ) - HEAP_BLOCK_HEADER_SIZE            
    );                                                                
                                                                      
    current->next = blocks;                                           
ffc0d4f4:	93 9f 00 08 	stw     r28,8(r31)                             
ffc0d4f8:	7f fc fb 78 	mr      r28,r31                                
  return &heap->free_list;                                            
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{                                                                     
  return _Heap_Free_list_head(heap)->next;                            
ffc0d4fc:	81 3e 00 08 	lwz     r9,8(r30)                              
      next_block->next = allocated_blocks;                            
      allocated_blocks = next_block;                                  
    }                                                                 
  }                                                                   
                                                                      
  while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {
ffc0d500:	7f 9e 48 00 	cmpw    cr7,r30,r9                             
ffc0d504:	40 9e ff d0 	bne+    cr7,ffc0d4d4 <_Heap_Greedy_allocate+0x8c>
                                                                      
    current->next = blocks;                                           
    blocks = current;                                                 
  }                                                                   
                                                                      
  while ( allocated_blocks != NULL ) {                                
ffc0d508:	2f 9d 00 00 	cmpwi   cr7,r29,0                              
ffc0d50c:	41 9e 00 1c 	beq-    cr7,ffc0d528 <_Heap_Greedy_allocate+0xe0>
    current = allocated_blocks;                                       
    allocated_blocks = allocated_blocks->next;                        
ffc0d510:	7f a4 eb 78 	mr      r4,r29                                 
ffc0d514:	87 a4 00 08 	lwzu    r29,8(r4)                              
    _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
ffc0d518:	7f c3 f3 78 	mr      r3,r30                                 
ffc0d51c:	48 00 90 c9 	bl      ffc165e4 <_Heap_Free>                  
                                                                      
    current->next = blocks;                                           
    blocks = current;                                                 
  }                                                                   
                                                                      
  while ( allocated_blocks != NULL ) {                                
ffc0d520:	2f 9d 00 00 	cmpwi   cr7,r29,0                              
ffc0d524:	40 9e ff ec 	bne+    cr7,ffc0d510 <_Heap_Greedy_allocate+0xc8>
    allocated_blocks = allocated_blocks->next;                        
    _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
  }                                                                   
                                                                      
  return blocks;                                                      
}                                                                     
ffc0d528:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0d52c:	7f e3 fb 78 	mr      r3,r31                                 
ffc0d530:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0d534:	7c 08 03 a6 	mtlr    r0                                     
ffc0d538:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0d53c:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0d540:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0d544:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0d548:	38 21 00 20 	addi    r1,r1,32                               
ffc0d54c:	4e 80 00 20 	blr                                            
  const uintptr_t *block_sizes,                                       
  size_t block_count                                                  
)                                                                     
{                                                                     
  Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );    
  Heap_Block *allocated_blocks = NULL;                                
ffc0d550:	3b a0 00 00 	li      r29,0                                  
ffc0d554:	4b ff ff 6c 	b       ffc0d4c0 <_Heap_Greedy_allocate+0x78>  
      next_block->next = allocated_blocks;                            
      allocated_blocks = next_block;                                  
    }                                                                 
  }                                                                   
                                                                      
  while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {
ffc0d558:	3b e0 00 00 	li      r31,0                                  <== NOT EXECUTED
ffc0d55c:	4b ff ff c4 	b       ffc0d520 <_Heap_Greedy_allocate+0xd8>  <== NOT EXECUTED
                                                                      

ffc0d560 <_Heap_Greedy_free>: void _Heap_Greedy_free( Heap_Control *heap, Heap_Block *blocks ) { while ( blocks != NULL ) {
ffc0d560:	2c 04 00 00 	cmpwi   r4,0                                   
                                                                      
void _Heap_Greedy_free(                                               
  Heap_Control *heap,                                                 
  Heap_Block *blocks                                                  
)                                                                     
{                                                                     
ffc0d564:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0d568:	7c 08 02 a6 	mflr    r0                                     
ffc0d56c:	93 c1 00 08 	stw     r30,8(r1)                              
ffc0d570:	7c 7e 1b 78 	mr      r30,r3                                 
ffc0d574:	90 01 00 14 	stw     r0,20(r1)                              
ffc0d578:	93 e1 00 0c 	stw     r31,12(r1)                             
  while ( blocks != NULL ) {                                          
ffc0d57c:	41 82 00 1c 	beq-    ffc0d598 <_Heap_Greedy_free+0x38>      <== NEVER TAKEN
    Heap_Block *current = blocks;                                     
                                                                      
    blocks = blocks->next;                                            
ffc0d580:	87 e4 00 08 	lwzu    r31,8(r4)                              
    _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
ffc0d584:	7f c3 f3 78 	mr      r3,r30                                 
ffc0d588:	48 00 90 5d 	bl      ffc165e4 <_Heap_Free>                  
void _Heap_Greedy_free(                                               
  Heap_Control *heap,                                                 
  Heap_Block *blocks                                                  
)                                                                     
{                                                                     
  while ( blocks != NULL ) {                                          
ffc0d58c:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
ffc0d590:	7f e4 fb 78 	mr      r4,r31                                 
ffc0d594:	40 9e ff ec 	bne+    cr7,ffc0d580 <_Heap_Greedy_free+0x20>  
    Heap_Block *current = blocks;                                     
                                                                      
    blocks = blocks->next;                                            
    _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
  }                                                                   
}                                                                     
ffc0d598:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0d59c:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0d5a0:	7c 08 03 a6 	mtlr    r0                                     
ffc0d5a4:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0d5a8:	38 21 00 10 	addi    r1,r1,16                               
ffc0d5ac:	4e 80 00 20 	blr                                            
                                                                      

ffc15e94 <_Heap_Iterate>: void _Heap_Iterate( Heap_Control *heap, Heap_Block_visitor visitor, void *visitor_arg ) {
ffc15e94:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc15e98:	7c 08 02 a6 	mflr    r0                                     
ffc15e9c:	90 01 00 1c 	stw     r0,28(r1)                              
ffc15ea0:	93 c1 00 10 	stw     r30,16(r1)                             
  Heap_Block *current = heap->first_block;                            
ffc15ea4:	81 23 00 20 	lwz     r9,32(r3)                              
  Heap_Block *end = heap->last_block;                                 
ffc15ea8:	83 c3 00 24 	lwz     r30,36(r3)                             
void _Heap_Iterate(                                                   
  Heap_Control *heap,                                                 
  Heap_Block_visitor visitor,                                         
  void *visitor_arg                                                   
)                                                                     
{                                                                     
ffc15eac:	93 81 00 08 	stw     r28,8(r1)                              
ffc15eb0:	7c 9c 23 78 	mr      r28,r4                                 
  Heap_Block *current = heap->first_block;                            
  Heap_Block *end = heap->last_block;                                 
  bool stop = false;                                                  
                                                                      
  while ( !stop && current != end ) {                                 
ffc15eb4:	7f 89 f0 00 	cmpw    cr7,r9,r30                             
void _Heap_Iterate(                                                   
  Heap_Control *heap,                                                 
  Heap_Block_visitor visitor,                                         
  void *visitor_arg                                                   
)                                                                     
{                                                                     
ffc15eb8:	93 a1 00 0c 	stw     r29,12(r1)                             
ffc15ebc:	7c bd 2b 78 	mr      r29,r5                                 
ffc15ec0:	93 e1 00 14 	stw     r31,20(r1)                             
  Heap_Block *current = heap->first_block;                            
  Heap_Block *end = heap->last_block;                                 
  bool stop = false;                                                  
                                                                      
  while ( !stop && current != end ) {                                 
ffc15ec4:	40 be 00 0c 	bne+    cr7,ffc15ed0 <_Heap_Iterate+0x3c>      <== ALWAYS TAKEN
ffc15ec8:	48 00 00 3c 	b       ffc15f04 <_Heap_Iterate+0x70>          <== NOT EXECUTED
ffc15ecc:	41 9a 00 38 	beq-    cr6,ffc15f04 <_Heap_Iterate+0x70>      
ffc15ed0:	81 49 00 04 	lwz     r10,4(r9)                              
    uintptr_t size = _Heap_Block_size( current );                     
    Heap_Block *next = _Heap_Block_at( current, size );               
    bool used = _Heap_Is_prev_used( next );                           
                                                                      
    stop = (*visitor)( current, size, used, visitor_arg );            
ffc15ed4:	7d 23 4b 78 	mr      r3,r9                                  
ffc15ed8:	7f a6 eb 78 	mr      r6,r29                                 
ffc15edc:	7f 89 03 a6 	mtctr   r28                                    
ffc15ee0:	55 44 00 3c 	rlwinm  r4,r10,0,0,30                          
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
ffc15ee4:	7f e9 22 14 	add     r31,r9,r4                              
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
ffc15ee8:	80 bf 00 04 	lwz     r5,4(r31)                              
ffc15eec:	54 a5 07 fe 	clrlwi  r5,r5,31                               
ffc15ef0:	4e 80 04 21 	bctrl                                          
ffc15ef4:	7f e9 fb 78 	mr      r9,r31                                 
{                                                                     
  Heap_Block *current = heap->first_block;                            
  Heap_Block *end = heap->last_block;                                 
  bool stop = false;                                                  
                                                                      
  while ( !stop && current != end ) {                                 
ffc15ef8:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc15efc:	7f 1e f8 00 	cmpw    cr6,r30,r31                            
ffc15f00:	41 9e ff cc 	beq+    cr7,ffc15ecc <_Heap_Iterate+0x38>      <== ALWAYS TAKEN
                                                                      
    stop = (*visitor)( current, size, used, visitor_arg );            
                                                                      
    current = next;                                                   
  }                                                                   
}                                                                     
ffc15f04:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc15f08:	83 81 00 08 	lwz     r28,8(r1)                              
ffc15f0c:	7c 08 03 a6 	mtlr    r0                                     
ffc15f10:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc15f14:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc15f18:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc15f1c:	38 21 00 18 	addi    r1,r1,24                               
ffc15f20:	4e 80 00 20 	blr                                            
                                                                      

ffc1e864 <_Heap_Size_of_alloc_area>: RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down( uintptr_t value, uintptr_t alignment ) { return value - (value % alignment);
ffc1e864:	81 23 00 10 	lwz     r9,16(r3)                              
RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in_heap(                     
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
ffc1e868:	81 43 00 20 	lwz     r10,32(r3)                             
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
ffc1e86c:	7d 04 4b 96 	divwu   r8,r4,r9                               
ffc1e870:	7d 28 49 d6 	mullw   r9,r8,r9                               
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
ffc1e874:	39 29 ff f8 	addi    r9,r9,-8                               
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
ffc1e878:	7f 89 50 40 	cmplw   cr7,r9,r10                             
ffc1e87c:	41 9c 00 50 	blt-    cr7,ffc1e8cc <_Heap_Size_of_alloc_area+0x68>
ffc1e880:	81 03 00 24 	lwz     r8,36(r3)                              
ffc1e884:	7f 89 40 40 	cmplw   cr7,r9,r8                              
ffc1e888:	41 9d 00 44 	bgt-    cr7,ffc1e8cc <_Heap_Size_of_alloc_area+0x68>
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
ffc1e88c:	80 e9 00 04 	lwz     r7,4(r9)                               
ffc1e890:	54 e7 00 3c 	rlwinm  r7,r7,0,0,30                           
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
ffc1e894:	7d 27 4a 14 	add     r9,r7,r9                               
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
ffc1e898:	7f 8a 48 40 	cmplw   cr7,r10,r9                             
ffc1e89c:	41 9d 00 30 	bgt-    cr7,ffc1e8cc <_Heap_Size_of_alloc_area+0x68><== NEVER TAKEN
ffc1e8a0:	7f 88 48 40 	cmplw   cr7,r8,r9                              
ffc1e8a4:	41 9c 00 28 	blt-    cr7,ffc1e8cc <_Heap_Size_of_alloc_area+0x68><== NEVER TAKEN
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
ffc1e8a8:	81 49 00 04 	lwz     r10,4(r9)                              
  Heap_Block *block = _Heap_Block_of_alloc_area( alloc_begin, page_size );
  Heap_Block *next_block = NULL;                                      
  uintptr_t block_size = 0;                                           
                                                                      
  if ( !_Heap_Is_block_in_heap( heap, block ) ) {                     
    return false;                                                     
ffc1e8ac:	38 60 00 00 	li      r3,0                                   
  block_size = _Heap_Block_size( block );                             
  next_block = _Heap_Block_at( block, block_size );                   
                                                                      
  if (                                                                
    !_Heap_Is_block_in_heap( heap, next_block )                       
      || !_Heap_Is_prev_used( next_block )                            
ffc1e8b0:	71 48 00 01 	andi.   r8,r10,1                               
ffc1e8b4:	41 82 00 20 	beq-    ffc1e8d4 <_Heap_Size_of_alloc_area+0x70><== NEVER TAKEN
  ) {                                                                 
    return false;                                                     
  }                                                                   
                                                                      
  *alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
ffc1e8b8:	20 84 00 04 	subfic  r4,r4,4                                
ffc1e8bc:	7d 24 4a 14 	add     r9,r4,r9                               
ffc1e8c0:	91 25 00 00 	stw     r9,0(r5)                               
                                                                      
  return true;                                                        
ffc1e8c4:	38 60 00 01 	li      r3,1                                   
ffc1e8c8:	4e 80 00 20 	blr                                            
  Heap_Block *block = _Heap_Block_of_alloc_area( alloc_begin, page_size );
  Heap_Block *next_block = NULL;                                      
  uintptr_t block_size = 0;                                           
                                                                      
  if ( !_Heap_Is_block_in_heap( heap, block ) ) {                     
    return false;                                                     
ffc1e8cc:	38 60 00 00 	li      r3,0                                   
ffc1e8d0:	4e 80 00 20 	blr                                            
  }                                                                   
                                                                      
  *alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
                                                                      
  return true;                                                        
}                                                                     
ffc1e8d4:	4e 80 00 20 	blr                                            <== NOT EXECUTED
                                                                      

ffc0b974 <_Heap_Walk>: uintptr_t const min_block_size = heap->min_block_size; Heap_Block *const first_block = heap->first_block; Heap_Block *const last_block = heap->last_block; Heap_Block *block = first_block; Heap_Walk_printer printer = dump ? _Heap_Walk_print : _Heap_Walk_print_nothing;
ffc0b974:	2f 85 00 00 	cmpwi   cr7,r5,0                               
bool _Heap_Walk(                                                      
  Heap_Control *heap,                                                 
  int source,                                                         
  bool dump                                                           
)                                                                     
{                                                                     
ffc0b978:	94 21 ff a0 	stwu    r1,-96(r1)                             
ffc0b97c:	7c 08 02 a6 	mflr    r0                                     
ffc0b980:	91 c1 00 18 	stw     r14,24(r1)                             
ffc0b984:	90 01 00 64 	stw     r0,100(r1)                             
ffc0b988:	92 e1 00 3c 	stw     r23,60(r1)                             
ffc0b98c:	93 01 00 40 	stw     r24,64(r1)                             
ffc0b990:	7c 98 23 78 	mr      r24,r4                                 
ffc0b994:	93 41 00 48 	stw     r26,72(r1)                             
ffc0b998:	93 61 00 4c 	stw     r27,76(r1)                             
ffc0b99c:	93 e1 00 5c 	stw     r31,92(r1)                             
ffc0b9a0:	7c 7f 1b 78 	mr      r31,r3                                 
ffc0b9a4:	91 e1 00 1c 	stw     r15,28(r1)                             
ffc0b9a8:	92 01 00 20 	stw     r16,32(r1)                             
ffc0b9ac:	92 21 00 24 	stw     r17,36(r1)                             
ffc0b9b0:	92 41 00 28 	stw     r18,40(r1)                             
ffc0b9b4:	92 61 00 2c 	stw     r19,44(r1)                             
ffc0b9b8:	92 81 00 30 	stw     r20,48(r1)                             
ffc0b9bc:	92 a1 00 34 	stw     r21,52(r1)                             
ffc0b9c0:	92 c1 00 38 	stw     r22,56(r1)                             
ffc0b9c4:	93 21 00 44 	stw     r25,68(r1)                             
ffc0b9c8:	93 81 00 50 	stw     r28,80(r1)                             
ffc0b9cc:	93 a1 00 54 	stw     r29,84(r1)                             
ffc0b9d0:	93 c1 00 58 	stw     r30,88(r1)                             
  uintptr_t const page_size = heap->page_size;                        
ffc0b9d4:	83 63 00 10 	lwz     r27,16(r3)                             
  uintptr_t const min_block_size = heap->min_block_size;              
ffc0b9d8:	81 c3 00 14 	lwz     r14,20(r3)                             
  Heap_Block *const first_block = heap->first_block;                  
ffc0b9dc:	83 43 00 20 	lwz     r26,32(r3)                             
  Heap_Block *const last_block = heap->last_block;                    
ffc0b9e0:	82 e3 00 24 	lwz     r23,36(r3)                             
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
ffc0b9e4:	41 9e 00 78 	beq-    cr7,ffc0ba5c <_Heap_Walk+0xe8>         
                                                                      
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
ffc0b9e8:	3d 20 00 00 	lis     r9,0                                   
ffc0b9ec:	81 29 28 6c 	lwz     r9,10348(r9)                           
  uintptr_t const min_block_size = heap->min_block_size;              
  Heap_Block *const first_block = heap->first_block;                  
  Heap_Block *const last_block = heap->last_block;                    
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
ffc0b9f0:	3f 20 ff c1 	lis     r25,-63                                
ffc0b9f4:	3b 39 b8 74 	addi    r25,r25,-18316                         
                                                                      
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
ffc0b9f8:	2f 89 00 03 	cmpwi   cr7,r9,3                               
    return true;                                                      
ffc0b9fc:	38 60 00 01 	li      r3,1                                   
  Heap_Block *const last_block = heap->last_block;                    
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
                                                                      
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
ffc0ba00:	41 9e 00 78 	beq-    cr7,ffc0ba78 <_Heap_Walk+0x104>        <== ALWAYS TAKEN
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
ffc0ba04:	80 01 00 64 	lwz     r0,100(r1)                             
ffc0ba08:	81 c1 00 18 	lwz     r14,24(r1)                             
ffc0ba0c:	7c 08 03 a6 	mtlr    r0                                     
ffc0ba10:	81 e1 00 1c 	lwz     r15,28(r1)                             
ffc0ba14:	82 01 00 20 	lwz     r16,32(r1)                             
ffc0ba18:	82 21 00 24 	lwz     r17,36(r1)                             
ffc0ba1c:	82 41 00 28 	lwz     r18,40(r1)                             
ffc0ba20:	82 61 00 2c 	lwz     r19,44(r1)                             
ffc0ba24:	82 81 00 30 	lwz     r20,48(r1)                             
ffc0ba28:	82 a1 00 34 	lwz     r21,52(r1)                             
ffc0ba2c:	82 c1 00 38 	lwz     r22,56(r1)                             
ffc0ba30:	82 e1 00 3c 	lwz     r23,60(r1)                             
ffc0ba34:	83 01 00 40 	lwz     r24,64(r1)                             
ffc0ba38:	83 21 00 44 	lwz     r25,68(r1)                             
ffc0ba3c:	83 41 00 48 	lwz     r26,72(r1)                             
ffc0ba40:	83 61 00 4c 	lwz     r27,76(r1)                             
ffc0ba44:	83 81 00 50 	lwz     r28,80(r1)                             
ffc0ba48:	83 a1 00 54 	lwz     r29,84(r1)                             
ffc0ba4c:	83 c1 00 58 	lwz     r30,88(r1)                             
ffc0ba50:	83 e1 00 5c 	lwz     r31,92(r1)                             
ffc0ba54:	38 21 00 60 	addi    r1,r1,96                               
ffc0ba58:	4e 80 00 20 	blr                                            
  Heap_Block *const last_block = heap->last_block;                    
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
                                                                      
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
ffc0ba5c:	3d 20 00 00 	lis     r9,0                                   
ffc0ba60:	81 29 28 6c 	lwz     r9,10348(r9)                           
  uintptr_t const min_block_size = heap->min_block_size;              
  Heap_Block *const first_block = heap->first_block;                  
  Heap_Block *const last_block = heap->last_block;                    
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
ffc0ba64:	3f 20 ff c1 	lis     r25,-63                                
ffc0ba68:	3b 39 b8 70 	addi    r25,r25,-18320                         
                                                                      
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
ffc0ba6c:	2f 89 00 03 	cmpwi   cr7,r9,3                               
    return true;                                                      
ffc0ba70:	38 60 00 01 	li      r3,1                                   
  Heap_Block *const last_block = heap->last_block;                    
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
                                                                      
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
ffc0ba74:	40 9e ff 90 	bne+    cr7,ffc0ba04 <_Heap_Walk+0x90>         
  Heap_Block *const first_free_block = _Heap_Free_list_first( heap ); 
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  Heap_Block *const first_block = heap->first_block;                  
  Heap_Block *const last_block = heap->last_block;                    
                                                                      
  (*printer)(                                                         
ffc0ba78:	80 ff 00 08 	lwz     r7,8(r31)                              
ffc0ba7c:	3c a0 ff c2 	lis     r5,-62                                 
ffc0ba80:	81 5f 00 0c 	lwz     r10,12(r31)                            
ffc0ba84:	7f 03 c3 78 	mr      r3,r24                                 
ffc0ba88:	81 1f 00 18 	lwz     r8,24(r31)                             
ffc0ba8c:	38 80 00 00 	li      r4,0                                   
ffc0ba90:	81 3f 00 1c 	lwz     r9,28(r31)                             
ffc0ba94:	38 a5 a8 b0 	addi    r5,r5,-22352                           
ffc0ba98:	90 e1 00 0c 	stw     r7,12(r1)                              
ffc0ba9c:	7f 66 db 78 	mr      r6,r27                                 
ffc0baa0:	7d c7 73 78 	mr      r7,r14                                 
ffc0baa4:	7f 29 03 a6 	mtctr   r25                                    
ffc0baa8:	91 41 00 10 	stw     r10,16(r1)                             
ffc0baac:	7f 4a d3 78 	mr      r10,r26                                
ffc0bab0:	92 e1 00 08 	stw     r23,8(r1)                              
ffc0bab4:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0bab8:	4e 80 04 21 	bctrl                                          
    heap->area_begin, heap->area_end,                                 
    first_block, last_block,                                          
    first_free_block, last_free_block                                 
  );                                                                  
                                                                      
  if ( page_size == 0 ) {                                             
ffc0babc:	2f 9b 00 00 	cmpwi   cr7,r27,0                              
ffc0bac0:	41 9e 00 a4 	beq-    cr7,ffc0bb64 <_Heap_Walk+0x1f0>        
    (*printer)( source, true, "page size is zero\n" );                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Addresses_Is_aligned( (void *) page_size ) ) {               
ffc0bac4:	73 67 00 07 	andi.   r7,r27,7                               
ffc0bac8:	40 82 00 c0 	bne-    ffc0bb88 <_Heap_Walk+0x214>            
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
ffc0bacc:	7d 2e db 96 	divwu   r9,r14,r27                             
ffc0bad0:	7d 29 d9 d6 	mullw   r9,r9,r27                              
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {             
ffc0bad4:	7f 8e 48 00 	cmpw    cr7,r14,r9                             
ffc0bad8:	40 9e 00 d8 	bne-    cr7,ffc0bbb0 <_Heap_Walk+0x23c>        
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(             
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;                  
ffc0badc:	39 3a 00 08 	addi    r9,r26,8                               
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
ffc0bae0:	7d 49 db 96 	divwu   r10,r9,r27                             
ffc0bae4:	7d 4a d9 d6 	mullw   r10,r10,r27                            
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if (                                                                
ffc0bae8:	7f 89 50 00 	cmpw    cr7,r9,r10                             
ffc0baec:	40 9e 00 ec 	bne-    cr7,ffc0bbd8 <_Heap_Walk+0x264>        
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
ffc0baf0:	83 9a 00 04 	lwz     r28,4(r26)                             
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_prev_used( first_block ) ) {                         
ffc0baf4:	73 90 00 01 	andi.   r16,r28,1                              
ffc0baf8:	41 82 01 08 	beq-    ffc0bc00 <_Heap_Walk+0x28c>            
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
ffc0bafc:	81 37 00 04 	lwz     r9,4(r23)                              
ffc0bb00:	55 29 00 3c 	rlwinm  r9,r9,0,0,30                           
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
ffc0bb04:	7d 37 4a 14 	add     r9,r23,r9                              
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
ffc0bb08:	81 49 00 04 	lwz     r10,4(r9)                              
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( _Heap_Is_free( last_block ) ) {                                
ffc0bb0c:	71 47 00 01 	andi.   r7,r10,1                               
ffc0bb10:	41 82 00 30 	beq-    ffc0bb40 <_Heap_Walk+0x1cc>            
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if (                                                                
ffc0bb14:	7f 9a 48 00 	cmpw    cr7,r26,r9                             
ffc0bb18:	41 9e 01 0c 	beq-    cr7,ffc0bc24 <_Heap_Walk+0x2b0>        
    _Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
  ) {                                                                 
    (*printer)(                                                       
ffc0bb1c:	3c a0 ff c2 	lis     r5,-62                                 
ffc0bb20:	7f 29 03 a6 	mtctr   r25                                    
ffc0bb24:	7f 03 c3 78 	mr      r3,r24                                 
ffc0bb28:	38 80 00 01 	li      r4,1                                   
ffc0bb2c:	38 a5 aa 18 	addi    r5,r5,-21992                           
ffc0bb30:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0bb34:	4e 80 04 21 	bctrl                                          
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
ffc0bb38:	38 60 00 00 	li      r3,0                                   
ffc0bb3c:	4b ff fe c8 	b       ffc0ba04 <_Heap_Walk+0x90>             
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( _Heap_Is_free( last_block ) ) {                                
    (*printer)(                                                       
ffc0bb40:	3c a0 ff c2 	lis     r5,-62                                 
ffc0bb44:	7f 29 03 a6 	mtctr   r25                                    
ffc0bb48:	7f 03 c3 78 	mr      r3,r24                                 
ffc0bb4c:	38 80 00 01 	li      r4,1                                   
ffc0bb50:	38 a5 aa 00 	addi    r5,r5,-22016                           
ffc0bb54:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0bb58:	4e 80 04 21 	bctrl                                          
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
ffc0bb5c:	38 60 00 00 	li      r3,0                                   
ffc0bb60:	4b ff fe a4 	b       ffc0ba04 <_Heap_Walk+0x90>             
    first_block, last_block,                                          
    first_free_block, last_free_block                                 
  );                                                                  
                                                                      
  if ( page_size == 0 ) {                                             
    (*printer)( source, true, "page size is zero\n" );                
ffc0bb64:	3c a0 ff c2 	lis     r5,-62                                 
ffc0bb68:	7f 29 03 a6 	mtctr   r25                                    
ffc0bb6c:	7f 03 c3 78 	mr      r3,r24                                 
ffc0bb70:	38 80 00 01 	li      r4,1                                   
ffc0bb74:	38 a5 a9 44 	addi    r5,r5,-22204                           
ffc0bb78:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0bb7c:	4e 80 04 21 	bctrl                                          
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
ffc0bb80:	38 60 00 00 	li      r3,0                                   
ffc0bb84:	4b ff fe 80 	b       ffc0ba04 <_Heap_Walk+0x90>             
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Addresses_Is_aligned( (void *) page_size ) ) {               
    (*printer)(                                                       
ffc0bb88:	3c a0 ff c2 	lis     r5,-62                                 
ffc0bb8c:	7f 29 03 a6 	mtctr   r25                                    
ffc0bb90:	7f 03 c3 78 	mr      r3,r24                                 
ffc0bb94:	38 80 00 01 	li      r4,1                                   
ffc0bb98:	38 a5 a9 58 	addi    r5,r5,-22184                           
ffc0bb9c:	7f 66 db 78 	mr      r6,r27                                 
ffc0bba0:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0bba4:	4e 80 04 21 	bctrl                                          
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
ffc0bba8:	38 60 00 00 	li      r3,0                                   
ffc0bbac:	4b ff fe 58 	b       ffc0ba04 <_Heap_Walk+0x90>             
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {             
    (*printer)(                                                       
ffc0bbb0:	3c a0 ff c2 	lis     r5,-62                                 
ffc0bbb4:	7f 29 03 a6 	mtctr   r25                                    
ffc0bbb8:	7f 03 c3 78 	mr      r3,r24                                 
ffc0bbbc:	38 80 00 01 	li      r4,1                                   
ffc0bbc0:	38 a5 a9 78 	addi    r5,r5,-22152                           
ffc0bbc4:	7d c6 73 78 	mr      r6,r14                                 
ffc0bbc8:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0bbcc:	4e 80 04 21 	bctrl                                          
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
ffc0bbd0:	38 60 00 00 	li      r3,0                                   
ffc0bbd4:	4b ff fe 30 	b       ffc0ba04 <_Heap_Walk+0x90>             
  }                                                                   
                                                                      
  if (                                                                
    !_Heap_Is_aligned( _Heap_Alloc_area_of_block( first_block ), page_size )
  ) {                                                                 
    (*printer)(                                                       
ffc0bbd8:	3c a0 ff c2 	lis     r5,-62                                 
ffc0bbdc:	7f 29 03 a6 	mtctr   r25                                    
ffc0bbe0:	7f 03 c3 78 	mr      r3,r24                                 
ffc0bbe4:	38 80 00 01 	li      r4,1                                   
ffc0bbe8:	38 a5 a9 9c 	addi    r5,r5,-22116                           
ffc0bbec:	7f 46 d3 78 	mr      r6,r26                                 
ffc0bbf0:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0bbf4:	4e 80 04 21 	bctrl                                          
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
ffc0bbf8:	38 60 00 00 	li      r3,0                                   
ffc0bbfc:	4b ff fe 08 	b       ffc0ba04 <_Heap_Walk+0x90>             
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_prev_used( first_block ) ) {                         
    (*printer)(                                                       
ffc0bc00:	3c a0 ff c2 	lis     r5,-62                                 
ffc0bc04:	7f 29 03 a6 	mtctr   r25                                    
ffc0bc08:	7f 03 c3 78 	mr      r3,r24                                 
ffc0bc0c:	38 80 00 01 	li      r4,1                                   
ffc0bc10:	38 a5 a9 d0 	addi    r5,r5,-22064                           
ffc0bc14:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0bc18:	4e 80 04 21 	bctrl                                          
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
ffc0bc1c:	38 60 00 00 	li      r3,0                                   
ffc0bc20:	4b ff fd e4 	b       ffc0ba04 <_Heap_Walk+0x90>             
  return &heap->free_list;                                            
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{                                                                     
  return _Heap_Free_list_head(heap)->next;                            
ffc0bc24:	80 df 00 08 	lwz     r6,8(r31)                              
  int source,                                                         
  Heap_Walk_printer printer,                                          
  Heap_Control *heap                                                  
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
ffc0bc28:	80 9f 00 10 	lwz     r4,16(r31)                             
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
  const Heap_Block *prev_block = free_list_tail;                      
  const Heap_Block *free_block = first_free_block;                    
                                                                      
  while ( free_block != free_list_tail ) {                            
ffc0bc2c:	7f 9f 30 00 	cmpw    cr7,r31,r6                             
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
ffc0bc30:	81 3f 00 20 	lwz     r9,32(r31)                             
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
  const Heap_Block *prev_block = free_list_tail;                      
  const Heap_Block *free_block = first_free_block;                    
                                                                      
  while ( free_block != free_list_tail ) {                            
ffc0bc34:	41 9e 00 30 	beq-    cr7,ffc0bc64 <_Heap_Walk+0x2f0>        
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
ffc0bc38:	7f 89 30 40 	cmplw   cr7,r9,r6                              
ffc0bc3c:	40 9d 03 14 	ble-    cr7,ffc0bf50 <_Heap_Walk+0x5dc>        <== ALWAYS TAKEN
    if ( !_Heap_Is_block_in_heap( heap, free_block ) ) {              
      (*printer)(                                                     
ffc0bc40:	3c a0 ff c2 	lis     r5,-62                                 
ffc0bc44:	7f 29 03 a6 	mtctr   r25                                    
ffc0bc48:	7f 03 c3 78 	mr      r3,r24                                 
ffc0bc4c:	38 80 00 01 	li      r4,1                                   
ffc0bc50:	38 a5 aa 48 	addi    r5,r5,-21944                           
ffc0bc54:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0bc58:	4e 80 04 21 	bctrl                                          
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
ffc0bc5c:	38 60 00 00 	li      r3,0                                   
ffc0bc60:	4b ff fd a4 	b       ffc0ba04 <_Heap_Walk+0x90>             
        "block 0x%08x: size %u\n",                                    
        block,                                                        
        block_size                                                    
      );                                                              
    } else {                                                          
      (*printer)(                                                     
ffc0bc64:	3e 80 ff c2 	lis     r20,-62                                
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
      }                                                               
    } else if (prev_used) {                                           
      (*printer)(                                                     
ffc0bc68:	3e a0 ff c2 	lis     r21,-62                                
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
ffc0bc6c:	3e 60 ff c2 	lis     r19,-62                                
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
ffc0bc70:	7f 5d d3 78 	mr      r29,r26                                
        "block 0x%08x: size %u\n",                                    
        block,                                                        
        block_size                                                    
      );                                                              
    } else {                                                          
      (*printer)(                                                     
ffc0bc74:	3a 94 ac 64 	addi    r20,r20,-21404                         
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
      }                                                               
    } else if (prev_used) {                                           
      (*printer)(                                                     
ffc0bc78:	3a b5 ac 4c 	addi    r21,r21,-21428                         
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
ffc0bc7c:	3a 73 ab a8 	addi    r19,r19,-21592                         
ffc0bc80:	3e 20 ff c2 	lis     r17,-62                                
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
ffc0bc84:	3e c0 ff c2 	lis     r22,-62                                
ffc0bc88:	3d e0 ff c2 	lis     r15,-62                                
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
ffc0bc8c:	3e 40 ff c2 	lis     r18,-62                                
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
ffc0bc90:	57 9c 00 3c 	rlwinm  r28,r28,0,0,30                         
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
ffc0bc94:	7f dc ea 14 	add     r30,r28,r29                            
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
ffc0bc98:	7f 89 f0 40 	cmplw   cr7,r9,r30                             
ffc0bc9c:	40 9d 00 30 	ble-    cr7,ffc0bccc <_Heap_Walk+0x358>        <== ALWAYS TAKEN
    Heap_Block *const next_block = _Heap_Block_at( block, block_size );
    uintptr_t const next_block_begin = (uintptr_t) next_block;        
    bool const is_not_last_block = block != last_block;               
                                                                      
    if ( !_Heap_Is_block_in_heap( heap, next_block ) ) {              
      (*printer)(                                                     
ffc0bca0:	3c a0 ff c2 	lis     r5,-62                                 
ffc0bca4:	7f 03 c3 78 	mr      r3,r24                                 
ffc0bca8:	38 80 00 01 	li      r4,1                                   
ffc0bcac:	38 a5 aa e8 	addi    r5,r5,-21784                           
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( next_block_begin <= block_begin && is_not_last_block ) {     
      (*printer)(                                                     
ffc0bcb0:	7f a6 eb 78 	mr      r6,r29                                 
ffc0bcb4:	7f 29 03 a6 	mtctr   r25                                    
ffc0bcb8:	7f c7 f3 78 	mr      r7,r30                                 
ffc0bcbc:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0bcc0:	4e 80 04 21 	bctrl                                          
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
ffc0bcc4:	38 60 00 00 	li      r3,0                                   
ffc0bcc8:	4b ff fd 3c 	b       ffc0ba04 <_Heap_Walk+0x90>             
ffc0bccc:	81 3f 00 24 	lwz     r9,36(r31)                             
ffc0bcd0:	7f 89 f0 40 	cmplw   cr7,r9,r30                             
ffc0bcd4:	41 bc ff cc 	blt-    cr7,ffc0bca0 <_Heap_Walk+0x32c>        
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
ffc0bcd8:	7d 5c db 96 	divwu   r10,r28,r27                            
ffc0bcdc:	7d 4a d9 d6 	mullw   r10,r10,r27                            
    uintptr_t const block_begin = (uintptr_t) block;                  
    uintptr_t const block_size = _Heap_Block_size( block );           
    bool const prev_used = _Heap_Is_prev_used( block );               
    Heap_Block *const next_block = _Heap_Block_at( block, block_size );
    uintptr_t const next_block_begin = (uintptr_t) next_block;        
    bool const is_not_last_block = block != last_block;               
ffc0bce0:	7f a9 ba 78 	xor     r9,r29,r23                             
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
ffc0bce4:	7f 9c 50 00 	cmpw    cr7,r28,r10                            
    uintptr_t const block_begin = (uintptr_t) block;                  
    uintptr_t const block_size = _Heap_Block_size( block );           
    bool const prev_used = _Heap_Is_prev_used( block );               
    Heap_Block *const next_block = _Heap_Block_at( block, block_size );
    uintptr_t const next_block_begin = (uintptr_t) next_block;        
    bool const is_not_last_block = block != last_block;               
ffc0bce8:	7d 29 00 34 	cntlzw  r9,r9                                  
ffc0bcec:	55 29 d9 7e 	rlwinm  r9,r9,27,5,31                          
ffc0bcf0:	69 29 00 01 	xori    r9,r9,1                                
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
ffc0bcf4:	41 9e 00 5c 	beq-    cr7,ffc0bd50 <_Heap_Walk+0x3dc>        
ffc0bcf8:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0bcfc:	40 9e 02 28 	bne-    cr7,ffc0bf24 <_Heap_Walk+0x5b0>        
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
ffc0bd00:	81 3e 00 04 	lwz     r9,4(r30)                              
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
ffc0bd04:	71 27 00 01 	andi.   r7,r9,1                                
ffc0bd08:	41 82 00 d4 	beq-    ffc0bddc <_Heap_Walk+0x468>            
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
      }                                                               
    } else if (prev_used) {                                           
ffc0bd0c:	2f 90 00 00 	cmpwi   cr7,r16,0                              
ffc0bd10:	41 9e 00 a4 	beq-    cr7,ffc0bdb4 <_Heap_Walk+0x440>        
      (*printer)(                                                     
ffc0bd14:	7f 03 c3 78 	mr      r3,r24                                 
ffc0bd18:	7f 29 03 a6 	mtctr   r25                                    
ffc0bd1c:	38 80 00 00 	li      r4,0                                   
ffc0bd20:	7e a5 ab 78 	mr      r5,r21                                 
ffc0bd24:	7f a6 eb 78 	mr      r6,r29                                 
ffc0bd28:	7f 87 e3 78 	mr      r7,r28                                 
ffc0bd2c:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0bd30:	4e 80 04 21 	bctrl                                          
        block->prev_size                                              
      );                                                              
    }                                                                 
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
ffc0bd34:	7f 9a f0 00 	cmpw    cr7,r26,r30                            
ffc0bd38:	41 9e 01 68 	beq-    cr7,ffc0bea0 <_Heap_Walk+0x52c>        
ffc0bd3c:	83 9e 00 04 	lwz     r28,4(r30)                             
ffc0bd40:	7f dd f3 78 	mr      r29,r30                                
ffc0bd44:	81 3f 00 20 	lwz     r9,32(r31)                             
ffc0bd48:	57 90 07 fe 	clrlwi  r16,r28,31                             
ffc0bd4c:	4b ff ff 44 	b       ffc0bc90 <_Heap_Walk+0x31c>            
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( block_size < min_block_size && is_not_last_block ) {         
ffc0bd50:	7f 8e e0 40 	cmplw   cr7,r14,r28                            
ffc0bd54:	40 9d 00 3c 	ble-    cr7,ffc0bd90 <_Heap_Walk+0x41c>        
ffc0bd58:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0bd5c:	41 9e ff a4 	beq+    cr7,ffc0bd00 <_Heap_Walk+0x38c>        <== NEVER TAKEN
      (*printer)(                                                     
ffc0bd60:	3c a0 ff c2 	lis     r5,-62                                 
ffc0bd64:	7f 29 03 a6 	mtctr   r25                                    
ffc0bd68:	7f 03 c3 78 	mr      r3,r24                                 
ffc0bd6c:	38 80 00 01 	li      r4,1                                   
ffc0bd70:	38 a5 ab 48 	addi    r5,r5,-21688                           
ffc0bd74:	7f a6 eb 78 	mr      r6,r29                                 
ffc0bd78:	7f 87 e3 78 	mr      r7,r28                                 
ffc0bd7c:	7d c8 73 78 	mr      r8,r14                                 
ffc0bd80:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0bd84:	4e 80 04 21 	bctrl                                          
        block,                                                        
        block_size,                                                   
        min_block_size                                                
      );                                                              
                                                                      
      return false;                                                   
ffc0bd88:	38 60 00 00 	li      r3,0                                   
ffc0bd8c:	4b ff fc 78 	b       ffc0ba04 <_Heap_Walk+0x90>             
    }                                                                 
                                                                      
    if ( next_block_begin <= block_begin && is_not_last_block ) {     
ffc0bd90:	7f 9d f0 40 	cmplw   cr7,r29,r30                            
ffc0bd94:	41 bc ff 6c 	blt-    cr7,ffc0bd00 <_Heap_Walk+0x38c>        
ffc0bd98:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0bd9c:	41 9e ff 64 	beq+    cr7,ffc0bd00 <_Heap_Walk+0x38c>        
      (*printer)(                                                     
ffc0bda0:	3c a0 ff c2 	lis     r5,-62                                 
ffc0bda4:	7f 03 c3 78 	mr      r3,r24                                 
ffc0bda8:	38 80 00 01 	li      r4,1                                   
ffc0bdac:	38 a5 ab 74 	addi    r5,r5,-21644                           
ffc0bdb0:	4b ff ff 00 	b       ffc0bcb0 <_Heap_Walk+0x33c>            
        "block 0x%08x: size %u\n",                                    
        block,                                                        
        block_size                                                    
      );                                                              
    } else {                                                          
      (*printer)(                                                     
ffc0bdb4:	7f a6 eb 78 	mr      r6,r29                                 
ffc0bdb8:	81 1d 00 00 	lwz     r8,0(r29)                              
ffc0bdbc:	7f 03 c3 78 	mr      r3,r24                                 
ffc0bdc0:	7f 29 03 a6 	mtctr   r25                                    
ffc0bdc4:	38 80 00 00 	li      r4,0                                   
ffc0bdc8:	7e 85 a3 78 	mr      r5,r20                                 
ffc0bdcc:	7f 87 e3 78 	mr      r7,r28                                 
ffc0bdd0:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0bdd4:	4e 80 04 21 	bctrl                                          
ffc0bdd8:	4b ff ff 5c 	b       ffc0bd34 <_Heap_Walk+0x3c0>            
    false,                                                            
    "block 0x%08x: size %u, prev 0x%08x%s, next 0x%08x%s\n",          
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
ffc0bddc:	81 1d 00 0c 	lwz     r8,12(r29)                             
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
ffc0bde0:	81 3f 00 08 	lwz     r9,8(r31)                              
  return _Heap_Free_list_head(heap)->next;                            
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_last( Heap_Control *heap )
{                                                                     
  return _Heap_Free_list_tail(heap)->prev;                            
ffc0bde4:	80 ff 00 0c 	lwz     r7,12(r31)                             
ffc0bde8:	7f 89 40 00 	cmpw    cr7,r9,r8                              
ffc0bdec:	41 9e 00 f4 	beq-    cr7,ffc0bee0 <_Heap_Walk+0x56c>        
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
ffc0bdf0:	7f 9f 40 00 	cmpw    cr7,r31,r8                             
ffc0bdf4:	41 9e 00 fc 	beq-    cr7,ffc0bef0 <_Heap_Walk+0x57c>        
ffc0bdf8:	39 36 ac 18 	addi    r9,r22,-21480                          
    block->next,                                                      
    block->next == last_free_block ?                                  
ffc0bdfc:	81 5d 00 08 	lwz     r10,8(r29)                             
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
ffc0be00:	7f 87 50 00 	cmpw    cr7,r7,r10                             
ffc0be04:	41 9e 00 d4 	beq-    cr7,ffc0bed8 <_Heap_Walk+0x564>        
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
ffc0be08:	7f 9f 50 00 	cmpw    cr7,r31,r10                            
ffc0be0c:	41 9e 00 dc 	beq-    cr7,ffc0bee8 <_Heap_Walk+0x574>        
ffc0be10:	38 f6 ac 18 	addi    r7,r22,-21480                          
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
ffc0be14:	90 e1 00 08 	stw     r7,8(r1)                               
ffc0be18:	7f 03 c3 78 	mr      r3,r24                                 
ffc0be1c:	38 80 00 00 	li      r4,0                                   
ffc0be20:	7f 29 03 a6 	mtctr   r25                                    
ffc0be24:	7e 65 9b 78 	mr      r5,r19                                 
ffc0be28:	7f a6 eb 78 	mr      r6,r29                                 
ffc0be2c:	7f 87 e3 78 	mr      r7,r28                                 
ffc0be30:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0be34:	4e 80 04 21 	bctrl                                          
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
  );                                                                  
                                                                      
  if ( block_size != next_block->prev_size ) {                        
ffc0be38:	81 1e 00 00 	lwz     r8,0(r30)                              
ffc0be3c:	7f 9c 40 00 	cmpw    cr7,r28,r8                             
ffc0be40:	40 9e 00 68 	bne-    cr7,ffc0bea8 <_Heap_Walk+0x534>        
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !prev_used ) {                                                 
ffc0be44:	2f 90 00 00 	cmpwi   cr7,r16,0                              
ffc0be48:	41 9e 00 b4 	beq-    cr7,ffc0befc <_Heap_Walk+0x588>        
  return &heap->free_list;                                            
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{                                                                     
  return _Heap_Free_list_head(heap)->next;                            
ffc0be4c:	81 3f 00 08 	lwz     r9,8(r31)                              
)                                                                     
{                                                                     
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *free_block = _Heap_Free_list_first( heap );       
                                                                      
  while ( free_block != free_list_tail ) {                            
ffc0be50:	7f 9f 48 00 	cmpw    cr7,r31,r9                             
ffc0be54:	41 9e 00 24 	beq-    cr7,ffc0be78 <_Heap_Walk+0x504>        <== NEVER TAKEN
    if ( free_block == block ) {                                      
ffc0be58:	7f 9d 48 00 	cmpw    cr7,r29,r9                             
ffc0be5c:	40 be 00 0c 	bne+    cr7,ffc0be68 <_Heap_Walk+0x4f4>        
ffc0be60:	4b ff fe d4 	b       ffc0bd34 <_Heap_Walk+0x3c0>            
ffc0be64:	41 ba fe d0 	beq-    cr6,ffc0bd34 <_Heap_Walk+0x3c0>        
      return true;                                                    
    }                                                                 
    free_block = free_block->next;                                    
ffc0be68:	81 29 00 08 	lwz     r9,8(r9)                               
)                                                                     
{                                                                     
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *free_block = _Heap_Free_list_first( heap );       
                                                                      
  while ( free_block != free_list_tail ) {                            
ffc0be6c:	7f 9f 48 00 	cmpw    cr7,r31,r9                             
    if ( free_block == block ) {                                      
ffc0be70:	7f 1d 48 00 	cmpw    cr6,r29,r9                             
)                                                                     
{                                                                     
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *free_block = _Heap_Free_list_first( heap );       
                                                                      
  while ( free_block != free_list_tail ) {                            
ffc0be74:	40 9e ff f0 	bne+    cr7,ffc0be64 <_Heap_Walk+0x4f0>        
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {                 
    (*printer)(                                                       
ffc0be78:	3c a0 ff c2 	lis     r5,-62                                 
ffc0be7c:	7f 29 03 a6 	mtctr   r25                                    
ffc0be80:	7f 03 c3 78 	mr      r3,r24                                 
ffc0be84:	38 80 00 01 	li      r4,1                                   
ffc0be88:	38 a5 ac 8c 	addi    r5,r5,-21364                           
ffc0be8c:	7f a6 eb 78 	mr      r6,r29                                 
ffc0be90:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0be94:	4e 80 04 21 	bctrl                                          
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
ffc0be98:	38 60 00 00 	li      r3,0                                   
ffc0be9c:	4b ff fb 68 	b       ffc0ba04 <_Heap_Walk+0x90>             
    }                                                                 
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
ffc0bea0:	38 60 00 01 	li      r3,1                                   
ffc0bea4:	4b ff fb 60 	b       ffc0ba04 <_Heap_Walk+0x90>             
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
  );                                                                  
                                                                      
  if ( block_size != next_block->prev_size ) {                        
    (*printer)(                                                       
ffc0bea8:	3c a0 ff c2 	lis     r5,-62                                 
ffc0beac:	7f 29 03 a6 	mtctr   r25                                    
ffc0beb0:	7f 03 c3 78 	mr      r3,r24                                 
ffc0beb4:	38 80 00 01 	li      r4,1                                   
ffc0beb8:	38 a5 ab e0 	addi    r5,r5,-21536                           
ffc0bebc:	7f a6 eb 78 	mr      r6,r29                                 
ffc0bec0:	7f 87 e3 78 	mr      r7,r28                                 
ffc0bec4:	7f c9 f3 78 	mr      r9,r30                                 
ffc0bec8:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0becc:	4e 80 04 21 	bctrl                                          
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
ffc0bed0:	38 60 00 00 	li      r3,0                                   
ffc0bed4:	4b ff fb 30 	b       ffc0ba04 <_Heap_Walk+0x90>             
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
ffc0bed8:	38 f1 a8 94 	addi    r7,r17,-22380                          
ffc0bedc:	4b ff ff 38 	b       ffc0be14 <_Heap_Walk+0x4a0>            
ffc0bee0:	39 32 a8 78 	addi    r9,r18,-22408                          
ffc0bee4:	4b ff ff 18 	b       ffc0bdfc <_Heap_Walk+0x488>            
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
ffc0bee8:	38 ef a8 a4 	addi    r7,r15,-22364                          
ffc0beec:	4b ff ff 28 	b       ffc0be14 <_Heap_Walk+0x4a0>            
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
ffc0bef0:	3d 40 ff c2 	lis     r10,-62                                
ffc0bef4:	39 2a a8 88 	addi    r9,r10,-22392                          
ffc0bef8:	4b ff ff 04 	b       ffc0bdfc <_Heap_Walk+0x488>            
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !prev_used ) {                                                 
    (*printer)(                                                       
ffc0befc:	3c a0 ff c2 	lis     r5,-62                                 
ffc0bf00:	7f 29 03 a6 	mtctr   r25                                    
ffc0bf04:	7f 03 c3 78 	mr      r3,r24                                 
ffc0bf08:	38 80 00 01 	li      r4,1                                   
ffc0bf0c:	38 a5 ac 1c 	addi    r5,r5,-21476                           
ffc0bf10:	7f a6 eb 78 	mr      r6,r29                                 
ffc0bf14:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0bf18:	4e 80 04 21 	bctrl                                          
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
ffc0bf1c:	38 60 00 00 	li      r3,0                                   
ffc0bf20:	4b ff fa e4 	b       ffc0ba04 <_Heap_Walk+0x90>             
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
      (*printer)(                                                     
ffc0bf24:	3c a0 ff c2 	lis     r5,-62                                 
ffc0bf28:	7f 29 03 a6 	mtctr   r25                                    
ffc0bf2c:	7f 03 c3 78 	mr      r3,r24                                 
ffc0bf30:	38 80 00 01 	li      r4,1                                   
ffc0bf34:	38 a5 ab 18 	addi    r5,r5,-21736                           
ffc0bf38:	7f a6 eb 78 	mr      r6,r29                                 
ffc0bf3c:	7f 87 e3 78 	mr      r7,r28                                 
ffc0bf40:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0bf44:	4e 80 04 21 	bctrl                                          
        "block 0x%08x: block size %u not page aligned\n",             
        block,                                                        
        block_size                                                    
      );                                                              
                                                                      
      return false;                                                   
ffc0bf48:	38 60 00 00 	li      r3,0                                   
ffc0bf4c:	4b ff fa b8 	b       ffc0ba04 <_Heap_Walk+0x90>             
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
ffc0bf50:	80 bf 00 24 	lwz     r5,36(r31)                             
ffc0bf54:	7f 85 30 40 	cmplw   cr7,r5,r6                              
ffc0bf58:	41 bc fc e8 	blt-    cr7,ffc0bc40 <_Heap_Walk+0x2cc>        <== NEVER TAKEN
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(             
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;                  
ffc0bf5c:	39 46 00 08 	addi    r10,r6,8                               
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
ffc0bf60:	7d 0a 23 96 	divwu   r8,r10,r4                              
ffc0bf64:	7d 08 21 d6 	mullw   r8,r8,r4                               
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if (                                                              
ffc0bf68:	7f 8a 40 00 	cmpw    cr7,r10,r8                             
ffc0bf6c:	40 9e 00 cc 	bne-    cr7,ffc0c038 <_Heap_Walk+0x6c4>        <== NEVER TAKEN
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
ffc0bf70:	81 46 00 04 	lwz     r10,4(r6)                              
ffc0bf74:	55 4a 00 3c 	rlwinm  r10,r10,0,0,30                         
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
ffc0bf78:	7d 46 52 14 	add     r10,r6,r10                             
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
ffc0bf7c:	81 4a 00 04 	lwz     r10,4(r10)                             
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
ffc0bf80:	71 47 00 01 	andi.   r7,r10,1                               
ffc0bf84:	40 82 00 90 	bne-    ffc0c014 <_Heap_Walk+0x6a0>            <== NEVER TAKEN
ffc0bf88:	7f e8 fb 78 	mr      r8,r31                                 
ffc0bf8c:	7c c3 33 78 	mr      r3,r6                                  
ffc0bf90:	48 00 00 54 	b       ffc0bfe4 <_Heap_Walk+0x670>            
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    prev_block = free_block;                                          
    free_block = free_block->next;                                    
ffc0bf94:	80 c6 00 08 	lwz     r6,8(r6)                               
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
  const Heap_Block *prev_block = free_list_tail;                      
  const Heap_Block *free_block = first_free_block;                    
                                                                      
  while ( free_block != free_list_tail ) {                            
ffc0bf98:	7f 9f 30 00 	cmpw    cr7,r31,r6                             
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
ffc0bf9c:	7f 06 48 40 	cmplw   cr6,r6,r9                              
ffc0bfa0:	7c 86 28 40 	cmplw   cr1,r6,r5                              
ffc0bfa4:	41 be fc c0 	beq-    cr7,ffc0bc64 <_Heap_Walk+0x2f0>        
ffc0bfa8:	41 b8 fc 98 	blt-    cr6,ffc0bc40 <_Heap_Walk+0x2cc>        
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(             
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;                  
ffc0bfac:	39 46 00 08 	addi    r10,r6,8                               
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
ffc0bfb0:	41 a5 fc 90 	bgt-    cr1,ffc0bc40 <_Heap_Walk+0x2cc>        <== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
ffc0bfb4:	7c ea 23 96 	divwu   r7,r10,r4                              
ffc0bfb8:	7c e7 21 d6 	mullw   r7,r7,r4                               
ffc0bfbc:	7c 68 1b 78 	mr      r8,r3                                  
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if (                                                              
ffc0bfc0:	7f 8a 38 00 	cmpw    cr7,r10,r7                             
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
ffc0bfc4:	7c c3 33 78 	mr      r3,r6                                  
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if (                                                              
ffc0bfc8:	40 9e 00 70 	bne-    cr7,ffc0c038 <_Heap_Walk+0x6c4>        
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
ffc0bfcc:	81 46 00 04 	lwz     r10,4(r6)                              
ffc0bfd0:	55 4a 00 3c 	rlwinm  r10,r10,0,0,30                         
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
ffc0bfd4:	7d 46 52 14 	add     r10,r6,r10                             
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
ffc0bfd8:	81 4a 00 04 	lwz     r10,4(r10)                             
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
ffc0bfdc:	71 47 00 01 	andi.   r7,r10,1                               
ffc0bfe0:	40 82 00 34 	bne-    ffc0c014 <_Heap_Walk+0x6a0>            
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( free_block->prev != prev_block ) {                           
ffc0bfe4:	80 e6 00 0c 	lwz     r7,12(r6)                              
ffc0bfe8:	7f 87 40 00 	cmpw    cr7,r7,r8                              
ffc0bfec:	41 9e ff a8 	beq+    cr7,ffc0bf94 <_Heap_Walk+0x620>        
      (*printer)(                                                     
ffc0bff0:	3c a0 ff c2 	lis     r5,-62                                 
ffc0bff4:	7f 29 03 a6 	mtctr   r25                                    
ffc0bff8:	7f 03 c3 78 	mr      r3,r24                                 
ffc0bffc:	38 80 00 01 	li      r4,1                                   
ffc0c000:	38 a5 aa b4 	addi    r5,r5,-21836                           
ffc0c004:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0c008:	4e 80 04 21 	bctrl                                          
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
ffc0c00c:	38 60 00 00 	li      r3,0                                   
ffc0c010:	4b ff f9 f4 	b       ffc0ba04 <_Heap_Walk+0x90>             
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
      (*printer)(                                                     
ffc0c014:	3c a0 ff c2 	lis     r5,-62                                 
ffc0c018:	7f 29 03 a6 	mtctr   r25                                    
ffc0c01c:	7f 03 c3 78 	mr      r3,r24                                 
ffc0c020:	38 80 00 01 	li      r4,1                                   
ffc0c024:	38 a5 aa 98 	addi    r5,r5,-21864                           
ffc0c028:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0c02c:	4e 80 04 21 	bctrl                                          
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
ffc0c030:	38 60 00 00 	li      r3,0                                   
ffc0c034:	4b ff f9 d0 	b       ffc0ba04 <_Heap_Walk+0x90>             
    }                                                                 
                                                                      
    if (                                                              
      !_Heap_Is_aligned( _Heap_Alloc_area_of_block( free_block ), page_size )
    ) {                                                               
      (*printer)(                                                     
ffc0c038:	3c a0 ff c2 	lis     r5,-62                                 
ffc0c03c:	7f 29 03 a6 	mtctr   r25                                    
ffc0c040:	7f 03 c3 78 	mr      r3,r24                                 
ffc0c044:	38 80 00 01 	li      r4,1                                   
ffc0c048:	38 a5 aa 68 	addi    r5,r5,-21912                           
ffc0c04c:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0c050:	4e 80 04 21 	bctrl                                          
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
ffc0c054:	38 60 00 00 	li      r3,0                                   
ffc0c058:	4b ff f9 ac 	b       ffc0ba04 <_Heap_Walk+0x90>             
                                                                      

ffc0b874 <_Heap_Walk_print>: /* Do nothing */ } static void _Heap_Walk_print( int source, bool error, const char *fmt, ... ) {
ffc0b874:	94 21 ff 88 	stwu    r1,-120(r1)                            
ffc0b878:	7c 08 02 a6 	mflr    r0                                     
ffc0b87c:	7c 6b 1b 78 	mr      r11,r3                                 
ffc0b880:	90 01 00 7c 	stw     r0,124(r1)                             
ffc0b884:	93 e1 00 74 	stw     r31,116(r1)                            
ffc0b888:	90 c1 00 1c 	stw     r6,28(r1)                              
ffc0b88c:	90 e1 00 20 	stw     r7,32(r1)                              
ffc0b890:	91 01 00 24 	stw     r8,36(r1)                              
ffc0b894:	91 21 00 28 	stw     r9,40(r1)                              
ffc0b898:	91 41 00 2c 	stw     r10,44(r1)                             
ffc0b89c:	40 86 00 24 	bne-    cr1,ffc0b8c0 <_Heap_Walk_print+0x4c>   <== ALWAYS TAKEN
ffc0b8a0:	d8 21 00 30 	stfd    f1,48(r1)                              <== NOT EXECUTED
ffc0b8a4:	d8 41 00 38 	stfd    f2,56(r1)                              <== NOT EXECUTED
ffc0b8a8:	d8 61 00 40 	stfd    f3,64(r1)                              <== NOT EXECUTED
ffc0b8ac:	d8 81 00 48 	stfd    f4,72(r1)                              <== NOT EXECUTED
ffc0b8b0:	d8 a1 00 50 	stfd    f5,80(r1)                              <== NOT EXECUTED
ffc0b8b4:	d8 c1 00 58 	stfd    f6,88(r1)                              <== NOT EXECUTED
ffc0b8b8:	d8 e1 00 60 	stfd    f7,96(r1)                              <== NOT EXECUTED
ffc0b8bc:	d9 01 00 68 	stfd    f8,104(r1)                             <== NOT EXECUTED
  va_list ap;                                                         
                                                                      
  if ( error ) {                                                      
ffc0b8c0:	2f 84 00 00 	cmpwi   cr7,r4,0                               
{                                                                     
  /* Do nothing */                                                    
}                                                                     
                                                                      
static void _Heap_Walk_print( int source, bool error, const char *fmt, ... )
{                                                                     
ffc0b8c4:	7c bf 2b 78 	mr      r31,r5                                 
  va_list ap;                                                         
                                                                      
  if ( error ) {                                                      
ffc0b8c8:	40 9e 00 58 	bne-    cr7,ffc0b920 <_Heap_Walk_print+0xac>   
    printk( "FAIL[%d]: ", source );                                   
  } else {                                                            
    printk( "PASS[%d]: ", source );                                   
ffc0b8cc:	3c 60 ff c2 	lis     r3,-62                                 
ffc0b8d0:	7d 64 5b 78 	mr      r4,r11                                 
ffc0b8d4:	38 63 a8 6c 	addi    r3,r3,-22420                           
ffc0b8d8:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0b8dc:	4b ff a5 95 	bl      ffc05e70 <printk>                      
  }                                                                   
                                                                      
  va_start( ap, fmt );                                                
ffc0b8e0:	39 20 00 03 	li      r9,3                                   
ffc0b8e4:	99 21 00 08 	stb     r9,8(r1)                               
ffc0b8e8:	39 20 00 00 	li      r9,0                                   
  vprintk( fmt, ap );                                                 
ffc0b8ec:	7f e3 fb 78 	mr      r3,r31                                 
    printk( "FAIL[%d]: ", source );                                   
  } else {                                                            
    printk( "PASS[%d]: ", source );                                   
  }                                                                   
                                                                      
  va_start( ap, fmt );                                                
ffc0b8f0:	99 21 00 09 	stb     r9,9(r1)                               
ffc0b8f4:	39 21 00 80 	addi    r9,r1,128                              
  vprintk( fmt, ap );                                                 
ffc0b8f8:	38 81 00 08 	addi    r4,r1,8                                
    printk( "FAIL[%d]: ", source );                                   
  } else {                                                            
    printk( "PASS[%d]: ", source );                                   
  }                                                                   
                                                                      
  va_start( ap, fmt );                                                
ffc0b8fc:	91 21 00 0c 	stw     r9,12(r1)                              
ffc0b900:	39 21 00 10 	addi    r9,r1,16                               
ffc0b904:	91 21 00 10 	stw     r9,16(r1)                              
  vprintk( fmt, ap );                                                 
ffc0b908:	4b ff d6 91 	bl      ffc08f98 <vprintk>                     
  va_end( ap );                                                       
}                                                                     
ffc0b90c:	80 01 00 7c 	lwz     r0,124(r1)                             
ffc0b910:	83 e1 00 74 	lwz     r31,116(r1)                            
ffc0b914:	7c 08 03 a6 	mtlr    r0                                     
ffc0b918:	38 21 00 78 	addi    r1,r1,120                              
ffc0b91c:	4e 80 00 20 	blr                                            
static void _Heap_Walk_print( int source, bool error, const char *fmt, ... )
{                                                                     
  va_list ap;                                                         
                                                                      
  if ( error ) {                                                      
    printk( "FAIL[%d]: ", source );                                   
ffc0b920:	3c 60 ff c2 	lis     r3,-62                                 
ffc0b924:	7d 64 5b 78 	mr      r4,r11                                 
ffc0b928:	38 63 a8 60 	addi    r3,r3,-22432                           
ffc0b92c:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0b930:	4b ff a5 41 	bl      ffc05e70 <printk>                      
  } else {                                                            
    printk( "PASS[%d]: ", source );                                   
  }                                                                   
                                                                      
  va_start( ap, fmt );                                                
ffc0b934:	39 20 00 03 	li      r9,3                                   
ffc0b938:	99 21 00 08 	stb     r9,8(r1)                               
ffc0b93c:	39 20 00 00 	li      r9,0                                   
  vprintk( fmt, ap );                                                 
ffc0b940:	7f e3 fb 78 	mr      r3,r31                                 
    printk( "FAIL[%d]: ", source );                                   
  } else {                                                            
    printk( "PASS[%d]: ", source );                                   
  }                                                                   
                                                                      
  va_start( ap, fmt );                                                
ffc0b944:	99 21 00 09 	stb     r9,9(r1)                               
ffc0b948:	39 21 00 80 	addi    r9,r1,128                              
  vprintk( fmt, ap );                                                 
ffc0b94c:	38 81 00 08 	addi    r4,r1,8                                
    printk( "FAIL[%d]: ", source );                                   
  } else {                                                            
    printk( "PASS[%d]: ", source );                                   
  }                                                                   
                                                                      
  va_start( ap, fmt );                                                
ffc0b950:	91 21 00 0c 	stw     r9,12(r1)                              
ffc0b954:	39 21 00 10 	addi    r9,r1,16                               
ffc0b958:	91 21 00 10 	stw     r9,16(r1)                              
  vprintk( fmt, ap );                                                 
ffc0b95c:	4b ff d6 3d 	bl      ffc08f98 <vprintk>                     
  va_end( ap );                                                       
}                                                                     
ffc0b960:	80 01 00 7c 	lwz     r0,124(r1)                             
ffc0b964:	83 e1 00 74 	lwz     r31,116(r1)                            
ffc0b968:	7c 08 03 a6 	mtlr    r0                                     
ffc0b96c:	38 21 00 78 	addi    r1,r1,120                              
ffc0b970:	4e 80 00 20 	blr                                            
                                                                      

ffc0a4cc <_IO_Initialize_all_drivers>: void _IO_Initialize_all_drivers( void ) {
ffc0a4cc:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0a4d0:	7c 08 02 a6 	mflr    r0                                     
ffc0a4d4:	93 c1 00 08 	stw     r30,8(r1)                              
   rtems_device_major_number major;                                   
                                                                      
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )         
ffc0a4d8:	3f c0 00 00 	lis     r30,0                                  
ffc0a4dc:	81 3e 28 a4 	lwz     r9,10404(r30)                          
  for ( index = 0 ; index < drivers_in_table ; index++ )              
    _IO_Driver_address_table[index] = driver_table[index];            
}                                                                     
                                                                      
void _IO_Initialize_all_drivers( void )                               
{                                                                     
ffc0a4e0:	90 01 00 14 	stw     r0,20(r1)                              
   rtems_device_major_number major;                                   
                                                                      
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )         
ffc0a4e4:	2f 89 00 00 	cmpwi   cr7,r9,0                               
  for ( index = 0 ; index < drivers_in_table ; index++ )              
    _IO_Driver_address_table[index] = driver_table[index];            
}                                                                     
                                                                      
void _IO_Initialize_all_drivers( void )                               
{                                                                     
ffc0a4e8:	93 e1 00 0c 	stw     r31,12(r1)                             
   rtems_device_major_number major;                                   
                                                                      
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )         
ffc0a4ec:	41 9e 00 2c 	beq-    cr7,ffc0a518 <_IO_Initialize_all_drivers+0x4c><== NEVER TAKEN
ffc0a4f0:	3b e0 00 00 	li      r31,0                                  
ffc0a4f4:	3b de 28 a4 	addi    r30,r30,10404                          
     (void) rtems_io_initialize( major, 0, NULL );                    
ffc0a4f8:	7f e3 fb 78 	mr      r3,r31                                 
ffc0a4fc:	38 80 00 00 	li      r4,0                                   
ffc0a500:	38 a0 00 00 	li      r5,0                                   
ffc0a504:	48 00 60 ad 	bl      ffc105b0 <rtems_io_initialize>         
                                                                      
void _IO_Initialize_all_drivers( void )                               
{                                                                     
   rtems_device_major_number major;                                   
                                                                      
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )         
ffc0a508:	81 3e 00 00 	lwz     r9,0(r30)                              
ffc0a50c:	3b ff 00 01 	addi    r31,r31,1                              
ffc0a510:	7f 89 f8 40 	cmplw   cr7,r9,r31                             
ffc0a514:	41 9d ff e4 	bgt+    cr7,ffc0a4f8 <_IO_Initialize_all_drivers+0x2c>
     (void) rtems_io_initialize( major, 0, NULL );                    
}                                                                     
ffc0a518:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0a51c:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0a520:	7c 08 03 a6 	mtlr    r0                                     
ffc0a524:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0a528:	38 21 00 10 	addi    r1,r1,16                               
ffc0a52c:	4e 80 00 20 	blr                                            
                                                                      

ffc0a3b8 <_IO_Manager_initialization>: #include <rtems/score/wkspace.h> #include <string.h> void _IO_Manager_initialization(void) {
ffc0a3b8:	94 21 ff e0 	stwu    r1,-32(r1)                             
  uint32_t                    index;                                  
  rtems_driver_address_table *driver_table;                           
  uint32_t                    drivers_in_table;                       
  uint32_t                    number_of_drivers;                      
                                                                      
  driver_table      = rtems_configuration_get_device_driver_table();  
ffc0a3bc:	3d 20 ff c2 	lis     r9,-62                                 
ffc0a3c0:	39 29 ea f8 	addi    r9,r9,-5384                            
#include <rtems/score/wkspace.h>                                      
                                                                      
#include <string.h>                                                   
                                                                      
void _IO_Manager_initialization(void)                                 
{                                                                     
ffc0a3c4:	7c 08 02 a6 	mflr    r0                                     
ffc0a3c8:	93 a1 00 14 	stw     r29,20(r1)                             
ffc0a3cc:	93 c1 00 18 	stw     r30,24(r1)                             
  uint32_t                    drivers_in_table;                       
  uint32_t                    number_of_drivers;                      
                                                                      
  driver_table      = rtems_configuration_get_device_driver_table();  
  drivers_in_table  = rtems_configuration_get_number_of_device_drivers();
  number_of_drivers = rtems_configuration_get_maximum_drivers();      
ffc0a3d0:	83 a9 00 34 	lwz     r29,52(r9)                             
  rtems_driver_address_table *driver_table;                           
  uint32_t                    drivers_in_table;                       
  uint32_t                    number_of_drivers;                      
                                                                      
  driver_table      = rtems_configuration_get_device_driver_table();  
  drivers_in_table  = rtems_configuration_get_number_of_device_drivers();
ffc0a3d4:	83 c9 00 38 	lwz     r30,56(r9)                             
#include <rtems/score/wkspace.h>                                      
                                                                      
#include <string.h>                                                   
                                                                      
void _IO_Manager_initialization(void)                                 
{                                                                     
ffc0a3d8:	93 e1 00 1c 	stw     r31,28(r1)                             
                                                                      
  /*                                                                  
   *  If the user claims there are less drivers than are actually in  
   *  the table, then let's just go with the table's count.           
   */                                                                 
  if ( number_of_drivers <= drivers_in_table )                        
ffc0a3dc:	7f 9e e8 40 	cmplw   cr7,r30,r29                            
#include <rtems/score/wkspace.h>                                      
                                                                      
#include <string.h>                                                   
                                                                      
void _IO_Manager_initialization(void)                                 
{                                                                     
ffc0a3e0:	90 01 00 24 	stw     r0,36(r1)                              
ffc0a3e4:	93 61 00 0c 	stw     r27,12(r1)                             
ffc0a3e8:	93 81 00 10 	stw     r28,16(r1)                             
  uint32_t                    index;                                  
  rtems_driver_address_table *driver_table;                           
  uint32_t                    drivers_in_table;                       
  uint32_t                    number_of_drivers;                      
                                                                      
  driver_table      = rtems_configuration_get_device_driver_table();  
ffc0a3ec:	83 e9 00 3c 	lwz     r31,60(r9)                             
                                                                      
  /*                                                                  
   *  If the user claims there are less drivers than are actually in  
   *  the table, then let's just go with the table's count.           
   */                                                                 
  if ( number_of_drivers <= drivers_in_table )                        
ffc0a3f0:	40 9c 00 a8 	bge-    cr7,ffc0a498 <_IO_Manager_initialization+0xe0>
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
ffc0a3f4:	1f 7d 00 18 	mulli   r27,r29,24                             
   *  The application requested extra slots in the driver table, so we
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
      _Workspace_Allocate_or_fatal_error(                             
ffc0a3f8:	7f 63 db 78 	mr      r3,r27                                 
ffc0a3fc:	48 00 3b 99 	bl      ffc0df94 <_Workspace_Allocate_or_fatal_error>
  /*                                                                  
   *  The application requested extra slots in the driver table, so we
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
ffc0a400:	3f 80 00 00 	lis     r28,0                                  
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
ffc0a404:	3d 20 00 00 	lis     r9,0                                   
  /*                                                                  
   *  The application requested extra slots in the driver table, so we
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
ffc0a408:	90 7c 28 a8 	stw     r3,10408(r28)                          
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
                                                                      
  memset(                                                             
ffc0a40c:	38 80 00 00 	li      r4,0                                   
ffc0a410:	7f 65 db 78 	mr      r5,r27                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
ffc0a414:	93 a9 28 a4 	stw     r29,10404(r9)                          
                                                                      
  memset(                                                             
ffc0a418:	48 00 9a 59 	bl      ffc13e70 <memset>                      
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
ffc0a41c:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
ffc0a420:	41 9e 00 54 	beq-    cr7,ffc0a474 <_IO_Manager_initialization+0xbc><== NEVER TAKEN
ffc0a424:	80 fc 28 a8 	lwz     r7,10408(r28)                          
#include <rtems/score/thread.h>                                       
#include <rtems/score/wkspace.h>                                      
                                                                      
#include <string.h>                                                   
                                                                      
void _IO_Manager_initialization(void)                                 
ffc0a428:	1d 7e 00 18 	mulli   r11,r30,24                             
ffc0a42c:	39 00 00 00 	li      r8,0                                   
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
    _IO_Driver_address_table[index] = driver_table[index];            
ffc0a430:	7f e9 fb 78 	mr      r9,r31                                 
ffc0a434:	7c 69 40 6e 	lwzux   r3,r9,r8                               
ffc0a438:	7d 47 42 14 	add     r10,r7,r8                              
ffc0a43c:	80 c9 00 0c 	lwz     r6,12(r9)                              
ffc0a440:	80 89 00 04 	lwz     r4,4(r9)                               
ffc0a444:	80 a9 00 08 	lwz     r5,8(r9)                               
ffc0a448:	7c 67 41 2e 	stwx    r3,r7,r8                               
ffc0a44c:	39 08 00 18 	addi    r8,r8,24                               
  memset(                                                             
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
ffc0a450:	7f 88 58 00 	cmpw    cr7,r8,r11                             
    _IO_Driver_address_table[index] = driver_table[index];            
ffc0a454:	90 8a 00 04 	stw     r4,4(r10)                              
ffc0a458:	90 aa 00 08 	stw     r5,8(r10)                              
ffc0a45c:	90 ca 00 0c 	stw     r6,12(r10)                             
ffc0a460:	80 c9 00 10 	lwz     r6,16(r9)                              
ffc0a464:	81 29 00 14 	lwz     r9,20(r9)                              
ffc0a468:	90 ca 00 10 	stw     r6,16(r10)                             
ffc0a46c:	91 2a 00 14 	stw     r9,20(r10)                             
  memset(                                                             
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
ffc0a470:	40 9e ff c0 	bne+    cr7,ffc0a430 <_IO_Manager_initialization+0x78>
    _IO_Driver_address_table[index] = driver_table[index];            
}                                                                     
ffc0a474:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0a478:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0a47c:	7c 08 03 a6 	mtlr    r0                                     
ffc0a480:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0a484:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0a488:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0a48c:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0a490:	38 21 00 20 	addi    r1,r1,32                               
ffc0a494:	4e 80 00 20 	blr                                            
ffc0a498:	80 01 00 24 	lwz     r0,36(r1)                              
   *  If the maximum number of driver is the same as the number in the
   *  table, then we do not have to copy the driver table.  They can't
   *  register any dynamically.                                       
   */                                                                 
  if ( number_of_drivers == drivers_in_table ) {                      
    _IO_Driver_address_table = driver_table;                          
ffc0a49c:	3d 20 00 00 	lis     r9,0                                   
ffc0a4a0:	93 e9 28 a8 	stw     r31,10408(r9)                          
    _IO_Number_of_drivers = number_of_drivers;                        
ffc0a4a4:	3d 20 00 00 	lis     r9,0                                   
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
    _IO_Driver_address_table[index] = driver_table[index];            
}                                                                     
ffc0a4a8:	7c 08 03 a6 	mtlr    r0                                     
ffc0a4ac:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0a4b0:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0a4b4:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0a4b8:	83 e1 00 1c 	lwz     r31,28(r1)                             
   *  table, then we do not have to copy the driver table.  They can't
   *  register any dynamically.                                       
   */                                                                 
  if ( number_of_drivers == drivers_in_table ) {                      
    _IO_Driver_address_table = driver_table;                          
    _IO_Number_of_drivers = number_of_drivers;                        
ffc0a4bc:	93 c9 28 a4 	stw     r30,10404(r9)                          
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
    _IO_Driver_address_table[index] = driver_table[index];            
}                                                                     
ffc0a4c0:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0a4c4:	38 21 00 20 	addi    r1,r1,32                               
ffc0a4c8:	4e 80 00 20 	blr                                            
                                                                      

ffc0b370 <_Internal_error_Occurred>: void _Internal_error_Occurred( Internal_errors_Source the_source, bool is_internal, Internal_errors_t the_error ) {
ffc0b370:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc0b374:	7c 08 02 a6 	mflr    r0                                     
ffc0b378:	93 e1 00 24 	stw     r31,36(r1)                             
ffc0b37c:	7c 9f 23 78 	mr      r31,r4                                 
  Internal_errors_t      error                                        
)                                                                     
{                                                                     
  User_extensions_Fatal_context ctx = { source, is_internal, error }; 
                                                                      
  _User_extensions_Iterate( &ctx, _User_extensions_Fatal_visitor );   
ffc0b380:	3c 80 ff c1 	lis     r4,-63                                 
ffc0b384:	93 c1 00 20 	stw     r30,32(r1)                             
ffc0b388:	38 84 d8 e8 	addi    r4,r4,-10008                           
ffc0b38c:	7c 7e 1b 78 	mr      r30,r3                                 
ffc0b390:	38 61 00 08 	addi    r3,r1,8                                
ffc0b394:	93 a1 00 1c 	stw     r29,28(r1)                             
ffc0b398:	7c bd 2b 78 	mr      r29,r5                                 
ffc0b39c:	90 01 00 2c 	stw     r0,44(r1)                              
  Internal_errors_Source source,                                      
  bool                   is_internal,                                 
  Internal_errors_t      error                                        
)                                                                     
{                                                                     
  User_extensions_Fatal_context ctx = { source, is_internal, error }; 
ffc0b3a0:	93 c1 00 08 	stw     r30,8(r1)                              
ffc0b3a4:	9b e1 00 0c 	stb     r31,12(r1)                             
ffc0b3a8:	90 a1 00 10 	stw     r5,16(r1)                              
                                                                      
  _User_extensions_Iterate( &ctx, _User_extensions_Fatal_visitor );   
ffc0b3ac:	48 00 25 61 	bl      ffc0d90c <_User_extensions_Iterate>    
  _User_extensions_Fatal( the_source, is_internal, the_error );       
                                                                      
  _Internal_errors_What_happened.the_source  = the_source;            
ffc0b3b0:	3d 40 00 00 	lis     r10,0                                  
ffc0b3b4:	39 2a 31 78 	addi    r9,r10,12664                           
ffc0b3b8:	93 ca 31 78 	stw     r30,12664(r10)                         
  _Internal_errors_What_happened.is_internal = is_internal;           
  _Internal_errors_What_happened.the_error   = the_error;             
                                                                      
  _System_state_Set( SYSTEM_STATE_FAILED );                           
                                                                      
  _CPU_Fatal_halt( the_error );                                       
ffc0b3bc:	7f a3 eb 78 	mr      r3,r29                                 
)                                                                     
{                                                                     
  _User_extensions_Fatal( the_source, is_internal, the_error );       
                                                                      
  _Internal_errors_What_happened.the_source  = the_source;            
  _Internal_errors_What_happened.is_internal = is_internal;           
ffc0b3c0:	9b e9 00 04 	stb     r31,4(r9)                              
                                                                      
RTEMS_INLINE_ROUTINE void _System_state_Set (                         
  System_state_Codes state                                            
)                                                                     
{                                                                     
  _System_state_Current = state;                                      
ffc0b3c4:	39 40 00 05 	li      r10,5                                  
  _Internal_errors_What_happened.the_error   = the_error;             
ffc0b3c8:	93 a9 00 08 	stw     r29,8(r9)                              
ffc0b3cc:	3d 20 00 00 	lis     r9,0                                   
ffc0b3d0:	91 49 28 90 	stw     r10,10384(r9)                          
                                                                      
  _System_state_Set( SYSTEM_STATE_FAILED );                           
                                                                      
  _CPU_Fatal_halt( the_error );                                       
ffc0b3d4:	4b ff 88 35 	bl      ffc03c08 <_BSP_Fatal_error>            
ffc0b3d8:	48 00 00 00 	b       ffc0b3d8 <_Internal_error_Occurred+0x68><== NOT EXECUTED
                                                                      

ffc0b3f0 <_Objects_Allocate>: #endif Objects_Control *_Objects_Allocate( Objects_Information *information ) {
ffc0b3f0:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0b3f4:	7c 08 02 a6 	mflr    r0                                     
ffc0b3f8:	90 01 00 14 	stw     r0,20(r1)                              
   *  If the application is using the optional manager stubs and      
   *  still attempts to create the object, the information block      
   *  should be all zeroed out because it is in the BSS.  So let's    
   *  check that code for this manager is even present.               
   */                                                                 
  if ( information->size == 0 )                                       
ffc0b3fc:	81 23 00 18 	lwz     r9,24(r3)                              
#endif                                                                
                                                                      
Objects_Control *_Objects_Allocate(                                   
  Objects_Information *information                                    
)                                                                     
{                                                                     
ffc0b400:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc0b404:	7c 7f 1b 78 	mr      r31,r3                                 
   *  If the application is using the optional manager stubs and      
   *  still attempts to create the object, the information block      
   *  should be all zeroed out because it is in the BSS.  So let's    
   *  check that code for this manager is even present.               
   */                                                                 
  if ( information->size == 0 )                                       
ffc0b408:	2f 89 00 00 	cmpwi   cr7,r9,0                               
#endif                                                                
                                                                      
Objects_Control *_Objects_Allocate(                                   
  Objects_Information *information                                    
)                                                                     
{                                                                     
ffc0b40c:	93 c1 00 08 	stw     r30,8(r1)                              
   *  If the application is using the optional manager stubs and      
   *  still attempts to create the object, the information block      
   *  should be all zeroed out because it is in the BSS.  So let's    
   *  check that code for this manager is even present.               
   */                                                                 
  if ( information->size == 0 )                                       
ffc0b410:	41 9e 00 88 	beq-    cr7,ffc0b498 <_Objects_Allocate+0xa8>  <== NEVER TAKEN
                                                                      
  /*                                                                  
   *  OK.  The manager should be initialized and configured to have objects.
   *  With any luck, it is safe to attempt to allocate an object.     
   */                                                                 
  the_object = (Objects_Control *) _Chain_Get( &information->Inactive );
ffc0b414:	3b c3 00 20 	addi    r30,r3,32                              
ffc0b418:	7f c3 f3 78 	mr      r3,r30                                 
ffc0b41c:	4b ff f3 e1 	bl      ffc0a7fc <_Chain_Get>                  
                                                                      
  if ( information->auto_extend ) {                                   
ffc0b420:	89 3f 00 12 	lbz     r9,18(r31)                             
ffc0b424:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0b428:	41 9e 00 40 	beq-    cr7,ffc0b468 <_Objects_Allocate+0x78>  
    /*                                                                
     *  If the list is empty then we are out of objects and need to   
     *  extend information base.                                      
     */                                                               
                                                                      
    if ( !the_object ) {                                              
ffc0b42c:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0b430:	41 9e 00 50 	beq-    cr7,ffc0b480 <_Objects_Allocate+0x90>  
    }                                                                 
                                                                      
    if ( the_object ) {                                               
      uint32_t   block;                                               
                                                                      
      block = (uint32_t) _Objects_Get_index( the_object->id ) -       
ffc0b434:	a1 03 00 0a 	lhz     r8,10(r3)                              
ffc0b438:	a1 3f 00 0a 	lhz     r9,10(r31)                             
              _Objects_Get_index( information->minimum_id );          
      block /= information->allocation_size;                          
ffc0b43c:	a1 5f 00 14 	lhz     r10,20(r31)                            
    }                                                                 
                                                                      
    if ( the_object ) {                                               
      uint32_t   block;                                               
                                                                      
      block = (uint32_t) _Objects_Get_index( the_object->id ) -       
ffc0b440:	7d 29 40 50 	subf    r9,r9,r8                               
              _Objects_Get_index( information->minimum_id );          
      block /= information->allocation_size;                          
                                                                      
      information->inactive_per_block[ block ]--;                     
      information->inactive--;                                        
ffc0b444:	a0 ff 00 2c 	lhz     r7,44(r31)                             
    if ( the_object ) {                                               
      uint32_t   block;                                               
                                                                      
      block = (uint32_t) _Objects_Get_index( the_object->id ) -       
              _Objects_Get_index( information->minimum_id );          
      block /= information->allocation_size;                          
ffc0b448:	7d 29 53 96 	divwu   r9,r9,r10                              
                                                                      
      information->inactive_per_block[ block ]--;                     
ffc0b44c:	81 5f 00 30 	lwz     r10,48(r31)                            
ffc0b450:	55 29 10 3a 	rlwinm  r9,r9,2,0,29                           
ffc0b454:	7d 0a 48 2e 	lwzx    r8,r10,r9                              
      information->inactive--;                                        
ffc0b458:	38 e7 ff ff 	addi    r7,r7,-1                               
                                                                      
      block = (uint32_t) _Objects_Get_index( the_object->id ) -       
              _Objects_Get_index( information->minimum_id );          
      block /= information->allocation_size;                          
                                                                      
      information->inactive_per_block[ block ]--;                     
ffc0b45c:	39 08 ff ff 	addi    r8,r8,-1                               
ffc0b460:	7d 0a 49 2e 	stwx    r8,r10,r9                              
      information->inactive--;                                        
ffc0b464:	b0 ff 00 2c 	sth     r7,44(r31)                             
    );                                                                
  }                                                                   
#endif                                                                
                                                                      
  return the_object;                                                  
}                                                                     
ffc0b468:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0b46c:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0b470:	7c 08 03 a6 	mtlr    r0                                     
ffc0b474:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0b478:	38 21 00 10 	addi    r1,r1,16                               
ffc0b47c:	4e 80 00 20 	blr                                            
     *  If the list is empty then we are out of objects and need to   
     *  extend information base.                                      
     */                                                               
                                                                      
    if ( !the_object ) {                                              
      _Objects_Extend_information( information );                     
ffc0b480:	7f e3 fb 78 	mr      r3,r31                                 
ffc0b484:	48 00 00 49 	bl      ffc0b4cc <_Objects_Extend_information> 
      the_object =  (Objects_Control *) _Chain_Get( &information->Inactive );
ffc0b488:	7f c3 f3 78 	mr      r3,r30                                 
ffc0b48c:	4b ff f3 71 	bl      ffc0a7fc <_Chain_Get>                  
    }                                                                 
                                                                      
    if ( the_object ) {                                               
ffc0b490:	2c 03 00 00 	cmpwi   r3,0                                   
ffc0b494:	40 a2 ff a0 	bne-    ffc0b434 <_Objects_Allocate+0x44>      
    );                                                                
  }                                                                   
#endif                                                                
                                                                      
  return the_object;                                                  
}                                                                     
ffc0b498:	80 01 00 14 	lwz     r0,20(r1)                              
   *  still attempts to create the object, the information block      
   *  should be all zeroed out because it is in the BSS.  So let's    
   *  check that code for this manager is even present.               
   */                                                                 
  if ( information->size == 0 )                                       
    return NULL;                                                      
ffc0b49c:	38 60 00 00 	li      r3,0                                   
    );                                                                
  }                                                                   
#endif                                                                
                                                                      
  return the_object;                                                  
}                                                                     
ffc0b4a0:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0b4a4:	7c 08 03 a6 	mtlr    r0                                     
ffc0b4a8:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0b4ac:	38 21 00 10 	addi    r1,r1,16                               
ffc0b4b0:	4e 80 00 20 	blr                                            
                                                                      

ffc0b4cc <_Objects_Extend_information>: */ void _Objects_Extend_information( Objects_Information *information ) {
ffc0b4cc:	94 21 ff c0 	stwu    r1,-64(r1)                             
ffc0b4d0:	7c 08 02 a6 	mflr    r0                                     
ffc0b4d4:	90 01 00 44 	stw     r0,68(r1)                              
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
ffc0b4d8:	81 23 00 34 	lwz     r9,52(r3)                              
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
ffc0b4dc:	93 41 00 28 	stw     r26,40(r1)                             
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
ffc0b4e0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
ffc0b4e4:	93 61 00 2c 	stw     r27,44(r1)                             
ffc0b4e8:	93 e1 00 3c 	stw     r31,60(r1)                             
ffc0b4ec:	7c 7f 1b 78 	mr      r31,r3                                 
ffc0b4f0:	92 c1 00 18 	stw     r22,24(r1)                             
ffc0b4f4:	92 e1 00 1c 	stw     r23,28(r1)                             
ffc0b4f8:	93 01 00 20 	stw     r24,32(r1)                             
ffc0b4fc:	93 21 00 24 	stw     r25,36(r1)                             
ffc0b500:	93 81 00 30 	stw     r28,48(r1)                             
ffc0b504:	93 a1 00 34 	stw     r29,52(r1)                             
ffc0b508:	93 c1 00 38 	stw     r30,56(r1)                             
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
ffc0b50c:	a3 63 00 0a 	lhz     r27,10(r3)                             
ffc0b510:	a3 43 00 10 	lhz     r26,16(r3)                             
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
ffc0b514:	41 9e 02 74 	beq-    cr7,ffc0b788 <_Objects_Extend_information+0x2bc>
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
ffc0b518:	a1 03 00 14 	lhz     r8,20(r3)                              
ffc0b51c:	7f 9a 43 96 	divwu   r28,r26,r8                             
                                                                      
    for ( ; block < block_count; block++ ) {                          
ffc0b520:	2f 9c 00 00 	cmpwi   cr7,r28,0                              
ffc0b524:	41 9e 02 bc 	beq-    cr7,ffc0b7e0 <_Objects_Extend_information+0x314><== NEVER TAKEN
      if ( information->object_blocks[ block ] == NULL ) {            
ffc0b528:	81 49 00 00 	lwz     r10,0(r9)                              
ffc0b52c:	7d 07 43 78 	mr      r7,r8                                  
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
ffc0b530:	7f 7e db 78 	mr      r30,r27                                
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
      if ( information->object_blocks[ block ] == NULL ) {            
ffc0b534:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0b538:	41 9e 02 bc 	beq-    cr7,ffc0b7f4 <_Objects_Extend_information+0x328><== NEVER TAKEN
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
ffc0b53c:	3b a0 00 00 	li      r29,0                                  
ffc0b540:	7f 89 03 a6 	mtctr   r28                                    
ffc0b544:	48 00 00 10 	b       ffc0b554 <_Objects_Extend_information+0x88>
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
      if ( information->object_blocks[ block ] == NULL ) {            
ffc0b548:	85 49 00 04 	lwzu    r10,4(r9)                              
ffc0b54c:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0b550:	41 9e 02 0c 	beq-    cr7,ffc0b75c <_Objects_Extend_information+0x290>
        do_extend = false;                                            
        break;                                                        
      } else                                                          
        index_base += information->allocation_size;                   
ffc0b554:	7f de 42 14 	add     r30,r30,r8                             
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
ffc0b558:	3b bd 00 01 	addi    r29,r29,1                              
ffc0b55c:	42 00 ff ec 	bdnz+   ffc0b548 <_Objects_Extend_information+0x7c>
                                                                      
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
ffc0b560:	3b 20 00 01 	li      r25,1                                  
      } else                                                          
        index_base += information->allocation_size;                   
    }                                                                 
  }                                                                   
                                                                      
  maximum = (uint32_t) information->maximum + information->allocation_size;
ffc0b564:	7f 5a 3a 14 	add     r26,r26,r7                             
  /*                                                                  
   *  We need to limit the number of objects to the maximum number    
   *  representable in the index portion of the object Id.  In the    
   *  case of 16-bit Ids, this is only 256 object instances.          
   */                                                                 
  if ( maximum > OBJECTS_ID_FINAL_INDEX ) {                           
ffc0b568:	2b 9a ff ff 	cmplwi  cr7,r26,65535                          
ffc0b56c:	41 9d 01 b8 	bgt-    cr7,ffc0b724 <_Objects_Extend_information+0x258>
  /*                                                                  
   * Allocate the name table, and the objects and if it fails either return or
   * generate a fatal error depending on auto-extending being active. 
   */                                                                 
  block_size = information->allocation_size * information->size;      
  if ( information->auto_extend ) {                                   
ffc0b570:	89 3f 00 12 	lbz     r9,18(r31)                             
                                                                      
  /*                                                                  
   * Allocate the name table, and the objects and if it fails either return or
   * generate a fatal error depending on auto-extending being active. 
   */                                                                 
  block_size = information->allocation_size * information->size;      
ffc0b574:	80 7f 00 18 	lwz     r3,24(r31)                             
  if ( information->auto_extend ) {                                   
ffc0b578:	2f 89 00 00 	cmpwi   cr7,r9,0                               
                                                                      
  /*                                                                  
   * Allocate the name table, and the objects and if it fails either return or
   * generate a fatal error depending on auto-extending being active. 
   */                                                                 
  block_size = information->allocation_size * information->size;      
ffc0b57c:	7c 67 19 d6 	mullw   r3,r7,r3                               
  if ( information->auto_extend ) {                                   
ffc0b580:	41 9e 01 e4 	beq-    cr7,ffc0b764 <_Objects_Extend_information+0x298>
    new_object_block = _Workspace_Allocate( block_size );             
ffc0b584:	48 00 29 e9 	bl      ffc0df6c <_Workspace_Allocate>         
    if ( !new_object_block )                                          
ffc0b588:	7c 77 1b 79 	mr.     r23,r3                                 
ffc0b58c:	41 82 01 98 	beq-    ffc0b724 <_Objects_Extend_information+0x258>
  }                                                                   
                                                                      
  /*                                                                  
   *  Do we need to grow the tables?                                  
   */                                                                 
  if ( do_extend ) {                                                  
ffc0b590:	2f 99 00 00 	cmpwi   cr7,r25,0                              
ffc0b594:	41 9e 01 0c 	beq-    cr7,ffc0b6a0 <_Objects_Extend_information+0x1d4>
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
    if ( information->auto_extend ) {                                 
ffc0b598:	89 3f 00 12 	lbz     r9,18(r31)                             
     */                                                               
                                                                      
    /*                                                                
     *  Up the block count and maximum                                
     */                                                               
    block_count++;                                                    
ffc0b59c:	3a dc 00 01 	addi    r22,r28,1                              
                                                                      
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
ffc0b5a0:	1c 76 00 03 	mulli   r3,r22,3                               
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
    if ( information->auto_extend ) {                                 
ffc0b5a4:	2f 89 00 00 	cmpwi   cr7,r9,0                               
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
ffc0b5a8:	7c 7a 1a 14 	add     r3,r26,r3                              
                                                                      
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
ffc0b5ac:	7c 63 da 14 	add     r3,r3,r27                              
    block_count++;                                                    
                                                                      
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
ffc0b5b0:	54 63 10 3a 	rlwinm  r3,r3,2,0,29                           
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
    if ( information->auto_extend ) {                                 
ffc0b5b4:	40 9e 01 bc 	bne-    cr7,ffc0b770 <_Objects_Extend_information+0x2a4>
      if ( !object_blocks ) {                                         
        _Workspace_Free( new_object_block );                          
        return;                                                       
      }                                                               
    } else {                                                          
      object_blocks = _Workspace_Allocate_or_fatal_error( block_size );
ffc0b5b8:	48 00 29 dd 	bl      ffc0df94 <_Workspace_Allocate_or_fatal_error>
ffc0b5bc:	7c 79 1b 78 	mr      r25,r3                                 
     *  Take the block count down. Saves all the (block_count - 1)    
     *  in the copies.                                                
     */                                                               
    block_count--;                                                    
                                                                      
    if ( information->maximum > minimum_index ) {                     
ffc0b5c0:	a1 3f 00 10 	lhz     r9,16(r31)                             
                                                                      
    /*                                                                
     *  Break the block into the various sections.                    
     */                                                               
    inactive_per_block = (uint32_t *) _Addresses_Add_offset(          
        object_blocks, block_count * sizeof(void*) );                 
ffc0b5c4:	56 d6 10 3a 	rlwinm  r22,r22,2,0,29                         
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (                    
  const void *base,                                                   
  uintptr_t   offset                                                  
)                                                                     
{                                                                     
  return (void *)((uintptr_t)base + offset);                          
ffc0b5c8:	7f 19 b2 14 	add     r24,r25,r22                            
     *  Take the block count down. Saves all the (block_count - 1)    
     *  in the copies.                                                
     */                                                               
    block_count--;                                                    
                                                                      
    if ( information->maximum > minimum_index ) {                     
ffc0b5cc:	7f 9b 48 40 	cmplw   cr7,r27,r9                             
ffc0b5d0:	7e d8 b2 14 	add     r22,r24,r22                            
ffc0b5d4:	41 9c 01 cc 	blt-    cr7,ffc0b7a0 <_Objects_Extend_information+0x2d4>
    } else {                                                          
                                                                      
      /*                                                              
       *  Deal with the special case of the 0 to minimum_index        
       */                                                             
      for ( index = 0; index < minimum_index; index++ ) {             
ffc0b5d8:	2f 9b 00 00 	cmpwi   cr7,r27,0                              
ffc0b5dc:	41 9e 00 28 	beq-    cr7,ffc0b604 <_Objects_Extend_information+0x138><== NEVER TAKEN
        local_table[ index ] = NULL;                                  
ffc0b5e0:	57 68 10 3a 	rlwinm  r8,r27,2,0,29                          
ffc0b5e4:	39 08 ff fc 	addi    r8,r8,-4                               
ffc0b5e8:	55 08 f0 be 	rlwinm  r8,r8,30,2,31                          
ffc0b5ec:	39 08 00 01 	addi    r8,r8,1                                
ffc0b5f0:	7d 09 03 a6 	mtctr   r8                                     
 *    information     - object information table                      
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
ffc0b5f4:	39 36 ff fc 	addi    r9,r22,-4                              
                                                                      
      /*                                                              
       *  Deal with the special case of the 0 to minimum_index        
       */                                                             
      for ( index = 0; index < minimum_index; index++ ) {             
        local_table[ index ] = NULL;                                  
ffc0b5f8:	39 40 00 00 	li      r10,0                                  
ffc0b5fc:	95 49 00 04 	stwu    r10,4(r9)                              
    } else {                                                          
                                                                      
      /*                                                              
       *  Deal with the special case of the 0 to minimum_index        
       */                                                             
      for ( index = 0; index < minimum_index; index++ ) {             
ffc0b600:	42 00 ff fc 	bdnz+   ffc0b5fc <_Objects_Extend_information+0x130>
ffc0b604:	57 9c 10 3a 	rlwinm  r28,r28,2,0,29                         
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
ffc0b608:	a1 5f 00 14 	lhz     r10,20(r31)                            
    }                                                                 
                                                                      
    /*                                                                
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
ffc0b60c:	39 20 00 00 	li      r9,0                                   
ffc0b610:	7d 39 e1 2e 	stwx    r9,r25,r28                             
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
ffc0b614:	7d 1e 52 14 	add     r8,r30,r10                             
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
ffc0b618:	7f 9e 40 40 	cmplw   cr7,r30,r8                             
                                                                      
    /*                                                                
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
ffc0b61c:	7d 38 e1 2e 	stwx    r9,r24,r28                             
                                                                      
    for ( index=index_base ;                                          
ffc0b620:	40 9c 00 34 	bge-    cr7,ffc0b654 <_Objects_Extend_information+0x188><== NEVER TAKEN
 *    information     - object information table                      
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
ffc0b624:	55 47 10 3a 	rlwinm  r7,r10,2,0,29                          
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
          index++ ) {                                                 
      local_table[ index ] = NULL;                                    
ffc0b628:	38 e7 ff fc 	addi    r7,r7,-4                               
ffc0b62c:	54 e7 f0 be 	rlwinm  r7,r7,30,2,31                          
ffc0b630:	38 e7 00 01 	addi    r7,r7,1                                
ffc0b634:	7c e9 03 a6 	mtctr   r7                                     
 *    information     - object information table                      
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
ffc0b638:	57 c8 10 3a 	rlwinm  r8,r30,2,0,29                          
ffc0b63c:	7d 16 42 14 	add     r8,r22,r8                              
ffc0b640:	39 20 00 00 	li      r9,0                                   
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
          index++ ) {                                                 
      local_table[ index ] = NULL;                                    
ffc0b644:	39 40 00 00 	li      r10,0                                  
ffc0b648:	7d 48 49 2e 	stwx    r10,r8,r9                              
ffc0b64c:	39 29 00 04 	addi    r9,r9,4                                
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
ffc0b650:	42 00 ff f8 	bdnz+   ffc0b648 <_Objects_Extend_information+0x17c>
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0b654:	7d 40 00 a6 	mfmsr   r10                                    
ffc0b658:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc0b65c:	7d 49 48 78 	andc    r9,r10,r9                              
ffc0b660:	7d 20 01 24 	mtmsr   r9                                     
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
ffc0b664:	81 3f 00 00 	lwz     r9,0(r31)                              
                                                                      
    information->object_blocks = object_blocks;                       
    information->inactive_per_block = inactive_per_block;             
    information->local_table = local_table;                           
    information->maximum = (Objects_Maximum) maximum;                 
    information->maximum_id = _Objects_Build_id(                      
ffc0b668:	a1 1f 00 04 	lhz     r8,4(r31)                              
ffc0b66c:	55 29 c0 0e 	rlwinm  r9,r9,24,0,7                           
      local_table[ index ] = NULL;                                    
    }                                                                 
                                                                      
    _ISR_Disable( level );                                            
                                                                      
    old_tables = information->object_blocks;                          
ffc0b670:	80 7f 00 34 	lwz     r3,52(r31)                             
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |    
ffc0b674:	55 08 d8 08 	rlwinm  r8,r8,27,0,4                           
                                                                      
    information->object_blocks = object_blocks;                       
    information->inactive_per_block = inactive_per_block;             
ffc0b678:	93 1f 00 30 	stw     r24,48(r31)                            
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
ffc0b67c:	65 29 00 01 	oris    r9,r9,1                                
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |    
ffc0b680:	7d 29 43 78 	or      r9,r9,r8                               
                                                                      
    _ISR_Disable( level );                                            
                                                                      
    old_tables = information->object_blocks;                          
                                                                      
    information->object_blocks = object_blocks;                       
ffc0b684:	93 3f 00 34 	stw     r25,52(r31)                            
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
ffc0b688:	7d 29 d3 78 	or      r9,r9,r26                              
    information->inactive_per_block = inactive_per_block;             
    information->local_table = local_table;                           
ffc0b68c:	92 df 00 1c 	stw     r22,28(r31)                            
    information->maximum = (Objects_Maximum) maximum;                 
ffc0b690:	b3 5f 00 10 	sth     r26,16(r31)                            
    information->maximum_id = _Objects_Build_id(                      
ffc0b694:	91 3f 00 0c 	stw     r9,12(r31)                             
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0b698:	7d 40 01 24 	mtmsr   r10                                    
        information->maximum                                          
      );                                                              
                                                                      
    _ISR_Enable( level );                                             
                                                                      
    _Workspace_Free( old_tables );                                    
ffc0b69c:	48 00 28 e9 	bl      ffc0df84 <_Workspace_Free>             
  }                                                                   
                                                                      
  /*                                                                  
   *  Assign the new object block to the object block table.          
   */                                                                 
  information->object_blocks[ block ] = new_object_block;             
ffc0b6a0:	81 3f 00 34 	lwz     r9,52(r31)                             
ffc0b6a4:	57 bd 10 3a 	rlwinm  r29,r29,2,0,29                         
                                                                      
  /*                                                                  
   *  Initialize objects .. add to a local chain first.               
   */                                                                 
  _Chain_Initialize(                                                  
ffc0b6a8:	a0 bf 00 14 	lhz     r5,20(r31)                             
ffc0b6ac:	38 61 00 08 	addi    r3,r1,8                                
  }                                                                   
                                                                      
  /*                                                                  
   *  Assign the new object block to the object block table.          
   */                                                                 
  information->object_blocks[ block ] = new_object_block;             
ffc0b6b0:	7e e9 e9 2e 	stwx    r23,r9,r29                             
        information->the_class,                                       
        _Objects_Local_node,                                          
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
ffc0b6b4:	3b 9f 00 20 	addi    r28,r31,32                             
  information->object_blocks[ block ] = new_object_block;             
                                                                      
  /*                                                                  
   *  Initialize objects .. add to a local chain first.               
   */                                                                 
  _Chain_Initialize(                                                  
ffc0b6b8:	81 3f 00 34 	lwz     r9,52(r31)                             
ffc0b6bc:	80 df 00 18 	lwz     r6,24(r31)                             
ffc0b6c0:	7c 89 e8 2e 	lwzx    r4,r9,r29                              
ffc0b6c4:	4b ff f1 79 	bl      ffc0a83c <_Chain_Initialize>           
  /*                                                                  
   *  Move from the local chain, initialise, then append to the inactive chain
   */                                                                 
  index = index_base;                                                 
                                                                      
  while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
ffc0b6c8:	48 00 00 2c 	b       ffc0b6f4 <_Objects_Extend_information+0x228>
ffc0b6cc:	81 5f 00 00 	lwz     r10,0(r31)                             
                                                                      
    the_object->id = _Objects_Build_id(                               
ffc0b6d0:	a1 1f 00 04 	lhz     r8,4(r31)                              
ffc0b6d4:	55 4a c0 0e 	rlwinm  r10,r10,24,0,7                         
ffc0b6d8:	65 4a 00 01 	oris    r10,r10,1                              
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |    
ffc0b6dc:	55 08 d8 08 	rlwinm  r8,r8,27,0,4                           
ffc0b6e0:	7d 4a 43 78 	or      r10,r10,r8                             
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
ffc0b6e4:	7d 4a f3 78 	or      r10,r10,r30                            
ffc0b6e8:	91 49 00 08 	stw     r10,8(r9)                              
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
                                                                      
    index++;                                                          
ffc0b6ec:	3b de 00 01 	addi    r30,r30,1                              
        information->the_class,                                       
        _Objects_Local_node,                                          
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
ffc0b6f0:	4b ff f0 dd 	bl      ffc0a7cc <_Chain_Append>               
  /*                                                                  
   *  Move from the local chain, initialise, then append to the inactive chain
   */                                                                 
  index = index_base;                                                 
                                                                      
  while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
ffc0b6f4:	38 61 00 08 	addi    r3,r1,8                                
ffc0b6f8:	4b ff f1 05 	bl      ffc0a7fc <_Chain_Get>                  
ffc0b6fc:	7c 69 1b 79 	mr.     r9,r3                                  
        information->the_class,                                       
        _Objects_Local_node,                                          
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
ffc0b700:	7f 83 e3 78 	mr      r3,r28                                 
ffc0b704:	7d 24 4b 78 	mr      r4,r9                                  
  /*                                                                  
   *  Move from the local chain, initialise, then append to the inactive chain
   */                                                                 
  index = index_base;                                                 
                                                                      
  while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
ffc0b708:	40 82 ff c4 	bne+    ffc0b6cc <_Objects_Extend_information+0x200>
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
  information->inactive =                                             
    (Objects_Maximum)(information->inactive + information->allocation_size);
ffc0b70c:	a1 1f 00 2c 	lhz     r8,44(r31)                             
    _Chain_Append( &information->Inactive, &the_object->Node );       
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
ffc0b710:	a1 3f 00 14 	lhz     r9,20(r31)                             
ffc0b714:	81 5f 00 30 	lwz     r10,48(r31)                            
  information->inactive =                                             
    (Objects_Maximum)(information->inactive + information->allocation_size);
ffc0b718:	7d 09 42 14 	add     r8,r9,r8                               
    _Chain_Append( &information->Inactive, &the_object->Node );       
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
ffc0b71c:	7d 2a e9 2e 	stwx    r9,r10,r29                             
  information->inactive =                                             
ffc0b720:	b1 1f 00 2c 	sth     r8,44(r31)                             
    (Objects_Maximum)(information->inactive + information->allocation_size);
}                                                                     
ffc0b724:	80 01 00 44 	lwz     r0,68(r1)                              
ffc0b728:	82 c1 00 18 	lwz     r22,24(r1)                             
ffc0b72c:	7c 08 03 a6 	mtlr    r0                                     
ffc0b730:	82 e1 00 1c 	lwz     r23,28(r1)                             
ffc0b734:	83 01 00 20 	lwz     r24,32(r1)                             
ffc0b738:	83 21 00 24 	lwz     r25,36(r1)                             
ffc0b73c:	83 41 00 28 	lwz     r26,40(r1)                             
ffc0b740:	83 61 00 2c 	lwz     r27,44(r1)                             
ffc0b744:	83 81 00 30 	lwz     r28,48(r1)                             
ffc0b748:	83 a1 00 34 	lwz     r29,52(r1)                             
ffc0b74c:	83 c1 00 38 	lwz     r30,56(r1)                             
ffc0b750:	83 e1 00 3c 	lwz     r31,60(r1)                             
ffc0b754:	38 21 00 40 	addi    r1,r1,64                               
ffc0b758:	4e 80 00 20 	blr                                            
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
      if ( information->object_blocks[ block ] == NULL ) {            
        do_extend = false;                                            
ffc0b75c:	3b 20 00 00 	li      r25,0                                  
ffc0b760:	4b ff fe 04 	b       ffc0b564 <_Objects_Extend_information+0x98>
  if ( information->auto_extend ) {                                   
    new_object_block = _Workspace_Allocate( block_size );             
    if ( !new_object_block )                                          
      return;                                                         
  } else {                                                            
    new_object_block = _Workspace_Allocate_or_fatal_error( block_size );
ffc0b764:	48 00 28 31 	bl      ffc0df94 <_Workspace_Allocate_or_fatal_error>
ffc0b768:	7c 77 1b 78 	mr      r23,r3                                 
ffc0b76c:	4b ff fe 24 	b       ffc0b590 <_Objects_Extend_information+0xc4>
     */                                                               
    block_size = block_count *                                        
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
    if ( information->auto_extend ) {                                 
      object_blocks = _Workspace_Allocate( block_size );              
ffc0b770:	48 00 27 fd 	bl      ffc0df6c <_Workspace_Allocate>         
      if ( !object_blocks ) {                                         
ffc0b774:	7c 79 1b 79 	mr.     r25,r3                                 
ffc0b778:	40 82 fe 48 	bne+    ffc0b5c0 <_Objects_Extend_information+0xf4>
        _Workspace_Free( new_object_block );                          
ffc0b77c:	7e e3 bb 78 	mr      r3,r23                                 
ffc0b780:	48 00 28 05 	bl      ffc0df84 <_Workspace_Free>             
ffc0b784:	4b ff ff a0 	b       ffc0b724 <_Objects_Extend_information+0x258>
ffc0b788:	a0 e3 00 14 	lhz     r7,20(r3)                              
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
ffc0b78c:	7f 7e db 78 	mr      r30,r27                                
                                                                      
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
ffc0b790:	3b 20 00 01 	li      r25,1                                  
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
ffc0b794:	3b a0 00 00 	li      r29,0                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
ffc0b798:	3b 80 00 00 	li      r28,0                                  
ffc0b79c:	4b ff fd c8 	b       ffc0b564 <_Objects_Extend_information+0x98>
       *  separate parts as size of each block has changed.           
       */                                                             
                                                                      
      memcpy( object_blocks,                                          
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
ffc0b7a0:	57 9c 10 3a 	rlwinm  r28,r28,2,0,29                         
      /*                                                              
       *  Copy each section of the table over. This has to be performed as
       *  separate parts as size of each block has changed.           
       */                                                             
                                                                      
      memcpy( object_blocks,                                          
ffc0b7a4:	80 9f 00 34 	lwz     r4,52(r31)                             
ffc0b7a8:	7f 85 e3 78 	mr      r5,r28                                 
ffc0b7ac:	7f 23 cb 78 	mr      r3,r25                                 
ffc0b7b0:	48 00 85 cd 	bl      ffc13d7c <memcpy>                      
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
      memcpy( inactive_per_block,                                     
ffc0b7b4:	80 9f 00 30 	lwz     r4,48(r31)                             
ffc0b7b8:	7f 85 e3 78 	mr      r5,r28                                 
ffc0b7bc:	7f 03 c3 78 	mr      r3,r24                                 
ffc0b7c0:	48 00 85 bd 	bl      ffc13d7c <memcpy>                      
              information->inactive_per_block,                        
              block_count * sizeof(uint32_t) );                       
      memcpy( local_table,                                            
              information->local_table,                               
              (information->maximum + minimum_index) * sizeof(Objects_Control *) );
ffc0b7c4:	a0 bf 00 10 	lhz     r5,16(r31)                             
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
      memcpy( inactive_per_block,                                     
              information->inactive_per_block,                        
              block_count * sizeof(uint32_t) );                       
      memcpy( local_table,                                            
ffc0b7c8:	80 9f 00 1c 	lwz     r4,28(r31)                             
ffc0b7cc:	7e c3 b3 78 	mr      r3,r22                                 
              information->local_table,                               
              (information->maximum + minimum_index) * sizeof(Objects_Control *) );
ffc0b7d0:	7c a5 da 14 	add     r5,r5,r27                              
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
      memcpy( inactive_per_block,                                     
              information->inactive_per_block,                        
              block_count * sizeof(uint32_t) );                       
      memcpy( local_table,                                            
ffc0b7d4:	54 a5 10 3a 	rlwinm  r5,r5,2,0,29                           
ffc0b7d8:	48 00 85 a5 	bl      ffc13d7c <memcpy>                      
ffc0b7dc:	4b ff fe 2c 	b       ffc0b608 <_Objects_Extend_information+0x13c>
ffc0b7e0:	7d 07 43 78 	mr      r7,r8                                  <== NOT EXECUTED
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
ffc0b7e4:	7f 7e db 78 	mr      r30,r27                                <== NOT EXECUTED
                                                                      
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
ffc0b7e8:	3b 20 00 01 	li      r25,1                                  <== NOT EXECUTED
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
ffc0b7ec:	3b a0 00 00 	li      r29,0                                  <== NOT EXECUTED
ffc0b7f0:	4b ff fd 74 	b       ffc0b564 <_Objects_Extend_information+0x98><== NOT EXECUTED
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
      if ( information->object_blocks[ block ] == NULL ) {            
        do_extend = false;                                            
ffc0b7f4:	3b 20 00 00 	li      r25,0                                  <== NOT EXECUTED
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
ffc0b7f8:	3b a0 00 00 	li      r29,0                                  <== NOT EXECUTED
ffc0b7fc:	4b ff fd 68 	b       ffc0b564 <_Objects_Extend_information+0x98><== NOT EXECUTED
                                                                      

ffc0b8cc <_Objects_Get_information>: Objects_Information *_Objects_Get_information( Objects_APIs the_api, uint16_t the_class ) {
ffc0b8cc:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0b8d0:	7c 08 02 a6 	mflr    r0                                     
ffc0b8d4:	93 e1 00 0c 	stw     r31,12(r1)                             
  Objects_Information *info;                                          
  int the_class_api_maximum;                                          
                                                                      
  if ( !the_class )                                                   
ffc0b8d8:	7c 9f 23 79 	mr.     r31,r4                                 
                                                                      
Objects_Information *_Objects_Get_information(                        
  Objects_APIs   the_api,                                             
  uint16_t       the_class                                            
)                                                                     
{                                                                     
ffc0b8dc:	90 01 00 14 	stw     r0,20(r1)                              
ffc0b8e0:	93 c1 00 08 	stw     r30,8(r1)                              
  Objects_Information *info;                                          
  int the_class_api_maximum;                                          
                                                                      
  if ( !the_class )                                                   
ffc0b8e4:	41 82 00 68 	beq-    ffc0b94c <_Objects_Get_information+0x80>
ffc0b8e8:	7c 7e 1b 78 	mr      r30,r3                                 
                                                                      
  /*                                                                  
   *  This call implicitly validates the_api so we do not call        
   *  _Objects_Is_api_valid above here.                               
   */                                                                 
  the_class_api_maximum = _Objects_API_maximum_class( the_api );      
ffc0b8ec:	48 00 52 95 	bl      ffc10b80 <_Objects_API_maximum_class>  
  if ( the_class_api_maximum == 0 )                                   
ffc0b8f0:	2c 03 00 00 	cmpwi   r3,0                                   
ffc0b8f4:	41 82 00 58 	beq-    ffc0b94c <_Objects_Get_information+0x80>
    return NULL;                                                      
                                                                      
  if ( the_class > (uint32_t) the_class_api_maximum )                 
ffc0b8f8:	7f 83 f8 40 	cmplw   cr7,r3,r31                             
ffc0b8fc:	41 9c 00 50 	blt-    cr7,ffc0b94c <_Objects_Get_information+0x80>
    return NULL;                                                      
                                                                      
  if ( !_Objects_Information_table[ the_api ] )                       
ffc0b900:	3d 20 00 00 	lis     r9,0                                   
ffc0b904:	57 de 10 3a 	rlwinm  r30,r30,2,0,29                         
ffc0b908:	39 29 2c 78 	addi    r9,r9,11384                            
ffc0b90c:	7d 29 f0 2e 	lwzx    r9,r9,r30                              
ffc0b910:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0b914:	41 9e 00 38 	beq-    cr7,ffc0b94c <_Objects_Get_information+0x80><== NEVER TAKEN
    return NULL;                                                      
                                                                      
  info = _Objects_Information_table[ the_api ][ the_class ];          
ffc0b918:	57 ff 10 3a 	rlwinm  r31,r31,2,0,29                         
ffc0b91c:	7c 69 f8 2e 	lwzx    r3,r9,r31                              
  if ( !info )                                                        
ffc0b920:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0b924:	41 9e 00 28 	beq-    cr7,ffc0b94c <_Objects_Get_information+0x80><== NEVER TAKEN
   *  In a multprocessing configuration, we may access remote objects.
   *  Thus we may have 0 local instances and still have a valid object
   *  pointer.                                                        
   */                                                                 
  #if !defined(RTEMS_MULTIPROCESSING)                                 
    if ( info->maximum == 0 )                                         
ffc0b928:	a1 23 00 10 	lhz     r9,16(r3)                              
ffc0b92c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0b930:	41 9e 00 1c 	beq-    cr7,ffc0b94c <_Objects_Get_information+0x80>
      return NULL;                                                    
  #endif                                                              
                                                                      
  return info;                                                        
}                                                                     
ffc0b934:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0b938:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0b93c:	7c 08 03 a6 	mtlr    r0                                     
ffc0b940:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0b944:	38 21 00 10 	addi    r1,r1,16                               
ffc0b948:	4e 80 00 20 	blr                                            
ffc0b94c:	80 01 00 14 	lwz     r0,20(r1)                              
{                                                                     
  Objects_Information *info;                                          
  int the_class_api_maximum;                                          
                                                                      
  if ( !the_class )                                                   
    return NULL;                                                      
ffc0b950:	38 60 00 00 	li      r3,0                                   
    if ( info->maximum == 0 )                                         
      return NULL;                                                    
  #endif                                                              
                                                                      
  return info;                                                        
}                                                                     
ffc0b954:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0b958:	7c 08 03 a6 	mtlr    r0                                     
ffc0b95c:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0b960:	38 21 00 10 	addi    r1,r1,16                               
ffc0b964:	4e 80 00 20 	blr                                            
                                                                      

ffc1b7f0 <_Objects_Get_name_as_string>: char *_Objects_Get_name_as_string( Objects_Id id, size_t length, char *name ) {
ffc1b7f0:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc1b7f4:	7c 08 02 a6 	mflr    r0                                     
ffc1b7f8:	93 a1 00 1c 	stw     r29,28(r1)                             
  char                   lname[5];                                    
  Objects_Control       *the_object;                                  
  Objects_Locations      location;                                    
  Objects_Id             tmpId;                                       
                                                                      
  if ( length == 0 )                                                  
ffc1b7fc:	7c 9d 23 79 	mr.     r29,r4                                 
char *_Objects_Get_name_as_string(                                    
  Objects_Id        id,                                               
  size_t            length,                                           
  char             *name                                              
)                                                                     
{                                                                     
ffc1b800:	90 01 00 2c 	stw     r0,44(r1)                              
ffc1b804:	93 81 00 18 	stw     r28,24(r1)                             
ffc1b808:	93 c1 00 20 	stw     r30,32(r1)                             
ffc1b80c:	93 e1 00 24 	stw     r31,36(r1)                             
  char                   lname[5];                                    
  Objects_Control       *the_object;                                  
  Objects_Locations      location;                                    
  Objects_Id             tmpId;                                       
                                                                      
  if ( length == 0 )                                                  
ffc1b810:	41 82 00 44 	beq-    ffc1b854 <_Objects_Get_name_as_string+0x64>
    return NULL;                                                      
                                                                      
  if ( name == NULL )                                                 
ffc1b814:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc1b818:	7c bf 2b 78 	mr      r31,r5                                 
ffc1b81c:	41 9e 00 38 	beq-    cr7,ffc1b854 <_Objects_Get_name_as_string+0x64>
    return NULL;                                                      
                                                                      
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
ffc1b820:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc1b824:	7c 7e 1b 78 	mr      r30,r3                                 
ffc1b828:	41 9e 01 18 	beq-    cr7,ffc1b940 <_Objects_Get_name_as_string+0x150>
                                                                      
  information = _Objects_Get_information_id( tmpId );                 
ffc1b82c:	7f c3 f3 78 	mr      r3,r30                                 
ffc1b830:	4b ff 6e 41 	bl      ffc12670 <_Objects_Get_information_id> 
  if ( !information )                                                 
ffc1b834:	7c 7c 1b 79 	mr.     r28,r3                                 
ffc1b838:	41 82 00 1c 	beq-    ffc1b854 <_Objects_Get_name_as_string+0x64>
    return NULL;                                                      
                                                                      
  the_object = _Objects_Get( information, tmpId, &location );         
ffc1b83c:	7f c4 f3 78 	mr      r4,r30                                 
ffc1b840:	38 a1 00 10 	addi    r5,r1,16                               
ffc1b844:	4b ff 6f 49 	bl      ffc1278c <_Objects_Get>                
  switch ( location ) {                                               
ffc1b848:	81 21 00 10 	lwz     r9,16(r1)                              
ffc1b84c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc1b850:	41 9e 00 2c 	beq-    cr7,ffc1b87c <_Objects_Get_name_as_string+0x8c>
                                                                      
      _Thread_Enable_dispatch();                                      
      return name;                                                    
  }                                                                   
  return NULL;                  /* unreachable path */                
}                                                                     
ffc1b854:	80 01 00 2c 	lwz     r0,44(r1)                              
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:                                              
      /* not supported */                                             
#endif                                                                
    case OBJECTS_ERROR:                                               
      return NULL;                                                    
ffc1b858:	3b e0 00 00 	li      r31,0                                  
                                                                      
      _Thread_Enable_dispatch();                                      
      return name;                                                    
  }                                                                   
  return NULL;                  /* unreachable path */                
}                                                                     
ffc1b85c:	7f e3 fb 78 	mr      r3,r31                                 
ffc1b860:	83 81 00 18 	lwz     r28,24(r1)                             
ffc1b864:	7c 08 03 a6 	mtlr    r0                                     
ffc1b868:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc1b86c:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc1b870:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc1b874:	38 21 00 28 	addi    r1,r1,40                               
ffc1b878:	4e 80 00 20 	blr                                            
      return NULL;                                                    
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)             
        if ( information->is_string ) {                               
ffc1b87c:	89 3c 00 38 	lbz     r9,56(r28)                             
ffc1b880:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc1b884:	40 9e 00 cc 	bne-    cr7,ffc1b950 <_Objects_Get_name_as_string+0x160>
          s = the_object->name.name_p;                                
        } else                                                        
      #endif                                                          
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
ffc1b888:	81 43 00 0c 	lwz     r10,12(r3)                             
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
        lname[ 3 ] = (u32_name >>  0) & 0xff;                         
        lname[ 4 ] = '\0';                                            
ffc1b88c:	99 21 00 0c 	stb     r9,12(r1)                              
      #endif                                                          
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
ffc1b890:	55 48 84 3e 	rlwinm  r8,r10,16,16,31                        
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
ffc1b894:	55 49 c2 3e 	rlwinm  r9,r10,24,8,31                         
      #endif                                                          
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
ffc1b898:	99 01 00 09 	stb     r8,9(r1)                               
        } else                                                        
      #endif                                                          
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
ffc1b89c:	55 47 46 3e 	rlwinm  r7,r10,8,24,31                         
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
ffc1b8a0:	99 21 00 0a 	stb     r9,10(r1)                              
        lname[ 3 ] = (u32_name >>  0) & 0xff;                         
ffc1b8a4:	99 41 00 0b 	stb     r10,11(r1)                             
        } else                                                        
      #endif                                                          
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
ffc1b8a8:	98 e1 00 08 	stb     r7,8(r1)                               
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
        lname[ 3 ] = (u32_name >>  0) & 0xff;                         
        lname[ 4 ] = '\0';                                            
        s = lname;                                                    
ffc1b8ac:	38 e1 00 08 	addi    r7,r1,8                                
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
ffc1b8b0:	2f 9d 00 01 	cmpwi   cr7,r29,1                              
ffc1b8b4:	41 9e 00 a8 	beq-    cr7,ffc1b95c <_Objects_Get_name_as_string+0x16c><== NEVER TAKEN
ffc1b8b8:	89 27 00 00 	lbz     r9,0(r7)                               
ffc1b8bc:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc1b8c0:	41 9e 00 9c 	beq-    cr7,ffc1b95c <_Objects_Get_name_as_string+0x16c>
ffc1b8c4:	3d 60 00 00 	lis     r11,0                                  
          *d = (isprint((unsigned char)*s)) ? *s : '*';               
ffc1b8c8:	3b bd ff ff 	addi    r29,r29,-1                             
 *  This method objects the name of an object and returns its name    
 *  in the form of a C string.  It attempts to be careful about       
 *  overflowing the user's string and about returning unprintable characters.
 */                                                                   
                                                                      
char *_Objects_Get_name_as_string(                                    
ffc1b8cc:	7f ea fb 78 	mr      r10,r31                                
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
          *d = (isprint((unsigned char)*s)) ? *s : '*';               
ffc1b8d0:	7f a9 03 a6 	mtctr   r29                                    
ffc1b8d4:	39 6b 29 c4 	addi    r11,r11,10692                          
ffc1b8d8:	38 c0 ff 97 	li      r6,-105                                
ffc1b8dc:	48 00 00 10 	b       ffc1b8ec <_Objects_Get_name_as_string+0xfc>
        s = lname;                                                    
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
ffc1b8e0:	8d 27 00 01 	lbzu    r9,1(r7)                               
ffc1b8e4:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc1b8e8:	41 9e 00 28 	beq-    cr7,ffc1b910 <_Objects_Get_name_as_string+0x120>
          *d = (isprint((unsigned char)*s)) ? *s : '*';               
ffc1b8ec:	81 0b 00 00 	lwz     r8,0(r11)                              
ffc1b8f0:	7d 08 4a 14 	add     r8,r8,r9                               
ffc1b8f4:	89 08 00 01 	lbz     r8,1(r8)                               
ffc1b8f8:	7d 05 30 39 	and.    r5,r8,r6                               
ffc1b8fc:	40 82 00 08 	bne-    ffc1b904 <_Objects_Get_name_as_string+0x114>
ffc1b900:	39 20 00 2a 	li      r9,42                                  
ffc1b904:	99 2a 00 00 	stb     r9,0(r10)                              
        s = lname;                                                    
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
ffc1b908:	39 4a 00 01 	addi    r10,r10,1                              
ffc1b90c:	42 00 ff d4 	bdnz+   ffc1b8e0 <_Objects_Get_name_as_string+0xf0>
          *d = (isprint((unsigned char)*s)) ? *s : '*';               
        }                                                             
      }                                                               
      *d = '\0';                                                      
ffc1b910:	39 20 00 00 	li      r9,0                                   
ffc1b914:	99 2a 00 00 	stb     r9,0(r10)                              
                                                                      
      _Thread_Enable_dispatch();                                      
ffc1b918:	4b ff 80 09 	bl      ffc13920 <_Thread_Enable_dispatch>     
      return name;                                                    
  }                                                                   
  return NULL;                  /* unreachable path */                
}                                                                     
ffc1b91c:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc1b920:	7f e3 fb 78 	mr      r3,r31                                 
ffc1b924:	83 81 00 18 	lwz     r28,24(r1)                             
ffc1b928:	7c 08 03 a6 	mtlr    r0                                     
ffc1b92c:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc1b930:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc1b934:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc1b938:	38 21 00 28 	addi    r1,r1,40                               
ffc1b93c:	4e 80 00 20 	blr                                            
    return NULL;                                                      
                                                                      
  if ( name == NULL )                                                 
    return NULL;                                                      
                                                                      
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
ffc1b940:	3d 20 00 00 	lis     r9,0                                   
ffc1b944:	81 29 3a f0 	lwz     r9,15088(r9)                           
ffc1b948:	83 c9 00 08 	lwz     r30,8(r9)                              
ffc1b94c:	4b ff fe e0 	b       ffc1b82c <_Objects_Get_name_as_string+0x3c>
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)             
        if ( information->is_string ) {                               
          s = the_object->name.name_p;                                
ffc1b950:	80 e3 00 0c 	lwz     r7,12(r3)                              
        lname[ 4 ] = '\0';                                            
        s = lname;                                                    
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
ffc1b954:	2f 87 00 00 	cmpwi   cr7,r7,0                               
ffc1b958:	40 9e ff 58 	bne+    cr7,ffc1b8b0 <_Objects_Get_name_as_string+0xc0>
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
          *d = (isprint((unsigned char)*s)) ? *s : '*';               
ffc1b95c:	7f ea fb 78 	mr      r10,r31                                
        }                                                             
      }                                                               
      *d = '\0';                                                      
ffc1b960:	39 20 00 00 	li      r9,0                                   
ffc1b964:	99 2a 00 00 	stb     r9,0(r10)                              
                                                                      
      _Thread_Enable_dispatch();                                      
ffc1b968:	4b ff 7f b9 	bl      ffc13920 <_Thread_Enable_dispatch>     
ffc1b96c:	4b ff ff b0 	b       ffc1b91c <_Objects_Get_name_as_string+0x12c>
                                                                      

ffc1f050 <_Objects_Get_next>: Objects_Information *information, Objects_Id id, Objects_Locations *location_p, Objects_Id *next_id_p ) {
ffc1f050:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc1f054:	7c 08 02 a6 	mflr    r0                                     
ffc1f058:	93 a1 00 0c 	stw     r29,12(r1)                             
    Objects_Control *object;                                          
    Objects_Id       next_id;                                         
                                                                      
    if ( !information )                                               
ffc1f05c:	7c 7d 1b 79 	mr.     r29,r3                                 
    Objects_Information *information,                                 
    Objects_Id           id,                                          
    Objects_Locations   *location_p,                                  
    Objects_Id          *next_id_p                                    
)                                                                     
{                                                                     
ffc1f060:	90 01 00 1c 	stw     r0,28(r1)                              
ffc1f064:	93 81 00 08 	stw     r28,8(r1)                              
ffc1f068:	93 c1 00 10 	stw     r30,16(r1)                             
ffc1f06c:	93 e1 00 14 	stw     r31,20(r1)                             
    Objects_Control *object;                                          
    Objects_Id       next_id;                                         
                                                                      
    if ( !information )                                               
ffc1f070:	41 82 00 d8 	beq-    ffc1f148 <_Objects_Get_next+0xf8>      
      return NULL;                                                    
                                                                      
    if ( !location_p )                                                
ffc1f074:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc1f078:	7c be 2b 78 	mr      r30,r5                                 
ffc1f07c:	41 9e 00 cc 	beq-    cr7,ffc1f148 <_Objects_Get_next+0xf8>  
      return NULL;                                                    
                                                                      
    if ( !next_id_p )                                                 
ffc1f080:	2f 86 00 00 	cmpwi   cr7,r6,0                               
ffc1f084:	7c dc 33 78 	mr      r28,r6                                 
ffc1f088:	41 9e 00 c0 	beq-    cr7,ffc1f148 <_Objects_Get_next+0xf8>  
      return NULL;                                                    
                                                                      
    if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX)           
ffc1f08c:	54 89 04 3e 	clrlwi  r9,r4,16                               
ffc1f090:	2f 89 00 00 	cmpwi   cr7,r9,0                               
        next_id = information->minimum_id;                            
    else                                                              
        next_id = id;                                                 
ffc1f094:	7c 9f 23 78 	mr      r31,r4                                 
      return NULL;                                                    
                                                                      
    if ( !next_id_p )                                                 
      return NULL;                                                    
                                                                      
    if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX)           
ffc1f098:	41 9e 00 58 	beq-    cr7,ffc1f0f0 <_Objects_Get_next+0xa0>  
    else                                                              
        next_id = id;                                                 
                                                                      
    do {                                                              
        /* walked off end of list? */                                 
        if (_Objects_Get_index(next_id) > information->maximum)       
ffc1f09c:	a1 5d 00 10 	lhz     r10,16(r29)                            
ffc1f0a0:	57 e9 04 3e 	clrlwi  r9,r31,16                              
            *location_p = OBJECTS_ERROR;                              
            goto final;                                               
        }                                                             
                                                                      
        /* try to grab one */                                         
        object = _Objects_Get(information, next_id, location_p);      
ffc1f0a4:	7f e4 fb 78 	mr      r4,r31                                 
    else                                                              
        next_id = id;                                                 
                                                                      
    do {                                                              
        /* walked off end of list? */                                 
        if (_Objects_Get_index(next_id) > information->maximum)       
ffc1f0a8:	7f 8a 48 40 	cmplw   cr7,r10,r9                             
            *location_p = OBJECTS_ERROR;                              
            goto final;                                               
        }                                                             
                                                                      
        /* try to grab one */                                         
        object = _Objects_Get(information, next_id, location_p);      
ffc1f0ac:	7f a3 eb 78 	mr      r3,r29                                 
ffc1f0b0:	7f c5 f3 78 	mr      r5,r30                                 
                                                                      
        next_id++;                                                    
ffc1f0b4:	3b ff 00 01 	addi    r31,r31,1                              
    else                                                              
        next_id = id;                                                 
                                                                      
    do {                                                              
        /* walked off end of list? */                                 
        if (_Objects_Get_index(next_id) > information->maximum)       
ffc1f0b8:	41 9c 00 5c 	blt-    cr7,ffc1f114 <_Objects_Get_next+0xc4>  
            *location_p = OBJECTS_ERROR;                              
            goto final;                                               
        }                                                             
                                                                      
        /* try to grab one */                                         
        object = _Objects_Get(information, next_id, location_p);      
ffc1f0bc:	4b ff 36 d1 	bl      ffc1278c <_Objects_Get>                
                                                                      
        next_id++;                                                    
                                                                      
    } while (*location_p != OBJECTS_LOCAL);                           
ffc1f0c0:	81 3e 00 00 	lwz     r9,0(r30)                              
ffc1f0c4:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc1f0c8:	40 9e ff d4 	bne+    cr7,ffc1f09c <_Objects_Get_next+0x4c>  
                                                                      
    *next_id_p = next_id;                                             
ffc1f0cc:	93 fc 00 00 	stw     r31,0(r28)                             
    return object;                                                    
                                                                      
final:                                                                
    *next_id_p = OBJECTS_ID_FINAL;                                    
    return 0;                                                         
}                                                                     
ffc1f0d0:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc1f0d4:	83 81 00 08 	lwz     r28,8(r1)                              
ffc1f0d8:	7c 08 03 a6 	mtlr    r0                                     
ffc1f0dc:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc1f0e0:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc1f0e4:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc1f0e8:	38 21 00 18 	addi    r1,r1,24                               
ffc1f0ec:	4e 80 00 20 	blr                                            
                                                                      
    if ( !next_id_p )                                                 
      return NULL;                                                    
                                                                      
    if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX)           
        next_id = information->minimum_id;                            
ffc1f0f0:	83 fd 00 08 	lwz     r31,8(r29)                             
            *location_p = OBJECTS_ERROR;                              
            goto final;                                               
        }                                                             
                                                                      
        /* try to grab one */                                         
        object = _Objects_Get(information, next_id, location_p);      
ffc1f0f4:	7f a3 eb 78 	mr      r3,r29                                 
    else                                                              
        next_id = id;                                                 
                                                                      
    do {                                                              
        /* walked off end of list? */                                 
        if (_Objects_Get_index(next_id) > information->maximum)       
ffc1f0f8:	a1 5d 00 10 	lhz     r10,16(r29)                            
            *location_p = OBJECTS_ERROR;                              
            goto final;                                               
        }                                                             
                                                                      
        /* try to grab one */                                         
        object = _Objects_Get(information, next_id, location_p);      
ffc1f0fc:	7f c5 f3 78 	mr      r5,r30                                 
    else                                                              
        next_id = id;                                                 
                                                                      
    do {                                                              
        /* walked off end of list? */                                 
        if (_Objects_Get_index(next_id) > information->maximum)       
ffc1f100:	57 e9 04 3e 	clrlwi  r9,r31,16                              
ffc1f104:	7f 8a 48 40 	cmplw   cr7,r10,r9                             
            *location_p = OBJECTS_ERROR;                              
            goto final;                                               
        }                                                             
                                                                      
        /* try to grab one */                                         
        object = _Objects_Get(information, next_id, location_p);      
ffc1f108:	7f e4 fb 78 	mr      r4,r31                                 
                                                                      
        next_id++;                                                    
ffc1f10c:	3b ff 00 01 	addi    r31,r31,1                              
    else                                                              
        next_id = id;                                                 
                                                                      
    do {                                                              
        /* walked off end of list? */                                 
        if (_Objects_Get_index(next_id) > information->maximum)       
ffc1f110:	40 9c ff ac 	bge+    cr7,ffc1f0bc <_Objects_Get_next+0x6c>  <== ALWAYS TAKEN
    return object;                                                    
                                                                      
final:                                                                
    *next_id_p = OBJECTS_ID_FINAL;                                    
    return 0;                                                         
}                                                                     
ffc1f114:	80 01 00 1c 	lwz     r0,28(r1)                              
                                                                      
    do {                                                              
        /* walked off end of list? */                                 
        if (_Objects_Get_index(next_id) > information->maximum)       
        {                                                             
            *location_p = OBJECTS_ERROR;                              
ffc1f118:	39 20 00 01 	li      r9,1                                   
ffc1f11c:	91 3e 00 00 	stw     r9,0(r30)                              
                                                                      
    *next_id_p = next_id;                                             
    return object;                                                    
                                                                      
final:                                                                
    *next_id_p = OBJECTS_ID_FINAL;                                    
ffc1f120:	39 20 ff ff 	li      r9,-1                                  
    return 0;                                                         
}                                                                     
ffc1f124:	7c 08 03 a6 	mtlr    r0                                     
    *next_id_p = next_id;                                             
    return object;                                                    
                                                                      
final:                                                                
    *next_id_p = OBJECTS_ID_FINAL;                                    
    return 0;                                                         
ffc1f128:	38 60 00 00 	li      r3,0                                   
                                                                      
    *next_id_p = next_id;                                             
    return object;                                                    
                                                                      
final:                                                                
    *next_id_p = OBJECTS_ID_FINAL;                                    
ffc1f12c:	91 3c 00 00 	stw     r9,0(r28)                              
    return 0;                                                         
}                                                                     
ffc1f130:	83 81 00 08 	lwz     r28,8(r1)                              
ffc1f134:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc1f138:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc1f13c:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc1f140:	38 21 00 18 	addi    r1,r1,24                               
ffc1f144:	4e 80 00 20 	blr                                            
{                                                                     
    Objects_Control *object;                                          
    Objects_Id       next_id;                                         
                                                                      
    if ( !information )                                               
      return NULL;                                                    
ffc1f148:	38 60 00 00 	li      r3,0                                   
ffc1f14c:	4b ff ff 84 	b       ffc1f0d0 <_Objects_Get_next+0x80>      
                                                                      

ffc20960 <_Objects_Get_no_protection>: /* * You can't just extract the index portion or you can get tricked * by a value between 1 and maximum. */ index = id - information->minimum_id + 1;
ffc20960:	81 23 00 08 	lwz     r9,8(r3)                               
                                                                      
  if ( information->maximum >= index ) {                              
ffc20964:	a1 43 00 10 	lhz     r10,16(r3)                             
                                                                      
  /*                                                                  
   * You can't just extract the index portion or you can get tricked  
   * by a value between 1 and maximum.                                
   */                                                                 
  index = id - information->minimum_id + 1;                           
ffc20968:	21 29 00 01 	subfic  r9,r9,1                                
ffc2096c:	7c 89 22 14 	add     r4,r9,r4                               
                                                                      
  if ( information->maximum >= index ) {                              
ffc20970:	7f 84 50 40 	cmplw   cr7,r4,r10                             
ffc20974:	41 9d 00 24 	bgt-    cr7,ffc20998 <_Objects_Get_no_protection+0x38>
    if ( (the_object = information->local_table[ index ]) != NULL ) { 
ffc20978:	81 23 00 1c 	lwz     r9,28(r3)                              
ffc2097c:	54 84 10 3a 	rlwinm  r4,r4,2,0,29                           
ffc20980:	7c 69 20 2e 	lwzx    r3,r9,r4                               
ffc20984:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc20988:	41 9e 00 10 	beq-    cr7,ffc20998 <_Objects_Get_no_protection+0x38><== NEVER TAKEN
      *location = OBJECTS_LOCAL;                                      
ffc2098c:	39 20 00 00 	li      r9,0                                   
ffc20990:	91 25 00 00 	stw     r9,0(r5)                               
      return the_object;                                              
ffc20994:	4e 80 00 20 	blr                                            
                                                                      
  /*                                                                  
   *  This isn't supported or required yet for Global objects so      
   *  if it isn't local, we don't find it.                            
   */                                                                 
  *location = OBJECTS_ERROR;                                          
ffc20998:	39 20 00 01 	li      r9,1                                   
ffc2099c:	91 25 00 00 	stw     r9,0(r5)                               
  return NULL;                                                        
ffc209a0:	38 60 00 00 	li      r3,0                                   
}                                                                     
ffc209a4:	4e 80 00 20 	blr                                            
                                                                      

ffc1281c <_Objects_Id_to_name>: /* * Caller is trusted for name != NULL. */ tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
ffc1281c:	7c 69 1b 79 	mr.     r9,r3                                  
                                                                      
Objects_Name_or_id_lookup_errors _Objects_Id_to_name (                
  Objects_Id      id,                                                 
  Objects_Name   *name                                                
)                                                                     
{                                                                     
ffc12820:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc12824:	7c 08 02 a6 	mflr    r0                                     
ffc12828:	93 e1 00 1c 	stw     r31,28(r1)                             
ffc1282c:	7c 9f 23 78 	mr      r31,r4                                 
ffc12830:	90 01 00 24 	stw     r0,36(r1)                              
                                                                      
  /*                                                                  
   *  Caller is trusted for name != NULL.                             
   */                                                                 
                                                                      
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
ffc12834:	40 82 00 10 	bne-    ffc12844 <_Objects_Id_to_name+0x28>    
ffc12838:	3d 20 00 00 	lis     r9,0                                   
ffc1283c:	81 29 3a f0 	lwz     r9,15088(r9)                           
ffc12840:	81 29 00 08 	lwz     r9,8(r9)                               
 */                                                                   
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(                   
  Objects_Id id                                                       
)                                                                     
{                                                                     
  return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
ffc12844:	55 2a 47 7e 	rlwinm  r10,r9,8,29,31                         
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(                      
  uint32_t   the_api                                                  
)                                                                     
{                                                                     
  if ( !the_api || the_api > OBJECTS_APIS_LAST )                      
ffc12848:	39 0a ff ff 	addi    r8,r10,-1                              
ffc1284c:	2b 88 00 02 	cmplwi  cr7,r8,2                               
ffc12850:	41 9d 00 38 	bgt-    cr7,ffc12888 <_Objects_Id_to_name+0x6c>
                                                                      
  the_api = _Objects_Get_API( tmpId );                                
  if ( !_Objects_Is_api_valid( the_api ) )                            
    return OBJECTS_INVALID_ID;                                        
                                                                      
  if ( !_Objects_Information_table[ the_api ] )                       
ffc12854:	3d 00 00 00 	lis     r8,0                                   
ffc12858:	55 4a 10 3a 	rlwinm  r10,r10,2,0,29                         
ffc1285c:	39 08 35 78 	addi    r8,r8,13688                            
ffc12860:	7d 48 50 2e 	lwzx    r10,r8,r10                             
ffc12864:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc12868:	41 9e 00 20 	beq-    cr7,ffc12888 <_Objects_Id_to_name+0x6c>
    return OBJECTS_INVALID_ID;                                        
                                                                      
  the_class = _Objects_Get_class( tmpId );                            
                                                                      
  information = _Objects_Information_table[ the_api ][ the_class ];   
ffc1286c:	55 28 3e 7a 	rlwinm  r8,r9,7,25,29                          
ffc12870:	7c 6a 40 2e 	lwzx    r3,r10,r8                              
  if ( !information )                                                 
ffc12874:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc12878:	41 9e 00 10 	beq-    cr7,ffc12888 <_Objects_Id_to_name+0x6c><== NEVER TAKEN
    return OBJECTS_INVALID_ID;                                        
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    if ( information->is_string )                                     
ffc1287c:	89 43 00 38 	lbz     r10,56(r3)                             
ffc12880:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc12884:	41 9e 00 1c 	beq-    cr7,ffc128a0 <_Objects_Id_to_name+0x84><== ALWAYS TAKEN
                                                                      
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
                                                                      
  the_api = _Objects_Get_API( tmpId );                                
  if ( !_Objects_Is_api_valid( the_api ) )                            
    return OBJECTS_INVALID_ID;                                        
ffc12888:	38 60 00 03 	li      r3,3                                   
    return OBJECTS_INVALID_ID;                                        
                                                                      
  *name = the_object->name;                                           
  _Thread_Enable_dispatch();                                          
  return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;                        
}                                                                     
ffc1288c:	80 01 00 24 	lwz     r0,36(r1)                              
ffc12890:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc12894:	7c 08 03 a6 	mtlr    r0                                     
ffc12898:	38 21 00 20 	addi    r1,r1,32                               
ffc1289c:	4e 80 00 20 	blr                                            
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    if ( information->is_string )                                     
      return OBJECTS_INVALID_ID;                                      
  #endif                                                              
                                                                      
  the_object = _Objects_Get( information, tmpId, &ignored_location ); 
ffc128a0:	7d 24 4b 78 	mr      r4,r9                                  
ffc128a4:	38 a1 00 08 	addi    r5,r1,8                                
ffc128a8:	4b ff fe e5 	bl      ffc1278c <_Objects_Get>                
  if ( !the_object )                                                  
ffc128ac:	2c 03 00 00 	cmpwi   r3,0                                   
ffc128b0:	41 a2 ff d8 	beq-    ffc12888 <_Objects_Id_to_name+0x6c>    
    return OBJECTS_INVALID_ID;                                        
                                                                      
  *name = the_object->name;                                           
ffc128b4:	81 23 00 0c 	lwz     r9,12(r3)                              
ffc128b8:	91 3f 00 00 	stw     r9,0(r31)                              
  _Thread_Enable_dispatch();                                          
ffc128bc:	48 00 10 65 	bl      ffc13920 <_Thread_Enable_dispatch>     
  return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;                        
ffc128c0:	38 60 00 00 	li      r3,0                                   
ffc128c4:	4b ff ff c8 	b       ffc1288c <_Objects_Id_to_name+0x70>    
                                                                      

ffc0bc1c <_Objects_Shrink_information>: #include <rtems/score/isr.h> void _Objects_Shrink_information( Objects_Information *information ) {
ffc0bc1c:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0bc20:	7c 08 02 a6 	mflr    r0                                     
ffc0bc24:	90 01 00 1c 	stw     r0,28(r1)                              
ffc0bc28:	93 e1 00 14 	stw     r31,20(r1)                             
  /*                                                                  
   * Search the list to find block or chunk with all objects inactive.
   */                                                                 
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
ffc0bc2c:	a0 e3 00 10 	lhz     r7,16(r3)                              
                                                                      
  /*                                                                  
   * Search the list to find block or chunk with all objects inactive.
   */                                                                 
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
ffc0bc30:	a3 e3 00 0a 	lhz     r31,10(r3)                             
  block_count = (information->maximum - index_base) /                 
ffc0bc34:	a1 43 00 14 	lhz     r10,20(r3)                             
ffc0bc38:	7c ff 38 50 	subf    r7,r31,r7                              
#include <rtems/score/isr.h>                                          
                                                                      
void _Objects_Shrink_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
ffc0bc3c:	93 81 00 08 	stw     r28,8(r1)                              
  /*                                                                  
   * Search the list to find block or chunk with all objects inactive.
   */                                                                 
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
ffc0bc40:	7c e7 53 96 	divwu   r7,r7,r10                              
#include <rtems/score/isr.h>                                          
                                                                      
void _Objects_Shrink_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
ffc0bc44:	93 a1 00 0c 	stw     r29,12(r1)                             
ffc0bc48:	93 c1 00 10 	stw     r30,16(r1)                             
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
ffc0bc4c:	2f 87 00 00 	cmpwi   cr7,r7,0                               
#include <rtems/score/isr.h>                                          
                                                                      
void _Objects_Shrink_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
ffc0bc50:	7c 7c 1b 78 	mr      r28,r3                                 
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
ffc0bc54:	41 9e 00 3c 	beq-    cr7,ffc0bc90 <_Objects_Shrink_information+0x74><== NEVER TAKEN
    if ( information->inactive_per_block[ block ] ==                  
ffc0bc58:	81 03 00 30 	lwz     r8,48(r3)                              
ffc0bc5c:	81 28 00 00 	lwz     r9,0(r8)                               
ffc0bc60:	7f 8a 48 00 	cmpw    cr7,r10,r9                             
ffc0bc64:	41 9e 00 4c 	beq-    cr7,ffc0bcb0 <_Objects_Shrink_information+0x94><== NEVER TAKEN
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
ffc0bc68:	39 20 00 00 	li      r9,0                                   
ffc0bc6c:	7c e9 03 a6 	mtctr   r7                                     
ffc0bc70:	48 00 00 14 	b       ffc0bc84 <_Objects_Shrink_information+0x68>
    if ( information->inactive_per_block[ block ] ==                  
ffc0bc74:	84 e8 00 04 	lwzu    r7,4(r8)                               
#include <rtems/score/thread.h>                                       
#include <rtems/score/wkspace.h>                                      
#include <rtems/score/sysstate.h>                                     
#include <rtems/score/isr.h>                                          
                                                                      
void _Objects_Shrink_information(                                     
ffc0bc78:	55 3d 10 3a 	rlwinm  r29,r9,2,0,29                          
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
    if ( information->inactive_per_block[ block ] ==                  
ffc0bc7c:	7f 8a 38 00 	cmpw    cr7,r10,r7                             
ffc0bc80:	41 9e 00 34 	beq-    cr7,ffc0bcb4 <_Objects_Shrink_information+0x98>
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
ffc0bc84:	39 29 00 01 	addi    r9,r9,1                                
      information->inactive -= information->allocation_size;          
                                                                      
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
ffc0bc88:	7f ff 52 14 	add     r31,r31,r10                            
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
ffc0bc8c:	42 00 ff e8 	bdnz+   ffc0bc74 <_Objects_Shrink_information+0x58>
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
  }                                                                   
}                                                                     
ffc0bc90:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0bc94:	83 81 00 08 	lwz     r28,8(r1)                              
ffc0bc98:	7c 08 03 a6 	mtlr    r0                                     
ffc0bc9c:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0bca0:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0bca4:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0bca8:	38 21 00 18 	addi    r1,r1,24                               
ffc0bcac:	4e 80 00 20 	blr                                            
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
    if ( information->inactive_per_block[ block ] ==                  
ffc0bcb0:	3b a0 00 00 	li      r29,0                                  <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
ffc0bcb4:	80 7c 00 20 	lwz     r3,32(r28)                             
ffc0bcb8:	48 00 00 10 	b       ffc0bcc8 <_Objects_Shrink_information+0xac>
         if ((index >= index_base) &&                                 
             (index < (index_base + information->allocation_size))) { 
           _Chain_Extract( &extract_me->Node );                       
         }                                                            
       }                                                              
       while ( the_object );                                          
ffc0bcbc:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
         index = _Objects_Get_index( the_object->id );                
         /*                                                           
          *  Get the next node before the node is extracted           
          */                                                          
         extract_me = the_object;                                     
         the_object = (Objects_Control *) the_object->Node.next;      
ffc0bcc0:	7f c3 f3 78 	mr      r3,r30                                 
         if ((index >= index_base) &&                                 
             (index < (index_base + information->allocation_size))) { 
           _Chain_Extract( &extract_me->Node );                       
         }                                                            
       }                                                              
       while ( the_object );                                          
ffc0bcc4:	41 9e 00 34 	beq-    cr7,ffc0bcf8 <_Objects_Shrink_information+0xdc>
       *  Assume the Inactive chain is never empty at this point      
       */                                                             
      the_object = (Objects_Control *) _Chain_First( &information->Inactive );
                                                                      
      do {                                                            
         index = _Objects_Get_index( the_object->id );                
ffc0bcc8:	a1 43 00 0a 	lhz     r10,10(r3)                             
         /*                                                           
          *  Get the next node before the node is extracted           
          */                                                          
         extract_me = the_object;                                     
         the_object = (Objects_Control *) the_object->Node.next;      
ffc0bccc:	83 c3 00 00 	lwz     r30,0(r3)                              
         if ((index >= index_base) &&                                 
ffc0bcd0:	7f 8a f8 40 	cmplw   cr7,r10,r31                            
ffc0bcd4:	41 bc ff e8 	blt-    cr7,ffc0bcbc <_Objects_Shrink_information+0xa0>
             (index < (index_base + information->allocation_size))) { 
ffc0bcd8:	a1 1c 00 14 	lhz     r8,20(r28)                             
ffc0bcdc:	7d 1f 42 14 	add     r8,r31,r8                              
         /*                                                           
          *  Get the next node before the node is extracted           
          */                                                          
         extract_me = the_object;                                     
         the_object = (Objects_Control *) the_object->Node.next;      
         if ((index >= index_base) &&                                 
ffc0bce0:	7f 8a 40 40 	cmplw   cr7,r10,r8                             
ffc0bce4:	40 9c ff d8 	bge+    cr7,ffc0bcbc <_Objects_Shrink_information+0xa0>
             (index < (index_base + information->allocation_size))) { 
           _Chain_Extract( &extract_me->Node );                       
ffc0bce8:	48 00 49 09 	bl      ffc105f0 <_Chain_Extract>              
         }                                                            
       }                                                              
       while ( the_object );                                          
ffc0bcec:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
         index = _Objects_Get_index( the_object->id );                
         /*                                                           
          *  Get the next node before the node is extracted           
          */                                                          
         extract_me = the_object;                                     
         the_object = (Objects_Control *) the_object->Node.next;      
ffc0bcf0:	7f c3 f3 78 	mr      r3,r30                                 
         if ((index >= index_base) &&                                 
             (index < (index_base + information->allocation_size))) { 
           _Chain_Extract( &extract_me->Node );                       
         }                                                            
       }                                                              
       while ( the_object );                                          
ffc0bcf4:	40 9e ff d4 	bne+    cr7,ffc0bcc8 <_Objects_Shrink_information+0xac><== ALWAYS TAKEN
      /*                                                              
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
ffc0bcf8:	81 3c 00 34 	lwz     r9,52(r28)                             
ffc0bcfc:	7c 69 e8 2e 	lwzx    r3,r9,r29                              
ffc0bd00:	48 00 22 85 	bl      ffc0df84 <_Workspace_Free>             
      information->object_blocks[ block ] = NULL;                     
ffc0bd04:	81 3c 00 34 	lwz     r9,52(r28)                             
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
  }                                                                   
}                                                                     
ffc0bd08:	80 01 00 1c 	lwz     r0,28(r1)                              
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
      information->object_blocks[ block ] = NULL;                     
      information->inactive_per_block[ block ] = 0;                   
                                                                      
      information->inactive -= information->allocation_size;          
ffc0bd0c:	a1 1c 00 2c 	lhz     r8,44(r28)                             
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
  }                                                                   
}                                                                     
ffc0bd10:	7c 08 03 a6 	mtlr    r0                                     
      /*                                                              
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
      information->object_blocks[ block ] = NULL;                     
ffc0bd14:	7f c9 e9 2e 	stwx    r30,r9,r29                             
      information->inactive_per_block[ block ] = 0;                   
                                                                      
      information->inactive -= information->allocation_size;          
ffc0bd18:	a1 5c 00 14 	lhz     r10,20(r28)                            
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
      information->object_blocks[ block ] = NULL;                     
      information->inactive_per_block[ block ] = 0;                   
ffc0bd1c:	81 3c 00 30 	lwz     r9,48(r28)                             
                                                                      
      information->inactive -= information->allocation_size;          
ffc0bd20:	7d 4a 40 50 	subf    r10,r10,r8                             
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
  }                                                                   
}                                                                     
ffc0bd24:	83 e1 00 14 	lwz     r31,20(r1)                             
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
      information->object_blocks[ block ] = NULL;                     
      information->inactive_per_block[ block ] = 0;                   
ffc0bd28:	7f c9 e9 2e 	stwx    r30,r9,r29                             
                                                                      
      information->inactive -= information->allocation_size;          
ffc0bd2c:	b1 5c 00 2c 	sth     r10,44(r28)                            
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
  }                                                                   
}                                                                     
ffc0bd30:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0bd34:	83 81 00 08 	lwz     r28,8(r1)                              
ffc0bd38:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0bd3c:	38 21 00 18 	addi    r1,r1,24                               
ffc0bd40:	4e 80 00 20 	blr                                            
                                                                      

ffc0bbcc <_POSIX_Absolute_timeout_to_ticks>: */ POSIX_Absolute_timeout_conversion_results_t _POSIX_Absolute_timeout_to_ticks( const struct timespec *abstime, Watchdog_Interval *ticks_out ) {
ffc0bbcc:	94 21 ff c8 	stwu    r1,-56(r1)                             
ffc0bbd0:	7c 08 02 a6 	mflr    r0                                     
                                                                      
                                                                      
  /*                                                                  
   *  Make sure there is always a value returned.                     
   */                                                                 
  *ticks_out = 0;                                                     
ffc0bbd4:	39 20 00 00 	li      r9,0                                   
 */                                                                   
POSIX_Absolute_timeout_conversion_results_t _POSIX_Absolute_timeout_to_ticks(
  const struct timespec *abstime,                                     
  Watchdog_Interval     *ticks_out                                    
)                                                                     
{                                                                     
ffc0bbd8:	93 81 00 28 	stw     r28,40(r1)                             
ffc0bbdc:	7c 7c 1b 78 	mr      r28,r3                                 
ffc0bbe0:	93 a1 00 2c 	stw     r29,44(r1)                             
ffc0bbe4:	7c 9d 23 78 	mr      r29,r4                                 
ffc0bbe8:	90 01 00 3c 	stw     r0,60(r1)                              
ffc0bbec:	93 c1 00 30 	stw     r30,48(r1)                             
ffc0bbf0:	93 e1 00 34 	stw     r31,52(r1)                             
                                                                      
                                                                      
  /*                                                                  
   *  Make sure there is always a value returned.                     
   */                                                                 
  *ticks_out = 0;                                                     
ffc0bbf4:	91 24 00 00 	stw     r9,0(r4)                               
                                                                      
  /*                                                                  
   *  Is the absolute time even valid?                                
   */                                                                 
  if ( !_Timespec_Is_valid(abstime) )                                 
ffc0bbf8:	48 00 51 99 	bl      ffc10d90 <_Timespec_Is_valid>          
ffc0bbfc:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0bc00:	40 9e 00 28 	bne-    cr7,ffc0bc28 <_POSIX_Absolute_timeout_to_ticks+0x5c>
    return POSIX_ABSOLUTE_TIMEOUT_INVALID;                            
ffc0bc04:	38 60 00 00 	li      r3,0                                   
  /*                                                                  
   *  This is the case we were expecting and it took this long to     
   *  get here.                                                       
   */                                                                 
  return POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE;                         
}                                                                     
ffc0bc08:	80 01 00 3c 	lwz     r0,60(r1)                              
ffc0bc0c:	83 81 00 28 	lwz     r28,40(r1)                             
ffc0bc10:	7c 08 03 a6 	mtlr    r0                                     
ffc0bc14:	83 a1 00 2c 	lwz     r29,44(r1)                             
ffc0bc18:	83 c1 00 30 	lwz     r30,48(r1)                             
ffc0bc1c:	83 e1 00 34 	lwz     r31,52(r1)                             
ffc0bc20:	38 21 00 38 	addi    r1,r1,56                               
ffc0bc24:	4e 80 00 20 	blr                                            
)                                                                     
{                                                                     
  Timestamp_Control  tod_as_timestamp;                                
  Timestamp_Control *tod_as_timestamp_ptr;                            
                                                                      
  tod_as_timestamp_ptr =                                              
ffc0bc28:	3c 80 00 00 	lis     r4,0                                   
ffc0bc2c:	38 84 2c c0 	addi    r4,r4,11456                            
ffc0bc30:	38 61 00 18 	addi    r3,r1,24                               
ffc0bc34:	48 00 26 41 	bl      ffc0e274 <_TOD_Get_with_nanoseconds>   
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
ffc0bc38:	3c c0 3b 9a 	lis     r6,15258                               
ffc0bc3c:	83 c3 00 00 	lwz     r30,0(r3)                              
ffc0bc40:	38 a0 00 00 	li      r5,0                                   
ffc0bc44:	83 e3 00 04 	lwz     r31,4(r3)                              
ffc0bc48:	60 c6 ca 00 	ori     r6,r6,51712                            
ffc0bc4c:	7f c3 f3 78 	mr      r3,r30                                 
ffc0bc50:	7f e4 fb 78 	mr      r4,r31                                 
ffc0bc54:	48 00 f7 01 	bl      ffc1b354 <__divdi3>                    
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
ffc0bc58:	3c c0 3b 9a 	lis     r6,15258                               
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
ffc0bc5c:	90 81 00 10 	stw     r4,16(r1)                              
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
ffc0bc60:	38 a0 00 00 	li      r5,0                                   
ffc0bc64:	60 c6 ca 00 	ori     r6,r6,51712                            
ffc0bc68:	7f c3 f3 78 	mr      r3,r30                                 
ffc0bc6c:	7f e4 fb 78 	mr      r4,r31                                 
ffc0bc70:	48 00 fb 09 	bl      ffc1b778 <__moddi3>                    
  /*                                                                  
   *  Is the absolute time in the past?                               
   */                                                                 
  _TOD_Get( ¤t_time );                                          
                                                                      
  if ( _Timespec_Less_than( abstime, ¤t_time ) )                
ffc0bc74:	7f 83 e3 78 	mr      r3,r28                                 
ffc0bc78:	90 81 00 14 	stw     r4,20(r1)                              
ffc0bc7c:	38 81 00 10 	addi    r4,r1,16                               
ffc0bc80:	48 00 51 51 	bl      ffc10dd0 <_Timespec_Less_than>         
ffc0bc84:	2f 83 00 00 	cmpwi   cr7,r3,0                               
    return POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST;                         
ffc0bc88:	38 60 00 01 	li      r3,1                                   
  /*                                                                  
   *  Is the absolute time in the past?                               
   */                                                                 
  _TOD_Get( ¤t_time );                                          
                                                                      
  if ( _Timespec_Less_than( abstime, ¤t_time ) )                
ffc0bc8c:	40 9e ff 7c 	bne+    cr7,ffc0bc08 <_POSIX_Absolute_timeout_to_ticks+0x3c>
    return POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST;                         
                                                                      
  /*                                                                  
   *  How long until the requested absolute time?                     
   */                                                                 
  _Timespec_Subtract( ¤t_time, abstime, &difference );          
ffc0bc90:	7f 84 e3 78 	mr      r4,r28                                 
ffc0bc94:	38 a1 00 08 	addi    r5,r1,8                                
ffc0bc98:	38 61 00 10 	addi    r3,r1,16                               
ffc0bc9c:	48 00 51 71 	bl      ffc10e0c <_Timespec_Subtract>          
                                                                      
  /*                                                                  
   *  Internally the SuperCore uses ticks, so convert to them.        
   */                                                                 
  *ticks_out = _Timespec_To_ticks( &difference );                     
ffc0bca0:	38 61 00 08 	addi    r3,r1,8                                
ffc0bca4:	48 00 51 b5 	bl      ffc10e58 <_Timespec_To_ticks>          
                                                                      
  /*                                                                  
   *  If the difference was 0, then the future is now.  It is so bright
   *  we better wear shades.                                          
   */                                                                 
  if ( !*ticks_out )                                                  
ffc0bca8:	2f 83 00 00 	cmpwi   cr7,r3,0                               
  _Timespec_Subtract( ¤t_time, abstime, &difference );          
                                                                      
  /*                                                                  
   *  Internally the SuperCore uses ticks, so convert to them.        
   */                                                                 
  *ticks_out = _Timespec_To_ticks( &difference );                     
ffc0bcac:	90 7d 00 00 	stw     r3,0(r29)                              
                                                                      
  /*                                                                  
   *  This is the case we were expecting and it took this long to     
   *  get here.                                                       
   */                                                                 
  return POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE;                         
ffc0bcb0:	38 60 00 03 	li      r3,3                                   
                                                                      
  /*                                                                  
   *  If the difference was 0, then the future is now.  It is so bright
   *  we better wear shades.                                          
   */                                                                 
  if ( !*ticks_out )                                                  
ffc0bcb4:	40 be ff 54 	bne-    cr7,ffc0bc08 <_POSIX_Absolute_timeout_to_ticks+0x3c><== ALWAYS TAKEN
    return POSIX_ABSOLUTE_TIMEOUT_IS_NOW;                             
ffc0bcb8:	38 60 00 02 	li      r3,2                                   <== NOT EXECUTED
ffc0bcbc:	4b ff ff 4c 	b       ffc0bc08 <_POSIX_Absolute_timeout_to_ticks+0x3c><== NOT EXECUTED
                                                                      

ffc127f4 <_POSIX_Keys_Run_destructors>: */ void _POSIX_Keys_Run_destructors( Thread_Control *thread ) {
ffc127f4:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc127f8:	7c 08 02 a6 	mflr    r0                                     
ffc127fc:	90 01 00 24 	stw     r0,36(r1)                              
ffc12800:	93 81 00 10 	stw     r28,16(r1)                             
  Objects_Maximum thread_index = _Objects_Get_index( thread->Object.id );
ffc12804:	83 83 00 08 	lwz     r28,8(r3)                              
 */                                                                   
                                                                      
void _POSIX_Keys_Run_destructors(                                     
  Thread_Control *thread                                              
)                                                                     
{                                                                     
ffc12808:	93 61 00 0c 	stw     r27,12(r1)                             
    for ( index = 1 ; index <= max ; ++index ) {                      
      POSIX_Keys_Control *key = (POSIX_Keys_Control *)                
        _POSIX_Keys_Information.local_table [ index ];                
                                                                      
      if ( key != NULL && key->destructor != NULL ) {                 
        void *value = key->Values [ thread_api ][ thread_index ];     
ffc1280c:	57 9b 56 fa 	rlwinm  r27,r28,10,27,29                       
 */                                                                   
                                                                      
void _POSIX_Keys_Run_destructors(                                     
  Thread_Control *thread                                              
)                                                                     
{                                                                     
ffc12810:	93 c1 00 18 	stw     r30,24(r1)                             
ffc12814:	3f c0 00 00 	lis     r30,0                                  
    for ( index = 1 ; index <= max ; ++index ) {                      
      POSIX_Keys_Control *key = (POSIX_Keys_Control *)                
        _POSIX_Keys_Information.local_table [ index ];                
                                                                      
      if ( key != NULL && key->destructor != NULL ) {                 
        void *value = key->Values [ thread_api ][ thread_index ];     
ffc12818:	57 9c 13 ba 	rlwinm  r28,r28,2,14,29                        
 */                                                                   
                                                                      
void _POSIX_Keys_Run_destructors(                                     
  Thread_Control *thread                                              
)                                                                     
{                                                                     
ffc1281c:	93 a1 00 14 	stw     r29,20(r1)                             
ffc12820:	3b de 30 58 	addi    r30,r30,12376                          
    for ( index = 1 ; index <= max ; ++index ) {                      
      POSIX_Keys_Control *key = (POSIX_Keys_Control *)                
        _POSIX_Keys_Information.local_table [ index ];                
                                                                      
      if ( key != NULL && key->destructor != NULL ) {                 
        void *value = key->Values [ thread_api ][ thread_index ];     
ffc12824:	3b 7b 00 10 	addi    r27,r27,16                             
 */                                                                   
                                                                      
void _POSIX_Keys_Run_destructors(                                     
  Thread_Control *thread                                              
)                                                                     
{                                                                     
ffc12828:	93 e1 00 1c 	stw     r31,28(r1)                             
ffc1282c:	93 41 00 08 	stw     r26,8(r1)                              
                                                                      
      if ( key != NULL && key->destructor != NULL ) {                 
        void *value = key->Values [ thread_api ][ thread_index ];     
                                                                      
        if ( value != NULL ) {                                        
          key->Values [ thread_api ][ thread_index ] = NULL;          
ffc12830:	3b 40 00 00 	li      r26,0                                  
   *                                                                  
   *  Reference: 17.1.1.2 P1003.1c/Draft 10, p. 163, line 99.         
   */                                                                 
  while ( !done ) {                                                   
    Objects_Maximum index = 0;                                        
    Objects_Maximum max = _POSIX_Keys_Information.maximum;            
ffc12834:	a3 fe 00 10 	lhz     r31,16(r30)                            
                                                                      
    done = true;                                                      
                                                                      
    for ( index = 1 ; index <= max ; ++index ) {                      
ffc12838:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
ffc1283c:	40 9e 00 2c 	bne-    cr7,ffc12868 <_POSIX_Keys_Run_destructors+0x74>
          done = false;                                               
        }                                                             
      }                                                               
    }                                                                 
  }                                                                   
}                                                                     
ffc12840:	80 01 00 24 	lwz     r0,36(r1)                              
ffc12844:	83 41 00 08 	lwz     r26,8(r1)                              
ffc12848:	7c 08 03 a6 	mtlr    r0                                     
ffc1284c:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc12850:	83 81 00 10 	lwz     r28,16(r1)                             
ffc12854:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc12858:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc1285c:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc12860:	38 21 00 20 	addi    r1,r1,32                               
ffc12864:	4e 80 00 20 	blr                                            
    Objects_Maximum index = 0;                                        
    Objects_Maximum max = _POSIX_Keys_Information.maximum;            
                                                                      
    done = true;                                                      
                                                                      
    for ( index = 1 ; index <= max ; ++index ) {                      
ffc12868:	3b a0 00 01 	li      r29,1                                  
ffc1286c:	39 40 00 01 	li      r10,1                                  
      POSIX_Keys_Control *key = (POSIX_Keys_Control *)                
ffc12870:	81 3e 00 1c 	lwz     r9,28(r30)                             
ffc12874:	57 a8 10 3a 	rlwinm  r8,r29,2,0,29                          
ffc12878:	7d 29 40 2e 	lwzx    r9,r9,r8                               
        _POSIX_Keys_Information.local_table [ index ];                
                                                                      
      if ( key != NULL && key->destructor != NULL ) {                 
ffc1287c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
        void *value = key->Values [ thread_api ][ thread_index ];     
ffc12880:	7d 09 da 14 	add     r8,r9,r27                              
                                                                      
    for ( index = 1 ; index <= max ; ++index ) {                      
      POSIX_Keys_Control *key = (POSIX_Keys_Control *)                
        _POSIX_Keys_Information.local_table [ index ];                
                                                                      
      if ( key != NULL && key->destructor != NULL ) {                 
ffc12884:	41 9e 00 34 	beq-    cr7,ffc128b8 <_POSIX_Keys_Run_destructors+0xc4>
ffc12888:	80 e9 00 10 	lwz     r7,16(r9)                              
ffc1288c:	2f 87 00 00 	cmpwi   cr7,r7,0                               
ffc12890:	41 9e 00 28 	beq-    cr7,ffc128b8 <_POSIX_Keys_Run_destructors+0xc4>
        void *value = key->Values [ thread_api ][ thread_index ];     
ffc12894:	81 08 00 04 	lwz     r8,4(r8)                               
ffc12898:	7c 68 e0 2e 	lwzx    r3,r8,r28                              
                                                                      
        if ( value != NULL ) {                                        
ffc1289c:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc128a0:	41 9e 00 18 	beq-    cr7,ffc128b8 <_POSIX_Keys_Run_destructors+0xc4><== ALWAYS TAKEN
          key->Values [ thread_api ][ thread_index ] = NULL;          
ffc128a4:	7f 48 e1 2e 	stwx    r26,r8,r28                             <== NOT EXECUTED
          (*key->destructor)( value );                                
ffc128a8:	81 29 00 10 	lwz     r9,16(r9)                              <== NOT EXECUTED
ffc128ac:	7d 29 03 a6 	mtctr   r9                                     <== NOT EXECUTED
ffc128b0:	4e 80 04 21 	bctrl                                          <== NOT EXECUTED
          done = false;                                               
ffc128b4:	39 40 00 00 	li      r10,0                                  <== NOT EXECUTED
    Objects_Maximum index = 0;                                        
    Objects_Maximum max = _POSIX_Keys_Information.maximum;            
                                                                      
    done = true;                                                      
                                                                      
    for ( index = 1 ; index <= max ; ++index ) {                      
ffc128b8:	3b bd 00 01 	addi    r29,r29,1                              
ffc128bc:	57 bd 04 3e 	clrlwi  r29,r29,16                             
ffc128c0:	7f 9f e8 40 	cmplw   cr7,r31,r29                            
ffc128c4:	40 bc ff ac 	bge-    cr7,ffc12870 <_POSIX_Keys_Run_destructors+0x7c>
   *  number of iterations.  An infinite loop may happen if destructors set
   *  thread specific data.  This can be considered dubious.          
   *                                                                  
   *  Reference: 17.1.1.2 P1003.1c/Draft 10, p. 163, line 99.         
   */                                                                 
  while ( !done ) {                                                   
ffc128c8:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc128cc:	41 9e ff 68 	beq+    cr7,ffc12834 <_POSIX_Keys_Run_destructors+0x40><== NEVER TAKEN
ffc128d0:	4b ff ff 70 	b       ffc12840 <_POSIX_Keys_Run_destructors+0x4c>
                                                                      

ffc0f758 <_POSIX_Message_queue_Receive_support>: size_t msg_len, unsigned int *msg_prio, bool wait, Watchdog_Interval timeout ) {
ffc0f758:	94 21 ff d0 	stwu    r1,-48(r1)                             
ffc0f75c:	7c 08 02 a6 	mflr    r0                                     
ffc0f760:	93 e1 00 2c 	stw     r31,44(r1)                             
ffc0f764:	7c 7f 1b 78 	mr      r31,r3                                 
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd (
  mqd_t              id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (POSIX_Message_queue_Control_fd *) _Objects_Get(             
ffc0f768:	3c 60 00 00 	lis     r3,0                                   
ffc0f76c:	93 81 00 20 	stw     r28,32(r1)                             
ffc0f770:	38 63 36 4c 	addi    r3,r3,13900                            
ffc0f774:	7c 9c 23 78 	mr      r28,r4                                 
ffc0f778:	93 a1 00 24 	stw     r29,36(r1)                             
ffc0f77c:	7f e4 fb 78 	mr      r4,r31                                 
ffc0f780:	7c bd 2b 78 	mr      r29,r5                                 
ffc0f784:	38 a1 00 0c 	addi    r5,r1,12                               
ffc0f788:	93 41 00 18 	stw     r26,24(r1)                             
ffc0f78c:	7c fa 3b 78 	mr      r26,r7                                 
ffc0f790:	93 61 00 1c 	stw     r27,28(r1)                             
ffc0f794:	7d 1b 43 78 	mr      r27,r8                                 
ffc0f798:	93 c1 00 28 	stw     r30,40(r1)                             
ffc0f79c:	7c de 33 78 	mr      r30,r6                                 
ffc0f7a0:	90 01 00 34 	stw     r0,52(r1)                              
ffc0f7a4:	48 00 40 85 	bl      ffc13828 <_Objects_Get>                
  Objects_Locations                location;                          
  size_t                           length_out;                        
  bool                             do_wait;                           
                                                                      
  the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );        
  switch ( location ) {                                               
ffc0f7a8:	81 21 00 0c 	lwz     r9,12(r1)                              
ffc0f7ac:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0f7b0:	41 9e 00 3c 	beq-    cr7,ffc0f7ec <_POSIX_Message_queue_Receive_support+0x94>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EBADF );                      
ffc0f7b4:	48 00 be b1 	bl      ffc1b664 <__errno>                     
ffc0f7b8:	39 20 00 09 	li      r9,9                                   
ffc0f7bc:	91 23 00 00 	stw     r9,0(r3)                               
ffc0f7c0:	38 60 ff ff 	li      r3,-1                                  
}                                                                     
ffc0f7c4:	80 01 00 34 	lwz     r0,52(r1)                              
ffc0f7c8:	83 41 00 18 	lwz     r26,24(r1)                             
ffc0f7cc:	7c 08 03 a6 	mtlr    r0                                     
ffc0f7d0:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc0f7d4:	83 81 00 20 	lwz     r28,32(r1)                             
ffc0f7d8:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc0f7dc:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc0f7e0:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc0f7e4:	38 21 00 30 	addi    r1,r1,48                               
ffc0f7e8:	4e 80 00 20 	blr                                            
                                                                      
  the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );        
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) {             
ffc0f7ec:	81 23 00 14 	lwz     r9,20(r3)                              
ffc0f7f0:	55 2a 07 be 	clrlwi  r10,r9,30                              
ffc0f7f4:	2f 8a 00 01 	cmpwi   cr7,r10,1                              
ffc0f7f8:	41 9e 00 e8 	beq-    cr7,ffc0f8e0 <_POSIX_Message_queue_Receive_support+0x188>
        _Thread_Enable_dispatch();                                    
        rtems_set_errno_and_return_minus_one( EBADF );                
      }                                                               
                                                                      
      the_mq = the_mq_fd->Queue;                                      
ffc0f7fc:	80 63 00 10 	lwz     r3,16(r3)                              
                                                                      
      if ( msg_len < the_mq->Message_queue.maximum_message_size ) {   
ffc0f800:	81 43 00 68 	lwz     r10,104(r3)                            
ffc0f804:	7f 8a e8 40 	cmplw   cr7,r10,r29                            
ffc0f808:	41 9d 00 a0 	bgt-    cr7,ffc0f8a8 <_POSIX_Message_queue_Receive_support+0x150>
      length_out = -1;                                                
                                                                      
      /*                                                              
       *  A timed receive with a bad time will do a poll regardless.  
       */                                                             
      if ( wait )                                                     
ffc0f80c:	2f 9a 00 00 	cmpwi   cr7,r26,0                              
      /*                                                              
       *  Now if something goes wrong, we return a "length" of -1     
       *  to indicate an error.                                       
       */                                                             
                                                                      
      length_out = -1;                                                
ffc0f810:	39 40 ff ff 	li      r10,-1                                 
ffc0f814:	91 41 00 08 	stw     r10,8(r1)                              
                                                                      
      /*                                                              
       *  A timed receive with a bad time will do a poll regardless.  
       */                                                             
      if ( wait )                                                     
ffc0f818:	38 e0 00 00 	li      r7,0                                   
ffc0f81c:	40 9e 00 80 	bne-    cr7,ffc0f89c <_POSIX_Message_queue_Receive_support+0x144>
        do_wait = wait;                                               
                                                                      
      /*                                                              
       *  Now perform the actual message receive                      
       */                                                             
      _CORE_message_queue_Seize(                                      
ffc0f820:	7f e4 fb 78 	mr      r4,r31                                 
ffc0f824:	38 63 00 1c 	addi    r3,r3,28                               
ffc0f828:	7f 85 e3 78 	mr      r5,r28                                 
ffc0f82c:	38 c1 00 08 	addi    r6,r1,8                                
ffc0f830:	7f 68 db 78 	mr      r8,r27                                 
ffc0f834:	48 00 2a cd 	bl      ffc12300 <_CORE_message_queue_Seize>   
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if (msg_prio) {                                                 
        *msg_prio = _POSIX_Message_queue_Priority_from_core(          
             _Thread_Executing->Wait.count                            
ffc0f838:	3f e0 00 00 	lis     r31,0                                  
        &length_out,                                                  
        do_wait,                                                      
        timeout                                                       
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
ffc0f83c:	48 00 51 65 	bl      ffc149a0 <_Thread_Enable_dispatch>     
      if (msg_prio) {                                                 
ffc0f840:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
        *msg_prio = _POSIX_Message_queue_Priority_from_core(          
             _Thread_Executing->Wait.count                            
ffc0f844:	3b ff 36 e0 	addi    r31,r31,14048                          
ffc0f848:	81 3f 00 10 	lwz     r9,16(r31)                             
        do_wait,                                                      
        timeout                                                       
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if (msg_prio) {                                                 
ffc0f84c:	41 9e 00 18 	beq-    cr7,ffc0f864 <_POSIX_Message_queue_Receive_support+0x10c><== NEVER TAKEN
RTEMS_INLINE_ROUTINE unsigned int _POSIX_Message_queue_Priority_from_core(
  CORE_message_queue_Submit_types priority                            
)                                                                     
{                                                                     
  /* absolute value without a library dependency */                   
  return (unsigned int) ((priority >= 0) ? priority : -priority);     
ffc0f850:	81 49 00 24 	lwz     r10,36(r9)                             
ffc0f854:	7d 48 fe 70 	srawi   r8,r10,31                              
ffc0f858:	7d 0a 52 78 	xor     r10,r8,r10                             
ffc0f85c:	7d 48 50 50 	subf    r10,r8,r10                             
        *msg_prio = _POSIX_Message_queue_Priority_from_core(          
ffc0f860:	91 5e 00 00 	stw     r10,0(r30)                             
             _Thread_Executing->Wait.count                            
          );                                                          
      }                                                               
                                                                      
      if ( !_Thread_Executing->Wait.return_code )                     
ffc0f864:	81 29 00 34 	lwz     r9,52(r9)                              
ffc0f868:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0f86c:	40 9e 00 54 	bne-    cr7,ffc0f8c0 <_POSIX_Message_queue_Receive_support+0x168>
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EBADF );                      
}                                                                     
ffc0f870:	80 01 00 34 	lwz     r0,52(r1)                              
             _Thread_Executing->Wait.count                            
          );                                                          
      }                                                               
                                                                      
      if ( !_Thread_Executing->Wait.return_code )                     
        return length_out;                                            
ffc0f874:	80 61 00 08 	lwz     r3,8(r1)                               
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EBADF );                      
}                                                                     
ffc0f878:	7c 08 03 a6 	mtlr    r0                                     
ffc0f87c:	83 41 00 18 	lwz     r26,24(r1)                             
ffc0f880:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc0f884:	83 81 00 20 	lwz     r28,32(r1)                             
ffc0f888:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc0f88c:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc0f890:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc0f894:	38 21 00 30 	addi    r1,r1,48                               
ffc0f898:	4e 80 00 20 	blr                                            
                                                                      
      /*                                                              
       *  A timed receive with a bad time will do a poll regardless.  
       */                                                             
      if ( wait )                                                     
        do_wait = (the_mq_fd->oflag & O_NONBLOCK) ? false : true;     
ffc0f89c:	69 29 40 00 	xori    r9,r9,16384                            
ffc0f8a0:	55 27 97 fe 	rlwinm  r7,r9,18,31,31                         
ffc0f8a4:	4b ff ff 7c 	b       ffc0f820 <_POSIX_Message_queue_Receive_support+0xc8>
      }                                                               
                                                                      
      the_mq = the_mq_fd->Queue;                                      
                                                                      
      if ( msg_len < the_mq->Message_queue.maximum_message_size ) {   
        _Thread_Enable_dispatch();                                    
ffc0f8a8:	48 00 50 f9 	bl      ffc149a0 <_Thread_Enable_dispatch>     
        rtems_set_errno_and_return_minus_one( EMSGSIZE );             
ffc0f8ac:	48 00 bd b9 	bl      ffc1b664 <__errno>                     
ffc0f8b0:	39 20 00 7a 	li      r9,122                                 
ffc0f8b4:	91 23 00 00 	stw     r9,0(r3)                               
ffc0f8b8:	38 60 ff ff 	li      r3,-1                                  
ffc0f8bc:	4b ff ff 08 	b       ffc0f7c4 <_POSIX_Message_queue_Receive_support+0x6c>
      }                                                               
                                                                      
      if ( !_Thread_Executing->Wait.return_code )                     
        return length_out;                                            
                                                                      
      rtems_set_errno_and_return_minus_one(                           
ffc0f8c0:	48 00 bd a5 	bl      ffc1b664 <__errno>                     
ffc0f8c4:	81 3f 00 10 	lwz     r9,16(r31)                             
ffc0f8c8:	7c 7e 1b 78 	mr      r30,r3                                 
ffc0f8cc:	80 69 00 34 	lwz     r3,52(r9)                              
ffc0f8d0:	48 00 03 51 	bl      ffc0fc20 <_POSIX_Message_queue_Translate_core_message_queue_return_code>
ffc0f8d4:	90 7e 00 00 	stw     r3,0(r30)                              
ffc0f8d8:	38 60 ff ff 	li      r3,-1                                  
ffc0f8dc:	4b ff fe e8 	b       ffc0f7c4 <_POSIX_Message_queue_Receive_support+0x6c>
  the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );        
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) {             
        _Thread_Enable_dispatch();                                    
ffc0f8e0:	48 00 50 c1 	bl      ffc149a0 <_Thread_Enable_dispatch>     
        rtems_set_errno_and_return_minus_one( EBADF );                
ffc0f8e4:	48 00 bd 81 	bl      ffc1b664 <__errno>                     
ffc0f8e8:	39 20 00 09 	li      r9,9                                   
ffc0f8ec:	91 23 00 00 	stw     r9,0(r3)                               
ffc0f8f0:	38 60 ff ff 	li      r3,-1                                  
ffc0f8f4:	4b ff fe d0 	b       ffc0f7c4 <_POSIX_Message_queue_Receive_support+0x6c>
                                                                      

ffc0f904 <_POSIX_Message_queue_Send_support>: /* * Validate the priority. * XXX - Do not validate msg_prio is not less than 0. */ if ( msg_prio > MQ_PRIO_MAX )
ffc0f904:	2b 86 00 20 	cmplwi  cr7,r6,32                              
  size_t              msg_len,                                        
  unsigned int        msg_prio,                                       
  bool                wait,                                           
  Watchdog_Interval   timeout                                         
)                                                                     
{                                                                     
ffc0f908:	94 21 ff d0 	stwu    r1,-48(r1)                             
ffc0f90c:	7c 08 02 a6 	mflr    r0                                     
ffc0f910:	93 e1 00 2c 	stw     r31,44(r1)                             
ffc0f914:	7c df 33 78 	mr      r31,r6                                 
ffc0f918:	90 01 00 34 	stw     r0,52(r1)                              
ffc0f91c:	93 41 00 18 	stw     r26,24(r1)                             
ffc0f920:	93 61 00 1c 	stw     r27,28(r1)                             
ffc0f924:	93 81 00 20 	stw     r28,32(r1)                             
ffc0f928:	93 a1 00 24 	stw     r29,36(r1)                             
ffc0f92c:	93 c1 00 28 	stw     r30,40(r1)                             
  /*                                                                  
   * Validate the priority.                                           
   * XXX - Do not validate msg_prio is not less than 0.               
   */                                                                 
                                                                      
  if ( msg_prio > MQ_PRIO_MAX )                                       
ffc0f930:	41 9d 01 14 	bgt-    cr7,ffc0fa44 <_POSIX_Message_queue_Send_support+0x140>
ffc0f934:	7c 7e 1b 78 	mr      r30,r3                                 
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd (
  mqd_t              id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (POSIX_Message_queue_Control_fd *) _Objects_Get(             
ffc0f938:	3c 60 00 00 	lis     r3,0                                   
ffc0f93c:	7c 9b 23 78 	mr      r27,r4                                 
ffc0f940:	7c bc 2b 78 	mr      r28,r5                                 
ffc0f944:	38 63 36 4c 	addi    r3,r3,13900                            
ffc0f948:	7f c4 f3 78 	mr      r4,r30                                 
ffc0f94c:	38 a1 00 08 	addi    r5,r1,8                                
ffc0f950:	7c fa 3b 78 	mr      r26,r7                                 
ffc0f954:	7d 1d 43 78 	mr      r29,r8                                 
ffc0f958:	48 00 3e d1 	bl      ffc13828 <_Objects_Get>                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );        
  switch ( location ) {                                               
ffc0f95c:	81 21 00 08 	lwz     r9,8(r1)                               
ffc0f960:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0f964:	40 9e 00 cc 	bne-    cr7,ffc0fa30 <_POSIX_Message_queue_Send_support+0x12c>
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( (the_mq_fd->oflag & O_ACCMODE) == O_RDONLY ) {             
ffc0f968:	80 c3 00 14 	lwz     r6,20(r3)                              
ffc0f96c:	70 c9 00 03 	andi.   r9,r6,3                                
ffc0f970:	41 82 00 e8 	beq-    ffc0fa58 <_POSIX_Message_queue_Send_support+0x154>
      the_mq = the_mq_fd->Queue;                                      
                                                                      
      /*                                                              
       *  A timed receive with a bad time will do a poll regardless.  
       */                                                             
      if ( wait )                                                     
ffc0f974:	2f 9a 00 00 	cmpwi   cr7,r26,0                              
      if ( (the_mq_fd->oflag & O_ACCMODE) == O_RDONLY ) {             
        _Thread_Enable_dispatch();                                    
        rtems_set_errno_and_return_minus_one( EBADF );                
      }                                                               
                                                                      
      the_mq = the_mq_fd->Queue;                                      
ffc0f978:	80 63 00 10 	lwz     r3,16(r3)                              
                                                                      
      /*                                                              
       *  A timed receive with a bad time will do a poll regardless.  
       */                                                             
      if ( wait )                                                     
ffc0f97c:	39 20 00 00 	li      r9,0                                   
ffc0f980:	40 9e 00 68 	bne-    cr7,ffc0f9e8 <_POSIX_Message_queue_Send_support+0xe4>
        do_wait = wait;                                               
                                                                      
      /*                                                              
       *  Now perform the actual message receive                      
       */                                                             
      msg_status = _CORE_message_queue_Submit(                        
ffc0f984:	7d 1f 00 d0 	neg     r8,r31                                 
ffc0f988:	7f 64 db 78 	mr      r4,r27                                 
ffc0f98c:	7f 85 e3 78 	mr      r5,r28                                 
ffc0f990:	7f c6 f3 78 	mr      r6,r30                                 
ffc0f994:	38 e0 00 00 	li      r7,0                                   
ffc0f998:	7f aa eb 78 	mr      r10,r29                                
ffc0f99c:	38 63 00 1c 	addi    r3,r3,28                               
ffc0f9a0:	48 00 2a e9 	bl      ffc12488 <_CORE_message_queue_Submit>  
ffc0f9a4:	7c 7f 1b 78 	mr      r31,r3                                 
        _POSIX_Message_queue_Priority_to_core( msg_prio ),            
        do_wait,                                                      
        timeout    /* no timeout */                                   
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
ffc0f9a8:	48 00 4f f9 	bl      ffc149a0 <_Thread_Enable_dispatch>     
       *  after it wakes up.  The returned status is correct for      
       *  non-blocking operations but if we blocked, then we need     
       *  to look at the status in our TCB.                           
       */                                                             
                                                                      
      if ( msg_status == CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT ) 
ffc0f9ac:	2f 9f 00 07 	cmpwi   cr7,r31,7                              
ffc0f9b0:	41 9e 00 70 	beq-    cr7,ffc0fa20 <_POSIX_Message_queue_Send_support+0x11c><== NEVER TAKEN
        msg_status = _Thread_Executing->Wait.return_code;             
                                                                      
      if ( !msg_status )                                              
ffc0f9b4:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
        return msg_status;                                            
ffc0f9b8:	38 60 00 00 	li      r3,0                                   
       */                                                             
                                                                      
      if ( msg_status == CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT ) 
        msg_status = _Thread_Executing->Wait.return_code;             
                                                                      
      if ( !msg_status )                                              
ffc0f9bc:	40 9e 00 b4 	bne-    cr7,ffc0fa70 <_POSIX_Message_queue_Send_support+0x16c>
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EBADF );                      
}                                                                     
ffc0f9c0:	80 01 00 34 	lwz     r0,52(r1)                              
ffc0f9c4:	83 41 00 18 	lwz     r26,24(r1)                             
ffc0f9c8:	7c 08 03 a6 	mtlr    r0                                     
ffc0f9cc:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc0f9d0:	83 81 00 20 	lwz     r28,32(r1)                             
ffc0f9d4:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc0f9d8:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc0f9dc:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc0f9e0:	38 21 00 30 	addi    r1,r1,48                               
ffc0f9e4:	4e 80 00 20 	blr                                            
                                                                      
      /*                                                              
       *  A timed receive with a bad time will do a poll regardless.  
       */                                                             
      if ( wait )                                                     
        do_wait = (the_mq_fd->oflag & O_NONBLOCK) ? false : true;     
ffc0f9e8:	68 c6 40 00 	xori    r6,r6,16384                            
ffc0f9ec:	54 c9 97 fe 	rlwinm  r9,r6,18,31,31                         
        do_wait = wait;                                               
                                                                      
      /*                                                              
       *  Now perform the actual message receive                      
       */                                                             
      msg_status = _CORE_message_queue_Submit(                        
ffc0f9f0:	7d 1f 00 d0 	neg     r8,r31                                 
ffc0f9f4:	7f 64 db 78 	mr      r4,r27                                 
ffc0f9f8:	7f 85 e3 78 	mr      r5,r28                                 
ffc0f9fc:	7f c6 f3 78 	mr      r6,r30                                 
ffc0fa00:	38 e0 00 00 	li      r7,0                                   
ffc0fa04:	7f aa eb 78 	mr      r10,r29                                
ffc0fa08:	38 63 00 1c 	addi    r3,r3,28                               
ffc0fa0c:	48 00 2a 7d 	bl      ffc12488 <_CORE_message_queue_Submit>  
ffc0fa10:	7c 7f 1b 78 	mr      r31,r3                                 
        _POSIX_Message_queue_Priority_to_core( msg_prio ),            
        do_wait,                                                      
        timeout    /* no timeout */                                   
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
ffc0fa14:	48 00 4f 8d 	bl      ffc149a0 <_Thread_Enable_dispatch>     
       *  after it wakes up.  The returned status is correct for      
       *  non-blocking operations but if we blocked, then we need     
       *  to look at the status in our TCB.                           
       */                                                             
                                                                      
      if ( msg_status == CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT ) 
ffc0fa18:	2f 9f 00 07 	cmpwi   cr7,r31,7                              
ffc0fa1c:	40 9e ff 98 	bne+    cr7,ffc0f9b4 <_POSIX_Message_queue_Send_support+0xb0>
        msg_status = _Thread_Executing->Wait.return_code;             
ffc0fa20:	3d 20 00 00 	lis     r9,0                                   
ffc0fa24:	81 29 36 f0 	lwz     r9,14064(r9)                           
ffc0fa28:	83 e9 00 34 	lwz     r31,52(r9)                             
ffc0fa2c:	4b ff ff 88 	b       ffc0f9b4 <_POSIX_Message_queue_Send_support+0xb0>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EBADF );                      
ffc0fa30:	48 00 bc 35 	bl      ffc1b664 <__errno>                     
ffc0fa34:	39 20 00 09 	li      r9,9                                   
ffc0fa38:	91 23 00 00 	stw     r9,0(r3)                               
ffc0fa3c:	38 60 ff ff 	li      r3,-1                                  
ffc0fa40:	4b ff ff 80 	b       ffc0f9c0 <_POSIX_Message_queue_Send_support+0xbc>
   * Validate the priority.                                           
   * XXX - Do not validate msg_prio is not less than 0.               
   */                                                                 
                                                                      
  if ( msg_prio > MQ_PRIO_MAX )                                       
    rtems_set_errno_and_return_minus_one( EINVAL );                   
ffc0fa44:	48 00 bc 21 	bl      ffc1b664 <__errno>                     
ffc0fa48:	39 20 00 16 	li      r9,22                                  
ffc0fa4c:	91 23 00 00 	stw     r9,0(r3)                               
ffc0fa50:	38 60 ff ff 	li      r3,-1                                  
ffc0fa54:	4b ff ff 6c 	b       ffc0f9c0 <_POSIX_Message_queue_Send_support+0xbc>
  the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );        
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( (the_mq_fd->oflag & O_ACCMODE) == O_RDONLY ) {             
        _Thread_Enable_dispatch();                                    
ffc0fa58:	48 00 4f 49 	bl      ffc149a0 <_Thread_Enable_dispatch>     
        rtems_set_errno_and_return_minus_one( EBADF );                
ffc0fa5c:	48 00 bc 09 	bl      ffc1b664 <__errno>                     
ffc0fa60:	39 20 00 09 	li      r9,9                                   
ffc0fa64:	91 23 00 00 	stw     r9,0(r3)                               
ffc0fa68:	38 60 ff ff 	li      r3,-1                                  
ffc0fa6c:	4b ff ff 54 	b       ffc0f9c0 <_POSIX_Message_queue_Send_support+0xbc>
        msg_status = _Thread_Executing->Wait.return_code;             
                                                                      
      if ( !msg_status )                                              
        return msg_status;                                            
                                                                      
      rtems_set_errno_and_return_minus_one(                           
ffc0fa70:	48 00 bb f5 	bl      ffc1b664 <__errno>                     
ffc0fa74:	7c 7e 1b 78 	mr      r30,r3                                 
ffc0fa78:	7f e3 fb 78 	mr      r3,r31                                 
ffc0fa7c:	48 00 01 a5 	bl      ffc0fc20 <_POSIX_Message_queue_Translate_core_message_queue_return_code>
ffc0fa80:	90 7e 00 00 	stw     r3,0(r30)                              
ffc0fa84:	38 60 ff ff 	li      r3,-1                                  
ffc0fa88:	4b ff ff 38 	b       ffc0f9c0 <_POSIX_Message_queue_Send_support+0xbc>
                                                                      

ffc12890 <_POSIX_Semaphore_Create_support>: size_t name_len, int pshared, unsigned int value, POSIX_Semaphore_Control **the_sem ) {
ffc12890:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc12894:	7c 08 02 a6 	mflr    r0                                     
ffc12898:	93 21 00 0c 	stw     r25,12(r1)                             
  POSIX_Semaphore_Control   *the_semaphore;                           
  CORE_semaphore_Attributes *the_sem_attr;                            
  char                      *name;                                    
                                                                      
  /* Sharing semaphores among processes is not currently supported */ 
  if (pshared != 0)                                                   
ffc1289c:	7c b9 2b 79 	mr.     r25,r5                                 
  size_t                     name_len,                                
  int                        pshared,                                 
  unsigned int               value,                                   
  POSIX_Semaphore_Control  **the_sem                                  
)                                                                     
{                                                                     
ffc128a0:	90 01 00 2c 	stw     r0,44(r1)                              
ffc128a4:	93 41 00 10 	stw     r26,16(r1)                             
ffc128a8:	93 61 00 14 	stw     r27,20(r1)                             
ffc128ac:	93 81 00 18 	stw     r28,24(r1)                             
ffc128b0:	93 a1 00 1c 	stw     r29,28(r1)                             
ffc128b4:	93 c1 00 20 	stw     r30,32(r1)                             
ffc128b8:	93 e1 00 24 	stw     r31,36(r1)                             
  POSIX_Semaphore_Control   *the_semaphore;                           
  CORE_semaphore_Attributes *the_sem_attr;                            
  char                      *name;                                    
                                                                      
  /* Sharing semaphores among processes is not currently supported */ 
  if (pshared != 0)                                                   
ffc128bc:	40 82 00 f4 	bne-    ffc129b0 <_POSIX_Semaphore_Create_support+0x120>
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc128c0:	3d 20 00 00 	lis     r9,0                                   
ffc128c4:	81 49 28 a8 	lwz     r10,10408(r9)                          
ffc128c8:	7c 7e 1b 78 	mr      r30,r3                                 
ffc128cc:	7c 9a 23 78 	mr      r26,r4                                 
                                                                      
    ++level;                                                          
ffc128d0:	39 4a 00 01 	addi    r10,r10,1                              
    _Thread_Dispatch_disable_level = level;                           
ffc128d4:	91 49 28 a8 	stw     r10,10408(r9)                          
ffc128d8:	7c dc 33 78 	mr      r28,r6                                 
ffc128dc:	7c fb 3b 78 	mr      r27,r7                                 
 *  _POSIX_Semaphore_Allocate                                         
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control *_POSIX_Semaphore_Allocate( void )
{                                                                     
  return (POSIX_Semaphore_Control *)                                  
ffc128e0:	3f a0 00 00 	lis     r29,0                                  
ffc128e4:	3b bd 59 00 	addi    r29,r29,22784                          
ffc128e8:	7f a3 eb 78 	mr      r3,r29                                 
ffc128ec:	4b ff ae bd 	bl      ffc0d7a8 <_Objects_Allocate>           
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  the_semaphore = _POSIX_Semaphore_Allocate();                        
  if ( !the_semaphore ) {                                             
ffc128f0:	7c 7f 1b 79 	mr.     r31,r3                                 
ffc128f4:	41 82 00 d0 	beq-    ffc129c4 <_POSIX_Semaphore_Create_support+0x134>
                                                                      
  /*                                                                  
   * Make a copy of the user's string for name just in case it was    
   * dynamically constructed.                                         
   */                                                                 
  if ( name_arg != NULL ) {                                           
ffc128f8:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
ffc128fc:	41 9e 00 9c 	beq-    cr7,ffc12998 <_POSIX_Semaphore_Create_support+0x108>
    name = _Workspace_String_duplicate( name_arg, name_len );         
ffc12900:	7f 44 d3 78 	mr      r4,r26                                 
ffc12904:	7f c3 f3 78 	mr      r3,r30                                 
ffc12908:	48 00 11 1d 	bl      ffc13a24 <_Workspace_String_duplicate> 
    if ( !name ) {                                                    
ffc1290c:	7c 7a 1b 79 	mr.     r26,r3                                 
ffc12910:	41 82 00 cc 	beq-    ffc129dc <_POSIX_Semaphore_Create_support+0x14c><== NEVER TAKEN
                                                                      
  the_semaphore->process_shared  = pshared;                           
                                                                      
  if ( name ) {                                                       
    the_semaphore->named = true;                                      
    the_semaphore->open_count = 1;                                    
ffc12914:	39 20 00 01 	li      r9,1                                   
    }                                                                 
  } else {                                                            
    name = NULL;                                                      
  }                                                                   
                                                                      
  the_semaphore->process_shared  = pshared;                           
ffc12918:	93 3f 00 10 	stw     r25,16(r31)                            
                                                                      
  if ( name ) {                                                       
    the_semaphore->named = true;                                      
ffc1291c:	39 40 00 01 	li      r10,1                                  
ffc12920:	99 5f 00 14 	stb     r10,20(r31)                            
    the_semaphore->open_count = 1;                                    
ffc12924:	91 3f 00 18 	stw     r9,24(r31)                             
    the_semaphore->linked = true;                                     
ffc12928:	99 3f 00 15 	stb     r9,21(r31)                             
   *  blocking tasks on this semaphore should be.  It could somehow   
   *  be derived from the current scheduling policy.  One             
   *  thing is certain, no matter what we decide, it won't be         
   *  the same as  all other POSIX implementations. :)                
   */                                                                 
  the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;         
ffc1292c:	39 20 00 00 	li      r9,0                                   
ffc12930:	91 3f 00 60 	stw     r9,96(r31)                             
                                                                      
  /*                                                                  
   *  This effectively disables limit checking.                       
   */                                                                 
  the_sem_attr->maximum_count = 0xFFFFFFFF;                           
ffc12934:	39 20 ff ff 	li      r9,-1                                  
                                                                      
  _CORE_semaphore_Initialize( &the_semaphore->Semaphore, the_sem_attr, value );
ffc12938:	38 7f 00 1c 	addi    r3,r31,28                              
  the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;         
                                                                      
  /*                                                                  
   *  This effectively disables limit checking.                       
   */                                                                 
  the_sem_attr->maximum_count = 0xFFFFFFFF;                           
ffc1293c:	91 3f 00 5c 	stw     r9,92(r31)                             
                                                                      
  _CORE_semaphore_Initialize( &the_semaphore->Semaphore, the_sem_attr, value );
ffc12940:	38 9f 00 5c 	addi    r4,r31,92                              
ffc12944:	7f 85 e3 78 	mr      r5,r28                                 
ffc12948:	4b ff a7 39 	bl      ffc0d080 <_CORE_semaphore_Initialize>  
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  const char          *name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
ffc1294c:	a1 3f 00 0a 	lhz     r9,10(r31)                             
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
ffc12950:	81 5d 00 1c 	lwz     r10,28(r29)                            
ffc12954:	55 29 10 3a 	rlwinm  r9,r9,2,0,29                           
ffc12958:	7f ea 49 2e 	stwx    r31,r10,r9                             
    the_object                                                        
  );                                                                  
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    /* ASSERT: information->is_string */                              
    the_object->name.name_p = name;                                   
ffc1295c:	93 5f 00 0c 	stw     r26,12(r31)                            
    &_POSIX_Semaphore_Information,                                    
    &the_semaphore->Object,                                           
    name                                                              
  );                                                                  
                                                                      
  *the_sem = the_semaphore;                                           
ffc12960:	93 fb 00 00 	stw     r31,0(r27)                             
                                                                      
  _Thread_Enable_dispatch();                                          
ffc12964:	4b ff c6 29 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
  return 0;                                                           
ffc12968:	38 60 00 00 	li      r3,0                                   
}                                                                     
ffc1296c:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc12970:	83 21 00 0c 	lwz     r25,12(r1)                             
ffc12974:	7c 08 03 a6 	mtlr    r0                                     
ffc12978:	83 41 00 10 	lwz     r26,16(r1)                             
ffc1297c:	83 61 00 14 	lwz     r27,20(r1)                             
ffc12980:	83 81 00 18 	lwz     r28,24(r1)                             
ffc12984:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc12988:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc1298c:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc12990:	38 21 00 28 	addi    r1,r1,40                               
ffc12994:	4e 80 00 20 	blr                                            
    }                                                                 
  } else {                                                            
    name = NULL;                                                      
  }                                                                   
                                                                      
  the_semaphore->process_shared  = pshared;                           
ffc12998:	93 df 00 10 	stw     r30,16(r31)                            
      _POSIX_Semaphore_Free( the_semaphore );                         
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( ENOMEM );                 
    }                                                                 
  } else {                                                            
    name = NULL;                                                      
ffc1299c:	3b 40 00 00 	li      r26,0                                  
  if ( name ) {                                                       
    the_semaphore->named = true;                                      
    the_semaphore->open_count = 1;                                    
    the_semaphore->linked = true;                                     
  } else {                                                            
    the_semaphore->named = false;                                     
ffc129a0:	9b df 00 14 	stb     r30,20(r31)                            
    the_semaphore->open_count = 0;                                    
ffc129a4:	93 df 00 18 	stw     r30,24(r31)                            
    the_semaphore->linked = false;                                    
ffc129a8:	9b df 00 15 	stb     r30,21(r31)                            
ffc129ac:	4b ff ff 80 	b       ffc1292c <_POSIX_Semaphore_Create_support+0x9c>
  CORE_semaphore_Attributes *the_sem_attr;                            
  char                      *name;                                    
                                                                      
  /* Sharing semaphores among processes is not currently supported */ 
  if (pshared != 0)                                                   
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
ffc129b0:	48 00 2e cd 	bl      ffc1587c <__errno>                     
ffc129b4:	39 20 00 58 	li      r9,88                                  
ffc129b8:	91 23 00 00 	stw     r9,0(r3)                               
ffc129bc:	38 60 ff ff 	li      r3,-1                                  
ffc129c0:	4b ff ff ac 	b       ffc1296c <_POSIX_Semaphore_Create_support+0xdc>
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  the_semaphore = _POSIX_Semaphore_Allocate();                        
  if ( !the_semaphore ) {                                             
    _Thread_Enable_dispatch();                                        
ffc129c4:	4b ff c5 c9 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
    rtems_set_errno_and_return_minus_one( ENOSPC );                   
ffc129c8:	48 00 2e b5 	bl      ffc1587c <__errno>                     
ffc129cc:	39 20 00 1c 	li      r9,28                                  
ffc129d0:	91 23 00 00 	stw     r9,0(r3)                               
ffc129d4:	38 60 ff ff 	li      r3,-1                                  
ffc129d8:	4b ff ff 94 	b       ffc1296c <_POSIX_Semaphore_Create_support+0xdc>
                                                                      
RTEMS_INLINE_ROUTINE void _POSIX_Semaphore_Free (                     
  POSIX_Semaphore_Control *the_semaphore                              
)                                                                     
{                                                                     
  _Objects_Free( &_POSIX_Semaphore_Information, &the_semaphore->Object );
ffc129dc:	7f a3 eb 78 	mr      r3,r29                                 <== NOT EXECUTED
ffc129e0:	7f e4 fb 78 	mr      r4,r31                                 <== NOT EXECUTED
ffc129e4:	4b ff b1 d5 	bl      ffc0dbb8 <_Objects_Free>               <== NOT EXECUTED
   */                                                                 
  if ( name_arg != NULL ) {                                           
    name = _Workspace_String_duplicate( name_arg, name_len );         
    if ( !name ) {                                                    
      _POSIX_Semaphore_Free( the_semaphore );                         
      _Thread_Enable_dispatch();                                      
ffc129e8:	4b ff c5 a5 	bl      ffc0ef8c <_Thread_Enable_dispatch>     <== NOT EXECUTED
      rtems_set_errno_and_return_minus_one( ENOMEM );                 
ffc129ec:	48 00 2e 91 	bl      ffc1587c <__errno>                     <== NOT EXECUTED
ffc129f0:	39 20 00 0c 	li      r9,12                                  <== NOT EXECUTED
ffc129f4:	91 23 00 00 	stw     r9,0(r3)                               <== NOT EXECUTED
ffc129f8:	38 60 ff ff 	li      r3,-1                                  <== NOT EXECUTED
ffc129fc:	4b ff ff 70 	b       ffc1296c <_POSIX_Semaphore_Create_support+0xdc><== NOT EXECUTED
                                                                      

ffc0f5a0 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch>: Thread_Control *the_thread ) { POSIX_API_Control *thread_support; thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];
ffc0f5a0:	81 23 01 50 	lwz     r9,336(r3)                             
                                                                      
  if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
ffc0f5a4:	81 49 00 d8 	lwz     r10,216(r9)                            
ffc0f5a8:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0f5ac:	40 9e 00 10 	bne-    cr7,ffc0f5bc <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x1c><== NEVER TAKEN
ffc0f5b0:	81 49 00 dc 	lwz     r10,220(r9)                            
ffc0f5b4:	2f 8a 00 01 	cmpwi   cr7,r10,1                              
ffc0f5b8:	41 9e 00 08 	beq-    cr7,ffc0f5c0 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x20>
       thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS &&
       thread_support->cancelation_requested ) {                      
    _Thread_Unnest_dispatch();                                        
    _POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED );               
  } else                                                              
    _Thread_Enable_dispatch();                                        
ffc0f5bc:	4b ff d2 c0 	b       ffc0c87c <_Thread_Enable_dispatch>     
  POSIX_API_Control *thread_support;                                  
                                                                      
  thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];    
                                                                      
  if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
       thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS &&
ffc0f5c0:	81 29 00 e0 	lwz     r9,224(r9)                             
ffc0f5c4:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0f5c8:	41 9e ff f4 	beq+    cr7,ffc0f5bc <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x1c>
   *                                                                  
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc0f5cc:	3d 20 00 00 	lis     r9,0                                   
ffc0f5d0:	81 49 28 70 	lwz     r10,10352(r9)                          
       thread_support->cancelation_requested ) {                      
    _Thread_Unnest_dispatch();                                        
    _POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED );               
ffc0f5d4:	38 80 ff ff 	li      r4,-1                                  
                                                                      
    --level;                                                          
ffc0f5d8:	39 4a ff ff 	addi    r10,r10,-1                             
    _Thread_Dispatch_disable_level = level;                           
ffc0f5dc:	91 49 28 70 	stw     r10,10352(r9)                          
ffc0f5e0:	48 00 07 dc 	b       ffc0fdbc <_POSIX_Thread_Exit>          
                                                                      

ffc10cf0 <_POSIX_Thread_Translate_sched_param>: int policy, struct sched_param *param, Thread_CPU_budget_algorithms *budget_algorithm, Thread_CPU_budget_algorithm_callout *budget_callout ) {
ffc10cf0:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc10cf4:	7c 08 02 a6 	mflr    r0                                     
ffc10cf8:	93 c1 00 10 	stw     r30,16(r1)                             
ffc10cfc:	7c 7e 1b 78 	mr      r30,r3                                 
  if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )           
ffc10d00:	80 64 00 00 	lwz     r3,0(r4)                               
  int                                  policy,                        
  struct sched_param                  *param,                         
  Thread_CPU_budget_algorithms        *budget_algorithm,              
  Thread_CPU_budget_algorithm_callout *budget_callout                 
)                                                                     
{                                                                     
ffc10d04:	93 81 00 08 	stw     r28,8(r1)                              
ffc10d08:	7c dc 33 78 	mr      r28,r6                                 
ffc10d0c:	93 a1 00 0c 	stw     r29,12(r1)                             
ffc10d10:	7c bd 2b 78 	mr      r29,r5                                 
ffc10d14:	93 e1 00 14 	stw     r31,20(r1)                             
ffc10d18:	7c 9f 23 78 	mr      r31,r4                                 
ffc10d1c:	90 01 00 1c 	stw     r0,28(r1)                              
  if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )           
ffc10d20:	4b ff ff a9 	bl      ffc10cc8 <_POSIX_Priority_Is_valid>    
ffc10d24:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc10d28:	40 9e 00 28 	bne-    cr7,ffc10d50 <_POSIX_Thread_Translate_sched_param+0x60><== ALWAYS TAKEN
    return EINVAL;                                                    
ffc10d2c:	38 60 00 16 	li      r3,22                                  
    *budget_callout = _POSIX_Threads_Sporadic_budget_callout;         
    return 0;                                                         
  }                                                                   
                                                                      
  return EINVAL;                                                      
}                                                                     
ffc10d30:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc10d34:	83 81 00 08 	lwz     r28,8(r1)                              
ffc10d38:	7c 08 03 a6 	mtlr    r0                                     
ffc10d3c:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc10d40:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc10d44:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc10d48:	38 21 00 18 	addi    r1,r1,24                               
ffc10d4c:	4e 80 00 20 	blr                                            
    return EINVAL;                                                    
                                                                      
  *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;               
  *budget_callout = NULL;                                             
                                                                      
  if ( policy == SCHED_OTHER ) {                                      
ffc10d50:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
)                                                                     
{                                                                     
  if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )           
    return EINVAL;                                                    
                                                                      
  *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;               
ffc10d54:	39 20 00 00 	li      r9,0                                   
ffc10d58:	91 3d 00 00 	stw     r9,0(r29)                              
  *budget_callout = NULL;                                             
ffc10d5c:	91 3c 00 00 	stw     r9,0(r28)                              
                                                                      
  if ( policy == SCHED_OTHER ) {                                      
ffc10d60:	41 9e 00 94 	beq-    cr7,ffc10df4 <_POSIX_Thread_Translate_sched_param+0x104>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;  
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_FIFO ) {                                       
ffc10d64:	2f 9e 00 01 	cmpwi   cr7,r30,1                              
ffc10d68:	41 9e 00 b8 	beq-    cr7,ffc10e20 <_POSIX_Thread_Translate_sched_param+0x130>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;             
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_RR ) {                                         
ffc10d6c:	2f 9e 00 02 	cmpwi   cr7,r30,2                              
ffc10d70:	41 9e 00 b8 	beq-    cr7,ffc10e28 <_POSIX_Thread_Translate_sched_param+0x138>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_SPORADIC ) {                                   
ffc10d74:	2f 9e 00 04 	cmpwi   cr7,r30,4                              
ffc10d78:	40 9e ff b4 	bne+    cr7,ffc10d2c <_POSIX_Thread_Translate_sched_param+0x3c>
    if ( (param->sched_ss_repl_period.tv_sec == 0) &&                 
ffc10d7c:	81 3f 00 08 	lwz     r9,8(r31)                              
ffc10d80:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc10d84:	40 9e 00 10 	bne-    cr7,ffc10d94 <_POSIX_Thread_Translate_sched_param+0xa4>
ffc10d88:	81 3f 00 0c 	lwz     r9,12(r31)                             
ffc10d8c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc10d90:	41 9e ff 9c 	beq+    cr7,ffc10d2c <_POSIX_Thread_Translate_sched_param+0x3c>
         (param->sched_ss_repl_period.tv_nsec == 0) )                 
      return EINVAL;                                                  
                                                                      
    if ( (param->sched_ss_init_budget.tv_sec == 0) &&                 
ffc10d94:	81 3f 00 10 	lwz     r9,16(r31)                             
ffc10d98:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc10d9c:	40 9e 00 10 	bne-    cr7,ffc10dac <_POSIX_Thread_Translate_sched_param+0xbc>
ffc10da0:	81 3f 00 14 	lwz     r9,20(r31)                             
ffc10da4:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc10da8:	41 9e ff 84 	beq+    cr7,ffc10d2c <_POSIX_Thread_Translate_sched_param+0x3c>
         (param->sched_ss_init_budget.tv_nsec == 0) )                 
      return EINVAL;                                                  
                                                                      
    if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) <         
ffc10dac:	38 7f 00 08 	addi    r3,r31,8                               
ffc10db0:	4b ff d8 ed 	bl      ffc0e69c <_Timespec_To_ticks>          
ffc10db4:	7c 7e 1b 78 	mr      r30,r3                                 
	 _Timespec_To_ticks( ¶m->sched_ss_init_budget ) )                
ffc10db8:	38 7f 00 10 	addi    r3,r31,16                              
ffc10dbc:	4b ff d8 e1 	bl      ffc0e69c <_Timespec_To_ticks>          
                                                                      
    if ( (param->sched_ss_init_budget.tv_sec == 0) &&                 
         (param->sched_ss_init_budget.tv_nsec == 0) )                 
      return EINVAL;                                                  
                                                                      
    if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) <         
ffc10dc0:	7f 9e 18 40 	cmplw   cr7,r30,r3                             
ffc10dc4:	41 9c ff 68 	blt+    cr7,ffc10d2c <_POSIX_Thread_Translate_sched_param+0x3c>
	 _Timespec_To_ticks( ¶m->sched_ss_init_budget ) )                
      return EINVAL;                                                  
                                                                      
    if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) )  
ffc10dc8:	80 7f 00 04 	lwz     r3,4(r31)                              
ffc10dcc:	4b ff fe fd 	bl      ffc10cc8 <_POSIX_Priority_Is_valid>    
ffc10dd0:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc10dd4:	41 9e ff 58 	beq+    cr7,ffc10d2c <_POSIX_Thread_Translate_sched_param+0x3c>
      return EINVAL;                                                  
                                                                      
    *budget_algorithm  = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;         
ffc10dd8:	39 20 00 03 	li      r9,3                                   
ffc10ddc:	91 3d 00 00 	stw     r9,0(r29)                              
    *budget_callout = _POSIX_Threads_Sporadic_budget_callout;         
ffc10de0:	3d 20 ff c1 	lis     r9,-63                                 
ffc10de4:	39 29 9d 58 	addi    r9,r9,-25256                           
    return 0;                                                         
ffc10de8:	38 60 00 00 	li      r3,0                                   
                                                                      
    if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) )  
      return EINVAL;                                                  
                                                                      
    *budget_algorithm  = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;         
    *budget_callout = _POSIX_Threads_Sporadic_budget_callout;         
ffc10dec:	91 3c 00 00 	stw     r9,0(r28)                              
    return 0;                                                         
ffc10df0:	4b ff ff 40 	b       ffc10d30 <_POSIX_Thread_Translate_sched_param+0x40>
  }                                                                   
                                                                      
  return EINVAL;                                                      
}                                                                     
ffc10df4:	80 01 00 1c 	lwz     r0,28(r1)                              
                                                                      
  *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;               
  *budget_callout = NULL;                                             
                                                                      
  if ( policy == SCHED_OTHER ) {                                      
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;  
ffc10df8:	39 20 00 01 	li      r9,1                                   
ffc10dfc:	91 3d 00 00 	stw     r9,0(r29)                              
    return 0;                                                         
ffc10e00:	38 60 00 00 	li      r3,0                                   
    *budget_callout = _POSIX_Threads_Sporadic_budget_callout;         
    return 0;                                                         
  }                                                                   
                                                                      
  return EINVAL;                                                      
}                                                                     
ffc10e04:	7c 08 03 a6 	mtlr    r0                                     
ffc10e08:	83 81 00 08 	lwz     r28,8(r1)                              
ffc10e0c:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc10e10:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc10e14:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc10e18:	38 21 00 18 	addi    r1,r1,24                               
ffc10e1c:	4e 80 00 20 	blr                                            
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_FIFO ) {                                       
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;             
    return 0;                                                         
ffc10e20:	38 60 00 00 	li      r3,0                                   
ffc10e24:	4b ff ff 0c 	b       ffc10d30 <_POSIX_Thread_Translate_sched_param+0x40>
  }                                                                   
                                                                      
  if ( policy == SCHED_RR ) {                                         
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
ffc10e28:	93 dd 00 00 	stw     r30,0(r29)                             
    return 0;                                                         
ffc10e2c:	38 60 00 00 	li      r3,0                                   
ffc10e30:	4b ff ff 00 	b       ffc10d30 <_POSIX_Thread_Translate_sched_param+0x40>
                                                                      

ffc0fd38 <_POSIX_Threads_Delete_extension>: */ static void _POSIX_Threads_Delete_extension( Thread_Control *executing __attribute__((unused)), Thread_Control *deleted ) {
ffc0fd38:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0fd3c:	7c 08 02 a6 	mflr    r0                                     
  api = deleted->API_Extensions[ THREAD_API_POSIX ];                  
                                                                      
  /*                                                                  
   *  Run the POSIX cancellation handlers                             
   */                                                                 
  _POSIX_Threads_cancel_run( deleted );                               
ffc0fd40:	7c 83 23 78 	mr      r3,r4                                  
 */                                                                   
static void _POSIX_Threads_Delete_extension(                          
  Thread_Control *executing __attribute__((unused)),                  
  Thread_Control *deleted                                             
)                                                                     
{                                                                     
ffc0fd44:	93 81 00 08 	stw     r28,8(r1)                              
ffc0fd48:	93 a1 00 0c 	stw     r29,12(r1)                             
ffc0fd4c:	7c 9d 23 78 	mr      r29,r4                                 
  Thread_Control     *the_thread;                                     
  POSIX_API_Control  *api;                                            
  void              **value_ptr;                                      
                                                                      
  api = deleted->API_Extensions[ THREAD_API_POSIX ];                  
ffc0fd50:	83 84 01 50 	lwz     r28,336(r4)                            
 */                                                                   
static void _POSIX_Threads_Delete_extension(                          
  Thread_Control *executing __attribute__((unused)),                  
  Thread_Control *deleted                                             
)                                                                     
{                                                                     
ffc0fd54:	90 01 00 1c 	stw     r0,28(r1)                              
ffc0fd58:	93 c1 00 10 	stw     r30,16(r1)                             
ffc0fd5c:	93 e1 00 14 	stw     r31,20(r1)                             
  api = deleted->API_Extensions[ THREAD_API_POSIX ];                  
                                                                      
  /*                                                                  
   *  Run the POSIX cancellation handlers                             
   */                                                                 
  _POSIX_Threads_cancel_run( deleted );                               
ffc0fd60:	48 00 29 f9 	bl      ffc12758 <_POSIX_Threads_cancel_run>   
                                                                      
  /*                                                                  
   *  Run all the key destructors                                     
   */                                                                 
  _POSIX_Keys_Run_destructors( deleted );                             
ffc0fd64:	7f a3 eb 78 	mr      r3,r29                                 
ffc0fd68:	48 00 2a 8d 	bl      ffc127f4 <_POSIX_Keys_Run_destructors> 
ffc0fd6c:	3b fc 00 44 	addi    r31,r28,68                             
                                                                      
  /*                                                                  
   *  Wakeup all the tasks which joined with this one                 
   */                                                                 
  value_ptr = (void **) deleted->Wait.return_argument;                
ffc0fd70:	83 dd 00 28 	lwz     r30,40(r29)                            
                                                                      
  while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) )   
ffc0fd74:	48 00 00 0c 	b       ffc0fd80 <_POSIX_Threads_Delete_extension+0x48>
      *(void **)the_thread->Wait.return_argument = value_ptr;         
ffc0fd78:	81 23 00 28 	lwz     r9,40(r3)                              <== NOT EXECUTED
ffc0fd7c:	93 c9 00 00 	stw     r30,0(r9)                              <== NOT EXECUTED
  /*                                                                  
   *  Wakeup all the tasks which joined with this one                 
   */                                                                 
  value_ptr = (void **) deleted->Wait.return_argument;                
                                                                      
  while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) )   
ffc0fd80:	7f e3 fb 78 	mr      r3,r31                                 
ffc0fd84:	4b ff d1 59 	bl      ffc0cedc <_Thread_queue_Dequeue>       
ffc0fd88:	2c 03 00 00 	cmpwi   r3,0                                   
ffc0fd8c:	40 82 ff ec 	bne+    ffc0fd78 <_POSIX_Threads_Delete_extension+0x40><== NEVER TAKEN
      *(void **)the_thread->Wait.return_argument = value_ptr;         
                                                                      
  if ( api->schedpolicy == SCHED_SPORADIC )                           
ffc0fd90:	81 3c 00 84 	lwz     r9,132(r28)                            
ffc0fd94:	2f 89 00 04 	cmpwi   cr7,r9,4                               
ffc0fd98:	41 9e 00 30 	beq-    cr7,ffc0fdc8 <_POSIX_Threads_Delete_extension+0x90>
    (void) _Watchdog_Remove( &api->Sporadic_timer );                  
                                                                      
  deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;                 
                                                                      
  _Workspace_Free( api );                                             
}                                                                     
ffc0fd9c:	80 01 00 1c 	lwz     r0,28(r1)                              
      *(void **)the_thread->Wait.return_argument = value_ptr;         
                                                                      
  if ( api->schedpolicy == SCHED_SPORADIC )                           
    (void) _Watchdog_Remove( &api->Sporadic_timer );                  
                                                                      
  deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;                 
ffc0fda0:	39 20 00 00 	li      r9,0                                   
ffc0fda4:	91 3d 01 50 	stw     r9,336(r29)                            
                                                                      
  _Workspace_Free( api );                                             
ffc0fda8:	7f 83 e3 78 	mr      r3,r28                                 
}                                                                     
ffc0fdac:	7c 08 03 a6 	mtlr    r0                                     
ffc0fdb0:	83 81 00 08 	lwz     r28,8(r1)                              
ffc0fdb4:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0fdb8:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0fdbc:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0fdc0:	38 21 00 18 	addi    r1,r1,24                               
  if ( api->schedpolicy == SCHED_SPORADIC )                           
    (void) _Watchdog_Remove( &api->Sporadic_timer );                  
                                                                      
  deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;                 
                                                                      
  _Workspace_Free( api );                                             
ffc0fdc4:	4b ff e1 c0 	b       ffc0df84 <_Workspace_Free>             
                                                                      
  while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) )   
      *(void **)the_thread->Wait.return_argument = value_ptr;         
                                                                      
  if ( api->schedpolicy == SCHED_SPORADIC )                           
    (void) _Watchdog_Remove( &api->Sporadic_timer );                  
ffc0fdc8:	38 7c 00 a8 	addi    r3,r28,168                             
ffc0fdcc:	4b ff de 61 	bl      ffc0dc2c <_Watchdog_Remove>            
                                                                      
  deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;                 
                                                                      
  _Workspace_Free( api );                                             
}                                                                     
ffc0fdd0:	80 01 00 1c 	lwz     r0,28(r1)                              
      *(void **)the_thread->Wait.return_argument = value_ptr;         
                                                                      
  if ( api->schedpolicy == SCHED_SPORADIC )                           
    (void) _Watchdog_Remove( &api->Sporadic_timer );                  
                                                                      
  deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;                 
ffc0fdd4:	39 20 00 00 	li      r9,0                                   
                                                                      
  _Workspace_Free( api );                                             
}                                                                     
ffc0fdd8:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0fddc:	7c 08 03 a6 	mtlr    r0                                     
      *(void **)the_thread->Wait.return_argument = value_ptr;         
                                                                      
  if ( api->schedpolicy == SCHED_SPORADIC )                           
    (void) _Watchdog_Remove( &api->Sporadic_timer );                  
                                                                      
  deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;                 
ffc0fde0:	91 3d 01 50 	stw     r9,336(r29)                            
                                                                      
  _Workspace_Free( api );                                             
ffc0fde4:	7f 83 e3 78 	mr      r3,r28                                 
}                                                                     
ffc0fde8:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0fdec:	83 81 00 08 	lwz     r28,8(r1)                              
ffc0fdf0:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0fdf4:	38 21 00 18 	addi    r1,r1,24                               
  if ( api->schedpolicy == SCHED_SPORADIC )                           
    (void) _Watchdog_Remove( &api->Sporadic_timer );                  
                                                                      
  deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;                 
                                                                      
  _Workspace_Free( api );                                             
ffc0fdf8:	4b ff e1 8c 	b       ffc0df84 <_Workspace_Free>             
                                                                      

ffc09990 <_POSIX_Threads_Initialize_user_threads_body>: #include <rtems/posix/config.h> #include <rtems/posix/key.h> #include <rtems/posix/time.h> void _POSIX_Threads_Initialize_user_threads_body(void) {
ffc09990:	94 21 ff 98 	stwu    r1,-104(r1)                            
ffc09994:	7c 08 02 a6 	mflr    r0                                     
  uint32_t                            maximum;                        
  posix_initialization_threads_table *user_threads;                   
  pthread_t                           thread_id;                      
  pthread_attr_t                      attr;                           
                                                                      
  user_threads = Configuration_POSIX_API.User_initialization_threads_table;
ffc09998:	3d 20 00 00 	lis     r9,0                                   
#include <rtems/posix/config.h>                                       
#include <rtems/posix/key.h>                                          
#include <rtems/posix/time.h>                                         
                                                                      
void _POSIX_Threads_Initialize_user_threads_body(void)                
{                                                                     
ffc0999c:	90 01 00 6c 	stw     r0,108(r1)                             
  uint32_t                            maximum;                        
  posix_initialization_threads_table *user_threads;                   
  pthread_t                           thread_id;                      
  pthread_attr_t                      attr;                           
                                                                      
  user_threads = Configuration_POSIX_API.User_initialization_threads_table;
ffc099a0:	39 29 20 04 	addi    r9,r9,8196                             
#include <rtems/posix/config.h>                                       
#include <rtems/posix/key.h>                                          
#include <rtems/posix/time.h>                                         
                                                                      
void _POSIX_Threads_Initialize_user_threads_body(void)                
{                                                                     
ffc099a4:	93 e1 00 64 	stw     r31,100(r1)                            
  uint32_t                            maximum;                        
  posix_initialization_threads_table *user_threads;                   
  pthread_t                           thread_id;                      
  pthread_attr_t                      attr;                           
                                                                      
  user_threads = Configuration_POSIX_API.User_initialization_threads_table;
ffc099a8:	83 e9 00 34 	lwz     r31,52(r9)                             
#include <rtems/posix/config.h>                                       
#include <rtems/posix/key.h>                                          
#include <rtems/posix/time.h>                                         
                                                                      
void _POSIX_Threads_Initialize_user_threads_body(void)                
{                                                                     
ffc099ac:	93 a1 00 5c 	stw     r29,92(r1)                             
  pthread_attr_t                      attr;                           
                                                                      
  user_threads = Configuration_POSIX_API.User_initialization_threads_table;
  maximum      = Configuration_POSIX_API.number_of_initialization_threads;
                                                                      
  if ( !user_threads || maximum == 0 )                                
ffc099b0:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
#include <rtems/posix/config.h>                                       
#include <rtems/posix/key.h>                                          
#include <rtems/posix/time.h>                                         
                                                                      
void _POSIX_Threads_Initialize_user_threads_body(void)                
{                                                                     
ffc099b4:	93 c1 00 60 	stw     r30,96(r1)                             
  posix_initialization_threads_table *user_threads;                   
  pthread_t                           thread_id;                      
  pthread_attr_t                      attr;                           
                                                                      
  user_threads = Configuration_POSIX_API.User_initialization_threads_table;
  maximum      = Configuration_POSIX_API.number_of_initialization_threads;
ffc099b8:	83 a9 00 30 	lwz     r29,48(r9)                             
                                                                      
  if ( !user_threads || maximum == 0 )                                
ffc099bc:	41 9e 00 5c 	beq-    cr7,ffc09a18 <_POSIX_Threads_Initialize_user_threads_body+0x88><== NEVER TAKEN
ffc099c0:	2f 9d 00 00 	cmpwi   cr7,r29,0                              
ffc099c4:	41 9e 00 54 	beq-    cr7,ffc09a18 <_POSIX_Threads_Initialize_user_threads_body+0x88><== NEVER TAKEN
ffc099c8:	3b c0 00 00 	li      r30,0                                  
                                                                      
  for ( index=0 ; index < maximum ; index++ ) {                       
    /*                                                                
     * There is no way for these calls to fail in this situation.     
     */                                                               
    (void) pthread_attr_init( &attr );                                
ffc099cc:	38 61 00 08 	addi    r3,r1,8                                
ffc099d0:	48 00 74 65 	bl      ffc10e34 <pthread_attr_init>           
    (void) pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
ffc099d4:	38 80 00 02 	li      r4,2                                   
ffc099d8:	38 61 00 08 	addi    r3,r1,8                                
ffc099dc:	48 00 74 99 	bl      ffc10e74 <pthread_attr_setinheritsched>
    (void) pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size);
ffc099e0:	80 9f 00 04 	lwz     r4,4(r31)                              
ffc099e4:	38 61 00 08 	addi    r3,r1,8                                
ffc099e8:	48 00 74 c9 	bl      ffc10eb0 <pthread_attr_setstacksize>   
                                                                      
    status = pthread_create(                                          
ffc099ec:	80 bf 00 00 	lwz     r5,0(r31)                              
ffc099f0:	38 61 00 48 	addi    r3,r1,72                               
ffc099f4:	38 81 00 08 	addi    r4,r1,8                                
ffc099f8:	38 c0 00 00 	li      r6,0                                   
ffc099fc:	4b ff fb 51 	bl      ffc0954c <pthread_create>              
      &thread_id,                                                     
      &attr,                                                          
      user_threads[ index ].thread_entry,                             
      NULL                                                            
    );                                                                
    if ( status )                                                     
ffc09a00:	7c 65 1b 79 	mr.     r5,r3                                  
ffc09a04:	40 82 00 30 	bne-    ffc09a34 <_POSIX_Threads_Initialize_user_threads_body+0xa4>
   *                                                                  
   *  Setting the attributes explicitly is critical, since we don't want
   *  to inherit the idle tasks attributes.                           
   */                                                                 
                                                                      
  for ( index=0 ; index < maximum ; index++ ) {                       
ffc09a08:	3b de 00 01 	addi    r30,r30,1                              
ffc09a0c:	7f 9e e8 00 	cmpw    cr7,r30,r29                            
ffc09a10:	3b ff 00 08 	addi    r31,r31,8                              
ffc09a14:	40 9e ff b8 	bne+    cr7,ffc099cc <_POSIX_Threads_Initialize_user_threads_body+0x3c><== NEVER TAKEN
      NULL                                                            
    );                                                                
    if ( status )                                                     
      _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status );
  }                                                                   
}                                                                     
ffc09a18:	80 01 00 6c 	lwz     r0,108(r1)                             
ffc09a1c:	83 a1 00 5c 	lwz     r29,92(r1)                             
ffc09a20:	7c 08 03 a6 	mtlr    r0                                     
ffc09a24:	83 c1 00 60 	lwz     r30,96(r1)                             
ffc09a28:	83 e1 00 64 	lwz     r31,100(r1)                            
ffc09a2c:	38 21 00 68 	addi    r1,r1,104                              
ffc09a30:	4e 80 00 20 	blr                                            
      &attr,                                                          
      user_threads[ index ].thread_entry,                             
      NULL                                                            
    );                                                                
    if ( status )                                                     
      _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status );
ffc09a34:	38 60 00 02 	li      r3,2                                   
ffc09a38:	38 80 00 01 	li      r4,1                                   
ffc09a3c:	48 00 28 09 	bl      ffc0c244 <_Internal_error_Occurred>    
                                                                      

ffc0ff60 <_POSIX_Threads_Sporadic_budget_TSR>: */ void _POSIX_Threads_Sporadic_budget_TSR( Objects_Id id __attribute__((unused)), void *argument ) {
ffc0ff60:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0ff64:	7c 08 02 a6 	mflr    r0                                     
ffc0ff68:	90 01 00 14 	stw     r0,20(r1)                              
ffc0ff6c:	93 e1 00 0c 	stw     r31,12(r1)                             
  Thread_Control     *the_thread;                                     
  POSIX_API_Control  *api;                                            
                                                                      
  the_thread = argument;                                              
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
ffc0ff70:	83 e4 01 50 	lwz     r31,336(r4)                            
 */                                                                   
void _POSIX_Threads_Sporadic_budget_TSR(                              
  Objects_Id      id __attribute__((unused)),                         
  void           *argument                                            
)                                                                     
{                                                                     
ffc0ff74:	93 c1 00 08 	stw     r30,8(r1)                              
ffc0ff78:	7c 9e 23 78 	mr      r30,r4                                 
  the_thread = argument;                                              
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  /* ticks is guaranteed to be at least one */                        
  ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget );
ffc0ff7c:	38 7f 00 98 	addi    r3,r31,152                             
ffc0ff80:	48 00 0f 6d 	bl      ffc10eec <_Timespec_To_ticks>          
   */                                                                 
  #if 0                                                               
    printk( "TSR %d %d %d\n", the_thread->resource_count,             
        the_thread->current_priority, new_priority );                 
  #endif                                                              
  if ( the_thread->resource_count == 0 ) {                            
ffc0ff84:	81 3e 00 1c 	lwz     r9,28(r30)                             
                                                                      
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(        
  int priority                                                        
)                                                                     
{                                                                     
  return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
ffc0ff88:	3d 40 00 00 	lis     r10,0                                  
ffc0ff8c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0ff90:	88 8a 27 84 	lbz     r4,10116(r10)                          
ffc0ff94:	81 3f 00 88 	lwz     r9,136(r31)                            
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  /* ticks is guaranteed to be at least one */                        
  ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget );
                                                                      
  the_thread->cpu_time_budget = ticks;                                
ffc0ff98:	90 7e 00 74 	stw     r3,116(r30)                            
ffc0ff9c:	7c 89 20 50 	subf    r4,r9,r4                               
                                                                      
  new_priority = _POSIX_Priority_To_core( api->schedparam.sched_priority );
  the_thread->real_priority = new_priority;                           
ffc0ffa0:	90 9e 00 18 	stw     r4,24(r30)                             
   */                                                                 
  #if 0                                                               
    printk( "TSR %d %d %d\n", the_thread->resource_count,             
        the_thread->current_priority, new_priority );                 
  #endif                                                              
  if ( the_thread->resource_count == 0 ) {                            
ffc0ffa4:	40 9e 00 10 	bne-    cr7,ffc0ffb4 <_POSIX_Threads_Sporadic_budget_TSR+0x54><== NEVER TAKEN
    /*                                                                
     *  If this would make them less important, then do not change it.
     */                                                               
    if ( the_thread->current_priority > new_priority ) {              
ffc0ffa8:	81 3e 00 14 	lwz     r9,20(r30)                             
ffc0ffac:	7f 89 20 40 	cmplw   cr7,r9,r4                              
ffc0ffb0:	41 9d 00 34 	bgt-    cr7,ffc0ffe4 <_POSIX_Threads_Sporadic_budget_TSR+0x84>
      #endif                                                          
    }                                                                 
  }                                                                   
                                                                      
  /* ticks is guaranteed to be at least one */                        
  ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_repl_period );
ffc0ffb4:	38 7f 00 90 	addi    r3,r31,144                             
ffc0ffb8:	48 00 0f 35 	bl      ffc10eec <_Timespec_To_ticks>          
                                                                      
  _Watchdog_Insert_ticks( &api->Sporadic_timer, ticks );              
}                                                                     
ffc0ffbc:	80 01 00 14 	lwz     r0,20(r1)                              
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
ffc0ffc0:	90 7f 00 b4 	stw     r3,180(r31)                            
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
ffc0ffc4:	38 9f 00 a8 	addi    r4,r31,168                             
ffc0ffc8:	7c 08 03 a6 	mtlr    r0                                     
ffc0ffcc:	3c 60 00 00 	lis     r3,0                                   
ffc0ffd0:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0ffd4:	38 63 2d a8 	addi    r3,r3,11688                            
ffc0ffd8:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0ffdc:	38 21 00 10 	addi    r1,r1,16                               
ffc0ffe0:	4b ff da 84 	b       ffc0da64 <_Watchdog_Insert>            
  if ( the_thread->resource_count == 0 ) {                            
    /*                                                                
     *  If this would make them less important, then do not change it.
     */                                                               
    if ( the_thread->current_priority > new_priority ) {              
      _Thread_Change_priority( the_thread, new_priority, true );      
ffc0ffe4:	7f c3 f3 78 	mr      r3,r30                                 
ffc0ffe8:	38 a0 00 01 	li      r5,1                                   
ffc0ffec:	4b ff c4 49 	bl      ffc0c434 <_Thread_Change_priority>     
      #endif                                                          
    }                                                                 
  }                                                                   
                                                                      
  /* ticks is guaranteed to be at least one */                        
  ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_repl_period );
ffc0fff0:	38 7f 00 90 	addi    r3,r31,144                             
ffc0fff4:	48 00 0e f9 	bl      ffc10eec <_Timespec_To_ticks>          
                                                                      
  _Watchdog_Insert_ticks( &api->Sporadic_timer, ticks );              
}                                                                     
ffc0fff8:	80 01 00 14 	lwz     r0,20(r1)                              
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
ffc0fffc:	90 7f 00 b4 	stw     r3,180(r31)                            
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
ffc10000:	38 9f 00 a8 	addi    r4,r31,168                             
ffc10004:	7c 08 03 a6 	mtlr    r0                                     
ffc10008:	3c 60 00 00 	lis     r3,0                                   
ffc1000c:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc10010:	38 63 2d a8 	addi    r3,r3,11688                            
ffc10014:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc10018:	38 21 00 10 	addi    r1,r1,16                               
ffc1001c:	4b ff da 48 	b       ffc0da64 <_Watchdog_Insert>            
                                                                      

ffc12758 <_POSIX_Threads_cancel_run>: #include <rtems/posix/threadsup.h> void _POSIX_Threads_cancel_run( Thread_Control *the_thread ) {
ffc12758:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc1275c:	7c 08 02 a6 	mflr    r0                                     
                                                                      
  thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];    
                                                                      
  handler_stack = &thread_support->Cancellation_Handlers;             
                                                                      
  thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;       
ffc12760:	39 40 00 01 	li      r10,1                                  
#include <rtems/posix/threadsup.h>                                    
                                                                      
void _POSIX_Threads_cancel_run(                                       
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
ffc12764:	90 01 00 1c 	stw     r0,28(r1)                              
ffc12768:	93 c1 00 10 	stw     r30,16(r1)                             
  POSIX_Cancel_Handler_control      *handler;                         
  Chain_Control                     *handler_stack;                   
  POSIX_API_Control                 *thread_support;                  
  ISR_Level                          level;                           
                                                                      
  thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];    
ffc1276c:	83 c3 01 50 	lwz     r30,336(r3)                            
#include <rtems/posix/threadsup.h>                                    
                                                                      
void _POSIX_Threads_cancel_run(                                       
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
ffc12770:	93 a1 00 0c 	stw     r29,12(r1)                             
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
ffc12774:	3b be 00 e8 	addi    r29,r30,232                            
                                                                      
  handler_stack = &thread_support->Cancellation_Handlers;             
                                                                      
  thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;       
                                                                      
  while ( !_Chain_Is_empty( handler_stack ) ) {                       
ffc12778:	81 3e 00 e4 	lwz     r9,228(r30)                            
#include <rtems/posix/threadsup.h>                                    
                                                                      
void _POSIX_Threads_cancel_run(                                       
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
ffc1277c:	93 e1 00 14 	stw     r31,20(r1)                             
                                                                      
  handler_stack = &thread_support->Cancellation_Handlers;             
                                                                      
  thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;       
                                                                      
  while ( !_Chain_Is_empty( handler_stack ) ) {                       
ffc12780:	7f 89 e8 00 	cmpw    cr7,r9,r29                             
                                                                      
  thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];    
                                                                      
  handler_stack = &thread_support->Cancellation_Handlers;             
                                                                      
  thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;       
ffc12784:	91 5e 00 d8 	stw     r10,216(r30)                           
                                                                      
  while ( !_Chain_Is_empty( handler_stack ) ) {                       
ffc12788:	41 9e 00 50 	beq-    cr7,ffc127d8 <_POSIX_Threads_cancel_run+0x80>
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc1278c:	7d 00 00 a6 	mfmsr   r8                                     
ffc12790:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc12794:	7d 09 48 78 	andc    r9,r8,r9                               
ffc12798:	7d 20 01 24 	mtmsr   r9                                     
    _ISR_Disable( level );                                            
      handler = (POSIX_Cancel_Handler_control *)                      
ffc1279c:	83 fe 00 ec 	lwz     r31,236(r30)                           
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
ffc127a0:	81 3f 00 00 	lwz     r9,0(r31)                              
  previous       = the_node->previous;                                
ffc127a4:	81 5f 00 04 	lwz     r10,4(r31)                             
  next->previous = previous;                                          
ffc127a8:	91 49 00 04 	stw     r10,4(r9)                              
  previous->next = next;                                              
ffc127ac:	91 2a 00 00 	stw     r9,0(r10)                              
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc127b0:	7d 00 01 24 	mtmsr   r8                                     
           _Chain_Tail( handler_stack )->previous;                    
      _Chain_Extract_unprotected( &handler->Node );                   
    _ISR_Enable( level );                                             
                                                                      
    (*handler->routine)( handler->arg );                              
ffc127b4:	81 3f 00 08 	lwz     r9,8(r31)                              
ffc127b8:	80 7f 00 0c 	lwz     r3,12(r31)                             
ffc127bc:	7d 29 03 a6 	mtctr   r9                                     
ffc127c0:	4e 80 04 21 	bctrl                                          
                                                                      
    _Workspace_Free( handler );                                       
ffc127c4:	7f e3 fb 78 	mr      r3,r31                                 
ffc127c8:	4b ff b7 bd 	bl      ffc0df84 <_Workspace_Free>             
                                                                      
  handler_stack = &thread_support->Cancellation_Handlers;             
                                                                      
  thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;       
                                                                      
  while ( !_Chain_Is_empty( handler_stack ) ) {                       
ffc127cc:	81 3e 00 e4 	lwz     r9,228(r30)                            
ffc127d0:	7f 89 e8 00 	cmpw    cr7,r9,r29                             
ffc127d4:	40 9e ff b8 	bne+    cr7,ffc1278c <_POSIX_Threads_cancel_run+0x34><== NEVER TAKEN
                                                                      
    (*handler->routine)( handler->arg );                              
                                                                      
    _Workspace_Free( handler );                                       
  }                                                                   
}                                                                     
ffc127d8:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc127dc:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc127e0:	7c 08 03 a6 	mtlr    r0                                     
ffc127e4:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc127e8:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc127ec:	38 21 00 18 	addi    r1,r1,24                               
ffc127f0:	4e 80 00 20 	blr                                            
                                                                      

ffc097b0 <_POSIX_Timer_TSR>: * This is the operation that is run when a timer expires */ void _POSIX_Timer_TSR( Objects_Id timer __attribute__((unused)), void *data) {
ffc097b0:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc097b4:	7c 08 02 a6 	mflr    r0                                     
ffc097b8:	90 01 00 2c 	stw     r0,44(r1)                              
                                                                      
  /* Increment the number of expirations. */                          
  ptimer->overrun = ptimer->overrun + 1;                              
                                                                      
  /* The timer must be reprogrammed */                                
  if ( ( ptimer->timer_data.it_interval.tv_sec  != 0 ) ||             
ffc097bc:	81 44 00 54 	lwz     r10,84(r4)                             
  bool                 activated;                                     
                                                                      
  ptimer = (POSIX_Timer_Control *)data;                               
                                                                      
  /* Increment the number of expirations. */                          
  ptimer->overrun = ptimer->overrun + 1;                              
ffc097c0:	81 24 00 68 	lwz     r9,104(r4)                             
                                                                      
  /* The timer must be reprogrammed */                                
  if ( ( ptimer->timer_data.it_interval.tv_sec  != 0 ) ||             
ffc097c4:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
 *  This is the operation that is run when a timer expires            
 */                                                                   
void _POSIX_Timer_TSR(                                                
  Objects_Id timer __attribute__((unused)),                           
  void *data)                                                         
{                                                                     
ffc097c8:	93 a1 00 1c 	stw     r29,28(r1)                             
  bool                 activated;                                     
                                                                      
  ptimer = (POSIX_Timer_Control *)data;                               
                                                                      
  /* Increment the number of expirations. */                          
  ptimer->overrun = ptimer->overrun + 1;                              
ffc097cc:	39 29 00 01 	addi    r9,r9,1                                
 *  This is the operation that is run when a timer expires            
 */                                                                   
void _POSIX_Timer_TSR(                                                
  Objects_Id timer __attribute__((unused)),                           
  void *data)                                                         
{                                                                     
ffc097d0:	93 c1 00 20 	stw     r30,32(r1)                             
ffc097d4:	7c 9d 23 78 	mr      r29,r4                                 
ffc097d8:	93 e1 00 24 	stw     r31,36(r1)                             
  bool                 activated;                                     
                                                                      
  ptimer = (POSIX_Timer_Control *)data;                               
                                                                      
  /* Increment the number of expirations. */                          
  ptimer->overrun = ptimer->overrun + 1;                              
ffc097dc:	91 24 00 68 	stw     r9,104(r4)                             
                                                                      
  /* The timer must be reprogrammed */                                
  if ( ( ptimer->timer_data.it_interval.tv_sec  != 0 ) ||             
ffc097e0:	40 9e 00 48 	bne-    cr7,ffc09828 <_POSIX_Timer_TSR+0x78>   
ffc097e4:	81 24 00 58 	lwz     r9,88(r4)                              
ffc097e8:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc097ec:	40 9e 00 3c 	bne-    cr7,ffc09828 <_POSIX_Timer_TSR+0x78>   <== ALWAYS TAKEN
                                                                      
    /* The state really did not change but just to be safe */         
    ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;                     
  } else {                                                            
   /* Indicates that the timer is stopped */                          
   ptimer->state = POSIX_TIMER_STATE_CREATE_STOP;                     
ffc097f0:	39 20 00 04 	li      r9,4                                   <== NOT EXECUTED
ffc097f4:	99 24 00 3c 	stb     r9,60(r4)                              <== NOT EXECUTED
  /*                                                                  
   * The sending of the signal to the process running the handling function
   * specified for that signal is simulated                           
   */                                                                 
                                                                      
  if ( pthread_kill ( ptimer->thread_id, ptimer->inf.sigev_signo ) ) {
ffc097f8:	80 7d 00 38 	lwz     r3,56(r29)                             
ffc097fc:	80 9d 00 44 	lwz     r4,68(r29)                             
ffc09800:	48 00 6d c1 	bl      ffc105c0 <pthread_kill>                
  }                                                                   
                                                                      
  /* After the signal handler returns, the count of expirations of the
   * timer must be set to 0.                                          
   */                                                                 
  ptimer->overrun = 0;                                                
ffc09804:	39 20 00 00 	li      r9,0                                   
ffc09808:	91 3d 00 68 	stw     r9,104(r29)                            
}                                                                     
ffc0980c:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc09810:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc09814:	7c 08 03 a6 	mtlr    r0                                     
ffc09818:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc0981c:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc09820:	38 21 00 28 	addi    r1,r1,40                               
ffc09824:	4e 80 00 20 	blr                                            
  ptimer->overrun = ptimer->overrun + 1;                              
                                                                      
  /* The timer must be reprogrammed */                                
  if ( ( ptimer->timer_data.it_interval.tv_sec  != 0 ) ||             
       ( ptimer->timer_data.it_interval.tv_nsec != 0 ) ) {            
    activated = _POSIX_Timer_Insert_helper(                           
ffc09828:	80 9d 00 64 	lwz     r4,100(r29)                            
ffc0982c:	3c c0 ff c1 	lis     r6,-63                                 
ffc09830:	80 bd 00 08 	lwz     r5,8(r29)                              
ffc09834:	38 7d 00 10 	addi    r3,r29,16                              
ffc09838:	38 c6 97 b0 	addi    r6,r6,-26704                           
ffc0983c:	7f a7 eb 78 	mr      r7,r29                                 
ffc09840:	48 00 72 dd 	bl      ffc10b1c <_POSIX_Timer_Insert_helper>  
      ptimer->ticks,                                                  
      ptimer->Object.id,                                              
      _POSIX_Timer_TSR,                                               
      ptimer                                                          
    );                                                                
    if ( !activated )                                                 
ffc09844:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc09848:	41 9e ff c4 	beq+    cr7,ffc0980c <_POSIX_Timer_TSR+0x5c>   <== NEVER TAKEN
ffc0984c:	3c 80 00 00 	lis     r4,0                                   
ffc09850:	38 84 2c a0 	addi    r4,r4,11424                            
ffc09854:	38 61 00 08 	addi    r3,r1,8                                
ffc09858:	48 00 1d 4d 	bl      ffc0b5a4 <_TOD_Get_with_nanoseconds>   
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
ffc0985c:	3c c0 3b 9a 	lis     r6,15258                               
                                                                      
  /* After the signal handler returns, the count of expirations of the
   * timer must be set to 0.                                          
   */                                                                 
  ptimer->overrun = 0;                                                
}                                                                     
ffc09860:	83 e3 00 04 	lwz     r31,4(r3)                              
ffc09864:	38 a0 00 00 	li      r5,0                                   
ffc09868:	83 c3 00 00 	lwz     r30,0(r3)                              
ffc0986c:	60 c6 ca 00 	ori     r6,r6,51712                            
ffc09870:	7f e4 fb 78 	mr      r4,r31                                 
ffc09874:	7f c3 f3 78 	mr      r3,r30                                 
ffc09878:	48 01 3f a9 	bl      ffc1d820 <__divdi3>                    
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
ffc0987c:	3c c0 3b 9a 	lis     r6,15258                               
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
ffc09880:	90 9d 00 6c 	stw     r4,108(r29)                            
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
ffc09884:	38 a0 00 00 	li      r5,0                                   
ffc09888:	60 c6 ca 00 	ori     r6,r6,51712                            
ffc0988c:	7f c3 f3 78 	mr      r3,r30                                 
ffc09890:	7f e4 fb 78 	mr      r4,r31                                 
ffc09894:	48 01 43 b1 	bl      ffc1dc44 <__moddi3>                    
                                                                      
    /* Store the time when the timer was started again */             
    _TOD_Get( &ptimer->time );                                        
                                                                      
    /* The state really did not change but just to be safe */         
    ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;                     
ffc09898:	39 20 00 03 	li      r9,3                                   
ffc0989c:	90 9d 00 70 	stw     r4,112(r29)                            
ffc098a0:	99 3d 00 3c 	stb     r9,60(r29)                             
ffc098a4:	4b ff ff 54 	b       ffc097f8 <_POSIX_Timer_TSR+0x48>       
                                                                      

ffc128d4 <_POSIX_signals_Check_signal>: bool _POSIX_signals_Check_signal( POSIX_API_Control *api, int signo, bool is_global ) {
ffc128d4:	94 21 ff 98 	stwu    r1,-104(r1)                            
ffc128d8:	7c 08 02 a6 	mflr    r0                                     
ffc128dc:	7c a6 2b 78 	mr      r6,r5                                  
  siginfo_t                   siginfo_struct;                         
  sigset_t                    saved_signals_blocked;                  
  Thread_Wait_information     stored_thread_wait_information;         
                                                                      
  if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,   
ffc128e0:	38 e0 00 01 	li      r7,1                                   
bool    _POSIX_signals_Check_signal(                                  
  POSIX_API_Control  *api,                                            
  int                 signo,                                          
  bool                is_global                                       
)                                                                     
{                                                                     
ffc128e4:	93 c1 00 60 	stw     r30,96(r1)                             
  siginfo_t                   siginfo_struct;                         
  sigset_t                    saved_signals_blocked;                  
  Thread_Wait_information     stored_thread_wait_information;         
                                                                      
  if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,   
ffc128e8:	38 a1 00 30 	addi    r5,r1,48                               
bool    _POSIX_signals_Check_signal(                                  
  POSIX_API_Control  *api,                                            
  int                 signo,                                          
  bool                is_global                                       
)                                                                     
{                                                                     
ffc128ec:	93 e1 00 64 	stw     r31,100(r1)                            
ffc128f0:	7c 9e 23 78 	mr      r30,r4                                 
ffc128f4:	7c 7f 1b 78 	mr      r31,r3                                 
ffc128f8:	90 01 00 6c 	stw     r0,108(r1)                             
ffc128fc:	93 21 00 4c 	stw     r25,76(r1)                             
ffc12900:	93 41 00 50 	stw     r26,80(r1)                             
ffc12904:	93 61 00 54 	stw     r27,84(r1)                             
ffc12908:	93 81 00 58 	stw     r28,88(r1)                             
ffc1290c:	93 a1 00 5c 	stw     r29,92(r1)                             
  siginfo_t                   siginfo_struct;                         
  sigset_t                    saved_signals_blocked;                  
  Thread_Wait_information     stored_thread_wait_information;         
                                                                      
  if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,   
ffc12910:	48 00 00 f9 	bl      ffc12a08 <_POSIX_signals_Clear_signals>
ffc12914:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc12918:	41 9e 00 c0 	beq-    cr7,ffc129d8 <_POSIX_signals_Check_signal+0x104>
  #endif                                                              
                                                                      
  /*                                                                  
   *  Just to prevent sending a signal which is currently being ignored.
   */                                                                 
  if ( _POSIX_signals_Vectors[ signo ].sa_handler == SIG_IGN )        
ffc1291c:	1f 9e 00 0c 	mulli   r28,r30,12                             
ffc12920:	3f 60 00 00 	lis     r27,0                                  
ffc12924:	3b 7b 32 20 	addi    r27,r27,12832                          
ffc12928:	7d 3b e2 14 	add     r9,r27,r28                             
ffc1292c:	83 a9 00 08 	lwz     r29,8(r9)                              
ffc12930:	2f 9d 00 01 	cmpwi   cr7,r29,1                              
ffc12934:	41 9e 00 a4 	beq-    cr7,ffc129d8 <_POSIX_signals_Check_signal+0x104><== NEVER TAKEN
    return false;                                                     
                                                                      
  /*                                                                  
   *  Block the signals requested in sa_mask                          
   */                                                                 
  saved_signals_blocked = api->signals_blocked;                       
ffc12938:	83 5f 00 d0 	lwz     r26,208(r31)                           
  /*                                                                  
   *  We have to save the blocking information of the current wait queue
   *  because the signal handler may subsequently go on and put the thread
   *  on a wait queue, for its own purposes.                          
   */                                                                 
  memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait,  
ffc1293c:	3f 20 00 00 	lis     r25,0                                  
                                                                      
  /*                                                                  
   *  Block the signals requested in sa_mask                          
   */                                                                 
  saved_signals_blocked = api->signals_blocked;                       
  api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask;    
ffc12940:	81 29 00 04 	lwz     r9,4(r9)                               
  /*                                                                  
   *  We have to save the blocking information of the current wait queue
   *  because the signal handler may subsequently go on and put the thread
   *  on a wait queue, for its own purposes.                          
   */                                                                 
  memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait,  
ffc12944:	3b 39 31 a0 	addi    r25,r25,12704                          
ffc12948:	80 99 00 10 	lwz     r4,16(r25)                             
ffc1294c:	38 61 00 08 	addi    r3,r1,8                                
                                                                      
  /*                                                                  
   *  Block the signals requested in sa_mask                          
   */                                                                 
  saved_signals_blocked = api->signals_blocked;                       
  api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask;    
ffc12950:	7d 29 d3 78 	or      r9,r9,r26                              
ffc12954:	91 3f 00 d0 	stw     r9,208(r31)                            
  /*                                                                  
   *  We have to save the blocking information of the current wait queue
   *  because the signal handler may subsequently go on and put the thread
   *  on a wait queue, for its own purposes.                          
   */                                                                 
  memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait,  
ffc12958:	38 84 00 20 	addi    r4,r4,32                               
ffc1295c:	38 a0 00 28 	li      r5,40                                  
ffc12960:	48 00 14 1d 	bl      ffc13d7c <memcpy>                      
          sizeof( Thread_Wait_information ));                         
                                                                      
  /*                                                                  
   *  Here, the signal handler function executes                      
   */                                                                 
  switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {               
ffc12964:	7d 3b e0 2e 	lwzx    r9,r27,r28                             
    case SA_SIGINFO:                                                  
      (*_POSIX_signals_Vectors[ signo ].sa_sigaction)(                
ffc12968:	7f c3 f3 78 	mr      r3,r30                                 
          sizeof( Thread_Wait_information ));                         
                                                                      
  /*                                                                  
   *  Here, the signal handler function executes                      
   */                                                                 
  switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {               
ffc1296c:	2f 89 00 02 	cmpwi   cr7,r9,2                               
ffc12970:	41 9e 00 54 	beq-    cr7,ffc129c4 <_POSIX_signals_Check_signal+0xf0>
        &siginfo_struct,                                              
        NULL        /* context is undefined per 1003.1b-1993, p. 66 */
      );                                                              
      break;                                                          
    default:                                                          
      (*_POSIX_signals_Vectors[ signo ].sa_handler)( signo );         
ffc12974:	7f a9 03 a6 	mtctr   r29                                    
ffc12978:	4e 80 04 21 	bctrl                                          
  }                                                                   
                                                                      
  /*                                                                  
   *  Restore the blocking information                                
   */                                                                 
  memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,  
ffc1297c:	80 79 00 10 	lwz     r3,16(r25)                             
ffc12980:	38 81 00 08 	addi    r4,r1,8                                
ffc12984:	38 a0 00 28 	li      r5,40                                  
ffc12988:	38 63 00 20 	addi    r3,r3,32                               
ffc1298c:	48 00 13 f1 	bl      ffc13d7c <memcpy>                      
   *  Restore the previous set of blocked signals                     
   */                                                                 
  api->signals_blocked = saved_signals_blocked;                       
                                                                      
  return true;                                                        
}                                                                     
ffc12990:	80 01 00 6c 	lwz     r0,108(r1)                             
          sizeof( Thread_Wait_information ));                         
                                                                      
  /*                                                                  
   *  Restore the previous set of blocked signals                     
   */                                                                 
  api->signals_blocked = saved_signals_blocked;                       
ffc12994:	93 5f 00 d0 	stw     r26,208(r31)                           
                                                                      
  return true;                                                        
ffc12998:	38 60 00 01 	li      r3,1                                   
}                                                                     
ffc1299c:	7c 08 03 a6 	mtlr    r0                                     
ffc129a0:	83 21 00 4c 	lwz     r25,76(r1)                             
ffc129a4:	83 41 00 50 	lwz     r26,80(r1)                             
ffc129a8:	83 61 00 54 	lwz     r27,84(r1)                             
ffc129ac:	83 81 00 58 	lwz     r28,88(r1)                             
ffc129b0:	83 a1 00 5c 	lwz     r29,92(r1)                             
ffc129b4:	83 c1 00 60 	lwz     r30,96(r1)                             
ffc129b8:	83 e1 00 64 	lwz     r31,100(r1)                            
ffc129bc:	38 21 00 68 	addi    r1,r1,104                              
ffc129c0:	4e 80 00 20 	blr                                            
  /*                                                                  
   *  Here, the signal handler function executes                      
   */                                                                 
  switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {               
    case SA_SIGINFO:                                                  
      (*_POSIX_signals_Vectors[ signo ].sa_sigaction)(                
ffc129c4:	38 81 00 30 	addi    r4,r1,48                               
ffc129c8:	7f a9 03 a6 	mtctr   r29                                    
ffc129cc:	38 a0 00 00 	li      r5,0                                   
ffc129d0:	4e 80 04 21 	bctrl                                          
        signo,                                                        
        &siginfo_struct,                                              
        NULL        /* context is undefined per 1003.1b-1993, p. 66 */
      );                                                              
      break;                                                          
ffc129d4:	4b ff ff a8 	b       ffc1297c <_POSIX_signals_Check_signal+0xa8>
   *  Restore the previous set of blocked signals                     
   */                                                                 
  api->signals_blocked = saved_signals_blocked;                       
                                                                      
  return true;                                                        
}                                                                     
ffc129d8:	80 01 00 6c 	lwz     r0,108(r1)                             
  sigset_t                    saved_signals_blocked;                  
  Thread_Wait_information     stored_thread_wait_information;         
                                                                      
  if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,   
                                       is_global, true ) )            
    return false;                                                     
ffc129dc:	38 60 00 00 	li      r3,0                                   
   *  Restore the previous set of blocked signals                     
   */                                                                 
  api->signals_blocked = saved_signals_blocked;                       
                                                                      
  return true;                                                        
}                                                                     
ffc129e0:	83 21 00 4c 	lwz     r25,76(r1)                             
ffc129e4:	7c 08 03 a6 	mtlr    r0                                     
ffc129e8:	83 41 00 50 	lwz     r26,80(r1)                             
ffc129ec:	83 61 00 54 	lwz     r27,84(r1)                             
ffc129f0:	83 81 00 58 	lwz     r28,88(r1)                             
ffc129f4:	83 a1 00 5c 	lwz     r29,92(r1)                             
ffc129f8:	83 c1 00 60 	lwz     r30,96(r1)                             
ffc129fc:	83 e1 00 64 	lwz     r31,100(r1)                            
ffc12a00:	38 21 00 68 	addi    r1,r1,104                              
ffc12a04:	4e 80 00 20 	blr                                            
                                                                      

ffc12fec <_POSIX_signals_Clear_process_signals>:
ffc12fec:	39 23 ff ff 	addi    r9,r3,-1                               
ffc12ff0:	39 40 00 01 	li      r10,1                                  
ffc12ff4:	7d 48 48 30 	slw     r8,r10,r9                              
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc12ff8:	7d 40 00 a6 	mfmsr   r10                                    
ffc12ffc:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc13000:	7d 49 48 78 	andc    r9,r10,r9                              
ffc13004:	7d 20 01 24 	mtmsr   r9                                     
  mask         = signo_to_mask( signo );                              
                                                                      
  ISR_Level  level;                                                   
                                                                      
  _ISR_Disable( level );                                              
    if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {   
ffc13008:	3d 20 00 00 	lis     r9,0                                   
ffc1300c:	1c 63 00 0c 	mulli   r3,r3,12                               
ffc13010:	39 29 32 20 	addi    r9,r9,12832                            
ffc13014:	7d 29 18 2e 	lwzx    r9,r9,r3                               
ffc13018:	2f 89 00 02 	cmpwi   cr7,r9,2                               
ffc1301c:	41 9e 00 1c 	beq-    cr7,ffc13038 <_POSIX_signals_Clear_process_signals+0x4c>
      if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) )     
       clear_signal = false;                                          
    }                                                                 
    if ( clear_signal ) {                                             
      _POSIX_signals_Pending &= ~mask;                                
ffc13020:	3d 20 00 00 	lis     r9,0                                   
ffc13024:	80 e9 28 98 	lwz     r7,10392(r9)                           
ffc13028:	7c e8 40 78 	andc    r8,r7,r8                               
ffc1302c:	91 09 28 98 	stw     r8,10392(r9)                           
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc13030:	7d 40 01 24 	mtmsr   r10                                    
ffc13034:	4e 80 00 20 	blr                                            
                                                                      
  ISR_Level  level;                                                   
                                                                      
  _ISR_Disable( level );                                              
    if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {   
      if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) )     
ffc13038:	3d 20 00 00 	lis     r9,0                                   
ffc1303c:	39 29 34 14 	addi    r9,r9,13332                            
ffc13040:	7c e3 48 2e 	lwzx    r7,r3,r9                               
ffc13044:	7c c3 4a 14 	add     r6,r3,r9                               
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
ffc13048:	39 26 00 04 	addi    r9,r6,4                                
ffc1304c:	7f 87 48 00 	cmpw    cr7,r7,r9                              
ffc13050:	41 be ff d0 	beq-    cr7,ffc13020 <_POSIX_signals_Clear_process_signals+0x34><== ALWAYS TAKEN
ffc13054:	7d 40 01 24 	mtmsr   r10                                    <== NOT EXECUTED
ffc13058:	4e 80 00 20 	blr                                            <== NOT EXECUTED
                                                                      

ffc0a3f8 <_POSIX_signals_Get_lowest>:
ffc0a3f8:	38 e0 00 05 	li      r7,5                                   
ffc0a3fc:	7c e9 03 a6 	mtctr   r7                                     
  sigset_t   set                                                      
)                                                                     
{                                                                     
  int signo;                                                          
                                                                      
  for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {            
ffc0a400:	39 20 00 1b 	li      r9,27                                  
ffc0a404:	39 00 00 01 	li      r8,1                                   
#include <rtems/posix/psignalimpl.h>                                  
#include <rtems/seterr.h>                                             
#include <rtems/posix/time.h>                                         
#include <rtems/score/isr.h>                                          
                                                                      
static int _POSIX_signals_Get_lowest(                                 
ffc0a408:	39 49 ff ff 	addi    r10,r9,-1                              
ffc0a40c:	7d 0a 50 30 	slw     r10,r8,r10                             
)                                                                     
{                                                                     
  int signo;                                                          
                                                                      
  for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {            
    if ( set & signo_to_mask( signo ) ) {                             
ffc0a410:	7d 47 18 39 	and.    r7,r10,r3                              
ffc0a414:	40 82 00 38 	bne-    ffc0a44c <_POSIX_signals_Get_lowest+0x54><== NEVER TAKEN
  sigset_t   set                                                      
)                                                                     
{                                                                     
  int signo;                                                          
                                                                      
  for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {            
ffc0a418:	39 29 00 01 	addi    r9,r9,1                                
ffc0a41c:	42 00 ff ec 	bdnz+   ffc0a408 <_POSIX_signals_Get_lowest+0x10>
ffc0a420:	39 40 00 1a 	li      r10,26                                 
ffc0a424:	39 20 00 01 	li      r9,1                                   
ffc0a428:	7d 49 03 a6 	mtctr   r10                                    
ffc0a42c:	39 00 00 01 	li      r8,1                                   
ffc0a430:	48 00 00 0c 	b       ffc0a43c <_POSIX_signals_Get_lowest+0x44>
   */                                                                 
                                                                      
  #if (SIGHUP != 1)                                                   
    #error "Assumption that SIGHUP==1 violated!!"                     
  #endif                                                              
  for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {        
ffc0a434:	39 29 00 01 	addi    r9,r9,1                                
ffc0a438:	42 40 00 14 	bdz-    ffc0a44c <_POSIX_signals_Get_lowest+0x54>
#include <rtems/posix/psignalimpl.h>                                  
#include <rtems/seterr.h>                                             
#include <rtems/posix/time.h>                                         
#include <rtems/score/isr.h>                                          
                                                                      
static int _POSIX_signals_Get_lowest(                                 
ffc0a43c:	39 49 ff ff 	addi    r10,r9,-1                              
ffc0a440:	7d 0a 50 30 	slw     r10,r8,r10                             
                                                                      
  #if (SIGHUP != 1)                                                   
    #error "Assumption that SIGHUP==1 violated!!"                     
  #endif                                                              
  for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {        
    if ( set & signo_to_mask( signo ) ) {                             
ffc0a444:	7d 47 18 39 	and.    r7,r10,r3                              
ffc0a448:	41 82 ff ec 	beq+    ffc0a434 <_POSIX_signals_Get_lowest+0x3c>
   *  a return 0.  This routine will NOT be called unless a signal    
   *  is pending in the set passed in.                                
   */                                                                 
found_it:                                                             
  return signo;                                                       
}                                                                     
ffc0a44c:	7d 23 4b 78 	mr      r3,r9                                  
ffc0a450:	4e 80 00 20 	blr                                            
                                                                      

ffc0fa88 <_POSIX_signals_Post_switch_hook>: */ static void _POSIX_signals_Post_switch_hook( Thread_Control *the_thread ) {
ffc0fa88:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc0fa8c:	7c 08 02 a6 	mflr    r0                                     
ffc0fa90:	90 01 00 24 	stw     r0,36(r1)                              
ffc0fa94:	93 c1 00 18 	stw     r30,24(r1)                             
  POSIX_API_Control  *api;                                            
  int                 signo;                                          
  ISR_Level           level;                                          
  int                 hold_errno;                                     
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
ffc0fa98:	83 c3 01 50 	lwz     r30,336(r3)                            
 */                                                                   
                                                                      
static void _POSIX_signals_Post_switch_hook(                          
  Thread_Control  *the_thread                                         
)                                                                     
{                                                                     
ffc0fa9c:	93 81 00 10 	stw     r28,16(r1)                             
                                                                      
  /*                                                                  
   *  We need to ensure that if the signal handler executes a call    
   *  which overwrites the unblocking status, we restore it.          
   */                                                                 
  hold_errno = _Thread_Executing->Wait.return_code;                   
ffc0faa0:	3f 80 00 00 	lis     r28,0                                  
                                                                      
  /*                                                                  
   * api may be NULL in case of a thread close in progress            
   */                                                                 
  if ( !api )                                                         
ffc0faa4:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
                                                                      
  /*                                                                  
   *  We need to ensure that if the signal handler executes a call    
   *  which overwrites the unblocking status, we restore it.          
   */                                                                 
  hold_errno = _Thread_Executing->Wait.return_code;                   
ffc0faa8:	3b 9c 31 a0 	addi    r28,r28,12704                          
 */                                                                   
                                                                      
static void _POSIX_signals_Post_switch_hook(                          
  Thread_Control  *the_thread                                         
)                                                                     
{                                                                     
ffc0faac:	93 61 00 0c 	stw     r27,12(r1)                             
                                                                      
  /*                                                                  
   *  We need to ensure that if the signal handler executes a call    
   *  which overwrites the unblocking status, we restore it.          
   */                                                                 
  hold_errno = _Thread_Executing->Wait.return_code;                   
ffc0fab0:	81 3c 00 10 	lwz     r9,16(r28)                             
 */                                                                   
                                                                      
static void _POSIX_signals_Post_switch_hook(                          
  Thread_Control  *the_thread                                         
)                                                                     
{                                                                     
ffc0fab4:	93 a1 00 14 	stw     r29,20(r1)                             
ffc0fab8:	93 e1 00 1c 	stw     r31,28(r1)                             
                                                                      
  /*                                                                  
   *  We need to ensure that if the signal handler executes a call    
   *  which overwrites the unblocking status, we restore it.          
   */                                                                 
  hold_errno = _Thread_Executing->Wait.return_code;                   
ffc0fabc:	83 69 00 34 	lwz     r27,52(r9)                             
                                                                      
  /*                                                                  
   * api may be NULL in case of a thread close in progress            
   */                                                                 
  if ( !api )                                                         
ffc0fac0:	41 9e 00 cc 	beq-    cr7,ffc0fb8c <_POSIX_signals_Post_switch_hook+0x104><== NEVER TAKEN
ffc0fac4:	3f a0 00 00 	lis     r29,0                                  
ffc0fac8:	3b bd 28 98 	addi    r29,r29,10392                          
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0facc:	7c e0 00 a6 	mfmsr   r7                                     
ffc0fad0:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc0fad4:	7c e9 48 78 	andc    r9,r7,r9                               
ffc0fad8:	7d 20 01 24 	mtmsr   r9                                     
   *  processed at all.  No point in doing this loop otherwise.       
   */                                                                 
  while (1) {                                                         
    _ISR_Disable( level );                                            
      if ( !(~api->signals_blocked &                                  
            (api->signals_pending | _POSIX_signals_Pending)) ) {      
ffc0fadc:	81 1d 00 00 	lwz     r8,0(r29)                              
ffc0fae0:	81 5e 00 d4 	lwz     r10,212(r30)                           
   *  The first thing done is to check there are any signals to be    
   *  processed at all.  No point in doing this loop otherwise.       
   */                                                                 
  while (1) {                                                         
    _ISR_Disable( level );                                            
      if ( !(~api->signals_blocked &                                  
ffc0fae4:	81 3e 00 d0 	lwz     r9,208(r30)                            
            (api->signals_pending | _POSIX_signals_Pending)) ) {      
ffc0fae8:	7d 0a 53 78 	or      r10,r8,r10                             
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0faec:	7c e0 01 24 	mtmsr   r7                                     
   *  The first thing done is to check there are any signals to be    
   *  processed at all.  No point in doing this loop otherwise.       
   */                                                                 
  while (1) {                                                         
    _ISR_Disable( level );                                            
      if ( !(~api->signals_blocked &                                  
ffc0faf0:	7d 48 48 79 	andc.   r8,r10,r9                              
ffc0faf4:	41 82 00 90 	beq-    ffc0fb84 <_POSIX_signals_Post_switch_hook+0xfc>
       _ISR_Enable( level );                                          
       break;                                                         
     }                                                                
    _ISR_Enable( level );                                             
                                                                      
    for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {          
ffc0faf8:	3b e0 00 1b 	li      r31,27                                 
      _POSIX_signals_Check_signal( api, signo, false );               
ffc0fafc:	7f e4 fb 78 	mr      r4,r31                                 
ffc0fb00:	38 a0 00 00 	li      r5,0                                   
ffc0fb04:	7f c3 f3 78 	mr      r3,r30                                 
ffc0fb08:	48 00 2d cd 	bl      ffc128d4 <_POSIX_signals_Check_signal> 
      _POSIX_signals_Check_signal( api, signo, true );                
ffc0fb0c:	7f e4 fb 78 	mr      r4,r31                                 
ffc0fb10:	7f c3 f3 78 	mr      r3,r30                                 
ffc0fb14:	38 a0 00 01 	li      r5,1                                   
ffc0fb18:	48 00 2d bd 	bl      ffc128d4 <_POSIX_signals_Check_signal> 
       _ISR_Enable( level );                                          
       break;                                                         
     }                                                                
    _ISR_Enable( level );                                             
                                                                      
    for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {          
ffc0fb1c:	2f 9f 00 1f 	cmpwi   cr7,r31,31                             
ffc0fb20:	3b ff 00 01 	addi    r31,r31,1                              
ffc0fb24:	40 9e ff d8 	bne+    cr7,ffc0fafc <_POSIX_signals_Post_switch_hook+0x74>
ffc0fb28:	3b e0 00 01 	li      r31,1                                  
      _POSIX_signals_Check_signal( api, signo, true );                
    }                                                                 
    /* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */
                                                                      
    for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {      
      _POSIX_signals_Check_signal( api, signo, false );               
ffc0fb2c:	7f e4 fb 78 	mr      r4,r31                                 
ffc0fb30:	38 a0 00 00 	li      r5,0                                   
ffc0fb34:	7f c3 f3 78 	mr      r3,r30                                 
ffc0fb38:	48 00 2d 9d 	bl      ffc128d4 <_POSIX_signals_Check_signal> 
      _POSIX_signals_Check_signal( api, signo, true );                
ffc0fb3c:	7f e4 fb 78 	mr      r4,r31                                 
ffc0fb40:	7f c3 f3 78 	mr      r3,r30                                 
ffc0fb44:	38 a0 00 01 	li      r5,1                                   
ffc0fb48:	48 00 2d 8d 	bl      ffc128d4 <_POSIX_signals_Check_signal> 
      _POSIX_signals_Check_signal( api, signo, false );               
      _POSIX_signals_Check_signal( api, signo, true );                
    }                                                                 
    /* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */
                                                                      
    for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {      
ffc0fb4c:	2f 9f 00 1a 	cmpwi   cr7,r31,26                             
ffc0fb50:	3b ff 00 01 	addi    r31,r31,1                              
ffc0fb54:	40 9e ff d8 	bne+    cr7,ffc0fb2c <_POSIX_signals_Post_switch_hook+0xa4>
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0fb58:	7c e0 00 a6 	mfmsr   r7                                     
ffc0fb5c:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc0fb60:	7c e9 48 78 	andc    r9,r7,r9                               
ffc0fb64:	7d 20 01 24 	mtmsr   r9                                     
   *  processed at all.  No point in doing this loop otherwise.       
   */                                                                 
  while (1) {                                                         
    _ISR_Disable( level );                                            
      if ( !(~api->signals_blocked &                                  
            (api->signals_pending | _POSIX_signals_Pending)) ) {      
ffc0fb68:	81 1d 00 00 	lwz     r8,0(r29)                              
ffc0fb6c:	81 5e 00 d4 	lwz     r10,212(r30)                           
   *  The first thing done is to check there are any signals to be    
   *  processed at all.  No point in doing this loop otherwise.       
   */                                                                 
  while (1) {                                                         
    _ISR_Disable( level );                                            
      if ( !(~api->signals_blocked &                                  
ffc0fb70:	81 3e 00 d0 	lwz     r9,208(r30)                            
            (api->signals_pending | _POSIX_signals_Pending)) ) {      
ffc0fb74:	7d 0a 53 78 	or      r10,r8,r10                             
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0fb78:	7c e0 01 24 	mtmsr   r7                                     
   *  The first thing done is to check there are any signals to be    
   *  processed at all.  No point in doing this loop otherwise.       
   */                                                                 
  while (1) {                                                         
    _ISR_Disable( level );                                            
      if ( !(~api->signals_blocked &                                  
ffc0fb7c:	7d 48 48 79 	andc.   r8,r10,r9                              
ffc0fb80:	40 82 ff 78 	bne+    ffc0faf8 <_POSIX_signals_Post_switch_hook+0x70><== NEVER TAKEN
      _POSIX_signals_Check_signal( api, signo, false );               
      _POSIX_signals_Check_signal( api, signo, true );                
    }                                                                 
  }                                                                   
                                                                      
  _Thread_Executing->Wait.return_code = hold_errno;                   
ffc0fb84:	81 3c 00 10 	lwz     r9,16(r28)                             
ffc0fb88:	93 69 00 34 	stw     r27,52(r9)                             
}                                                                     
ffc0fb8c:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0fb90:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0fb94:	7c 08 03 a6 	mtlr    r0                                     
ffc0fb98:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0fb9c:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0fba0:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0fba4:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0fba8:	38 21 00 20 	addi    r1,r1,32                               
ffc0fbac:	4e 80 00 20 	blr                                            
                                                                      

ffc1e3b0 <_POSIX_signals_Unblock_thread>: bool _POSIX_signals_Unblock_thread( Thread_Control *the_thread, int signo, siginfo_t *info ) {
ffc1e3b0:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc1e3b4:	7c 08 02 a6 	mflr    r0                                     
                                                                      
  /*                                                                  
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
ffc1e3b8:	3d 40 10 00 	lis     r10,4096                               
bool _POSIX_signals_Unblock_thread(                                   
  Thread_Control  *the_thread,                                        
  int              signo,                                             
  siginfo_t       *info                                               
)                                                                     
{                                                                     
ffc1e3bc:	90 01 00 14 	stw     r0,20(r1)                              
                                                                      
  /*                                                                  
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
ffc1e3c0:	61 4a 80 00 	ori     r10,r10,32768                          
ffc1e3c4:	38 c4 ff ff 	addi    r6,r4,-1                               
ffc1e3c8:	81 23 00 10 	lwz     r9,16(r3)                              
ffc1e3cc:	38 e0 00 01 	li      r7,1                                   
bool _POSIX_signals_Unblock_thread(                                   
  Thread_Control  *the_thread,                                        
  int              signo,                                             
  siginfo_t       *info                                               
)                                                                     
{                                                                     
ffc1e3d0:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc1e3d4:	7c 7f 1b 78 	mr      r31,r3                                 
                                                                      
  /*                                                                  
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
ffc1e3d8:	7d 28 50 38 	and     r8,r9,r10                              
ffc1e3dc:	7f 88 50 00 	cmpw    cr7,r8,r10                             
{                                                                     
  POSIX_API_Control  *api;                                            
  sigset_t            mask;                                           
  siginfo_t          *the_info = NULL;                                
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
ffc1e3e0:	81 63 01 50 	lwz     r11,336(r3)                            
ffc1e3e4:	7c e8 30 30 	slw     r8,r7,r6                               
                                                                      
  /*                                                                  
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
ffc1e3e8:	41 9e 00 9c 	beq-    cr7,ffc1e484 <_POSIX_signals_Unblock_thread+0xd4>
  }                                                                   
                                                                      
  /*                                                                  
   *  Thread is not waiting due to a sigwait.                         
   */                                                                 
  if ( ~api->signals_blocked & mask ) {                               
ffc1e3ec:	81 4b 00 d0 	lwz     r10,208(r11)                           
ffc1e3f0:	7d 06 50 79 	andc.   r6,r8,r10                              
ffc1e3f4:	41 82 00 78 	beq-    ffc1e46c <_POSIX_signals_Unblock_thread+0xbc>
     *      it is not blocked, THEN                                   
     *        we need to dispatch at the end of this ISR.             
     *    + Any other combination, do nothing.                        
     */                                                               
                                                                      
    if ( _States_Is_interruptible_by_signal( the_thread->current_state ) ) {
ffc1e3f8:	75 28 10 00 	andis.  r8,r9,4096                             
ffc1e3fc:	41 82 00 44 	beq-    ffc1e440 <_POSIX_signals_Unblock_thread+0x90>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_ON_THREAD_QUEUE);              
ffc1e400:	3d 40 00 03 	lis     r10,3                                  
ffc1e404:	61 4a be e0 	ori     r10,r10,48864                          
      the_thread->Wait.return_code = EINTR;                           
      /*                                                              
       *  In pthread_cond_wait, a thread will be blocking on a thread 
       *  queue, but is also interruptible by a POSIX signal.         
       */                                                             
       if ( _States_Is_waiting_on_thread_queue(the_thread->current_state) )
ffc1e408:	7d 26 50 39 	and.    r6,r9,r10                              
     *        we need to dispatch at the end of this ISR.             
     *    + Any other combination, do nothing.                        
     */                                                               
                                                                      
    if ( _States_Is_interruptible_by_signal( the_thread->current_state ) ) {
      the_thread->Wait.return_code = EINTR;                           
ffc1e40c:	39 40 00 04 	li      r10,4                                  
ffc1e410:	91 43 00 34 	stw     r10,52(r3)                             
      /*                                                              
       *  In pthread_cond_wait, a thread will be blocking on a thread 
       *  queue, but is also interruptible by a POSIX signal.         
       */                                                             
       if ( _States_Is_waiting_on_thread_queue(the_thread->current_state) )
ffc1e414:	40 82 00 d8 	bne-    ffc1e4ec <_POSIX_signals_Unblock_thread+0x13c>
         _Thread_queue_Extract_with_proxy( the_thread );              
       else if ( _States_Is_delaying(the_thread->current_state) ) {   
ffc1e418:	71 28 00 08 	andi.   r8,r9,8                                
ffc1e41c:	41 a2 00 50 	beq+    ffc1e46c <_POSIX_signals_Unblock_thread+0xbc><== NEVER TAKEN
          (void) _Watchdog_Remove( &the_thread->Timer );              
ffc1e420:	38 63 00 48 	addi    r3,r3,72                               
ffc1e424:	4b fe f8 09 	bl      ffc0dc2c <_Watchdog_Remove>            
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
ffc1e428:	3c 80 10 07 	lis     r4,4103                                
ffc1e42c:	7f e3 fb 78 	mr      r3,r31                                 
ffc1e430:	60 84 ff f8 	ori     r4,r4,65528                            
ffc1e434:	4b fe e1 8d 	bl      ffc0c5c0 <_Thread_Clear_state>         
    } else if ( the_thread->current_state == STATES_READY ) {         
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
        _Thread_Dispatch_necessary = true;                            
    }                                                                 
  }                                                                   
  return false;                                                       
ffc1e438:	38 60 00 00 	li      r3,0                                   
ffc1e43c:	48 00 00 34 	b       ffc1e470 <_POSIX_signals_Unblock_thread+0xc0>
       else if ( _States_Is_delaying(the_thread->current_state) ) {   
          (void) _Watchdog_Remove( &the_thread->Timer );              
          _Thread_Unblock( the_thread );                              
       }                                                              
                                                                      
    } else if ( the_thread->current_state == STATES_READY ) {         
ffc1e440:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc1e444:	40 9e 00 28 	bne-    cr7,ffc1e46c <_POSIX_signals_Unblock_thread+0xbc><== NEVER TAKEN
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
ffc1e448:	3d 20 00 00 	lis     r9,0                                   
ffc1e44c:	39 29 31 a0 	addi    r9,r9,12704                            
ffc1e450:	81 49 00 08 	lwz     r10,8(r9)                              
ffc1e454:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc1e458:	41 9e 00 14 	beq-    cr7,ffc1e46c <_POSIX_signals_Unblock_thread+0xbc>
ffc1e45c:	81 49 00 10 	lwz     r10,16(r9)                             
ffc1e460:	7f 83 50 00 	cmpw    cr7,r3,r10                             
ffc1e464:	40 be 00 08 	bne+    cr7,ffc1e46c <_POSIX_signals_Unblock_thread+0xbc><== NEVER TAKEN
        _Thread_Dispatch_necessary = true;                            
ffc1e468:	98 e9 00 0c 	stb     r7,12(r9)                              
    }                                                                 
  }                                                                   
  return false;                                                       
ffc1e46c:	38 60 00 00 	li      r3,0                                   
}                                                                     
ffc1e470:	80 01 00 14 	lwz     r0,20(r1)                              
ffc1e474:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc1e478:	7c 08 03 a6 	mtlr    r0                                     
ffc1e47c:	38 21 00 10 	addi    r1,r1,16                               
ffc1e480:	4e 80 00 20 	blr                                            
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
                                                                      
    if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
ffc1e484:	81 23 00 30 	lwz     r9,48(r3)                              
ffc1e488:	7d 06 48 39 	and.    r6,r8,r9                               
ffc1e48c:	41 82 00 50 	beq-    ffc1e4dc <_POSIX_signals_Unblock_thread+0x12c>
      the_thread->Wait.return_code = EINTR;                           
                                                                      
      the_info = (siginfo_t *) the_thread->Wait.return_argument;      
                                                                      
      if ( !info ) {                                                  
ffc1e490:	2f 85 00 00 	cmpwi   cr7,r5,0                               
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
                                                                      
    if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
      the_thread->Wait.return_code = EINTR;                           
ffc1e494:	39 20 00 04 	li      r9,4                                   
ffc1e498:	91 3f 00 34 	stw     r9,52(r31)                             
                                                                      
      the_info = (siginfo_t *) the_thread->Wait.return_argument;      
ffc1e49c:	81 3f 00 28 	lwz     r9,40(r31)                             
                                                                      
      if ( !info ) {                                                  
ffc1e4a0:	41 9e 00 58 	beq-    cr7,ffc1e4f8 <_POSIX_signals_Unblock_thread+0x148>
        the_info->si_signo = signo;                                   
        the_info->si_code = SI_USER;                                  
        the_info->si_value.sival_int = 0;                             
      } else {                                                        
        *the_info = *info;                                            
ffc1e4a4:	80 e5 00 00 	lwz     r7,0(r5)                               
ffc1e4a8:	81 05 00 04 	lwz     r8,4(r5)                               
ffc1e4ac:	81 45 00 08 	lwz     r10,8(r5)                              
ffc1e4b0:	90 e9 00 00 	stw     r7,0(r9)                               
ffc1e4b4:	91 09 00 04 	stw     r8,4(r9)                               
ffc1e4b8:	91 49 00 08 	stw     r10,8(r9)                              
      }                                                               
                                                                      
      _Thread_queue_Extract_with_proxy( the_thread );                 
ffc1e4bc:	7f e3 fb 78 	mr      r3,r31                                 
ffc1e4c0:	4b fe ee e5 	bl      ffc0d3a4 <_Thread_queue_Extract_with_proxy>
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
        _Thread_Dispatch_necessary = true;                            
    }                                                                 
  }                                                                   
  return false;                                                       
}                                                                     
ffc1e4c4:	80 01 00 14 	lwz     r0,20(r1)                              
ffc1e4c8:	83 e1 00 0c 	lwz     r31,12(r1)                             
      } else {                                                        
        *the_info = *info;                                            
      }                                                               
                                                                      
      _Thread_queue_Extract_with_proxy( the_thread );                 
      return true;                                                    
ffc1e4cc:	38 60 00 01 	li      r3,1                                   
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
        _Thread_Dispatch_necessary = true;                            
    }                                                                 
  }                                                                   
  return false;                                                       
}                                                                     
ffc1e4d0:	7c 08 03 a6 	mtlr    r0                                     
ffc1e4d4:	38 21 00 10 	addi    r1,r1,16                               
ffc1e4d8:	4e 80 00 20 	blr                                            
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
                                                                      
    if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
ffc1e4dc:	81 2b 00 d0 	lwz     r9,208(r11)                            
ffc1e4e0:	7d 0a 48 79 	andc.   r10,r8,r9                              
ffc1e4e4:	40 82 ff ac 	bne+    ffc1e490 <_POSIX_signals_Unblock_thread+0xe0>
ffc1e4e8:	4b ff ff 84 	b       ffc1e46c <_POSIX_signals_Unblock_thread+0xbc>
      /*                                                              
       *  In pthread_cond_wait, a thread will be blocking on a thread 
       *  queue, but is also interruptible by a POSIX signal.         
       */                                                             
       if ( _States_Is_waiting_on_thread_queue(the_thread->current_state) )
         _Thread_queue_Extract_with_proxy( the_thread );              
ffc1e4ec:	4b fe ee b9 	bl      ffc0d3a4 <_Thread_queue_Extract_with_proxy>
    } else if ( the_thread->current_state == STATES_READY ) {         
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
        _Thread_Dispatch_necessary = true;                            
    }                                                                 
  }                                                                   
  return false;                                                       
ffc1e4f0:	38 60 00 00 	li      r3,0                                   
ffc1e4f4:	4b ff ff 7c 	b       ffc1e470 <_POSIX_signals_Unblock_thread+0xc0>
                                                                      
      the_info = (siginfo_t *) the_thread->Wait.return_argument;      
                                                                      
      if ( !info ) {                                                  
        the_info->si_signo = signo;                                   
        the_info->si_code = SI_USER;                                  
ffc1e4f8:	39 40 00 01 	li      r10,1                                  
      the_thread->Wait.return_code = EINTR;                           
                                                                      
      the_info = (siginfo_t *) the_thread->Wait.return_argument;      
                                                                      
      if ( !info ) {                                                  
        the_info->si_signo = signo;                                   
ffc1e4fc:	90 89 00 00 	stw     r4,0(r9)                               
        the_info->si_code = SI_USER;                                  
ffc1e500:	91 49 00 04 	stw     r10,4(r9)                              
        the_info->si_value.sival_int = 0;                             
ffc1e504:	90 a9 00 08 	stw     r5,8(r9)                               
ffc1e508:	4b ff ff b4 	b       ffc1e4bc <_POSIX_signals_Unblock_thread+0x10c>
                                                                      

ffc0c95c <_RBTree_Extract_unprotected>: */ void _RBTree_Extract_unprotected( RBTree_Control *the_rbtree, RBTree_Node *the_node ) {
ffc0c95c:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0c960:	7c 08 02 a6 	mflr    r0                                     
ffc0c964:	93 c1 00 10 	stw     r30,16(r1)                             
  RBTree_Node *leaf, *target;                                         
  RBTree_Color victim_color;                                          
  RBTree_Direction dir;                                               
                                                                      
  if (!the_node) return;                                              
ffc0c968:	7c 9e 23 79 	mr.     r30,r4                                 
 */                                                                   
void _RBTree_Extract_unprotected(                                     
    RBTree_Control *the_rbtree,                                       
    RBTree_Node *the_node                                             
    )                                                                 
{                                                                     
ffc0c96c:	90 01 00 1c 	stw     r0,28(r1)                              
ffc0c970:	93 81 00 08 	stw     r28,8(r1)                              
ffc0c974:	93 a1 00 0c 	stw     r29,12(r1)                             
ffc0c978:	93 e1 00 14 	stw     r31,20(r1)                             
  RBTree_Node *leaf, *target;                                         
  RBTree_Color victim_color;                                          
  RBTree_Direction dir;                                               
                                                                      
  if (!the_node) return;                                              
ffc0c97c:	41 82 01 14 	beq-    ffc0ca90 <_RBTree_Extract_unprotected+0x134>
                                                                      
  /* check if min needs to be updated */                              
  if (the_node == the_rbtree->first[RBT_LEFT]) {                      
ffc0c980:	81 23 00 08 	lwz     r9,8(r3)                               
ffc0c984:	7c 7c 1b 78 	mr      r28,r3                                 
ffc0c988:	7f 89 f0 00 	cmpw    cr7,r9,r30                             
ffc0c98c:	41 9e 01 6c 	beq-    cr7,ffc0caf8 <_RBTree_Extract_unprotected+0x19c>
    the_rbtree->first[RBT_LEFT] = next;                               
  }                                                                   
                                                                      
  /* Check if max needs to be updated. min=max for 1 element trees so 
   * do not use else if here. */                                      
  if (the_node == the_rbtree->first[RBT_RIGHT]) {                     
ffc0c990:	81 3c 00 0c 	lwz     r9,12(r28)                             
ffc0c994:	7f 89 f0 00 	cmpw    cr7,r9,r30                             
ffc0c998:	41 9e 01 74 	beq-    cr7,ffc0cb0c <_RBTree_Extract_unprotected+0x1b0>
   * either max in node->child[RBT_LEFT] or min in node->child[RBT_RIGHT],
   * and replace the_node with the target node. This maintains the binary
   * search tree property, but may violate the red-black properties.  
   */                                                                 
                                                                      
  if (the_node->child[RBT_LEFT] && the_node->child[RBT_RIGHT]) {      
ffc0c99c:	83 fe 00 04 	lwz     r31,4(r30)                             
ffc0c9a0:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
ffc0c9a4:	41 9e 01 88 	beq-    cr7,ffc0cb2c <_RBTree_Extract_unprotected+0x1d0>
ffc0c9a8:	81 3e 00 08 	lwz     r9,8(r30)                              
ffc0c9ac:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0c9b0:	40 be 00 0c 	bne+    cr7,ffc0c9bc <_RBTree_Extract_unprotected+0x60>
ffc0c9b4:	48 00 01 0c 	b       ffc0cac0 <_RBTree_Extract_unprotected+0x164>
    target = the_node->child[RBT_LEFT]; /* find max in node->child[RBT_LEFT] */
    while (target->child[RBT_RIGHT]) target = target->child[RBT_RIGHT];
ffc0c9b8:	7d 3f 4b 78 	mr      r31,r9                                 
ffc0c9bc:	81 3f 00 08 	lwz     r9,8(r31)                              
ffc0c9c0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0c9c4:	40 9e ff f4 	bne+    cr7,ffc0c9b8 <_RBTree_Extract_unprotected+0x5c>
     * target's position (target is the right child of target->parent)
     * when target vacates it. if there is no child, then target->parent
     * should become NULL. This may cause the coloring to be violated.
     * For now we store the color of the node being deleted in victim_color.
     */                                                               
    leaf = target->child[RBT_LEFT];                                   
ffc0c9c8:	83 bf 00 04 	lwz     r29,4(r31)                             
    if(leaf) {                                                        
ffc0c9cc:	2f 9d 00 00 	cmpwi   cr7,r29,0                              
ffc0c9d0:	41 9e 01 50 	beq-    cr7,ffc0cb20 <_RBTree_Extract_unprotected+0x1c4>
      leaf->parent = target->parent;                                  
ffc0c9d4:	81 3f 00 00 	lwz     r9,0(r31)                              
ffc0c9d8:	91 3d 00 00 	stw     r9,0(r29)                              
    } else {                                                          
      /* fix the tree here if the child is a null leaf. */            
      _RBTree_Extract_validate_unprotected(target);                   
    }                                                                 
    victim_color = target->color;                                     
    dir = target != target->parent->child[0];                         
ffc0c9dc:	80 ff 00 00 	lwz     r7,0(r31)                              
    target->parent->child[dir] = leaf;                                
                                                                      
    /* now replace the_node with target */                            
    dir = the_node != the_node->parent->child[0];                     
ffc0c9e0:	81 1e 00 00 	lwz     r8,0(r30)                              
    } else {                                                          
      /* fix the tree here if the child is a null leaf. */            
      _RBTree_Extract_validate_unprotected(target);                   
    }                                                                 
    victim_color = target->color;                                     
    dir = target != target->parent->child[0];                         
ffc0c9e4:	81 27 00 04 	lwz     r9,4(r7)                               
      leaf->parent = target->parent;                                  
    } else {                                                          
      /* fix the tree here if the child is a null leaf. */            
      _RBTree_Extract_validate_unprotected(target);                   
    }                                                                 
    victim_color = target->color;                                     
ffc0c9e8:	81 5f 00 0c 	lwz     r10,12(r31)                            
    dir = target != target->parent->child[0];                         
ffc0c9ec:	7f e9 4a 78 	xor     r9,r31,r9                              
ffc0c9f0:	7d 29 00 34 	cntlzw  r9,r9                                  
ffc0c9f4:	55 29 d9 7e 	rlwinm  r9,r9,27,5,31                          
ffc0c9f8:	69 29 00 01 	xori    r9,r9,1                                
    target->parent->child[dir] = leaf;                                
ffc0c9fc:	55 29 10 3a 	rlwinm  r9,r9,2,0,29                           
ffc0ca00:	7c e7 4a 14 	add     r7,r7,r9                               
ffc0ca04:	93 a7 00 04 	stw     r29,4(r7)                              
                                                                      
    /* now replace the_node with target */                            
    dir = the_node != the_node->parent->child[0];                     
ffc0ca08:	81 28 00 04 	lwz     r9,4(r8)                               
ffc0ca0c:	7f c9 4a 78 	xor     r9,r30,r9                              
ffc0ca10:	7d 29 00 34 	cntlzw  r9,r9                                  
ffc0ca14:	55 29 d9 7e 	rlwinm  r9,r9,27,5,31                          
ffc0ca18:	69 29 00 01 	xori    r9,r9,1                                
    the_node->parent->child[dir] = target;                            
ffc0ca1c:	55 29 10 3a 	rlwinm  r9,r9,2,0,29                           
ffc0ca20:	7d 08 4a 14 	add     r8,r8,r9                               
ffc0ca24:	93 e8 00 04 	stw     r31,4(r8)                              
                                                                      
    /* set target's new children to the original node's children */   
    target->child[RBT_RIGHT] = the_node->child[RBT_RIGHT];            
ffc0ca28:	81 3e 00 08 	lwz     r9,8(r30)                              
ffc0ca2c:	91 3f 00 08 	stw     r9,8(r31)                              
    if (the_node->child[RBT_RIGHT])                                   
ffc0ca30:	81 3e 00 08 	lwz     r9,8(r30)                              
ffc0ca34:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0ca38:	41 9e 00 08 	beq-    cr7,ffc0ca40 <_RBTree_Extract_unprotected+0xe4><== NEVER TAKEN
      the_node->child[RBT_RIGHT]->parent = target;                    
ffc0ca3c:	93 e9 00 00 	stw     r31,0(r9)                              
    target->child[RBT_LEFT] = the_node->child[RBT_LEFT];              
ffc0ca40:	81 3e 00 04 	lwz     r9,4(r30)                              
ffc0ca44:	91 3f 00 04 	stw     r9,4(r31)                              
    if (the_node->child[RBT_LEFT])                                    
ffc0ca48:	81 3e 00 04 	lwz     r9,4(r30)                              
ffc0ca4c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0ca50:	41 9e 00 08 	beq-    cr7,ffc0ca58 <_RBTree_Extract_unprotected+0xfc>
      the_node->child[RBT_LEFT]->parent = target;                     
ffc0ca54:	93 e9 00 00 	stw     r31,0(r9)                              
    /* finally, update the parent node and recolor. target has completely
     * replaced the_node, and target's child has moved up the tree if needed.
     * the_node is no longer part of the tree, although it has valid pointers
     * still.                                                         
     */                                                               
    target->parent = the_node->parent;                                
ffc0ca58:	81 1e 00 00 	lwz     r8,0(r30)                              
    target->color = the_node->color;                                  
ffc0ca5c:	81 3e 00 0c 	lwz     r9,12(r30)                             
    /* finally, update the parent node and recolor. target has completely
     * replaced the_node, and target's child has moved up the tree if needed.
     * the_node is no longer part of the tree, although it has valid pointers
     * still.                                                         
     */                                                               
    target->parent = the_node->parent;                                
ffc0ca60:	91 1f 00 00 	stw     r8,0(r31)                              
    target->color = the_node->color;                                  
ffc0ca64:	91 3f 00 0c 	stw     r9,12(r31)                             
  /* fix coloring. leaf has moved up the tree. The color of the deleted
   * node is in victim_color. There are two cases:                    
   *   1. Deleted a red node, its child must be black. Nothing must be done.
   *   2. Deleted a black node, its child must be red. Paint child black.
   */                                                                 
  if (victim_color == RBT_BLACK) { /* eliminate case 1 */             
ffc0ca68:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0ca6c:	41 9e 00 44 	beq-    cr7,ffc0cab0 <_RBTree_Extract_unprotected+0x154>
                                                                      
  /* Wipe the_node */                                                 
  _RBTree_Set_off_rbtree(the_node);                                   
                                                                      
  /* set root to black, if it exists */                               
  if (the_rbtree->root) the_rbtree->root->color = RBT_BLACK;          
ffc0ca70:	81 5c 00 04 	lwz     r10,4(r28)                             
 */                                                                   
RTEMS_INLINE_ROUTINE void _RBTree_Set_off_rbtree(                     
    RBTree_Node *node                                                 
    )                                                                 
{                                                                     
  node->parent = node->child[RBT_LEFT] = node->child[RBT_RIGHT] = NULL;
ffc0ca74:	39 20 00 00 	li      r9,0                                   
ffc0ca78:	91 3e 00 08 	stw     r9,8(r30)                              
ffc0ca7c:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0ca80:	91 3e 00 04 	stw     r9,4(r30)                              
ffc0ca84:	91 3e 00 00 	stw     r9,0(r30)                              
ffc0ca88:	41 9e 00 08 	beq-    cr7,ffc0ca90 <_RBTree_Extract_unprotected+0x134>
ffc0ca8c:	91 2a 00 0c 	stw     r9,12(r10)                             
}                                                                     
ffc0ca90:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0ca94:	83 81 00 08 	lwz     r28,8(r1)                              
ffc0ca98:	7c 08 03 a6 	mtlr    r0                                     
ffc0ca9c:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0caa0:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0caa4:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0caa8:	38 21 00 18 	addi    r1,r1,24                               
ffc0caac:	4e 80 00 20 	blr                                            
   * node is in victim_color. There are two cases:                    
   *   1. Deleted a red node, its child must be black. Nothing must be done.
   *   2. Deleted a black node, its child must be red. Paint child black.
   */                                                                 
  if (victim_color == RBT_BLACK) { /* eliminate case 1 */             
    if (leaf) {                                                       
ffc0cab0:	2f 9d 00 00 	cmpwi   cr7,r29,0                              
ffc0cab4:	41 be ff bc 	beq-    cr7,ffc0ca70 <_RBTree_Extract_unprotected+0x114>
      leaf->color = RBT_BLACK; /* case 2 */                           
ffc0cab8:	91 5d 00 0c 	stw     r10,12(r29)                            
ffc0cabc:	4b ff ff b4 	b       ffc0ca70 <_RBTree_Extract_unprotected+0x114>
   * either max in node->child[RBT_LEFT] or min in node->child[RBT_RIGHT],
   * and replace the_node with the target node. This maintains the binary
   * search tree property, but may violate the red-black properties.  
   */                                                                 
                                                                      
  if (the_node->child[RBT_LEFT] && the_node->child[RBT_RIGHT]) {      
ffc0cac0:	7f fd fb 78 	mr      r29,r31                                
     * For now we store the color of the node being deleted in victim_color.
     */                                                               
    leaf = the_node->child[RBT_LEFT] ?                                
              the_node->child[RBT_LEFT] : the_node->child[RBT_RIGHT]; 
    if( leaf ) {                                                      
      leaf->parent = the_node->parent;                                
ffc0cac4:	81 3e 00 00 	lwz     r9,0(r30)                              
ffc0cac8:	91 3d 00 00 	stw     r9,0(r29)                              
      _RBTree_Extract_validate_unprotected(the_node);                 
    }                                                                 
    victim_color = the_node->color;                                   
                                                                      
    /* remove the_node from the tree */                               
    dir = the_node != the_node->parent->child[0];                     
ffc0cacc:	81 1e 00 00 	lwz     r8,0(r30)                              
      leaf->parent = the_node->parent;                                
    } else {                                                          
      /* fix the tree here if the child is a null leaf. */            
      _RBTree_Extract_validate_unprotected(the_node);                 
    }                                                                 
    victim_color = the_node->color;                                   
ffc0cad0:	81 5e 00 0c 	lwz     r10,12(r30)                            
                                                                      
    /* remove the_node from the tree */                               
    dir = the_node != the_node->parent->child[0];                     
ffc0cad4:	81 28 00 04 	lwz     r9,4(r8)                               
ffc0cad8:	7f c9 4a 78 	xor     r9,r30,r9                              
ffc0cadc:	7d 29 00 34 	cntlzw  r9,r9                                  
ffc0cae0:	55 29 d9 7e 	rlwinm  r9,r9,27,5,31                          
ffc0cae4:	69 29 00 01 	xori    r9,r9,1                                
    the_node->parent->child[dir] = leaf;                              
ffc0cae8:	55 29 10 3a 	rlwinm  r9,r9,2,0,29                           
ffc0caec:	7d 08 4a 14 	add     r8,r8,r9                               
ffc0caf0:	93 a8 00 04 	stw     r29,4(r8)                              
ffc0caf4:	4b ff ff 74 	b       ffc0ca68 <_RBTree_Extract_unprotected+0x10c>
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Successor_unprotected(      
  const RBTree_Node *node                                             
)                                                                     
{                                                                     
  return _RBTree_Next_unprotected( node, RBT_RIGHT );                 
ffc0caf8:	7f c3 f3 78 	mr      r3,r30                                 
ffc0cafc:	38 80 00 01 	li      r4,1                                   
ffc0cb00:	48 00 04 99 	bl      ffc0cf98 <_RBTree_Next_unprotected>    
                                                                      
  /* check if min needs to be updated */                              
  if (the_node == the_rbtree->first[RBT_LEFT]) {                      
    RBTree_Node *next;                                                
    next = _RBTree_Successor_unprotected(the_node);                   
    the_rbtree->first[RBT_LEFT] = next;                               
ffc0cb04:	90 7c 00 08 	stw     r3,8(r28)                              
ffc0cb08:	4b ff fe 88 	b       ffc0c990 <_RBTree_Extract_unprotected+0x34>
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Predecessor_unprotected(    
  const RBTree_Node *node                                             
)                                                                     
{                                                                     
  return _RBTree_Next_unprotected( node, RBT_LEFT );                  
ffc0cb0c:	7f c3 f3 78 	mr      r3,r30                                 
ffc0cb10:	38 80 00 00 	li      r4,0                                   
ffc0cb14:	48 00 04 85 	bl      ffc0cf98 <_RBTree_Next_unprotected>    
  /* Check if max needs to be updated. min=max for 1 element trees so 
   * do not use else if here. */                                      
  if (the_node == the_rbtree->first[RBT_RIGHT]) {                     
    RBTree_Node *previous;                                            
    previous = _RBTree_Predecessor_unprotected(the_node);             
    the_rbtree->first[RBT_RIGHT] = previous;                          
ffc0cb18:	90 7c 00 0c 	stw     r3,12(r28)                             
ffc0cb1c:	4b ff fe 80 	b       ffc0c99c <_RBTree_Extract_unprotected+0x40>
    leaf = target->child[RBT_LEFT];                                   
    if(leaf) {                                                        
      leaf->parent = target->parent;                                  
    } else {                                                          
      /* fix the tree here if the child is a null leaf. */            
      _RBTree_Extract_validate_unprotected(target);                   
ffc0cb20:	7f e3 fb 78 	mr      r3,r31                                 
ffc0cb24:	4b ff fb 2d 	bl      ffc0c650 <_RBTree_Extract_validate_unprotected>
ffc0cb28:	4b ff fe b4 	b       ffc0c9dc <_RBTree_Extract_unprotected+0x80>
     * the_node's location in the tree. This may cause the coloring to be
     * violated. We will fix it later.                                
     * For now we store the color of the node being deleted in victim_color.
     */                                                               
    leaf = the_node->child[RBT_LEFT] ?                                
              the_node->child[RBT_LEFT] : the_node->child[RBT_RIGHT]; 
ffc0cb2c:	83 be 00 08 	lwz     r29,8(r30)                             
    if( leaf ) {                                                      
ffc0cb30:	2f 9d 00 00 	cmpwi   cr7,r29,0                              
ffc0cb34:	40 9e ff 90 	bne+    cr7,ffc0cac4 <_RBTree_Extract_unprotected+0x168>
      leaf->parent = the_node->parent;                                
    } else {                                                          
      /* fix the tree here if the child is a null leaf. */            
      _RBTree_Extract_validate_unprotected(the_node);                 
ffc0cb38:	7f c3 f3 78 	mr      r3,r30                                 
ffc0cb3c:	4b ff fb 15 	bl      ffc0c650 <_RBTree_Extract_validate_unprotected>
ffc0cb40:	4b ff ff 8c 	b       ffc0cacc <_RBTree_Extract_unprotected+0x170>
                                                                      

ffc0c650 <_RBTree_Extract_validate_unprotected>: ) { RBTree_Node *parent, *sibling; RBTree_Direction dir; parent = the_node->parent;
ffc0c650:	81 23 00 00 	lwz     r9,0(r3)                               
  if(!parent->parent) return;                                         
ffc0c654:	81 49 00 00 	lwz     r10,0(r9)                              
ffc0c658:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0c65c:	4d 9e 00 20 	beqlr   cr7                                    
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
  if(!(the_node->parent->parent)) return NULL;                        
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
ffc0c660:	81 49 00 04 	lwz     r10,4(r9)                              
ffc0c664:	7f 83 50 00 	cmpw    cr7,r3,r10                             
ffc0c668:	41 9e 02 d0 	beq-    cr7,ffc0c938 <_RBTree_Extract_validate_unprotected+0x2e8>
     * Now the_node has a black sibling and red parent. After rotation,
     * update sibling pointer.                                        
     */                                                               
    if (_RBTree_Is_red(sibling)) {                                    
      parent->color = RBT_RED;                                        
      sibling->color = RBT_BLACK;                                     
ffc0c66c:	38 80 00 00 	li      r4,0                                   
    }                                                                 
                                                                      
    /* sibling is black, see if both of its children are also black. */
    if (!_RBTree_Is_red(sibling->child[RBT_RIGHT]) &&                 
        !_RBTree_Is_red(sibling->child[RBT_LEFT])) {                  
        sibling->color = RBT_RED;                                     
ffc0c670:	38 c0 00 01 	li      r6,1                                   
ffc0c674:	48 00 00 90 	b       ffc0c704 <_RBTree_Extract_validate_unprotected+0xb4>
  if(!parent->parent) return;                                         
                                                                      
  sibling = _RBTree_Sibling(the_node);                                
                                                                      
  /* continue to correct tree as long as the_node is black and not the root */
  while (!_RBTree_Is_red(the_node) && parent->parent) {               
ffc0c678:	81 09 00 00 	lwz     r8,0(r9)                               
ffc0c67c:	2f 88 00 00 	cmpwi   cr7,r8,0                               
ffc0c680:	41 9e 00 90 	beq-    cr7,ffc0c710 <_RBTree_Extract_validate_unprotected+0xc0>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
ffc0c684:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0c688:	41 9e 00 10 	beq-    cr7,ffc0c698 <_RBTree_Extract_validate_unprotected+0x48><== NEVER TAKEN
ffc0c68c:	80 ea 00 0c 	lwz     r7,12(r10)                             
ffc0c690:	2f 87 00 01 	cmpwi   cr7,r7,1                               
ffc0c694:	41 9e 01 68 	beq-    cr7,ffc0c7fc <_RBTree_Extract_validate_unprotected+0x1ac>
      _RBTree_Rotate(parent, dir);                                    
      sibling = parent->child[_RBTree_Opposite_direction(dir)];       
    }                                                                 
                                                                      
    /* sibling is black, see if both of its children are also black. */
    if (!_RBTree_Is_red(sibling->child[RBT_RIGHT]) &&                 
ffc0c698:	81 0a 00 08 	lwz     r8,8(r10)                              
ffc0c69c:	2f 88 00 00 	cmpwi   cr7,r8,0                               
ffc0c6a0:	41 9e 00 10 	beq-    cr7,ffc0c6b0 <_RBTree_Extract_validate_unprotected+0x60>
ffc0c6a4:	81 08 00 0c 	lwz     r8,12(r8)                              
ffc0c6a8:	2f 88 00 01 	cmpwi   cr7,r8,1                               
ffc0c6ac:	41 9e 00 7c 	beq-    cr7,ffc0c728 <_RBTree_Extract_validate_unprotected+0xd8>
        !_RBTree_Is_red(sibling->child[RBT_LEFT])) {                  
ffc0c6b0:	81 0a 00 04 	lwz     r8,4(r10)                              
ffc0c6b4:	2f 88 00 00 	cmpwi   cr7,r8,0                               
ffc0c6b8:	41 9e 00 10 	beq-    cr7,ffc0c6c8 <_RBTree_Extract_validate_unprotected+0x78>
ffc0c6bc:	81 08 00 0c 	lwz     r8,12(r8)                              
ffc0c6c0:	2f 88 00 01 	cmpwi   cr7,r8,1                               
ffc0c6c4:	41 9e 00 64 	beq-    cr7,ffc0c728 <_RBTree_Extract_validate_unprotected+0xd8>
        sibling->color = RBT_RED;                                     
ffc0c6c8:	90 ca 00 0c 	stw     r6,12(r10)                             
ffc0c6cc:	81 49 00 0c 	lwz     r10,12(r9)                             
ffc0c6d0:	2f 8a 00 01 	cmpwi   cr7,r10,1                              
ffc0c6d4:	41 9e 02 6c 	beq-    cr7,ffc0c940 <_RBTree_Extract_validate_unprotected+0x2f0>
        if (_RBTree_Is_red(parent)) {                                 
          parent->color = RBT_BLACK;                                  
          break;                                                      
        }                                                             
        the_node = parent; /* done if parent is red */                
        parent = the_node->parent;                                    
ffc0c6d8:	81 09 00 00 	lwz     r8,0(r9)                               
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Sibling(                    
  const RBTree_Node *the_node                                         
)                                                                     
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
ffc0c6dc:	2f 88 00 00 	cmpwi   cr7,r8,0                               
ffc0c6e0:	41 9e 01 b0 	beq-    cr7,ffc0c890 <_RBTree_Extract_validate_unprotected+0x240><== NEVER TAKEN
  if(!(the_node->parent->parent)) return NULL;                        
ffc0c6e4:	81 48 00 00 	lwz     r10,0(r8)                              
ffc0c6e8:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0c6ec:	41 9e 01 a4 	beq-    cr7,ffc0c890 <_RBTree_Extract_validate_unprotected+0x240>
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
ffc0c6f0:	81 48 00 04 	lwz     r10,4(r8)                              
ffc0c6f4:	7f 89 50 00 	cmpw    cr7,r9,r10                             
ffc0c6f8:	41 9e 01 a0 	beq-    cr7,ffc0c898 <_RBTree_Extract_validate_unprotected+0x248>
ffc0c6fc:	7d 23 4b 78 	mr      r3,r9                                  
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Sibling(                    
  const RBTree_Node *the_node                                         
)                                                                     
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
ffc0c700:	7d 09 43 78 	mr      r9,r8                                  
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
ffc0c704:	81 03 00 0c 	lwz     r8,12(r3)                              
ffc0c708:	2f 88 00 01 	cmpwi   cr7,r8,1                               
ffc0c70c:	40 9e ff 6c 	bne+    cr7,ffc0c678 <_RBTree_Extract_validate_unprotected+0x28>
      sibling->child[_RBTree_Opposite_direction(dir)]->color = RBT_BLACK;
      _RBTree_Rotate(parent, dir);                                    
      break; /* done */                                               
    }                                                                 
  } /* while */                                                       
  if(!the_node->parent->parent) the_node->color = RBT_BLACK;          
ffc0c710:	81 23 00 00 	lwz     r9,0(r3)                               
ffc0c714:	81 29 00 00 	lwz     r9,0(r9)                               
ffc0c718:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0c71c:	4c be 00 20 	bnelr+  cr7                                    
ffc0c720:	91 23 00 0c 	stw     r9,12(r3)                              
ffc0c724:	4e 80 00 20 	blr                                            
       * cases, either the_node is to the left or the right of the parent.
       * In both cases, first check if one of sibling's children is black,
       * and if so rotate in the proper direction and update sibling pointer.
       * Then switch the sibling and parent colors, and rotate through parent.
       */                                                             
      dir = the_node != parent->child[0];                             
ffc0c728:	81 09 00 04 	lwz     r8,4(r9)                               
ffc0c72c:	7c 68 42 78 	xor     r8,r3,r8                               
ffc0c730:	7d 08 00 34 	cntlzw  r8,r8                                  
ffc0c734:	55 08 d9 7e 	rlwinm  r8,r8,27,5,31                          
ffc0c738:	69 08 00 01 	xori    r8,r8,1                                
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
ffc0c73c:	69 07 00 01 	xori    r7,r8,1                                
      if (!_RBTree_Is_red(sibling->child[_RBTree_Opposite_direction(dir)])) {
ffc0c740:	54 e7 10 3a 	rlwinm  r7,r7,2,0,29                           
ffc0c744:	7c ca 3a 14 	add     r6,r10,r7                              
ffc0c748:	80 c6 00 04 	lwz     r6,4(r6)                               
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
ffc0c74c:	2f 86 00 00 	cmpwi   cr7,r6,0                               
ffc0c750:	41 9e 00 10 	beq-    cr7,ffc0c760 <_RBTree_Extract_validate_unprotected+0x110>
ffc0c754:	80 a6 00 0c 	lwz     r5,12(r6)                              
ffc0c758:	2f 85 00 01 	cmpwi   cr7,r5,1                               
ffc0c75c:	41 9e 01 4c 	beq-    cr7,ffc0c8a8 <_RBTree_Extract_validate_unprotected+0x258>
        sibling->color = RBT_RED;                                     
        sibling->child[dir]->color = RBT_BLACK;                       
ffc0c760:	55 08 10 3a 	rlwinm  r8,r8,2,0,29                           
ffc0c764:	7c aa 42 14 	add     r5,r10,r8                              
ffc0c768:	80 c5 00 04 	lwz     r6,4(r5)                               
       * and if so rotate in the proper direction and update sibling pointer.
       * Then switch the sibling and parent colors, and rotate through parent.
       */                                                             
      dir = the_node != parent->child[0];                             
      if (!_RBTree_Is_red(sibling->child[_RBTree_Opposite_direction(dir)])) {
        sibling->color = RBT_RED;                                     
ffc0c76c:	38 80 00 01 	li      r4,1                                   
ffc0c770:	90 8a 00 0c 	stw     r4,12(r10)                             
        sibling->child[dir]->color = RBT_BLACK;                       
ffc0c774:	38 80 00 00 	li      r4,0                                   
    RBTree_Direction dir                                              
    )                                                                 
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
ffc0c778:	2f 86 00 00 	cmpwi   cr7,r6,0                               
ffc0c77c:	90 86 00 0c 	stw     r4,12(r6)                              
ffc0c780:	41 9e 00 54 	beq-    cr7,ffc0c7d4 <_RBTree_Extract_validate_unprotected+0x184><== NEVER TAKEN
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
ffc0c784:	7c 86 3a 14 	add     r4,r6,r7                               
ffc0c788:	81 64 00 04 	lwz     r11,4(r4)                              
ffc0c78c:	91 65 00 04 	stw     r11,4(r5)                              
                                                                      
  if (c->child[dir])                                                  
ffc0c790:	80 a4 00 04 	lwz     r5,4(r4)                               
ffc0c794:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc0c798:	41 9e 00 08 	beq-    cr7,ffc0c7a0 <_RBTree_Extract_validate_unprotected+0x150>
    c->child[dir]->parent = the_node;                                 
ffc0c79c:	91 45 00 00 	stw     r10,0(r5)                              
                                                                      
  c->child[dir] = the_node;                                           
ffc0c7a0:	7c a6 3a 14 	add     r5,r6,r7                               
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
ffc0c7a4:	80 8a 00 00 	lwz     r4,0(r10)                              
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
                                                                      
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
ffc0c7a8:	91 45 00 04 	stw     r10,4(r5)                              
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
ffc0c7ac:	80 a4 00 04 	lwz     r5,4(r4)                               
                                                                      
  c->parent = the_node->parent;                                       
ffc0c7b0:	90 86 00 00 	stw     r4,0(r6)                               
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
ffc0c7b4:	7d 45 2a 78 	xor     r5,r10,r5                              
ffc0c7b8:	7c a5 00 34 	cntlzw  r5,r5                                  
                                                                      
  c->parent = the_node->parent;                                       
  the_node->parent = c;                                               
ffc0c7bc:	90 ca 00 00 	stw     r6,0(r10)                              
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
ffc0c7c0:	54 a5 d9 7e 	rlwinm  r5,r5,27,5,31                          
ffc0c7c4:	68 a5 00 01 	xori    r5,r5,1                                
ffc0c7c8:	54 a5 10 3a 	rlwinm  r5,r5,2,0,29                           
ffc0c7cc:	7c 84 2a 14 	add     r4,r4,r5                               
ffc0c7d0:	90 c4 00 04 	stw     r6,4(r4)                               
        _RBTree_Rotate(sibling, _RBTree_Opposite_direction(dir));     
        sibling = parent->child[_RBTree_Opposite_direction(dir)];     
ffc0c7d4:	7d 49 3a 14 	add     r10,r9,r7                              
      }                                                               
      sibling->color = parent->color;                                 
ffc0c7d8:	80 c9 00 0c 	lwz     r6,12(r9)                              
      dir = the_node != parent->child[0];                             
      if (!_RBTree_Is_red(sibling->child[_RBTree_Opposite_direction(dir)])) {
        sibling->color = RBT_RED;                                     
        sibling->child[dir]->color = RBT_BLACK;                       
        _RBTree_Rotate(sibling, _RBTree_Opposite_direction(dir));     
        sibling = parent->child[_RBTree_Opposite_direction(dir)];     
ffc0c7dc:	80 aa 00 04 	lwz     r5,4(r10)                              
ffc0c7e0:	7d 45 3a 14 	add     r10,r5,r7                              
      }                                                               
      sibling->color = parent->color;                                 
ffc0c7e4:	90 c5 00 0c 	stw     r6,12(r5)                              
ffc0c7e8:	80 8a 00 04 	lwz     r4,4(r10)                              
      parent->color = RBT_BLACK;                                      
ffc0c7ec:	39 40 00 00 	li      r10,0                                  
ffc0c7f0:	91 49 00 0c 	stw     r10,12(r9)                             
      sibling->child[_RBTree_Opposite_direction(dir)]->color = RBT_BLACK;
ffc0c7f4:	91 44 00 0c 	stw     r10,12(r4)                             
ffc0c7f8:	48 00 00 d8 	b       ffc0c8d0 <_RBTree_Extract_validate_unprotected+0x280>
     * update sibling pointer.                                        
     */                                                               
    if (_RBTree_Is_red(sibling)) {                                    
      parent->color = RBT_RED;                                        
      sibling->color = RBT_BLACK;                                     
      dir = the_node != parent->child[0];                             
ffc0c7fc:	80 a9 00 04 	lwz     r5,4(r9)                               
     * then rotate parent left, making the sibling be the_node's grandparent.
     * Now the_node has a black sibling and red parent. After rotation,
     * update sibling pointer.                                        
     */                                                               
    if (_RBTree_Is_red(sibling)) {                                    
      parent->color = RBT_RED;                                        
ffc0c800:	90 e9 00 0c 	stw     r7,12(r9)                              
      sibling->color = RBT_BLACK;                                     
      dir = the_node != parent->child[0];                             
ffc0c804:	7c 67 2a 78 	xor     r7,r3,r5                               
ffc0c808:	7c e7 00 34 	cntlzw  r7,r7                                  
     * Now the_node has a black sibling and red parent. After rotation,
     * update sibling pointer.                                        
     */                                                               
    if (_RBTree_Is_red(sibling)) {                                    
      parent->color = RBT_RED;                                        
      sibling->color = RBT_BLACK;                                     
ffc0c80c:	90 8a 00 0c 	stw     r4,12(r10)                             
      dir = the_node != parent->child[0];                             
ffc0c810:	54 e7 d9 7e 	rlwinm  r7,r7,27,5,31                          
ffc0c814:	68 e0 00 01 	xori    r0,r7,1                                
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
ffc0c818:	68 0b 00 01 	xori    r11,r0,1                               
    RBTree_Direction dir                                              
    )                                                                 
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
ffc0c81c:	55 6b 10 3a 	rlwinm  r11,r11,2,0,29                         
ffc0c820:	7c a9 5a 14 	add     r5,r9,r11                              
ffc0c824:	80 e5 00 04 	lwz     r7,4(r5)                               
ffc0c828:	2f 87 00 00 	cmpwi   cr7,r7,0                               
ffc0c82c:	41 9e 00 74 	beq-    cr7,ffc0c8a0 <_RBTree_Extract_validate_unprotected+0x250><== NEVER TAKEN
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
ffc0c830:	54 00 10 3a 	rlwinm  r0,r0,2,0,29                           
ffc0c834:	7d 47 02 14 	add     r10,r7,r0                              
ffc0c838:	81 8a 00 04 	lwz     r12,4(r10)                             
ffc0c83c:	91 85 00 04 	stw     r12,4(r5)                              
                                                                      
  if (c->child[dir])                                                  
ffc0c840:	81 4a 00 04 	lwz     r10,4(r10)                             
ffc0c844:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0c848:	41 9e 00 0c 	beq-    cr7,ffc0c854 <_RBTree_Extract_validate_unprotected+0x204><== NEVER TAKEN
    c->child[dir]->parent = the_node;                                 
ffc0c84c:	91 2a 00 00 	stw     r9,0(r10)                              
ffc0c850:	81 09 00 00 	lwz     r8,0(r9)                               
                                                                      
  c->child[dir] = the_node;                                           
ffc0c854:	7d 47 02 14 	add     r10,r7,r0                              
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
                                                                      
  c->parent = the_node->parent;                                       
ffc0c858:	91 07 00 00 	stw     r8,0(r7)                               
ffc0c85c:	7d 69 5a 14 	add     r11,r9,r11                             
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
                                                                      
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
ffc0c860:	91 2a 00 04 	stw     r9,4(r10)                              
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
ffc0c864:	81 48 00 04 	lwz     r10,4(r8)                              
                                                                      
  c->parent = the_node->parent;                                       
  the_node->parent = c;                                               
ffc0c868:	90 e9 00 00 	stw     r7,0(r9)                               
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
ffc0c86c:	7d 2a 52 78 	xor     r10,r9,r10                             
ffc0c870:	7d 4a 00 34 	cntlzw  r10,r10                                
ffc0c874:	55 4a d9 7e 	rlwinm  r10,r10,27,5,31                        
ffc0c878:	69 4a 00 01 	xori    r10,r10,1                              
ffc0c87c:	55 4a 10 3a 	rlwinm  r10,r10,2,0,29                         
ffc0c880:	7d 08 52 14 	add     r8,r8,r10                              
ffc0c884:	90 e8 00 04 	stw     r7,4(r8)                               
ffc0c888:	81 4b 00 04 	lwz     r10,4(r11)                             
ffc0c88c:	4b ff fe 0c 	b       ffc0c698 <_RBTree_Extract_validate_unprotected+0x48>
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Sibling(                    
  const RBTree_Node *the_node                                         
)                                                                     
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
ffc0c890:	39 40 00 00 	li      r10,0                                  
ffc0c894:	4b ff fe 68 	b       ffc0c6fc <_RBTree_Extract_validate_unprotected+0xac>
  if(!(the_node->parent->parent)) return NULL;                        
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
    return the_node->parent->child[RBT_RIGHT];                        
ffc0c898:	81 48 00 08 	lwz     r10,8(r8)                              
ffc0c89c:	4b ff fe 60 	b       ffc0c6fc <_RBTree_Extract_validate_unprotected+0xac>
    RBTree_Direction dir                                              
    )                                                                 
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
ffc0c8a0:	39 40 00 00 	li      r10,0                                  <== NOT EXECUTED
ffc0c8a4:	4b ff fd f4 	b       ffc0c698 <_RBTree_Extract_validate_unprotected+0x48><== NOT EXECUTED
ffc0c8a8:	7c a9 3a 14 	add     r5,r9,r7                               
        sibling->color = RBT_RED;                                     
        sibling->child[dir]->color = RBT_BLACK;                       
        _RBTree_Rotate(sibling, _RBTree_Opposite_direction(dir));     
        sibling = parent->child[_RBTree_Opposite_direction(dir)];     
      }                                                               
      sibling->color = parent->color;                                 
ffc0c8ac:	81 69 00 0c 	lwz     r11,12(r9)                             
ffc0c8b0:	80 a5 00 04 	lwz     r5,4(r5)                               
      parent->color = RBT_BLACK;                                      
ffc0c8b4:	38 80 00 00 	li      r4,0                                   
        sibling->color = RBT_RED;                                     
        sibling->child[dir]->color = RBT_BLACK;                       
        _RBTree_Rotate(sibling, _RBTree_Opposite_direction(dir));     
        sibling = parent->child[_RBTree_Opposite_direction(dir)];     
      }                                                               
      sibling->color = parent->color;                                 
ffc0c8b8:	91 6a 00 0c 	stw     r11,12(r10)                            
ffc0c8bc:	2f 85 00 00 	cmpwi   cr7,r5,0                               
      parent->color = RBT_BLACK;                                      
ffc0c8c0:	90 89 00 0c 	stw     r4,12(r9)                              
      sibling->child[_RBTree_Opposite_direction(dir)]->color = RBT_BLACK;
ffc0c8c4:	90 86 00 0c 	stw     r4,12(r6)                              
ffc0c8c8:	41 be fe 48 	beq-    cr7,ffc0c710 <_RBTree_Extract_validate_unprotected+0xc0><== NEVER TAKEN
ffc0c8cc:	55 08 10 3a 	rlwinm  r8,r8,2,0,29                           
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
ffc0c8d0:	7d 45 42 14 	add     r10,r5,r8                              
ffc0c8d4:	80 ca 00 04 	lwz     r6,4(r10)                              
ffc0c8d8:	7c e9 3a 14 	add     r7,r9,r7                               
ffc0c8dc:	90 c7 00 04 	stw     r6,4(r7)                               
                                                                      
  if (c->child[dir])                                                  
ffc0c8e0:	81 4a 00 04 	lwz     r10,4(r10)                             
ffc0c8e4:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0c8e8:	41 9e 00 08 	beq-    cr7,ffc0c8f0 <_RBTree_Extract_validate_unprotected+0x2a0>
    c->child[dir]->parent = the_node;                                 
ffc0c8ec:	91 2a 00 00 	stw     r9,0(r10)                              
                                                                      
  c->child[dir] = the_node;                                           
ffc0c8f0:	7d 05 42 14 	add     r8,r5,r8                               
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
ffc0c8f4:	80 e9 00 00 	lwz     r7,0(r9)                               
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
                                                                      
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
ffc0c8f8:	91 28 00 04 	stw     r9,4(r8)                               
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
                                                                      
  c->parent = the_node->parent;                                       
ffc0c8fc:	90 e5 00 00 	stw     r7,0(r5)                               
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
ffc0c900:	81 47 00 04 	lwz     r10,4(r7)                              
                                                                      
  c->parent = the_node->parent;                                       
  the_node->parent = c;                                               
ffc0c904:	90 a9 00 00 	stw     r5,0(r9)                               
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
ffc0c908:	7d 2a 52 78 	xor     r10,r9,r10                             
      _RBTree_Rotate(parent, dir);                                    
      break; /* done */                                               
    }                                                                 
  } /* while */                                                       
  if(!the_node->parent->parent) the_node->color = RBT_BLACK;          
ffc0c90c:	81 23 00 00 	lwz     r9,0(r3)                               
ffc0c910:	7d 4a 00 34 	cntlzw  r10,r10                                
ffc0c914:	55 4a d9 7e 	rlwinm  r10,r10,27,5,31                        
ffc0c918:	81 29 00 00 	lwz     r9,0(r9)                               
ffc0c91c:	69 4a 00 01 	xori    r10,r10,1                              
ffc0c920:	55 4a 10 3a 	rlwinm  r10,r10,2,0,29                         
ffc0c924:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0c928:	7c e7 52 14 	add     r7,r7,r10                              
ffc0c92c:	90 a7 00 04 	stw     r5,4(r7)                               
ffc0c930:	4c be 00 20 	bnelr+  cr7                                    
ffc0c934:	4b ff fd ec 	b       ffc0c720 <_RBTree_Extract_validate_unprotected+0xd0><== NOT EXECUTED
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
  if(!(the_node->parent->parent)) return NULL;                        
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
    return the_node->parent->child[RBT_RIGHT];                        
ffc0c938:	81 49 00 08 	lwz     r10,8(r9)                              
ffc0c93c:	4b ff fd 30 	b       ffc0c66c <_RBTree_Extract_validate_unprotected+0x1c>
    /* sibling is black, see if both of its children are also black. */
    if (!_RBTree_Is_red(sibling->child[RBT_RIGHT]) &&                 
        !_RBTree_Is_red(sibling->child[RBT_LEFT])) {                  
        sibling->color = RBT_RED;                                     
        if (_RBTree_Is_red(parent)) {                                 
          parent->color = RBT_BLACK;                                  
ffc0c940:	39 40 00 00 	li      r10,0                                  
ffc0c944:	91 49 00 0c 	stw     r10,12(r9)                             
      sibling->child[_RBTree_Opposite_direction(dir)]->color = RBT_BLACK;
      _RBTree_Rotate(parent, dir);                                    
      break; /* done */                                               
    }                                                                 
  } /* while */                                                       
  if(!the_node->parent->parent) the_node->color = RBT_BLACK;          
ffc0c948:	81 23 00 00 	lwz     r9,0(r3)                               
ffc0c94c:	81 29 00 00 	lwz     r9,0(r9)                               
ffc0c950:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0c954:	4c be 00 20 	bnelr+  cr7                                    
ffc0c958:	4b ff fd c8 	b       ffc0c720 <_RBTree_Extract_validate_unprotected+0xd0><== NOT EXECUTED
                                                                      

ffc0cd00 <_RBTree_Find>: RBTree_Node *_RBTree_Find( RBTree_Control *the_rbtree, RBTree_Node *search_node ) {
ffc0cd00:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc0cd04:	7c 08 02 a6 	mflr    r0                                     
ffc0cd08:	90 01 00 24 	stw     r0,36(r1)                              
ffc0cd0c:	93 c1 00 18 	stw     r30,24(r1)                             
ffc0cd10:	7c 7e 1b 78 	mr      r30,r3                                 
ffc0cd14:	93 61 00 0c 	stw     r27,12(r1)                             
ffc0cd18:	93 81 00 10 	stw     r28,16(r1)                             
ffc0cd1c:	93 a1 00 14 	stw     r29,20(r1)                             
ffc0cd20:	93 e1 00 1c 	stw     r31,28(r1)                             
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0cd24:	7f 60 00 a6 	mfmsr   r27                                    
ffc0cd28:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc0cd2c:	7f 69 48 78 	andc    r9,r27,r9                              
ffc0cd30:	7d 20 01 24 	mtmsr   r9                                     
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Find_unprotected(           
    RBTree_Control *the_rbtree,                                       
    RBTree_Node *the_node                                             
    )                                                                 
{                                                                     
  RBTree_Node* iter_node = the_rbtree->root;                          
ffc0cd34:	83 e3 00 04 	lwz     r31,4(r3)                              
  RBTree_Node* found = NULL;                                          
  int compare_result;                                                 
  while (iter_node) {                                                 
ffc0cd38:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
ffc0cd3c:	41 9e 00 b0 	beq-    cr7,ffc0cdec <_RBTree_Find+0xec>       <== NEVER TAKEN
ffc0cd40:	7c 9d 23 78 	mr      r29,r4                                 
ffc0cd44:	3b 80 00 00 	li      r28,0                                  
    compare_result = the_rbtree->compare_function(the_node, iter_node);
ffc0cd48:	81 3e 00 10 	lwz     r9,16(r30)                             
ffc0cd4c:	7f e4 fb 78 	mr      r4,r31                                 
ffc0cd50:	7f a3 eb 78 	mr      r3,r29                                 
ffc0cd54:	7d 29 03 a6 	mtctr   r9                                     
ffc0cd58:	4e 80 04 21 	bctrl                                          
    if ( _RBTree_Is_equal( compare_result ) ) {                       
ffc0cd5c:	2c 03 00 00 	cmpwi   r3,0                                   
                                                                      
RTEMS_INLINE_ROUTINE bool _RBTree_Is_greater(                         
  int compare_result                                                  
)                                                                     
{                                                                     
  return compare_result > 0;                                          
ffc0cd60:	7c 6a fe 70 	srawi   r10,r3,31                              
ffc0cd64:	7d 23 50 50 	subf    r9,r3,r10                              
        break;                                                        
    }                                                                 
                                                                      
    RBTree_Direction dir =                                            
      (RBTree_Direction) _RBTree_Is_greater( compare_result );        
    iter_node = iter_node->child[dir];                                
ffc0cd68:	55 29 1f 7a 	rlwinm  r9,r9,3,29,29                          
ffc0cd6c:	7d 3f 4a 14 	add     r9,r31,r9                              
  RBTree_Node* iter_node = the_rbtree->root;                          
  RBTree_Node* found = NULL;                                          
  int compare_result;                                                 
  while (iter_node) {                                                 
    compare_result = the_rbtree->compare_function(the_node, iter_node);
    if ( _RBTree_Is_equal( compare_result ) ) {                       
ffc0cd70:	40 82 00 14 	bne-    ffc0cd84 <_RBTree_Find+0x84>           
      found = iter_node;                                              
      if ( the_rbtree->is_unique )                                    
ffc0cd74:	89 5e 00 14 	lbz     r10,20(r30)                            
ffc0cd78:	7f fc fb 78 	mr      r28,r31                                
ffc0cd7c:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0cd80:	40 9e 00 3c 	bne-    cr7,ffc0cdbc <_RBTree_Find+0xbc>       
        break;                                                        
    }                                                                 
                                                                      
    RBTree_Direction dir =                                            
      (RBTree_Direction) _RBTree_Is_greater( compare_result );        
    iter_node = iter_node->child[dir];                                
ffc0cd84:	83 e9 00 04 	lwz     r31,4(r9)                              
    )                                                                 
{                                                                     
  RBTree_Node* iter_node = the_rbtree->root;                          
  RBTree_Node* found = NULL;                                          
  int compare_result;                                                 
  while (iter_node) {                                                 
ffc0cd88:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
ffc0cd8c:	40 9e ff bc 	bne+    cr7,ffc0cd48 <_RBTree_Find+0x48>       
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0cd90:	7f 60 01 24 	mtmsr   r27                                    
  return_node = NULL;                                                 
  _ISR_Disable( level );                                              
      return_node = _RBTree_Find_unprotected( the_rbtree, search_node );
  _ISR_Enable( level );                                               
  return return_node;                                                 
}                                                                     
ffc0cd94:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0cd98:	7f 83 e3 78 	mr      r3,r28                                 
ffc0cd9c:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0cda0:	7c 08 03 a6 	mtlr    r0                                     
ffc0cda4:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0cda8:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0cdac:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0cdb0:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0cdb4:	38 21 00 20 	addi    r1,r1,32                               
ffc0cdb8:	4e 80 00 20 	blr                                            
    compare_result = the_rbtree->compare_function(the_node, iter_node);
    if ( _RBTree_Is_equal( compare_result ) ) {                       
      found = iter_node;                                              
      if ( the_rbtree->is_unique )                                    
ffc0cdbc:	7f fc fb 78 	mr      r28,r31                                
ffc0cdc0:	7f 60 01 24 	mtmsr   r27                                    
ffc0cdc4:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0cdc8:	7f 83 e3 78 	mr      r3,r28                                 
ffc0cdcc:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0cdd0:	7c 08 03 a6 	mtlr    r0                                     
ffc0cdd4:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0cdd8:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0cddc:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0cde0:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0cde4:	38 21 00 20 	addi    r1,r1,32                               
ffc0cde8:	4e 80 00 20 	blr                                            
    RBTree_Control *the_rbtree,                                       
    RBTree_Node *the_node                                             
    )                                                                 
{                                                                     
  RBTree_Node* iter_node = the_rbtree->root;                          
  RBTree_Node* found = NULL;                                          
ffc0cdec:	3b 80 00 00 	li      r28,0                                  <== NOT EXECUTED
ffc0cdf0:	4b ff ff a0 	b       ffc0cd90 <_RBTree_Find+0x90>           <== NOT EXECUTED
                                                                      

ffc0d29c <_RBTree_Initialize>: void *starting_address, size_t number_nodes, size_t node_size, bool is_unique ) {
ffc0d29c:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0d2a0:	7c 08 02 a6 	mflr    r0                                     
ffc0d2a4:	93 a1 00 0c 	stw     r29,12(r1)                             
  size_t      count;                                                  
  RBTree_Node *next;                                                  
                                                                      
  /* TODO: Error message? */                                          
  if (!the_rbtree) return;                                            
ffc0d2a8:	7c 7d 1b 79 	mr.     r29,r3                                 
  void                    *starting_address,                          
  size_t                   number_nodes,                              
  size_t                   node_size,                                 
  bool                     is_unique                                  
)                                                                     
{                                                                     
ffc0d2ac:	90 01 00 1c 	stw     r0,28(r1)                              
ffc0d2b0:	93 81 00 08 	stw     r28,8(r1)                              
ffc0d2b4:	93 c1 00 10 	stw     r30,16(r1)                             
ffc0d2b8:	93 e1 00 14 	stw     r31,20(r1)                             
  size_t      count;                                                  
  RBTree_Node *next;                                                  
                                                                      
  /* TODO: Error message? */                                          
  if (!the_rbtree) return;                                            
ffc0d2bc:	41 82 00 4c 	beq-    ffc0d308 <_RBTree_Initialize+0x6c>     <== NEVER TAKEN
  /* could do sanity checks here */                                   
  _RBTree_Initialize_empty(the_rbtree, compare_function, is_unique);  
                                                                      
  count = number_nodes;                                               
  next  = starting_address;                                           
  while ( count-- ) {                                                 
ffc0d2c0:	2f 86 00 00 	cmpwi   cr7,r6,0                               
{                                                                     
  the_rbtree->permanent_null   = NULL;                                
  the_rbtree->root             = NULL;                                
  the_rbtree->first[0]         = NULL;                                
  the_rbtree->first[1]         = NULL;                                
  the_rbtree->compare_function = compare_function;                    
ffc0d2c4:	90 9d 00 10 	stw     r4,16(r29)                             
    RBTree_Control          *the_rbtree,                              
    RBTree_Compare_function  compare_function,                        
    bool                     is_unique                                
    )                                                                 
{                                                                     
  the_rbtree->permanent_null   = NULL;                                
ffc0d2c8:	39 20 00 00 	li      r9,0                                   
ffc0d2cc:	7c df 33 78 	mr      r31,r6                                 
ffc0d2d0:	91 3d 00 00 	stw     r9,0(r29)                              
  the_rbtree->root             = NULL;                                
ffc0d2d4:	91 3d 00 04 	stw     r9,4(r29)                              
  the_rbtree->first[0]         = NULL;                                
ffc0d2d8:	91 3d 00 08 	stw     r9,8(r29)                              
  the_rbtree->first[1]         = NULL;                                
ffc0d2dc:	91 3d 00 0c 	stw     r9,12(r29)                             
  the_rbtree->compare_function = compare_function;                    
  the_rbtree->is_unique        = is_unique;                           
ffc0d2e0:	99 1d 00 14 	stb     r8,20(r29)                             
ffc0d2e4:	41 9e 00 24 	beq-    cr7,ffc0d308 <_RBTree_Initialize+0x6c> <== NEVER TAKEN
ffc0d2e8:	7c fc 3b 78 	mr      r28,r7                                 
ffc0d2ec:	7c be 2b 78 	mr      r30,r5                                 
    _RBTree_Insert_unprotected(the_rbtree, next);                     
ffc0d2f0:	7f c4 f3 78 	mr      r4,r30                                 
ffc0d2f4:	7f a3 eb 78 	mr      r3,r29                                 
ffc0d2f8:	4b ff fb 55 	bl      ffc0ce4c <_RBTree_Insert_unprotected>  
  /* could do sanity checks here */                                   
  _RBTree_Initialize_empty(the_rbtree, compare_function, is_unique);  
                                                                      
  count = number_nodes;                                               
  next  = starting_address;                                           
  while ( count-- ) {                                                 
ffc0d2fc:	37 ff ff ff 	addic.  r31,r31,-1                             
#include <rtems/system.h>                                             
#include <rtems/score/address.h>                                      
#include <rtems/score/rbtree.h>                                       
#include <rtems/score/isr.h>                                          
                                                                      
void _RBTree_Initialize(                                              
ffc0d300:	7f de e2 14 	add     r30,r30,r28                            
  /* could do sanity checks here */                                   
  _RBTree_Initialize_empty(the_rbtree, compare_function, is_unique);  
                                                                      
  count = number_nodes;                                               
  next  = starting_address;                                           
  while ( count-- ) {                                                 
ffc0d304:	40 82 ff ec 	bne+    ffc0d2f0 <_RBTree_Initialize+0x54>     
    _RBTree_Insert_unprotected(the_rbtree, next);                     
    next           = (RBTree_Node *)                                  
                        _Addresses_Add_offset( (void *) next, node_size );
  }                                                                   
}                                                                     
ffc0d308:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0d30c:	83 81 00 08 	lwz     r28,8(r1)                              
ffc0d310:	7c 08 03 a6 	mtlr    r0                                     
ffc0d314:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0d318:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0d31c:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0d320:	38 21 00 18 	addi    r1,r1,24                               
ffc0d324:	4e 80 00 20 	blr                                            
                                                                      

ffc0cb80 <_RBTree_Insert_unprotected>: */ RBTree_Node *_RBTree_Insert_unprotected( RBTree_Control *the_rbtree, RBTree_Node *the_node ) {
ffc0cb80:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc0cb84:	7c 08 02 a6 	mflr    r0                                     
ffc0cb88:	93 e1 00 1c 	stw     r31,28(r1)                             
  if(!the_node) return (RBTree_Node*)-1;                              
ffc0cb8c:	7c 9f 23 79 	mr.     r31,r4                                 
 */                                                                   
RBTree_Node *_RBTree_Insert_unprotected(                              
    RBTree_Control *the_rbtree,                                       
    RBTree_Node *the_node                                             
    )                                                                 
{                                                                     
ffc0cb90:	90 01 00 24 	stw     r0,36(r1)                              
ffc0cb94:	93 41 00 08 	stw     r26,8(r1)                              
ffc0cb98:	93 61 00 0c 	stw     r27,12(r1)                             
ffc0cb9c:	93 81 00 10 	stw     r28,16(r1)                             
ffc0cba0:	93 a1 00 14 	stw     r29,20(r1)                             
ffc0cba4:	93 c1 00 18 	stw     r30,24(r1)                             
  if(!the_node) return (RBTree_Node*)-1;                              
ffc0cba8:	41 82 02 b8 	beq-    ffc0ce60 <_RBTree_Insert_unprotected+0x2e0>
                                                                      
  RBTree_Node *iter_node = the_rbtree->root;                          
ffc0cbac:	83 a3 00 04 	lwz     r29,4(r3)                              
ffc0cbb0:	7c 7c 1b 78 	mr      r28,r3                                 
  int compare_result;                                                 
                                                                      
  if (!iter_node) { /* special case: first node inserted */           
ffc0cbb4:	2f 9d 00 00 	cmpwi   cr7,r29,0                              
ffc0cbb8:	40 be 00 0c 	bne+    cr7,ffc0cbc4 <_RBTree_Insert_unprotected+0x44>
ffc0cbbc:	48 00 02 dc 	b       ffc0ce98 <_RBTree_Insert_unprotected+0x318>
              (dir && _RBTree_Is_greater(compare_result)) ) {         
          the_rbtree->first[dir] = the_node;                          
        }                                                             
        break;                                                        
      } else {                                                        
        iter_node = iter_node->child[dir];                            
ffc0cbc0:	7f dd f3 78 	mr      r29,r30                                
    the_node->parent = (RBTree_Node *) the_rbtree;                    
    the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;    
  } else {                                                            
    /* typical binary search tree insert, descend tree to leaf and insert */
    while (iter_node) {                                               
      compare_result = the_rbtree->compare_function(the_node, iter_node);
ffc0cbc4:	81 3c 00 10 	lwz     r9,16(r28)                             
ffc0cbc8:	7f a4 eb 78 	mr      r4,r29                                 
ffc0cbcc:	7f e3 fb 78 	mr      r3,r31                                 
ffc0cbd0:	7d 29 03 a6 	mtctr   r9                                     
ffc0cbd4:	4e 80 04 21 	bctrl                                          
      if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
ffc0cbd8:	89 5c 00 14 	lbz     r10,20(r28)                            
        return iter_node;                                             
      RBTree_Direction dir = !_RBTree_Is_lesser( compare_result );    
ffc0cbdc:	7c 7a 18 f8 	not     r26,r3                                 
    the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;    
  } else {                                                            
    /* typical binary search tree insert, descend tree to leaf and insert */
    while (iter_node) {                                               
      compare_result = the_rbtree->compare_function(the_node, iter_node);
      if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
ffc0cbe0:	2f 0a 00 00 	cmpwi   cr6,r10,0                              
        return iter_node;                                             
      RBTree_Direction dir = !_RBTree_Is_lesser( compare_result );    
ffc0cbe4:	57 5a 0f fe 	rlwinm  r26,r26,1,31,31                        
      if (!iter_node->child[dir]) {                                   
ffc0cbe8:	57 5b 10 3a 	rlwinm  r27,r26,2,0,29                         
ffc0cbec:	7d 3d da 14 	add     r9,r29,r27                             
    the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;    
  } else {                                                            
    /* typical binary search tree insert, descend tree to leaf and insert */
    while (iter_node) {                                               
      compare_result = the_rbtree->compare_function(the_node, iter_node);
      if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
ffc0cbf0:	2f 83 00 00 	cmpwi   cr7,r3,0                               
        return iter_node;                                             
      RBTree_Direction dir = !_RBTree_Is_lesser( compare_result );    
      if (!iter_node->child[dir]) {                                   
ffc0cbf4:	39 09 00 04 	addi    r8,r9,4                                
    the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;    
  } else {                                                            
    /* typical binary search tree insert, descend tree to leaf and insert */
    while (iter_node) {                                               
      compare_result = the_rbtree->compare_function(the_node, iter_node);
      if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
ffc0cbf8:	41 9a 00 08 	beq-    cr6,ffc0cc00 <_RBTree_Insert_unprotected+0x80>
ffc0cbfc:	41 9e 02 94 	beq-    cr7,ffc0ce90 <_RBTree_Insert_unprotected+0x310>
        return iter_node;                                             
      RBTree_Direction dir = !_RBTree_Is_lesser( compare_result );    
      if (!iter_node->child[dir]) {                                   
ffc0cc00:	83 c9 00 04 	lwz     r30,4(r9)                              
ffc0cc04:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
ffc0cc08:	40 9e ff b8 	bne+    cr7,ffc0cbc0 <_RBTree_Insert_unprotected+0x40>
        the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;
        the_node->color = RBT_RED;                                    
ffc0cc0c:	39 20 00 01 	li      r9,1                                   
      compare_result = the_rbtree->compare_function(the_node, iter_node);
      if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
        return iter_node;                                             
      RBTree_Direction dir = !_RBTree_Is_lesser( compare_result );    
      if (!iter_node->child[dir]) {                                   
        the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;
ffc0cc10:	93 df 00 08 	stw     r30,8(r31)                             
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_First(                      
  const RBTree_Control *the_rbtree,                                   
  RBTree_Direction dir                                                
)                                                                     
{                                                                     
  return the_rbtree->first[dir];                                      
ffc0cc14:	7d 5c da 14 	add     r10,r28,r27                            
        the_node->color = RBT_RED;                                    
ffc0cc18:	91 3f 00 0c 	stw     r9,12(r31)                             
        iter_node->child[dir] = the_node;                             
        the_node->parent = iter_node;                                 
        /* update min/max */                                          
        compare_result = the_rbtree->compare_function(                
ffc0cc1c:	7f e3 fb 78 	mr      r3,r31                                 
ffc0cc20:	81 3c 00 10 	lwz     r9,16(r28)                             
      compare_result = the_rbtree->compare_function(the_node, iter_node);
      if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
        return iter_node;                                             
      RBTree_Direction dir = !_RBTree_Is_lesser( compare_result );    
      if (!iter_node->child[dir]) {                                   
        the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;
ffc0cc24:	93 df 00 04 	stw     r30,4(r31)                             
        the_node->color = RBT_RED;                                    
        iter_node->child[dir] = the_node;                             
        the_node->parent = iter_node;                                 
        /* update min/max */                                          
        compare_result = the_rbtree->compare_function(                
ffc0cc28:	7d 29 03 a6 	mtctr   r9                                     
        return iter_node;                                             
      RBTree_Direction dir = !_RBTree_Is_lesser( compare_result );    
      if (!iter_node->child[dir]) {                                   
        the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;
        the_node->color = RBT_RED;                                    
        iter_node->child[dir] = the_node;                             
ffc0cc2c:	93 e8 00 00 	stw     r31,0(r8)                              
        the_node->parent = iter_node;                                 
ffc0cc30:	93 bf 00 00 	stw     r29,0(r31)                             
        /* update min/max */                                          
        compare_result = the_rbtree->compare_function(                
ffc0cc34:	80 8a 00 08 	lwz     r4,8(r10)                              
ffc0cc38:	4e 80 04 21 	bctrl                                          
            the_node,                                                 
            _RBTree_First(the_rbtree, dir)                            
        );                                                            
        if ( (!dir && _RBTree_Is_lesser(compare_result)) ||           
ffc0cc3c:	2f 9a 00 00 	cmpwi   cr7,r26,0                              
ffc0cc40:	40 9e 00 60 	bne-    cr7,ffc0cca0 <_RBTree_Insert_unprotected+0x120>
ffc0cc44:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0cc48:	41 9c 00 60 	blt-    cr7,ffc0cca8 <_RBTree_Insert_unprotected+0x128>
      /* ensure node is on the same branch direction as parent */     
      if (dir != pdir) {                                              
        _RBTree_Rotate(the_node->parent, pdir);                       
        the_node = the_node->child[pdir];                             
      }                                                               
      the_node->parent->color = RBT_BLACK;                            
ffc0cc4c:	38 80 00 00 	li      r4,0                                   
      g->color = RBT_RED;                                             
ffc0cc50:	38 60 00 01 	li      r3,1                                   
                                                                      
  _ISR_Disable( level );                                              
  return_node = _RBTree_Insert_unprotected( tree, node );             
  _ISR_Enable( level );                                               
  return return_node;                                                 
}                                                                     
ffc0cc54:	81 3f 00 00 	lwz     r9,0(r31)                              
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Parent(                     
  const RBTree_Node *the_node                                         
)                                                                     
{                                                                     
  if (!the_node->parent->parent) return NULL;                         
ffc0cc58:	81 49 00 00 	lwz     r10,0(r9)                              
ffc0cc5c:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0cc60:	7d 46 53 78 	mr      r6,r10                                 
ffc0cc64:	41 9e 01 b0 	beq-    cr7,ffc0ce14 <_RBTree_Insert_unprotected+0x294>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
ffc0cc68:	81 09 00 0c 	lwz     r8,12(r9)                              
ffc0cc6c:	2f 88 00 01 	cmpwi   cr7,r8,1                               
ffc0cc70:	41 9e 00 44 	beq-    cr7,ffc0ccb4 <_RBTree_Insert_unprotected+0x134>
                                                                      
    /* verify red-black properties */                                 
    _RBTree_Validate_insert_unprotected(the_node);                    
  }                                                                   
  return (RBTree_Node*)0;                                             
}                                                                     
ffc0cc74:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0cc78:	7f c3 f3 78 	mr      r3,r30                                 
ffc0cc7c:	83 41 00 08 	lwz     r26,8(r1)                              
ffc0cc80:	7c 08 03 a6 	mtlr    r0                                     
ffc0cc84:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0cc88:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0cc8c:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0cc90:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0cc94:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0cc98:	38 21 00 20 	addi    r1,r1,32                               
ffc0cc9c:	4e 80 00 20 	blr                                            
        compare_result = the_rbtree->compare_function(                
            the_node,                                                 
            _RBTree_First(the_rbtree, dir)                            
        );                                                            
        if ( (!dir && _RBTree_Is_lesser(compare_result)) ||           
              (dir && _RBTree_Is_greater(compare_result)) ) {         
ffc0cca0:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0cca4:	40 bd ff a8 	ble-    cr7,ffc0cc4c <_RBTree_Insert_unprotected+0xcc>
          the_rbtree->first[dir] = the_node;                          
ffc0cca8:	7f 9c da 14 	add     r28,r28,r27                            
ffc0ccac:	93 fc 00 08 	stw     r31,8(r28)                             
ffc0ccb0:	4b ff ff 9c 	b       ffc0cc4c <_RBTree_Insert_unprotected+0xcc>
)                                                                     
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
  if(!(the_node->parent->parent)) return NULL;                        
  if(!(the_node->parent->parent->parent)) return NULL;                
ffc0ccb4:	81 0a 00 00 	lwz     r8,0(r10)                              
ffc0ccb8:	80 ea 00 04 	lwz     r7,4(r10)                              
ffc0ccbc:	2f 88 00 00 	cmpwi   cr7,r8,0                               
ffc0ccc0:	41 9e 00 24 	beq-    cr7,ffc0cce4 <_RBTree_Insert_unprotected+0x164><== NEVER TAKEN
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
  if(!(the_node->parent->parent)) return NULL;                        
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
ffc0ccc4:	7f 89 38 00 	cmpw    cr7,r9,r7                              
ffc0ccc8:	7c e8 3b 78 	mr      r8,r7                                  
ffc0cccc:	41 9e 01 8c 	beq-    cr7,ffc0ce58 <_RBTree_Insert_unprotected+0x2d8>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
ffc0ccd0:	2f 88 00 00 	cmpwi   cr7,r8,0                               
ffc0ccd4:	41 9e 00 10 	beq-    cr7,ffc0cce4 <_RBTree_Insert_unprotected+0x164>
ffc0ccd8:	80 a8 00 0c 	lwz     r5,12(r8)                              
ffc0ccdc:	2f 85 00 01 	cmpwi   cr7,r5,1                               
ffc0cce0:	41 9e 01 64 	beq-    cr7,ffc0ce44 <_RBTree_Insert_unprotected+0x2c4>
      the_node->parent->color = RBT_BLACK;                            
      u->color = RBT_BLACK;                                           
      g->color = RBT_RED;                                             
      the_node = g;                                                   
    } else { /* if uncle is black */                                  
      RBTree_Direction dir = the_node != the_node->parent->child[0];  
ffc0cce4:	81 09 00 04 	lwz     r8,4(r9)                               
      RBTree_Direction pdir = the_node->parent != g->child[0];        
ffc0cce8:	7d 27 3a 78 	xor     r7,r9,r7                               
ffc0ccec:	7c e7 00 34 	cntlzw  r7,r7                                  
      the_node->parent->color = RBT_BLACK;                            
      u->color = RBT_BLACK;                                           
      g->color = RBT_RED;                                             
      the_node = g;                                                   
    } else { /* if uncle is black */                                  
      RBTree_Direction dir = the_node != the_node->parent->child[0];  
ffc0ccf0:	7f e8 42 78 	xor     r8,r31,r8                              
ffc0ccf4:	7d 08 00 34 	cntlzw  r8,r8                                  
      RBTree_Direction pdir = the_node->parent != g->child[0];        
ffc0ccf8:	54 e7 d9 7e 	rlwinm  r7,r7,27,5,31                          
      the_node->parent->color = RBT_BLACK;                            
      u->color = RBT_BLACK;                                           
      g->color = RBT_RED;                                             
      the_node = g;                                                   
    } else { /* if uncle is black */                                  
      RBTree_Direction dir = the_node != the_node->parent->child[0];  
ffc0ccfc:	55 08 d9 7e 	rlwinm  r8,r8,27,5,31                          
      RBTree_Direction pdir = the_node->parent != g->child[0];        
ffc0cd00:	68 e7 00 01 	xori    r7,r7,1                                
      the_node->parent->color = RBT_BLACK;                            
      u->color = RBT_BLACK;                                           
      g->color = RBT_RED;                                             
      the_node = g;                                                   
    } else { /* if uncle is black */                                  
      RBTree_Direction dir = the_node != the_node->parent->child[0];  
ffc0cd04:	69 08 00 01 	xori    r8,r8,1                                
      RBTree_Direction pdir = the_node->parent != g->child[0];        
                                                                      
      /* ensure node is on the same branch direction as parent */     
      if (dir != pdir) {                                              
ffc0cd08:	7f 88 38 00 	cmpw    cr7,r8,r7                              
ffc0cd0c:	41 9e 00 7c 	beq-    cr7,ffc0cd88 <_RBTree_Insert_unprotected+0x208>
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
ffc0cd10:	68 e5 00 01 	xori    r5,r7,1                                
    RBTree_Direction dir                                              
    )                                                                 
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
ffc0cd14:	54 a5 10 3a 	rlwinm  r5,r5,2,0,29                           
ffc0cd18:	7c a9 2a 14 	add     r5,r9,r5                               
ffc0cd1c:	81 05 00 04 	lwz     r8,4(r5)                               
ffc0cd20:	54 eb 10 3a 	rlwinm  r11,r7,2,0,29                          
ffc0cd24:	2f 88 00 00 	cmpwi   cr7,r8,0                               
ffc0cd28:	41 9e 00 54 	beq-    cr7,ffc0cd7c <_RBTree_Insert_unprotected+0x1fc><== NEVER TAKEN
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
ffc0cd2c:	7f a8 5a 14 	add     r29,r8,r11                             
ffc0cd30:	80 1d 00 04 	lwz     r0,4(r29)                              
ffc0cd34:	90 05 00 04 	stw     r0,4(r5)                               
                                                                      
  if (c->child[dir])                                                  
ffc0cd38:	80 bd 00 04 	lwz     r5,4(r29)                              
ffc0cd3c:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc0cd40:	41 9e 00 0c 	beq-    cr7,ffc0cd4c <_RBTree_Insert_unprotected+0x1cc>
    c->child[dir]->parent = the_node;                                 
ffc0cd44:	91 25 00 00 	stw     r9,0(r5)                               
ffc0cd48:	81 49 00 00 	lwz     r10,0(r9)                              
                                                                      
  c->child[dir] = the_node;                                           
ffc0cd4c:	7c a8 5a 14 	add     r5,r8,r11                              
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
                                                                      
  c->parent = the_node->parent;                                       
ffc0cd50:	91 48 00 00 	stw     r10,0(r8)                              
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
                                                                      
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
ffc0cd54:	91 25 00 04 	stw     r9,4(r5)                               
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
ffc0cd58:	80 aa 00 04 	lwz     r5,4(r10)                              
                                                                      
  c->parent = the_node->parent;                                       
  the_node->parent = c;                                               
ffc0cd5c:	91 09 00 00 	stw     r8,0(r9)                               
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
ffc0cd60:	7d 25 2a 78 	xor     r5,r9,r5                               
ffc0cd64:	7c a5 00 34 	cntlzw  r5,r5                                  
ffc0cd68:	54 a5 d9 7e 	rlwinm  r5,r5,27,5,31                          
ffc0cd6c:	68 a5 00 01 	xori    r5,r5,1                                
ffc0cd70:	54 a5 10 3a 	rlwinm  r5,r5,2,0,29                           
ffc0cd74:	7d 4a 2a 14 	add     r10,r10,r5                             
ffc0cd78:	91 0a 00 04 	stw     r8,4(r10)                              
        _RBTree_Rotate(the_node->parent, pdir);                       
        the_node = the_node->child[pdir];                             
ffc0cd7c:	7f ff 5a 14 	add     r31,r31,r11                            
ffc0cd80:	83 ff 00 04 	lwz     r31,4(r31)                             
ffc0cd84:	81 3f 00 00 	lwz     r9,0(r31)                              
      }                                                               
      the_node->parent->color = RBT_BLACK;                            
      g->color = RBT_RED;                                             
                                                                      
      /* now rotate grandparent in the other branch direction (toward uncle) */
      _RBTree_Rotate(g, (1-pdir));                                    
ffc0cd88:	20 e7 00 01 	subfic  r7,r7,1                                
      /* ensure node is on the same branch direction as parent */     
      if (dir != pdir) {                                              
        _RBTree_Rotate(the_node->parent, pdir);                       
        the_node = the_node->child[pdir];                             
      }                                                               
      the_node->parent->color = RBT_BLACK;                            
ffc0cd8c:	90 89 00 0c 	stw     r4,12(r9)                              
ffc0cd90:	68 e8 00 01 	xori    r8,r7,1                                
    RBTree_Direction dir                                              
    )                                                                 
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
ffc0cd94:	55 08 10 3a 	rlwinm  r8,r8,2,0,29                           
      g->color = RBT_RED;                                             
ffc0cd98:	90 66 00 0c 	stw     r3,12(r6)                              
ffc0cd9c:	7d 06 42 14 	add     r8,r6,r8                               
ffc0cda0:	81 48 00 04 	lwz     r10,4(r8)                              
ffc0cda4:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0cda8:	41 be fe ac 	beq-    cr7,ffc0cc54 <_RBTree_Insert_unprotected+0xd4><== NEVER TAKEN
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
ffc0cdac:	54 e7 10 3a 	rlwinm  r7,r7,2,0,29                           
ffc0cdb0:	7d 2a 3a 14 	add     r9,r10,r7                              
ffc0cdb4:	80 a9 00 04 	lwz     r5,4(r9)                               
ffc0cdb8:	90 a8 00 04 	stw     r5,4(r8)                               
                                                                      
  if (c->child[dir])                                                  
ffc0cdbc:	81 29 00 04 	lwz     r9,4(r9)                               
ffc0cdc0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0cdc4:	41 9e 00 08 	beq-    cr7,ffc0cdcc <_RBTree_Insert_unprotected+0x24c>
    c->child[dir]->parent = the_node;                                 
ffc0cdc8:	90 c9 00 00 	stw     r6,0(r9)                               
                                                                      
  c->child[dir] = the_node;                                           
ffc0cdcc:	7c ea 3a 14 	add     r7,r10,r7                              
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
ffc0cdd0:	81 06 00 00 	lwz     r8,0(r6)                               
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
                                                                      
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
ffc0cdd4:	90 c7 00 04 	stw     r6,4(r7)                               
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
ffc0cdd8:	81 28 00 04 	lwz     r9,4(r8)                               
                                                                      
  c->parent = the_node->parent;                                       
ffc0cddc:	91 0a 00 00 	stw     r8,0(r10)                              
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
ffc0cde0:	7c c9 4a 78 	xor     r9,r6,r9                               
ffc0cde4:	7d 29 00 34 	cntlzw  r9,r9                                  
                                                                      
  c->parent = the_node->parent;                                       
  the_node->parent = c;                                               
ffc0cde8:	91 46 00 00 	stw     r10,0(r6)                              
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
ffc0cdec:	55 29 d9 7e 	rlwinm  r9,r9,27,5,31                          
ffc0cdf0:	69 29 00 01 	xori    r9,r9,1                                
ffc0cdf4:	55 29 10 3a 	rlwinm  r9,r9,2,0,29                           
ffc0cdf8:	7d 08 4a 14 	add     r8,r8,r9                               
ffc0cdfc:	91 48 00 04 	stw     r10,4(r8)                              
                                                                      
  _ISR_Disable( level );                                              
  return_node = _RBTree_Insert_unprotected( tree, node );             
  _ISR_Enable( level );                                               
  return return_node;                                                 
}                                                                     
ffc0ce00:	81 3f 00 00 	lwz     r9,0(r31)                              
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Parent(                     
  const RBTree_Node *the_node                                         
)                                                                     
{                                                                     
  if (!the_node->parent->parent) return NULL;                         
ffc0ce04:	81 49 00 00 	lwz     r10,0(r9)                              
ffc0ce08:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0ce0c:	7d 46 53 78 	mr      r6,r10                                 
ffc0ce10:	40 9e fe 58 	bne+    cr7,ffc0cc68 <_RBTree_Insert_unprotected+0xe8><== ALWAYS TAKEN
                                                                      
    /* verify red-black properties */                                 
    _RBTree_Validate_insert_unprotected(the_node);                    
  }                                                                   
  return (RBTree_Node*)0;                                             
}                                                                     
ffc0ce14:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0ce18:	7f c3 f3 78 	mr      r3,r30                                 
                                                                      
      /* now rotate grandparent in the other branch direction (toward uncle) */
      _RBTree_Rotate(g, (1-pdir));                                    
    }                                                                 
  }                                                                   
  if(!the_node->parent->parent) the_node->color = RBT_BLACK;          
ffc0ce1c:	91 5f 00 0c 	stw     r10,12(r31)                            
                                                                      
    /* verify red-black properties */                                 
    _RBTree_Validate_insert_unprotected(the_node);                    
  }                                                                   
  return (RBTree_Node*)0;                                             
}                                                                     
ffc0ce20:	7c 08 03 a6 	mtlr    r0                                     
ffc0ce24:	83 41 00 08 	lwz     r26,8(r1)                              
ffc0ce28:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0ce2c:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0ce30:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0ce34:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0ce38:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0ce3c:	38 21 00 20 	addi    r1,r1,32                               
ffc0ce40:	4e 80 00 20 	blr                                            
    u = _RBTree_Parent_sibling(the_node);                             
    g = the_node->parent->parent;                                     
                                                                      
    /* if uncle is red, repaint uncle/parent black and grandparent red */
    if(_RBTree_Is_red(u)) {                                           
      the_node->parent->color = RBT_BLACK;                            
ffc0ce44:	90 89 00 0c 	stw     r4,12(r9)                              
      u->color = RBT_BLACK;                                           
      g->color = RBT_RED;                                             
ffc0ce48:	7d 5f 53 78 	mr      r31,r10                                
    g = the_node->parent->parent;                                     
                                                                      
    /* if uncle is red, repaint uncle/parent black and grandparent red */
    if(_RBTree_Is_red(u)) {                                           
      the_node->parent->color = RBT_BLACK;                            
      u->color = RBT_BLACK;                                           
ffc0ce4c:	90 88 00 0c 	stw     r4,12(r8)                              
      g->color = RBT_RED;                                             
ffc0ce50:	90 aa 00 0c 	stw     r5,12(r10)                             
ffc0ce54:	4b ff fe 00 	b       ffc0cc54 <_RBTree_Insert_unprotected+0xd4>
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
  if(!(the_node->parent->parent)) return NULL;                        
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
    return the_node->parent->child[RBT_RIGHT];                        
ffc0ce58:	81 0a 00 08 	lwz     r8,8(r10)                              
ffc0ce5c:	4b ff fe 74 	b       ffc0ccd0 <_RBTree_Insert_unprotected+0x150>
                                                                      
    /* verify red-black properties */                                 
    _RBTree_Validate_insert_unprotected(the_node);                    
  }                                                                   
  return (RBTree_Node*)0;                                             
}                                                                     
ffc0ce60:	80 01 00 24 	lwz     r0,36(r1)                              
RBTree_Node *_RBTree_Insert_unprotected(                              
    RBTree_Control *the_rbtree,                                       
    RBTree_Node *the_node                                             
    )                                                                 
{                                                                     
  if(!the_node) return (RBTree_Node*)-1;                              
ffc0ce64:	3b c0 ff ff 	li      r30,-1                                 
                                                                      
    /* verify red-black properties */                                 
    _RBTree_Validate_insert_unprotected(the_node);                    
  }                                                                   
  return (RBTree_Node*)0;                                             
}                                                                     
ffc0ce68:	7f c3 f3 78 	mr      r3,r30                                 
ffc0ce6c:	83 41 00 08 	lwz     r26,8(r1)                              
ffc0ce70:	7c 08 03 a6 	mtlr    r0                                     
ffc0ce74:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0ce78:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0ce7c:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0ce80:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0ce84:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0ce88:	38 21 00 20 	addi    r1,r1,32                               
ffc0ce8c:	4e 80 00 20 	blr                                            
    the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;    
  } else {                                                            
    /* typical binary search tree insert, descend tree to leaf and insert */
    while (iter_node) {                                               
      compare_result = the_rbtree->compare_function(the_node, iter_node);
      if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
ffc0ce90:	7f be eb 78 	mr      r30,r29                                
ffc0ce94:	4b ff fd e0 	b       ffc0cc74 <_RBTree_Insert_unprotected+0xf4>
                                                                      
  RBTree_Node *iter_node = the_rbtree->root;                          
  int compare_result;                                                 
                                                                      
  if (!iter_node) { /* special case: first node inserted */           
    the_node->color = RBT_BLACK;                                      
ffc0ce98:	93 bf 00 0c 	stw     r29,12(r31)                            
    } /* while(iter_node) */                                          
                                                                      
    /* verify red-black properties */                                 
    _RBTree_Validate_insert_unprotected(the_node);                    
  }                                                                   
  return (RBTree_Node*)0;                                             
ffc0ce9c:	3b c0 00 00 	li      r30,0                                  
  RBTree_Node *iter_node = the_rbtree->root;                          
  int compare_result;                                                 
                                                                      
  if (!iter_node) { /* special case: first node inserted */           
    the_node->color = RBT_BLACK;                                      
    the_rbtree->root = the_node;                                      
ffc0cea0:	93 e3 00 04 	stw     r31,4(r3)                              
    the_rbtree->first[0] = the_rbtree->first[1] = the_node;           
ffc0cea4:	93 e3 00 0c 	stw     r31,12(r3)                             
ffc0cea8:	93 e3 00 08 	stw     r31,8(r3)                              
    the_node->parent = (RBTree_Node *) the_rbtree;                    
ffc0ceac:	90 7f 00 00 	stw     r3,0(r31)                              
    the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;    
ffc0ceb0:	93 bf 00 08 	stw     r29,8(r31)                             
ffc0ceb4:	93 bf 00 04 	stw     r29,4(r31)                             
ffc0ceb8:	4b ff fd bc 	b       ffc0cc74 <_RBTree_Insert_unprotected+0xf4>
                                                                      

ffc0cef8 <_RBTree_Iterate_unprotected>: const RBTree_Control *rbtree, RBTree_Direction dir, RBTree_Visitor visitor, void *visitor_arg ) {
ffc0cef8:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc0cefc:	7c 08 02 a6 	mflr    r0                                     
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
ffc0cf00:	7c 89 00 34 	cntlzw  r9,r4                                  
ffc0cf04:	55 29 d9 7e 	rlwinm  r9,r9,27,5,31                          
ffc0cf08:	90 01 00 24 	stw     r0,36(r1)                              
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_First(                      
  const RBTree_Control *the_rbtree,                                   
  RBTree_Direction dir                                                
)                                                                     
{                                                                     
  return the_rbtree->first[dir];                                      
ffc0cf0c:	55 29 10 3a 	rlwinm  r9,r9,2,0,29                           
ffc0cf10:	7c 63 4a 14 	add     r3,r3,r9                               
ffc0cf14:	93 e1 00 1c 	stw     r31,28(r1)                             
ffc0cf18:	83 e3 00 08 	lwz     r31,8(r3)                              
ffc0cf1c:	93 a1 00 14 	stw     r29,20(r1)                             
  RBTree_Direction opp_dir = _RBTree_Opposite_direction( dir );       
  const RBTree_Node *current = _RBTree_First( rbtree, opp_dir );      
  bool stop = false;                                                  
                                                                      
  while ( !stop && current != NULL ) {                                
ffc0cf20:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
  const RBTree_Control *rbtree,                                       
  RBTree_Direction dir,                                               
  RBTree_Visitor visitor,                                             
  void *visitor_arg                                                   
)                                                                     
{                                                                     
ffc0cf24:	93 61 00 0c 	stw     r27,12(r1)                             
ffc0cf28:	7c bb 2b 78 	mr      r27,r5                                 
ffc0cf2c:	93 81 00 10 	stw     r28,16(r1)                             
ffc0cf30:	7c dc 33 78 	mr      r28,r6                                 
ffc0cf34:	93 c1 00 18 	stw     r30,24(r1)                             
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
ffc0cf38:	7c 9e 23 78 	mr      r30,r4                                 
  RBTree_Direction opp_dir = _RBTree_Opposite_direction( dir );       
  const RBTree_Node *current = _RBTree_First( rbtree, opp_dir );      
  bool stop = false;                                                  
                                                                      
  while ( !stop && current != NULL ) {                                
ffc0cf3c:	41 9e 00 38 	beq-    cr7,ffc0cf74 <_RBTree_Iterate_unprotected+0x7c>
    stop = (*visitor)( current, dir, visitor_arg );                   
ffc0cf40:	7f e3 fb 78 	mr      r3,r31                                 
ffc0cf44:	7f 69 03 a6 	mtctr   r27                                    
ffc0cf48:	7f 85 e3 78 	mr      r5,r28                                 
ffc0cf4c:	7f c4 f3 78 	mr      r4,r30                                 
ffc0cf50:	4e 80 04 21 	bctrl                                          
                                                                      
    current = _RBTree_Next_unprotected( current, dir );               
ffc0cf54:	7f c4 f3 78 	mr      r4,r30                                 
  RBTree_Direction opp_dir = _RBTree_Opposite_direction( dir );       
  const RBTree_Node *current = _RBTree_First( rbtree, opp_dir );      
  bool stop = false;                                                  
                                                                      
  while ( !stop && current != NULL ) {                                
    stop = (*visitor)( current, dir, visitor_arg );                   
ffc0cf58:	7c 7d 1b 78 	mr      r29,r3                                 
                                                                      
    current = _RBTree_Next_unprotected( current, dir );               
ffc0cf5c:	7f e3 fb 78 	mr      r3,r31                                 
ffc0cf60:	48 00 00 39 	bl      ffc0cf98 <_RBTree_Next_unprotected>    
{                                                                     
  RBTree_Direction opp_dir = _RBTree_Opposite_direction( dir );       
  const RBTree_Node *current = _RBTree_First( rbtree, opp_dir );      
  bool stop = false;                                                  
                                                                      
  while ( !stop && current != NULL ) {                                
ffc0cf64:	2f 1d 00 00 	cmpwi   cr6,r29,0                              
    stop = (*visitor)( current, dir, visitor_arg );                   
                                                                      
    current = _RBTree_Next_unprotected( current, dir );               
ffc0cf68:	7c 7f 1b 78 	mr      r31,r3                                 
{                                                                     
  RBTree_Direction opp_dir = _RBTree_Opposite_direction( dir );       
  const RBTree_Node *current = _RBTree_First( rbtree, opp_dir );      
  bool stop = false;                                                  
                                                                      
  while ( !stop && current != NULL ) {                                
ffc0cf6c:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0cf70:	41 9a ff cc 	beq+    cr6,ffc0cf3c <_RBTree_Iterate_unprotected+0x44><== ALWAYS TAKEN
    stop = (*visitor)( current, dir, visitor_arg );                   
                                                                      
    current = _RBTree_Next_unprotected( current, dir );               
  }                                                                   
}                                                                     
ffc0cf74:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0cf78:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0cf7c:	7c 08 03 a6 	mtlr    r0                                     
ffc0cf80:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0cf84:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0cf88:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0cf8c:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0cf90:	38 21 00 20 	addi    r1,r1,32                               
ffc0cf94:	4e 80 00 20 	blr                                            
                                                                      

ffc0ae30 <_RTEMS_signal_Post_switch_hook>: #include <rtems/score/thread.h> #include <rtems/score/apiext.h> #include <rtems/rtems/tasks.h> static void _RTEMS_signal_Post_switch_hook( Thread_Control *executing ) {
ffc0ae30:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc0ae34:	7c 08 02 a6 	mflr    r0                                     
ffc0ae38:	90 01 00 24 	stw     r0,36(r1)                              
ffc0ae3c:	93 e1 00 1c 	stw     r31,28(r1)                             
  RTEMS_API_Control *api;                                             
  ASR_Information   *asr;                                             
  rtems_signal_set   signal_set;                                      
  Modes_Control      prev_mode;                                       
                                                                      
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
ffc0ae40:	83 e3 01 4c 	lwz     r31,332(r3)                            
#include <rtems/score/thread.h>                                       
#include <rtems/score/apiext.h>                                       
#include <rtems/rtems/tasks.h>                                        
                                                                      
static void _RTEMS_signal_Post_switch_hook( Thread_Control *executing )
{                                                                     
ffc0ae44:	93 c1 00 18 	stw     r30,24(r1)                             
  ASR_Information   *asr;                                             
  rtems_signal_set   signal_set;                                      
  Modes_Control      prev_mode;                                       
                                                                      
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
  if ( !api )                                                         
ffc0ae48:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
ffc0ae4c:	41 9e 00 2c 	beq-    cr7,ffc0ae78 <_RTEMS_signal_Post_switch_hook+0x48><== NEVER TAKEN
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0ae50:	7d 20 00 a6 	mfmsr   r9                                     
ffc0ae54:	7d 50 42 a6 	mfsprg  r10,0                                  
ffc0ae58:	7d 2a 50 78 	andc    r10,r9,r10                             
ffc0ae5c:	7d 40 01 24 	mtmsr   r10                                    
                                                                      
  asr = &api->Signal;                                                 
                                                                      
  _ISR_Disable( level );                                              
    signal_set = asr->signals_posted;                                 
    asr->signals_posted = 0;                                          
ffc0ae60:	39 40 00 00 	li      r10,0                                  
   */                                                                 
                                                                      
  asr = &api->Signal;                                                 
                                                                      
  _ISR_Disable( level );                                              
    signal_set = asr->signals_posted;                                 
ffc0ae64:	83 df 00 14 	lwz     r30,20(r31)                            
    asr->signals_posted = 0;                                          
ffc0ae68:	91 5f 00 14 	stw     r10,20(r31)                            
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0ae6c:	7d 20 01 24 	mtmsr   r9                                     
  _ISR_Enable( level );                                               
                                                                      
                                                                      
  if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */ 
ffc0ae70:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
ffc0ae74:	40 9e 00 1c 	bne-    cr7,ffc0ae90 <_RTEMS_signal_Post_switch_hook+0x60>
  (*asr->handler)( signal_set );                                      
                                                                      
  asr->nest_level -= 1;                                               
  rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );     
                                                                      
}                                                                     
ffc0ae78:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0ae7c:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0ae80:	7c 08 03 a6 	mtlr    r0                                     
ffc0ae84:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0ae88:	38 21 00 20 	addi    r1,r1,32                               
ffc0ae8c:	4e 80 00 20 	blr                                            
                                                                      
                                                                      
  if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */ 
    return;                                                           
                                                                      
  asr->nest_level += 1;                                               
ffc0ae90:	81 3f 00 1c 	lwz     r9,28(r31)                             
  rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode ); 
ffc0ae94:	38 80 00 00 	li      r4,0                                   
ffc0ae98:	80 7f 00 10 	lwz     r3,16(r31)                             
ffc0ae9c:	38 a1 00 08 	addi    r5,r1,8                                
                                                                      
                                                                      
  if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */ 
    return;                                                           
                                                                      
  asr->nest_level += 1;                                               
ffc0aea0:	39 29 00 01 	addi    r9,r9,1                                
ffc0aea4:	91 3f 00 1c 	stw     r9,28(r31)                             
  rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode ); 
ffc0aea8:	60 84 ff ff 	ori     r4,r4,65535                            
ffc0aeac:	48 00 05 69 	bl      ffc0b414 <rtems_task_mode>             
                                                                      
  (*asr->handler)( signal_set );                                      
ffc0aeb0:	81 3f 00 0c 	lwz     r9,12(r31)                             
ffc0aeb4:	7f c3 f3 78 	mr      r3,r30                                 
ffc0aeb8:	7d 29 03 a6 	mtctr   r9                                     
ffc0aebc:	4e 80 04 21 	bctrl                                          
                                                                      
  asr->nest_level -= 1;                                               
ffc0aec0:	81 3f 00 1c 	lwz     r9,28(r31)                             
  rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );     
ffc0aec4:	80 61 00 08 	lwz     r3,8(r1)                               
ffc0aec8:	38 80 00 00 	li      r4,0                                   
  asr->nest_level += 1;                                               
  rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode ); 
                                                                      
  (*asr->handler)( signal_set );                                      
                                                                      
  asr->nest_level -= 1;                                               
ffc0aecc:	39 29 ff ff 	addi    r9,r9,-1                               
ffc0aed0:	91 3f 00 1c 	stw     r9,28(r31)                             
  rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );     
ffc0aed4:	38 a1 00 08 	addi    r5,r1,8                                
ffc0aed8:	60 84 ff ff 	ori     r4,r4,65535                            
ffc0aedc:	48 00 05 39 	bl      ffc0b414 <rtems_task_mode>             
                                                                      
}                                                                     
ffc0aee0:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0aee4:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0aee8:	7c 08 03 a6 	mtlr    r0                                     
ffc0aeec:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0aef0:	38 21 00 20 	addi    r1,r1,32                               
ffc0aef4:	4e 80 00 20 	blr                                            
                                                                      

ffc09fd8 <_RTEMS_tasks_Initialize_user_tasks_body>: * * Output parameters: NONE */ void _RTEMS_tasks_Initialize_user_tasks_body( void ) {
ffc09fd8:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc09fdc:	7c 08 02 a6 	mflr    r0                                     
  rtems_initialization_tasks_table *user_tasks;                       
                                                                      
  /*                                                                  
   *  Move information into local variables                           
   */                                                                 
  user_tasks = Configuration_RTEMS_API.User_initialization_tasks_table;
ffc09fe0:	3d 20 00 00 	lis     r9,0                                   
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _RTEMS_tasks_Initialize_user_tasks_body( void )                  
{                                                                     
ffc09fe4:	90 01 00 2c 	stw     r0,44(r1)                              
  rtems_initialization_tasks_table *user_tasks;                       
                                                                      
  /*                                                                  
   *  Move information into local variables                           
   */                                                                 
  user_tasks = Configuration_RTEMS_API.User_initialization_tasks_table;
ffc09fe8:	39 29 20 04 	addi    r9,r9,8196                             
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _RTEMS_tasks_Initialize_user_tasks_body( void )                  
{                                                                     
ffc09fec:	93 e1 00 24 	stw     r31,36(r1)                             
  rtems_initialization_tasks_table *user_tasks;                       
                                                                      
  /*                                                                  
   *  Move information into local variables                           
   */                                                                 
  user_tasks = Configuration_RTEMS_API.User_initialization_tasks_table;
ffc09ff0:	83 e9 00 2c 	lwz     r31,44(r9)                             
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _RTEMS_tasks_Initialize_user_tasks_body( void )                  
{                                                                     
ffc09ff4:	93 a1 00 1c 	stw     r29,28(r1)                             
  maximum    = Configuration_RTEMS_API.number_of_initialization_tasks;
                                                                      
  /*                                                                  
   *  Verify that we have a set of user tasks to iterate              
   */                                                                 
  if ( !user_tasks )                                                  
ffc09ff8:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _RTEMS_tasks_Initialize_user_tasks_body( void )                  
{                                                                     
ffc09ffc:	93 c1 00 20 	stw     r30,32(r1)                             
                                                                      
  /*                                                                  
   *  Move information into local variables                           
   */                                                                 
  user_tasks = Configuration_RTEMS_API.User_initialization_tasks_table;
  maximum    = Configuration_RTEMS_API.number_of_initialization_tasks;
ffc0a000:	83 a9 00 28 	lwz     r29,40(r9)                             
                                                                      
  /*                                                                  
   *  Verify that we have a set of user tasks to iterate              
   */                                                                 
  if ( !user_tasks )                                                  
ffc0a004:	41 9e 00 5c 	beq-    cr7,ffc0a060 <_RTEMS_tasks_Initialize_user_tasks_body+0x88>
    return;                                                           
                                                                      
  /*                                                                  
   *  Now iterate over the initialization tasks and create/start them.
   */                                                                 
  for ( index=0 ; index < maximum ; index++ ) {                       
ffc0a008:	2f 9d 00 00 	cmpwi   cr7,r29,0                              
ffc0a00c:	3b c0 00 00 	li      r30,0                                  
ffc0a010:	41 9e 00 50 	beq-    cr7,ffc0a060 <_RTEMS_tasks_Initialize_user_tasks_body+0x88><== NEVER TAKEN
    return_value = rtems_task_create(                                 
ffc0a014:	80 bf 00 04 	lwz     r5,4(r31)                              
ffc0a018:	39 01 00 08 	addi    r8,r1,8                                
ffc0a01c:	80 7f 00 00 	lwz     r3,0(r31)                              
ffc0a020:	80 9f 00 08 	lwz     r4,8(r31)                              
ffc0a024:	80 df 00 14 	lwz     r6,20(r31)                             
ffc0a028:	80 ff 00 0c 	lwz     r7,12(r31)                             
ffc0a02c:	4b ff fc ed 	bl      ffc09d18 <rtems_task_create>           
      user_tasks[ index ].stack_size,                                 
      user_tasks[ index ].mode_set,                                   
      user_tasks[ index ].attribute_set,                              
      &id                                                             
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
ffc0a030:	7c 65 1b 79 	mr.     r5,r3                                  
ffc0a034:	40 82 00 48 	bne-    ffc0a07c <_RTEMS_tasks_Initialize_user_tasks_body+0xa4>
      _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
                                                                      
    return_value = rtems_task_start(                                  
ffc0a038:	80 bf 00 18 	lwz     r5,24(r31)                             
ffc0a03c:	80 61 00 08 	lwz     r3,8(r1)                               
ffc0a040:	80 9f 00 10 	lwz     r4,16(r31)                             
ffc0a044:	48 00 00 45 	bl      ffc0a088 <rtems_task_start>            
      id,                                                             
      user_tasks[ index ].entry_point,                                
      user_tasks[ index ].argument                                    
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
ffc0a048:	7c 65 1b 79 	mr.     r5,r3                                  
ffc0a04c:	40 82 00 30 	bne-    ffc0a07c <_RTEMS_tasks_Initialize_user_tasks_body+0xa4>
    return;                                                           
                                                                      
  /*                                                                  
   *  Now iterate over the initialization tasks and create/start them.
   */                                                                 
  for ( index=0 ; index < maximum ; index++ ) {                       
ffc0a050:	3b de 00 01 	addi    r30,r30,1                              
ffc0a054:	7f 9e e8 00 	cmpw    cr7,r30,r29                            
ffc0a058:	3b ff 00 1c 	addi    r31,r31,28                             
ffc0a05c:	40 9e ff b8 	bne+    cr7,ffc0a014 <_RTEMS_tasks_Initialize_user_tasks_body+0x3c><== NEVER TAKEN
      user_tasks[ index ].argument                                    
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
      _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
  }                                                                   
}                                                                     
ffc0a060:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc0a064:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc0a068:	7c 08 03 a6 	mtlr    r0                                     
ffc0a06c:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc0a070:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc0a074:	38 21 00 28 	addi    r1,r1,40                               
ffc0a078:	4e 80 00 20 	blr                                            
      id,                                                             
      user_tasks[ index ].entry_point,                                
      user_tasks[ index ].argument                                    
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
      _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
ffc0a07c:	38 60 00 01 	li      r3,1                                   
ffc0a080:	38 80 00 01 	li      r4,1                                   
ffc0a084:	48 00 12 ed 	bl      ffc0b370 <_Internal_error_Occurred>    
                                                                      

ffc102ec <_RTEMS_tasks_Switch_extension>: /* * Per Task Variables */ tvp = executing->task_variables;
ffc102ec:	81 23 01 58 	lwz     r9,344(r3)                             
  while (tvp) {                                                       
ffc102f0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc102f4:	41 9e 00 24 	beq-    cr7,ffc10318 <_RTEMS_tasks_Switch_extension+0x2c>
    tvp->tval = *tvp->ptr;                                            
ffc102f8:	81 49 00 04 	lwz     r10,4(r9)                              
    *tvp->ptr = tvp->gval;                                            
ffc102fc:	81 09 00 08 	lwz     r8,8(r9)                               
   *  Per Task Variables                                              
   */                                                                 
                                                                      
  tvp = executing->task_variables;                                    
  while (tvp) {                                                       
    tvp->tval = *tvp->ptr;                                            
ffc10300:	80 ea 00 00 	lwz     r7,0(r10)                              
ffc10304:	90 e9 00 0c 	stw     r7,12(r9)                              
    *tvp->ptr = tvp->gval;                                            
ffc10308:	91 0a 00 00 	stw     r8,0(r10)                              
    tvp = (rtems_task_variable_t *)tvp->next;                         
ffc1030c:	81 29 00 00 	lwz     r9,0(r9)                               
  /*                                                                  
   *  Per Task Variables                                              
   */                                                                 
                                                                      
  tvp = executing->task_variables;                                    
  while (tvp) {                                                       
ffc10310:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc10314:	40 9e ff e4 	bne+    cr7,ffc102f8 <_RTEMS_tasks_Switch_extension+0xc><== NEVER TAKEN
    tvp->tval = *tvp->ptr;                                            
    *tvp->ptr = tvp->gval;                                            
    tvp = (rtems_task_variable_t *)tvp->next;                         
  }                                                                   
                                                                      
  tvp = heir->task_variables;                                         
ffc10318:	81 24 01 58 	lwz     r9,344(r4)                             
  while (tvp) {                                                       
ffc1031c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc10320:	4d 9e 00 20 	beqlr   cr7                                    
    tvp->gval = *tvp->ptr;                                            
ffc10324:	81 49 00 04 	lwz     r10,4(r9)                              
    *tvp->ptr = tvp->tval;                                            
ffc10328:	81 09 00 0c 	lwz     r8,12(r9)                              
    tvp = (rtems_task_variable_t *)tvp->next;                         
  }                                                                   
                                                                      
  tvp = heir->task_variables;                                         
  while (tvp) {                                                       
    tvp->gval = *tvp->ptr;                                            
ffc1032c:	80 ea 00 00 	lwz     r7,0(r10)                              
ffc10330:	90 e9 00 08 	stw     r7,8(r9)                               
    *tvp->ptr = tvp->tval;                                            
ffc10334:	91 0a 00 00 	stw     r8,0(r10)                              
    tvp = (rtems_task_variable_t *)tvp->next;                         
ffc10338:	81 29 00 00 	lwz     r9,0(r9)                               
    *tvp->ptr = tvp->gval;                                            
    tvp = (rtems_task_variable_t *)tvp->next;                         
  }                                                                   
                                                                      
  tvp = heir->task_variables;                                         
  while (tvp) {                                                       
ffc1033c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc10340:	40 9e ff e4 	bne+    cr7,ffc10324 <_RTEMS_tasks_Switch_extension+0x38><== NEVER TAKEN
ffc10344:	4e 80 00 20 	blr                                            
                                                                      

ffc3f0b4 <_Rate_monotonic_Get_status>: bool _Rate_monotonic_Get_status( Rate_monotonic_Control *the_period, Rate_monotonic_Period_time_t *wall_since_last_period, Thread_CPU_usage_t *cpu_since_last_period ) {
ffc3f0b4:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc3f0b8:	7c 08 02 a6 	mflr    r0                                     
ffc3f0bc:	93 81 00 18 	stw     r28,24(r1)                             
ffc3f0c0:	7c 9c 23 78 	mr      r28,r4                                 
 */                                                                   
static inline void _TOD_Get_uptime(                                   
  Timestamp_Control *time                                             
)                                                                     
{                                                                     
  _TOD_Get_with_nanoseconds( time, &_TOD.uptime );                    
ffc3f0c4:	3c 80 00 00 	lis     r4,0                                   
ffc3f0c8:	90 01 00 2c 	stw     r0,44(r1)                              
ffc3f0cc:	38 84 63 e8 	addi    r4,r4,25576                            
ffc3f0d0:	93 c1 00 20 	stw     r30,32(r1)                             
ffc3f0d4:	7c 7e 1b 78 	mr      r30,r3                                 
ffc3f0d8:	38 61 00 08 	addi    r3,r1,8                                
ffc3f0dc:	93 a1 00 1c 	stw     r29,28(r1)                             
ffc3f0e0:	93 e1 00 24 	stw     r31,36(r1)                             
ffc3f0e4:	7c bf 2b 78 	mr      r31,r5                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    Timestamp_Control        uptime;                                  
  #endif                                                              
    Thread_Control          *owning_thread = the_period->owner;       
ffc3f0e8:	83 be 00 40 	lwz     r29,64(r30)                            
ffc3f0ec:	4b fc b5 65 	bl      ffc0a650 <_TOD_Get_with_nanoseconds>   
   *  Determine cpu usage since period initiated.                     
   */                                                                 
  used = owning_thread->cpu_time_used;                                
                                                                      
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    if (owning_thread == _Thread_Executing) {                         
ffc3f0f0:	3c e0 00 00 	lis     r7,0                                   
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
ffc3f0f4:	81 1e 00 50 	lwz     r8,80(r30)                             
ffc3f0f8:	38 e7 69 20 	addi    r7,r7,26912                            
ffc3f0fc:	81 3e 00 54 	lwz     r9,84(r30)                             
ffc3f100:	81 47 00 10 	lwz     r10,16(r7)                             
  /*                                                                  
   *  Determine elapsed wall time since period initiated.             
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _TOD_Get_uptime( &uptime );                                       
    _Timestamp_Subtract(                                              
ffc3f104:	81 61 00 0c 	lwz     r11,12(r1)                             
   *  Determine cpu usage since period initiated.                     
   */                                                                 
  used = owning_thread->cpu_time_used;                                
                                                                      
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    if (owning_thread == _Thread_Executing) {                         
ffc3f108:	7f 8a e8 00 	cmpw    cr7,r10,r29                            
  /*                                                                  
   *  Determine elapsed wall time since period initiated.             
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _TOD_Get_uptime( &uptime );                                       
    _Timestamp_Subtract(                                              
ffc3f10c:	81 41 00 08 	lwz     r10,8(r1)                              
ffc3f110:	7d 29 58 10 	subfc   r9,r9,r11                              
ffc3f114:	7d 08 51 10 	subfe   r8,r8,r10                              
ffc3f118:	91 1c 00 00 	stw     r8,0(r28)                              
ffc3f11c:	91 3c 00 04 	stw     r9,4(r28)                              
  #endif                                                              
                                                                      
  /*                                                                  
   *  Determine cpu usage since period initiated.                     
   */                                                                 
  used = owning_thread->cpu_time_used;                                
ffc3f120:	81 1d 00 80 	lwz     r8,128(r29)                            
ffc3f124:	81 3d 00 84 	lwz     r9,132(r29)                            
                                                                      
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    if (owning_thread == _Thread_Executing) {                         
ffc3f128:	41 9e 00 28 	beq-    cr7,ffc3f150 <_Rate_monotonic_Get_status+0x9c>
      if (used < the_period->cpu_usage_period_initiated)              
        return false;                                                 
                                                                      
      *cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
  #endif                                                              
  return true;                                                        
ffc3f12c:	38 60 00 01 	li      r3,1                                   
}                                                                     
ffc3f130:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc3f134:	83 81 00 18 	lwz     r28,24(r1)                             
ffc3f138:	7c 08 03 a6 	mtlr    r0                                     
ffc3f13c:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc3f140:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc3f144:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc3f148:	38 21 00 28 	addi    r1,r1,40                               
ffc3f14c:	4e 80 00 20 	blr                                            
ffc3f150:	80 87 00 20 	lwz     r4,32(r7)                              
ffc3f154:	80 a7 00 24 	lwz     r5,36(r7)                              
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc3f158:	80 de 00 48 	lwz     r6,72(r30)                             
ffc3f15c:	7d 65 58 10 	subfc   r11,r5,r11                             
ffc3f160:	7d 44 51 10 	subfe   r10,r4,r10                             
ffc3f164:	80 fe 00 4c 	lwz     r7,76(r30)                             
static inline void _Timestamp64_implementation_Add_to(                
  Timestamp64_Control       *_time,                                   
  const Timestamp64_Control *_add                                     
)                                                                     
{                                                                     
  *_time += *_add;                                                    
ffc3f168:	7d 29 58 14 	addc    r9,r9,r11                              
ffc3f16c:	7d 08 51 14 	adde    r8,r8,r10                              
                                                                      
      /*                                                              
       *  The cpu usage info was reset while executing.  Can't        
       *  determine a status.                                         
       */                                                             
      if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated))
ffc3f170:	7f 86 40 00 	cmpw    cr7,r6,r8                              
ffc3f174:	41 9d 00 44 	bgt-    cr7,ffc3f1b8 <_Rate_monotonic_Get_status+0x104><== NEVER TAKEN
ffc3f178:	41 9e 00 38 	beq-    cr7,ffc3f1b0 <_Rate_monotonic_Get_status+0xfc>
        return false;                                                 
                                                                      
      *cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
  #endif                                                              
  return true;                                                        
}                                                                     
ffc3f17c:	80 01 00 2c 	lwz     r0,44(r1)                              
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
ffc3f180:	7d 27 48 10 	subfc   r9,r7,r9                               
ffc3f184:	7d 06 41 10 	subfe   r8,r6,r8                               
ffc3f188:	91 1f 00 00 	stw     r8,0(r31)                              
ffc3f18c:	7c 08 03 a6 	mtlr    r0                                     
      if (used < the_period->cpu_usage_period_initiated)              
        return false;                                                 
                                                                      
      *cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
  #endif                                                              
  return true;                                                        
ffc3f190:	38 60 00 01 	li      r3,1                                   
ffc3f194:	91 3f 00 04 	stw     r9,4(r31)                              
}                                                                     
ffc3f198:	83 81 00 18 	lwz     r28,24(r1)                             
ffc3f19c:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc3f1a0:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc3f1a4:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc3f1a8:	38 21 00 28 	addi    r1,r1,40                               
ffc3f1ac:	4e 80 00 20 	blr                                            
                                                                      
      /*                                                              
       *  The cpu usage info was reset while executing.  Can't        
       *  determine a status.                                         
       */                                                             
      if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated))
ffc3f1b0:	7f 87 48 40 	cmplw   cr7,r7,r9                              
ffc3f1b4:	40 9d ff c8 	ble+    cr7,ffc3f17c <_Rate_monotonic_Get_status+0xc8>
        return false;                                                 
ffc3f1b8:	38 60 00 00 	li      r3,0                                   
ffc3f1bc:	4b ff ff 74 	b       ffc3f130 <_Rate_monotonic_Get_status+0x7c>
                                                                      

ffc3f61c <_Rate_monotonic_Timeout>: void _Rate_monotonic_Timeout( Objects_Id id, void *ignored ) {
ffc3f61c:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc3f620:	7c 08 02 a6 	mflr    r0                                     
ffc3f624:	7c 64 1b 78 	mr      r4,r3                                  
ffc3f628:	3c 60 00 00 	lis     r3,0                                   
ffc3f62c:	90 01 00 24 	stw     r0,36(r1)                              
ffc3f630:	38 63 6f 3c 	addi    r3,r3,28476                            
ffc3f634:	38 a1 00 08 	addi    r5,r1,8                                
ffc3f638:	93 e1 00 1c 	stw     r31,28(r1)                             
ffc3f63c:	4b fc bc 59 	bl      ffc0b294 <_Objects_Get>                
  /*                                                                  
   *  When we get here, the Timer is already off the chain so we do not
   *  have to worry about that -- hence no _Watchdog_Remove().        
   */                                                                 
  the_period = _Rate_monotonic_Get( id, &location );                  
  switch ( location ) {                                               
ffc3f640:	81 21 00 08 	lwz     r9,8(r1)                               
ffc3f644:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc3f648:	40 9e 00 4c 	bne-    cr7,ffc3f694 <_Rate_monotonic_Timeout+0x78><== NEVER TAKEN
ffc3f64c:	7c 7f 1b 78 	mr      r31,r3                                 
                                                                      
    case OBJECTS_LOCAL:                                               
      the_thread = the_period->owner;                                 
ffc3f650:	80 63 00 40 	lwz     r3,64(r3)                              
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_period (             
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_FOR_PERIOD);                   
ffc3f654:	81 23 00 10 	lwz     r9,16(r3)                              
      if ( _States_Is_waiting_for_period( the_thread->current_state ) &&
ffc3f658:	71 2a 40 00 	andi.   r10,r9,16384                           
ffc3f65c:	41 82 00 14 	beq-    ffc3f670 <_Rate_monotonic_Timeout+0x54>
ffc3f660:	81 43 00 20 	lwz     r10,32(r3)                             
ffc3f664:	81 3f 00 08 	lwz     r9,8(r31)                              
ffc3f668:	7f 8a 48 00 	cmpw    cr7,r10,r9                             
ffc3f66c:	41 9e 00 68 	beq-    cr7,ffc3f6d4 <_Rate_monotonic_Timeout+0xb8>
        _Thread_Unblock( the_thread );                                
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
      } else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) {
ffc3f670:	81 3f 00 38 	lwz     r9,56(r31)                             
ffc3f674:	2f 89 00 01 	cmpwi   cr7,r9,1                               
ffc3f678:	41 9e 00 30 	beq-    cr7,ffc3f6a8 <_Rate_monotonic_Timeout+0x8c>
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
      } else                                                          
        the_period->state = RATE_MONOTONIC_EXPIRED;                   
ffc3f67c:	39 20 00 04 	li      r9,4                                   
ffc3f680:	91 3f 00 38 	stw     r9,56(r31)                             
   *                                                                  
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc3f684:	3d 20 00 00 	lis     r9,0                                   
ffc3f688:	81 49 34 e4 	lwz     r10,13540(r9)                          
                                                                      
    --level;                                                          
ffc3f68c:	39 4a ff ff 	addi    r10,r10,-1                             
    _Thread_Dispatch_disable_level = level;                           
ffc3f690:	91 49 34 e4 	stw     r10,13540(r9)                          
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
}                                                                     
ffc3f694:	80 01 00 24 	lwz     r0,36(r1)                              
ffc3f698:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc3f69c:	7c 08 03 a6 	mtlr    r0                                     
ffc3f6a0:	38 21 00 20 	addi    r1,r1,32                               
ffc3f6a4:	4e 80 00 20 	blr                                            
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
      } else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) {
        the_period->state = RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING;    
ffc3f6a8:	39 20 00 03 	li      r9,3                                   
ffc3f6ac:	91 3f 00 38 	stw     r9,56(r31)                             
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
ffc3f6b0:	7f e3 fb 78 	mr      r3,r31                                 
ffc3f6b4:	4b ff fc 5d 	bl      ffc3f310 <_Rate_monotonic_Initiate_statistics>
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
ffc3f6b8:	81 3f 00 3c 	lwz     r9,60(r31)                             
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
ffc3f6bc:	3c 60 00 00 	lis     r3,0                                   
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
ffc3f6c0:	91 3f 00 1c 	stw     r9,28(r31)                             
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
ffc3f6c4:	38 63 65 28 	addi    r3,r3,25896                            
ffc3f6c8:	38 9f 00 10 	addi    r4,r31,16                              
ffc3f6cc:	4b fc db bd 	bl      ffc0d288 <_Watchdog_Insert>            
ffc3f6d0:	4b ff ff b4 	b       ffc3f684 <_Rate_monotonic_Timeout+0x68>
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
ffc3f6d4:	3c 80 10 07 	lis     r4,4103                                
ffc3f6d8:	60 84 ff f8 	ori     r4,r4,65528                            
ffc3f6dc:	4b fc c7 09 	bl      ffc0bde4 <_Thread_Clear_state>         
ffc3f6e0:	4b ff ff d0 	b       ffc3f6b0 <_Rate_monotonic_Timeout+0x94>
                                                                      

ffc3f1c0 <_Rate_monotonic_Update_statistics>: } static void _Rate_monotonic_Update_statistics( Rate_monotonic_Control *the_period ) {
ffc3f1c0:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc3f1c4:	7c 08 02 a6 	mflr    r0                                     
ffc3f1c8:	90 01 00 24 	stw     r0,36(r1)                              
   *  Update the counts.                                              
   */                                                                 
  stats = &the_period->Statistics;                                    
  stats->count++;                                                     
                                                                      
  if ( the_period->state == RATE_MONOTONIC_EXPIRED )                  
ffc3f1cc:	81 43 00 38 	lwz     r10,56(r3)                             
                                                                      
  /*                                                                  
   *  Update the counts.                                              
   */                                                                 
  stats = &the_period->Statistics;                                    
  stats->count++;                                                     
ffc3f1d0:	81 23 00 58 	lwz     r9,88(r3)                              
                                                                      
  if ( the_period->state == RATE_MONOTONIC_EXPIRED )                  
ffc3f1d4:	2f 8a 00 04 	cmpwi   cr7,r10,4                              
}                                                                     
                                                                      
static void _Rate_monotonic_Update_statistics(                        
  Rate_monotonic_Control    *the_period                               
)                                                                     
{                                                                     
ffc3f1d8:	93 e1 00 1c 	stw     r31,28(r1)                             
                                                                      
  /*                                                                  
   *  Update the counts.                                              
   */                                                                 
  stats = &the_period->Statistics;                                    
  stats->count++;                                                     
ffc3f1dc:	39 29 00 01 	addi    r9,r9,1                                
}                                                                     
                                                                      
static void _Rate_monotonic_Update_statistics(                        
  Rate_monotonic_Control    *the_period                               
)                                                                     
{                                                                     
ffc3f1e0:	7c 7f 1b 78 	mr      r31,r3                                 
                                                                      
  /*                                                                  
   *  Update the counts.                                              
   */                                                                 
  stats = &the_period->Statistics;                                    
  stats->count++;                                                     
ffc3f1e4:	91 23 00 58 	stw     r9,88(r3)                              
                                                                      
  if ( the_period->state == RATE_MONOTONIC_EXPIRED )                  
ffc3f1e8:	41 9e 00 cc 	beq-    cr7,ffc3f2b4 <_Rate_monotonic_Update_statistics+0xf4>
    stats->missed_count++;                                            
                                                                      
  /*                                                                  
   *  Grab status for time statistics.                                
   */                                                                 
  valid_status =                                                      
ffc3f1ec:	7f e3 fb 78 	mr      r3,r31                                 
ffc3f1f0:	38 81 00 08 	addi    r4,r1,8                                
ffc3f1f4:	38 a1 00 10 	addi    r5,r1,16                               
ffc3f1f8:	4b ff fe bd 	bl      ffc3f0b4 <_Rate_monotonic_Get_status>  
    _Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
  if (!valid_status)                                                  
ffc3f1fc:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc3f200:	41 9e 00 8c 	beq-    cr7,ffc3f28c <_Rate_monotonic_Update_statistics+0xcc>
                                                                      
  /*                                                                  
   *  Update CPU time                                                 
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_cpu_time, &executed );           
ffc3f204:	81 41 00 10 	lwz     r10,16(r1)                             
                                                                      
    if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )    
ffc3f208:	80 ff 00 60 	lwz     r7,96(r31)                             
static inline void _Timestamp64_implementation_Add_to(                
  Timestamp64_Control       *_time,                                   
  const Timestamp64_Control *_add                                     
)                                                                     
{                                                                     
  *_time += *_add;                                                    
ffc3f20c:	81 1f 00 70 	lwz     r8,112(r31)                            
ffc3f210:	7f 87 50 00 	cmpw    cr7,r7,r10                             
ffc3f214:	81 3f 00 74 	lwz     r9,116(r31)                            
                                                                      
  /*                                                                  
   *  Update CPU time                                                 
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_cpu_time, &executed );           
ffc3f218:	81 61 00 14 	lwz     r11,20(r1)                             
ffc3f21c:	7d 29 58 14 	addc    r9,r9,r11                              
ffc3f220:	7d 08 51 14 	adde    r8,r8,r10                              
ffc3f224:	91 1f 00 70 	stw     r8,112(r31)                            
ffc3f228:	91 3f 00 74 	stw     r9,116(r31)                            
                                                                      
    if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )    
ffc3f22c:	40 9d 00 74 	ble-    cr7,ffc3f2a0 <_Rate_monotonic_Update_statistics+0xe0>
      stats->min_cpu_time = executed;                                 
ffc3f230:	91 5f 00 60 	stw     r10,96(r31)                            
ffc3f234:	91 7f 00 64 	stw     r11,100(r31)                           
                                                                      
    if ( _Timestamp_Greater_than( &executed, &stats->max_cpu_time ) ) 
ffc3f238:	81 3f 00 68 	lwz     r9,104(r31)                            
ffc3f23c:	7f 89 50 00 	cmpw    cr7,r9,r10                             
ffc3f240:	41 9c 00 c4 	blt-    cr7,ffc3f304 <_Rate_monotonic_Update_statistics+0x144><== NEVER TAKEN
ffc3f244:	41 9e 00 b4 	beq-    cr7,ffc3f2f8 <_Rate_monotonic_Update_statistics+0x138><== ALWAYS TAKEN
                                                                      
  /*                                                                  
   *  Update Wall time                                                
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_wall_time, &since_last_period ); 
ffc3f248:	81 41 00 08 	lwz     r10,8(r1)                              
                                                                      
    if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
ffc3f24c:	80 ff 00 78 	lwz     r7,120(r31)                            
ffc3f250:	81 1f 00 88 	lwz     r8,136(r31)                            
ffc3f254:	7f 87 50 00 	cmpw    cr7,r7,r10                             
ffc3f258:	81 3f 00 8c 	lwz     r9,140(r31)                            
                                                                      
  /*                                                                  
   *  Update Wall time                                                
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_wall_time, &since_last_period ); 
ffc3f25c:	81 61 00 0c 	lwz     r11,12(r1)                             
ffc3f260:	7d 29 58 14 	addc    r9,r9,r11                              
ffc3f264:	7d 08 51 14 	adde    r8,r8,r10                              
ffc3f268:	91 1f 00 88 	stw     r8,136(r31)                            
ffc3f26c:	91 3f 00 8c 	stw     r9,140(r31)                            
                                                                      
    if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
ffc3f270:	41 9d 00 60 	bgt-    cr7,ffc3f2d0 <_Rate_monotonic_Update_statistics+0x110>
ffc3f274:	41 9e 00 50 	beq-    cr7,ffc3f2c4 <_Rate_monotonic_Update_statistics+0x104><== ALWAYS TAKEN
      stats->min_wall_time = since_last_period;                       
                                                                      
    if ( _Timestamp_Greater_than( &since_last_period, &stats->max_wall_time ) )
ffc3f278:	81 3f 00 80 	lwz     r9,128(r31)                            
ffc3f27c:	7f 89 50 00 	cmpw    cr7,r9,r10                             
ffc3f280:	40 9c 00 64 	bge-    cr7,ffc3f2e4 <_Rate_monotonic_Update_statistics+0x124><== ALWAYS TAKEN
      stats->max_wall_time = since_last_period;                       
ffc3f284:	91 5f 00 80 	stw     r10,128(r31)                           
ffc3f288:	91 7f 00 84 	stw     r11,132(r31)                           
      stats->min_wall_time = since_last_period;                       
                                                                      
    if ( since_last_period > stats->max_wall_time )                   
      stats->max_wall_time = since_last_period;                       
  #endif                                                              
}                                                                     
ffc3f28c:	80 01 00 24 	lwz     r0,36(r1)                              
ffc3f290:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc3f294:	7c 08 03 a6 	mtlr    r0                                     
ffc3f298:	38 21 00 20 	addi    r1,r1,32                               
ffc3f29c:	4e 80 00 20 	blr                                            
   *  Update CPU time                                                 
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_cpu_time, &executed );           
                                                                      
    if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )    
ffc3f2a0:	40 be ff 98 	bne-    cr7,ffc3f238 <_Rate_monotonic_Update_statistics+0x78><== NEVER TAKEN
ffc3f2a4:	81 3f 00 64 	lwz     r9,100(r31)                            
ffc3f2a8:	7f 89 58 40 	cmplw   cr7,r9,r11                             
ffc3f2ac:	40 bd ff 8c 	ble-    cr7,ffc3f238 <_Rate_monotonic_Update_statistics+0x78>
ffc3f2b0:	4b ff ff 80 	b       ffc3f230 <_Rate_monotonic_Update_statistics+0x70>
   */                                                                 
  stats = &the_period->Statistics;                                    
  stats->count++;                                                     
                                                                      
  if ( the_period->state == RATE_MONOTONIC_EXPIRED )                  
    stats->missed_count++;                                            
ffc3f2b4:	81 23 00 5c 	lwz     r9,92(r3)                              
ffc3f2b8:	39 29 00 01 	addi    r9,r9,1                                
ffc3f2bc:	91 23 00 5c 	stw     r9,92(r3)                              
ffc3f2c0:	4b ff ff 2c 	b       ffc3f1ec <_Rate_monotonic_Update_statistics+0x2c>
   *  Update Wall time                                                
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_wall_time, &since_last_period ); 
                                                                      
    if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
ffc3f2c4:	81 3f 00 7c 	lwz     r9,124(r31)                            
ffc3f2c8:	7f 89 58 40 	cmplw   cr7,r9,r11                             
ffc3f2cc:	40 bd ff ac 	ble-    cr7,ffc3f278 <_Rate_monotonic_Update_statistics+0xb8>
      stats->min_wall_time = since_last_period;                       
                                                                      
    if ( _Timestamp_Greater_than( &since_last_period, &stats->max_wall_time ) )
ffc3f2d0:	81 3f 00 80 	lwz     r9,128(r31)                            
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_wall_time, &since_last_period ); 
                                                                      
    if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
      stats->min_wall_time = since_last_period;                       
ffc3f2d4:	91 5f 00 78 	stw     r10,120(r31)                           
                                                                      
    if ( _Timestamp_Greater_than( &since_last_period, &stats->max_wall_time ) )
ffc3f2d8:	7f 89 50 00 	cmpw    cr7,r9,r10                             
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_wall_time, &since_last_period ); 
                                                                      
    if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
      stats->min_wall_time = since_last_period;                       
ffc3f2dc:	91 7f 00 7c 	stw     r11,124(r31)                           
                                                                      
    if ( _Timestamp_Greater_than( &since_last_period, &stats->max_wall_time ) )
ffc3f2e0:	41 9c ff a4 	blt+    cr7,ffc3f284 <_Rate_monotonic_Update_statistics+0xc4><== NEVER TAKEN
ffc3f2e4:	40 be ff a8 	bne-    cr7,ffc3f28c <_Rate_monotonic_Update_statistics+0xcc>
ffc3f2e8:	81 3f 00 84 	lwz     r9,132(r31)                            
ffc3f2ec:	7f 89 58 40 	cmplw   cr7,r9,r11                             
ffc3f2f0:	41 9c ff 94 	blt+    cr7,ffc3f284 <_Rate_monotonic_Update_statistics+0xc4>
ffc3f2f4:	4b ff ff 98 	b       ffc3f28c <_Rate_monotonic_Update_statistics+0xcc>
    _Timestamp_Add_to( &stats->total_cpu_time, &executed );           
                                                                      
    if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )    
      stats->min_cpu_time = executed;                                 
                                                                      
    if ( _Timestamp_Greater_than( &executed, &stats->max_cpu_time ) ) 
ffc3f2f8:	81 3f 00 6c 	lwz     r9,108(r31)                            
ffc3f2fc:	7f 89 58 40 	cmplw   cr7,r9,r11                             
ffc3f300:	40 bc ff 48 	bge-    cr7,ffc3f248 <_Rate_monotonic_Update_statistics+0x88>
      stats->max_cpu_time = executed;                                 
ffc3f304:	91 5f 00 68 	stw     r10,104(r31)                           
ffc3f308:	91 7f 00 6c 	stw     r11,108(r31)                           
ffc3f30c:	4b ff ff 3c 	b       ffc3f248 <_Rate_monotonic_Update_statistics+0x88>
                                                                      

ffc0c974 <_Scheduler_CBS_Allocate>: #include <rtems/score/wkspace.h> void *_Scheduler_CBS_Allocate( Thread_Control *the_thread ) {
ffc0c974:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0c978:	7c 08 02 a6 	mflr    r0                                     
ffc0c97c:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc0c980:	7c 7f 1b 78 	mr      r31,r3                                 
  void *sched;                                                        
  Scheduler_CBS_Per_thread *schinfo;                                  
                                                                      
  sched = _Workspace_Allocate(sizeof(Scheduler_CBS_Per_thread));      
ffc0c984:	38 60 00 1c 	li      r3,28                                  
#include <rtems/score/wkspace.h>                                      
                                                                      
void *_Scheduler_CBS_Allocate(                                        
  Thread_Control      *the_thread                                     
)                                                                     
{                                                                     
ffc0c988:	90 01 00 14 	stw     r0,20(r1)                              
  void *sched;                                                        
  Scheduler_CBS_Per_thread *schinfo;                                  
                                                                      
  sched = _Workspace_Allocate(sizeof(Scheduler_CBS_Per_thread));      
ffc0c98c:	48 00 22 55 	bl      ffc0ebe0 <_Workspace_Allocate>         
  if ( sched ) {                                                      
ffc0c990:	2c 03 00 00 	cmpwi   r3,0                                   
ffc0c994:	41 82 00 1c 	beq-    ffc0c9b0 <_Scheduler_CBS_Allocate+0x3c><== NEVER TAKEN
    the_thread->scheduler_info = sched;                               
    schinfo = (Scheduler_CBS_Per_thread *)(the_thread->scheduler_info);
    schinfo->edf_per_thread.thread = the_thread;                      
    schinfo->edf_per_thread.queue_state = SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN;
ffc0c998:	39 40 00 02 	li      r10,2                                  
  void *sched;                                                        
  Scheduler_CBS_Per_thread *schinfo;                                  
                                                                      
  sched = _Workspace_Allocate(sizeof(Scheduler_CBS_Per_thread));      
  if ( sched ) {                                                      
    the_thread->scheduler_info = sched;                               
ffc0c99c:	90 7f 00 88 	stw     r3,136(r31)                            
    schinfo = (Scheduler_CBS_Per_thread *)(the_thread->scheduler_info);
    schinfo->edf_per_thread.thread = the_thread;                      
    schinfo->edf_per_thread.queue_state = SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN;
ffc0c9a0:	91 43 00 14 	stw     r10,20(r3)                             
    schinfo->cbs_server = NULL;                                       
ffc0c9a4:	39 40 00 00 	li      r10,0                                  
                                                                      
  sched = _Workspace_Allocate(sizeof(Scheduler_CBS_Per_thread));      
  if ( sched ) {                                                      
    the_thread->scheduler_info = sched;                               
    schinfo = (Scheduler_CBS_Per_thread *)(the_thread->scheduler_info);
    schinfo->edf_per_thread.thread = the_thread;                      
ffc0c9a8:	93 e3 00 00 	stw     r31,0(r3)                              
    schinfo->edf_per_thread.queue_state = SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN;
    schinfo->cbs_server = NULL;                                       
ffc0c9ac:	91 43 00 18 	stw     r10,24(r3)                             
  }                                                                   
                                                                      
  return sched;                                                       
}                                                                     
ffc0c9b0:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0c9b4:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0c9b8:	7c 08 03 a6 	mtlr    r0                                     
ffc0c9bc:	38 21 00 10 	addi    r1,r1,16                               
ffc0c9c0:	4e 80 00 20 	blr                                            
                                                                      

ffc0e3dc <_Scheduler_CBS_Budget_callout>: Scheduler_CBS_Server **_Scheduler_CBS_Server_list; void _Scheduler_CBS_Budget_callout( Thread_Control *the_thread ) {
ffc0e3dc:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc0e3e0:	7c 08 02 a6 	mflr    r0                                     
ffc0e3e4:	90 01 00 24 	stw     r0,36(r1)                              
  Priority_Control          new_priority;                             
  Scheduler_CBS_Per_thread *sched_info;                               
  Scheduler_CBS_Server_id   server_id;                                
                                                                      
  /* Put violating task to background until the end of period. */     
  new_priority = the_thread->Start.initial_priority;                  
ffc0e3e8:	80 83 00 ac 	lwz     r4,172(r3)                             
  if ( the_thread->real_priority != new_priority )                    
ffc0e3ec:	81 23 00 18 	lwz     r9,24(r3)                              
Scheduler_CBS_Server **_Scheduler_CBS_Server_list;                    
                                                                      
void _Scheduler_CBS_Budget_callout(                                   
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
ffc0e3f0:	93 e1 00 1c 	stw     r31,28(r1)                             
ffc0e3f4:	7c 7f 1b 78 	mr      r31,r3                                 
  Scheduler_CBS_Per_thread *sched_info;                               
  Scheduler_CBS_Server_id   server_id;                                
                                                                      
  /* Put violating task to background until the end of period. */     
  new_priority = the_thread->Start.initial_priority;                  
  if ( the_thread->real_priority != new_priority )                    
ffc0e3f8:	7f 89 20 00 	cmpw    cr7,r9,r4                              
ffc0e3fc:	41 9e 00 08 	beq-    cr7,ffc0e404 <_Scheduler_CBS_Budget_callout+0x28><== NEVER TAKEN
    the_thread->real_priority = new_priority;                         
ffc0e400:	90 83 00 18 	stw     r4,24(r3)                              
  if ( the_thread->current_priority != new_priority )                 
ffc0e404:	81 3f 00 14 	lwz     r9,20(r31)                             
ffc0e408:	7f 89 20 00 	cmpw    cr7,r9,r4                              
ffc0e40c:	41 9e 00 10 	beq-    cr7,ffc0e41c <_Scheduler_CBS_Budget_callout+0x40><== NEVER TAKEN
    _Thread_Change_priority(the_thread, new_priority, true);          
ffc0e410:	7f e3 fb 78 	mr      r3,r31                                 
ffc0e414:	38 a0 00 01 	li      r5,1                                   
ffc0e418:	48 00 07 05 	bl      ffc0eb1c <_Thread_Change_priority>     
                                                                      
  /* Invoke callback function if any. */                              
  sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
ffc0e41c:	83 ff 00 88 	lwz     r31,136(r31)                           
  if ( sched_info->cbs_server->cbs_budget_overrun ) {                 
ffc0e420:	81 3f 00 18 	lwz     r9,24(r31)                             
ffc0e424:	81 49 00 0c 	lwz     r10,12(r9)                             
ffc0e428:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0e42c:	41 9e 00 24 	beq-    cr7,ffc0e450 <_Scheduler_CBS_Budget_callout+0x74><== NEVER TAKEN
    _Scheduler_CBS_Get_server_id(                                     
ffc0e430:	80 69 00 00 	lwz     r3,0(r9)                               
ffc0e434:	38 81 00 08 	addi    r4,r1,8                                
ffc0e438:	4b ff ff 4d 	bl      ffc0e384 <_Scheduler_CBS_Get_server_id>
        sched_info->cbs_server->task_id,                              
        &server_id                                                    
    );                                                                
    sched_info->cbs_server->cbs_budget_overrun( server_id );          
ffc0e43c:	81 3f 00 18 	lwz     r9,24(r31)                             
ffc0e440:	80 61 00 08 	lwz     r3,8(r1)                               
ffc0e444:	81 29 00 0c 	lwz     r9,12(r9)                              
ffc0e448:	7d 29 03 a6 	mtctr   r9                                     
ffc0e44c:	4e 80 04 21 	bctrl                                          
  }                                                                   
}                                                                     
ffc0e450:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0e454:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0e458:	7c 08 03 a6 	mtlr    r0                                     
ffc0e45c:	38 21 00 20 	addi    r1,r1,32                               
ffc0e460:	4e 80 00 20 	blr                                            
                                                                      

ffc0dd98 <_Scheduler_CBS_Cleanup>: #include <rtems/config.h> #include <rtems/score/scheduler.h> #include <rtems/score/schedulercbs.h> int _Scheduler_CBS_Cleanup (void) {
ffc0dd98:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0dd9c:	7c 08 02 a6 	mflr    r0                                     
ffc0dda0:	93 c1 00 10 	stw     r30,16(r1)                             
  unsigned int i;                                                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
ffc0dda4:	3f c0 00 00 	lis     r30,0                                  
ffc0dda8:	81 3e 27 d4 	lwz     r9,10196(r30)                          
#include <rtems/config.h>                                             
#include <rtems/score/scheduler.h>                                    
#include <rtems/score/schedulercbs.h>                                 
                                                                      
int _Scheduler_CBS_Cleanup (void)                                     
{                                                                     
ffc0ddac:	90 01 00 1c 	stw     r0,28(r1)                              
  unsigned int i;                                                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
ffc0ddb0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
#include <rtems/config.h>                                             
#include <rtems/score/scheduler.h>                                    
#include <rtems/score/schedulercbs.h>                                 
                                                                      
int _Scheduler_CBS_Cleanup (void)                                     
{                                                                     
ffc0ddb4:	93 a1 00 0c 	stw     r29,12(r1)                             
ffc0ddb8:	93 e1 00 14 	stw     r31,20(r1)                             
  unsigned int i;                                                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
ffc0ddbc:	41 9e 00 68 	beq-    cr7,ffc0de24 <_Scheduler_CBS_Cleanup+0x8c><== NEVER TAKEN
ffc0ddc0:	3f a0 00 00 	lis     r29,0                                  
ffc0ddc4:	81 5d 28 f4 	lwz     r10,10484(r29)                         
ffc0ddc8:	3b e0 00 00 	li      r31,0                                  
ffc0ddcc:	3b de 27 d4 	addi    r30,r30,10196                          
    if ( _Scheduler_CBS_Server_list[ i ] )                            
ffc0ddd0:	57 e9 10 3a 	rlwinm  r9,r31,2,0,29                          
ffc0ddd4:	7d 2a 48 2e 	lwzx    r9,r10,r9                              
      _Scheduler_CBS_Destroy_server( i );                             
ffc0ddd8:	7f e3 fb 78 	mr      r3,r31                                 
                                                                      
int _Scheduler_CBS_Cleanup (void)                                     
{                                                                     
  unsigned int i;                                                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
ffc0dddc:	3b ff 00 01 	addi    r31,r31,1                              
    if ( _Scheduler_CBS_Server_list[ i ] )                            
ffc0dde0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0dde4:	41 9e 00 0c 	beq-    cr7,ffc0ddf0 <_Scheduler_CBS_Cleanup+0x58>
      _Scheduler_CBS_Destroy_server( i );                             
ffc0dde8:	48 00 01 95 	bl      ffc0df7c <_Scheduler_CBS_Destroy_server>
ffc0ddec:	81 5d 28 f4 	lwz     r10,10484(r29)                         
                                                                      
int _Scheduler_CBS_Cleanup (void)                                     
{                                                                     
  unsigned int i;                                                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
ffc0ddf0:	81 3e 00 00 	lwz     r9,0(r30)                              
ffc0ddf4:	7f 89 f8 40 	cmplw   cr7,r9,r31                             
ffc0ddf8:	41 9d ff d8 	bgt+    cr7,ffc0ddd0 <_Scheduler_CBS_Cleanup+0x38>
    if ( _Scheduler_CBS_Server_list[ i ] )                            
      _Scheduler_CBS_Destroy_server( i );                             
  }                                                                   
  _Workspace_Free( _Scheduler_CBS_Server_list );                      
ffc0ddfc:	7d 43 53 78 	mr      r3,r10                                 
ffc0de00:	48 00 28 6d 	bl      ffc1066c <_Workspace_Free>             
  return SCHEDULER_CBS_OK;                                            
}                                                                     
ffc0de04:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0de08:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0de0c:	38 60 00 00 	li      r3,0                                   
ffc0de10:	7c 08 03 a6 	mtlr    r0                                     
ffc0de14:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0de18:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0de1c:	38 21 00 18 	addi    r1,r1,24                               
ffc0de20:	4e 80 00 20 	blr                                            
ffc0de24:	3d 20 00 00 	lis     r9,0                                   <== NOT EXECUTED
ffc0de28:	81 49 28 f4 	lwz     r10,10484(r9)                          <== NOT EXECUTED
ffc0de2c:	4b ff ff d0 	b       ffc0ddfc <_Scheduler_CBS_Cleanup+0x64> <== NOT EXECUTED
                                                                      

ffc0de30 <_Scheduler_CBS_Create_server>: int _Scheduler_CBS_Create_server ( Scheduler_CBS_Parameters *params, Scheduler_CBS_Budget_overrun budget_overrun_callback, rtems_id *server_id ) {
ffc0de30:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc0de34:	7c 08 02 a6 	mflr    r0                                     
ffc0de38:	90 01 00 24 	stw     r0,36(r1)                              
  unsigned int i;                                                     
  Scheduler_CBS_Server *the_server;                                   
                                                                      
  if ( params->budget <= 0 ||                                         
ffc0de3c:	81 23 00 04 	lwz     r9,4(r3)                               
int _Scheduler_CBS_Create_server (                                    
  Scheduler_CBS_Parameters     *params,                               
  Scheduler_CBS_Budget_overrun  budget_overrun_callback,              
  rtems_id                     *server_id                             
)                                                                     
{                                                                     
ffc0de40:	93 e1 00 1c 	stw     r31,28(r1)                             
ffc0de44:	7c 7f 1b 78 	mr      r31,r3                                 
  unsigned int i;                                                     
  Scheduler_CBS_Server *the_server;                                   
                                                                      
  if ( params->budget <= 0 ||                                         
ffc0de48:	2f 89 00 00 	cmpwi   cr7,r9,0                               
int _Scheduler_CBS_Create_server (                                    
  Scheduler_CBS_Parameters     *params,                               
  Scheduler_CBS_Budget_overrun  budget_overrun_callback,              
  rtems_id                     *server_id                             
)                                                                     
{                                                                     
ffc0de4c:	93 41 00 08 	stw     r26,8(r1)                              
ffc0de50:	93 61 00 0c 	stw     r27,12(r1)                             
ffc0de54:	93 81 00 10 	stw     r28,16(r1)                             
ffc0de58:	93 a1 00 14 	stw     r29,20(r1)                             
ffc0de5c:	93 c1 00 18 	stw     r30,24(r1)                             
  unsigned int i;                                                     
  Scheduler_CBS_Server *the_server;                                   
                                                                      
  if ( params->budget <= 0 ||                                         
ffc0de60:	40 9d 01 0c 	ble-    cr7,ffc0df6c <_Scheduler_CBS_Create_server+0x13c>
ffc0de64:	81 23 00 00 	lwz     r9,0(r3)                               
ffc0de68:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0de6c:	40 9d 01 00 	ble-    cr7,ffc0df6c <_Scheduler_CBS_Create_server+0x13c>
       params->deadline <= 0 ||                                       
       params->budget >= SCHEDULER_EDF_PRIO_MSB ||                    
       params->deadline >= SCHEDULER_EDF_PRIO_MSB )                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
ffc0de70:	3d 20 00 00 	lis     r9,0                                   
ffc0de74:	81 09 27 d4 	lwz     r8,10196(r9)                           
ffc0de78:	2f 88 00 00 	cmpwi   cr7,r8,0                               
ffc0de7c:	41 9e 00 44 	beq-    cr7,ffc0dec0 <_Scheduler_CBS_Create_server+0x90><== NEVER TAKEN
    if ( !_Scheduler_CBS_Server_list[i] )                             
ffc0de80:	3f 80 00 00 	lis     r28,0                                  
ffc0de84:	83 dc 28 f4 	lwz     r30,10484(r28)                         
ffc0de88:	7c 9b 23 78 	mr      r27,r4                                 
ffc0de8c:	7c bd 2b 78 	mr      r29,r5                                 
ffc0de90:	81 3e 00 00 	lwz     r9,0(r30)                              
ffc0de94:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0de98:	41 9e 00 c8 	beq-    cr7,ffc0df60 <_Scheduler_CBS_Create_server+0x130>
ffc0de9c:	7f ca f3 78 	mr      r10,r30                                
ffc0dea0:	7d 09 03 a6 	mtctr   r8                                     
ffc0dea4:	39 20 00 00 	li      r9,0                                   
ffc0dea8:	48 00 00 10 	b       ffc0deb8 <_Scheduler_CBS_Create_server+0x88>
ffc0deac:	85 0a 00 04 	lwzu    r8,4(r10)                              
ffc0deb0:	2f 88 00 00 	cmpwi   cr7,r8,0                               
ffc0deb4:	41 9e 00 38 	beq-    cr7,ffc0deec <_Scheduler_CBS_Create_server+0xbc>
       params->deadline <= 0 ||                                       
       params->budget >= SCHEDULER_EDF_PRIO_MSB ||                    
       params->deadline >= SCHEDULER_EDF_PRIO_MSB )                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
ffc0deb8:	39 29 00 01 	addi    r9,r9,1                                
ffc0debc:	42 00 ff f0 	bdnz+   ffc0deac <_Scheduler_CBS_Create_server+0x7c>
    if ( !_Scheduler_CBS_Server_list[i] )                             
      break;                                                          
  }                                                                   
                                                                      
  if ( i == _Scheduler_CBS_Maximum_servers )                          
    return SCHEDULER_CBS_ERROR_FULL;                                  
ffc0dec0:	38 60 ff e6 	li      r3,-26                                 
                                                                      
  the_server->parameters = *params;                                   
  the_server->task_id = -1;                                           
  the_server->cbs_budget_overrun = budget_overrun_callback;           
  return SCHEDULER_CBS_OK;                                            
}                                                                     
ffc0dec4:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0dec8:	83 41 00 08 	lwz     r26,8(r1)                              
ffc0decc:	7c 08 03 a6 	mtlr    r0                                     
ffc0ded0:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0ded4:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0ded8:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0dedc:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0dee0:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0dee4:	38 21 00 20 	addi    r1,r1,32                               
ffc0dee8:	4e 80 00 20 	blr                                            
ffc0deec:	55 3a 10 3a 	rlwinm  r26,r9,2,0,29                          
  }                                                                   
                                                                      
  if ( i == _Scheduler_CBS_Maximum_servers )                          
    return SCHEDULER_CBS_ERROR_FULL;                                  
                                                                      
  *server_id = i;                                                     
ffc0def0:	91 3d 00 00 	stw     r9,0(r29)                              
  _Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)   
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
ffc0def4:	38 60 00 10 	li      r3,16                                  
ffc0def8:	48 00 27 5d 	bl      ffc10654 <_Workspace_Allocate>         
  the_server = _Scheduler_CBS_Server_list[*server_id];                
ffc0defc:	81 3d 00 00 	lwz     r9,0(r29)                              
                                                                      
  if ( i == _Scheduler_CBS_Maximum_servers )                          
    return SCHEDULER_CBS_ERROR_FULL;                                  
                                                                      
  *server_id = i;                                                     
  _Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)   
ffc0df00:	7c 7e d1 2e 	stwx    r3,r30,r26                             
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
  the_server = _Scheduler_CBS_Server_list[*server_id];                
ffc0df04:	55 29 10 3a 	rlwinm  r9,r9,2,0,29                           
ffc0df08:	81 5c 28 f4 	lwz     r10,10484(r28)                         
ffc0df0c:	7d 2a 48 2e 	lwzx    r9,r10,r9                              
  if ( !the_server )                                                  
ffc0df10:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0df14:	41 9e 00 60 	beq-    cr7,ffc0df74 <_Scheduler_CBS_Create_server+0x144><== NEVER TAKEN
                                                                      
  the_server->parameters = *params;                                   
  the_server->task_id = -1;                                           
  the_server->cbs_budget_overrun = budget_overrun_callback;           
  return SCHEDULER_CBS_OK;                                            
}                                                                     
ffc0df18:	80 01 00 24 	lwz     r0,36(r1)                              
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
                                                                      
  the_server->parameters = *params;                                   
  the_server->task_id = -1;                                           
  the_server->cbs_budget_overrun = budget_overrun_callback;           
  return SCHEDULER_CBS_OK;                                            
ffc0df1c:	38 60 00 00 	li      r3,0                                   
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
  the_server = _Scheduler_CBS_Server_list[*server_id];                
  if ( !the_server )                                                  
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
                                                                      
  the_server->parameters = *params;                                   
ffc0df20:	81 5f 00 00 	lwz     r10,0(r31)                             
  the_server->task_id = -1;                                           
  the_server->cbs_budget_overrun = budget_overrun_callback;           
  return SCHEDULER_CBS_OK;                                            
}                                                                     
ffc0df24:	7c 08 03 a6 	mtlr    r0                                     
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
  the_server = _Scheduler_CBS_Server_list[*server_id];                
  if ( !the_server )                                                  
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
                                                                      
  the_server->parameters = *params;                                   
ffc0df28:	81 7f 00 04 	lwz     r11,4(r31)                             
ffc0df2c:	91 49 00 04 	stw     r10,4(r9)                              
  the_server->task_id = -1;                                           
ffc0df30:	39 40 ff ff 	li      r10,-1                                 
  the_server->cbs_budget_overrun = budget_overrun_callback;           
ffc0df34:	93 69 00 0c 	stw     r27,12(r9)                             
  return SCHEDULER_CBS_OK;                                            
}                                                                     
ffc0df38:	83 41 00 08 	lwz     r26,8(r1)                              
ffc0df3c:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0df40:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0df44:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0df48:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0df4c:	83 e1 00 1c 	lwz     r31,28(r1)                             
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
  the_server = _Scheduler_CBS_Server_list[*server_id];                
  if ( !the_server )                                                  
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
                                                                      
  the_server->parameters = *params;                                   
ffc0df50:	91 69 00 08 	stw     r11,8(r9)                              
  the_server->task_id = -1;                                           
ffc0df54:	91 49 00 00 	stw     r10,0(r9)                              
  the_server->cbs_budget_overrun = budget_overrun_callback;           
  return SCHEDULER_CBS_OK;                                            
}                                                                     
ffc0df58:	38 21 00 20 	addi    r1,r1,32                               
ffc0df5c:	4e 80 00 20 	blr                                            
       params->budget >= SCHEDULER_EDF_PRIO_MSB ||                    
       params->deadline >= SCHEDULER_EDF_PRIO_MSB )                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
    if ( !_Scheduler_CBS_Server_list[i] )                             
ffc0df60:	3b 40 00 00 	li      r26,0                                  
ffc0df64:	39 20 00 00 	li      r9,0                                   
ffc0df68:	4b ff ff 88 	b       ffc0def0 <_Scheduler_CBS_Create_server+0xc0>
                                                                      
  if ( params->budget <= 0 ||                                         
       params->deadline <= 0 ||                                       
       params->budget >= SCHEDULER_EDF_PRIO_MSB ||                    
       params->deadline >= SCHEDULER_EDF_PRIO_MSB )                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
ffc0df6c:	38 60 ff ee 	li      r3,-18                                 
ffc0df70:	4b ff ff 54 	b       ffc0dec4 <_Scheduler_CBS_Create_server+0x94>
  *server_id = i;                                                     
  _Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)   
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
  the_server = _Scheduler_CBS_Server_list[*server_id];                
  if ( !the_server )                                                  
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
ffc0df74:	38 60 ff ef 	li      r3,-17                                 <== NOT EXECUTED
ffc0df78:	4b ff ff 4c 	b       ffc0dec4 <_Scheduler_CBS_Create_server+0x94><== NOT EXECUTED
                                                                      

ffc0e020 <_Scheduler_CBS_Detach_thread>: int _Scheduler_CBS_Detach_thread ( Scheduler_CBS_Server_id server_id, rtems_id task_id ) {
ffc0e020:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc0e024:	7c 08 02 a6 	mflr    r0                                     
ffc0e028:	93 c1 00 20 	stw     r30,32(r1)                             
ffc0e02c:	7c 9e 23 78 	mr      r30,r4                                 
  Objects_Locations location;                                         
  Thread_Control *the_thread;                                         
  Scheduler_CBS_Per_thread *sched_info;                               
                                                                      
  the_thread = _Thread_Get(task_id, &location);                       
ffc0e030:	38 81 00 08 	addi    r4,r1,8                                
                                                                      
int _Scheduler_CBS_Detach_thread (                                    
  Scheduler_CBS_Server_id server_id,                                  
  rtems_id                task_id                                     
)                                                                     
{                                                                     
ffc0e034:	93 a1 00 1c 	stw     r29,28(r1)                             
ffc0e038:	7c 7d 1b 78 	mr      r29,r3                                 
  Objects_Locations location;                                         
  Thread_Control *the_thread;                                         
  Scheduler_CBS_Per_thread *sched_info;                               
                                                                      
  the_thread = _Thread_Get(task_id, &location);                       
ffc0e03c:	7f c3 f3 78 	mr      r3,r30                                 
                                                                      
int _Scheduler_CBS_Detach_thread (                                    
  Scheduler_CBS_Server_id server_id,                                  
  rtems_id                task_id                                     
)                                                                     
{                                                                     
ffc0e040:	93 e1 00 24 	stw     r31,36(r1)                             
ffc0e044:	90 01 00 2c 	stw     r0,44(r1)                              
  Objects_Locations location;                                         
  Thread_Control *the_thread;                                         
  Scheduler_CBS_Per_thread *sched_info;                               
                                                                      
  the_thread = _Thread_Get(task_id, &location);                       
ffc0e048:	48 00 11 7d 	bl      ffc0f1c4 <_Thread_Get>                 
  /* The routine _Thread_Get may disable dispatch and not enable again. */
  if ( the_thread ) {                                                 
ffc0e04c:	7c 7f 1b 79 	mr.     r31,r3                                 
ffc0e050:	41 82 00 88 	beq-    ffc0e0d8 <_Scheduler_CBS_Detach_thread+0xb8>
    _Thread_Enable_dispatch();                                        
ffc0e054:	48 00 11 55 	bl      ffc0f1a8 <_Thread_Enable_dispatch>     
  }                                                                   
                                                                      
  if ( server_id >= _Scheduler_CBS_Maximum_servers )                  
ffc0e058:	3d 20 00 00 	lis     r9,0                                   
ffc0e05c:	81 29 27 d4 	lwz     r9,10196(r9)                           
ffc0e060:	7f 9d 48 40 	cmplw   cr7,r29,r9                             
ffc0e064:	40 9c 00 74 	bge-    cr7,ffc0e0d8 <_Scheduler_CBS_Detach_thread+0xb8>
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
  if ( !the_thread )                                                  
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
  /* Server is not valid. */                                          
  if ( !_Scheduler_CBS_Server_list[server_id] )                       
ffc0e068:	3d 20 00 00 	lis     r9,0                                   
ffc0e06c:	81 29 28 f4 	lwz     r9,10484(r9)                           
ffc0e070:	57 bd 10 3a 	rlwinm  r29,r29,2,0,29                         
ffc0e074:	7d 29 e8 2e 	lwzx    r9,r9,r29                              
ffc0e078:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0e07c:	41 9e 00 7c 	beq-    cr7,ffc0e0f8 <_Scheduler_CBS_Detach_thread+0xd8>
    return SCHEDULER_CBS_ERROR_NOSERVER;                              
  /* Thread and server are not attached. */                           
  if ( _Scheduler_CBS_Server_list[server_id]->task_id != task_id )    
ffc0e080:	81 49 00 00 	lwz     r10,0(r9)                              
ffc0e084:	7f 8a f0 00 	cmpw    cr7,r10,r30                            
ffc0e088:	40 9e 00 50 	bne-    cr7,ffc0e0d8 <_Scheduler_CBS_Detach_thread+0xb8><== NEVER TAKEN
                                                                      
  _Scheduler_CBS_Server_list[server_id]->task_id = -1;                
  sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
  sched_info->cbs_server = NULL;                                      
                                                                      
  the_thread->budget_algorithm = the_thread->Start.budget_algorithm;  
ffc0e08c:	80 df 00 a0 	lwz     r6,160(r31)                            
    return SCHEDULER_CBS_ERROR_NOSERVER;                              
  /* Thread and server are not attached. */                           
  if ( _Scheduler_CBS_Server_list[server_id]->task_id != task_id )    
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
                                                                      
  _Scheduler_CBS_Server_list[server_id]->task_id = -1;                
ffc0e090:	38 a0 ff ff 	li      r5,-1                                  
  sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
  sched_info->cbs_server = NULL;                                      
                                                                      
  the_thread->budget_algorithm = the_thread->Start.budget_algorithm;  
  the_thread->budget_callout   = the_thread->Start.budget_callout;    
ffc0e094:	80 ff 00 a4 	lwz     r7,164(r31)                            
  the_thread->is_preemptible   = the_thread->Start.is_preemptible;    
                                                                      
  return SCHEDULER_CBS_OK;                                            
ffc0e098:	38 60 00 00 	li      r3,0                                   
  sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
  sched_info->cbs_server = NULL;                                      
                                                                      
  the_thread->budget_algorithm = the_thread->Start.budget_algorithm;  
  the_thread->budget_callout   = the_thread->Start.budget_callout;    
  the_thread->is_preemptible   = the_thread->Start.is_preemptible;    
ffc0e09c:	89 1f 00 9c 	lbz     r8,156(r31)                            
  if ( _Scheduler_CBS_Server_list[server_id]->task_id != task_id )    
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
                                                                      
  _Scheduler_CBS_Server_list[server_id]->task_id = -1;                
  sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
  sched_info->cbs_server = NULL;                                      
ffc0e0a0:	81 5f 00 88 	lwz     r10,136(r31)                           
    return SCHEDULER_CBS_ERROR_NOSERVER;                              
  /* Thread and server are not attached. */                           
  if ( _Scheduler_CBS_Server_list[server_id]->task_id != task_id )    
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
                                                                      
  _Scheduler_CBS_Server_list[server_id]->task_id = -1;                
ffc0e0a4:	90 a9 00 00 	stw     r5,0(r9)                               
  sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
  sched_info->cbs_server = NULL;                                      
ffc0e0a8:	39 20 00 00 	li      r9,0                                   
ffc0e0ac:	91 2a 00 18 	stw     r9,24(r10)                             
                                                                      
  the_thread->budget_algorithm = the_thread->Start.budget_algorithm;  
ffc0e0b0:	90 df 00 78 	stw     r6,120(r31)                            
  the_thread->budget_callout   = the_thread->Start.budget_callout;    
ffc0e0b4:	90 ff 00 7c 	stw     r7,124(r31)                            
  the_thread->is_preemptible   = the_thread->Start.is_preemptible;    
ffc0e0b8:	99 1f 00 70 	stb     r8,112(r31)                            
                                                                      
  return SCHEDULER_CBS_OK;                                            
}                                                                     
ffc0e0bc:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc0e0c0:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc0e0c4:	7c 08 03 a6 	mtlr    r0                                     
ffc0e0c8:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc0e0cc:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc0e0d0:	38 21 00 28 	addi    r1,r1,40                               
ffc0e0d4:	4e 80 00 20 	blr                                            
ffc0e0d8:	80 01 00 2c 	lwz     r0,44(r1)                              
  if ( the_thread ) {                                                 
    _Thread_Enable_dispatch();                                        
  }                                                                   
                                                                      
  if ( server_id >= _Scheduler_CBS_Maximum_servers )                  
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
ffc0e0dc:	38 60 ff ee 	li      r3,-18                                 
  the_thread->budget_algorithm = the_thread->Start.budget_algorithm;  
  the_thread->budget_callout   = the_thread->Start.budget_callout;    
  the_thread->is_preemptible   = the_thread->Start.is_preemptible;    
                                                                      
  return SCHEDULER_CBS_OK;                                            
}                                                                     
ffc0e0e0:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc0e0e4:	7c 08 03 a6 	mtlr    r0                                     
ffc0e0e8:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc0e0ec:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc0e0f0:	38 21 00 28 	addi    r1,r1,40                               
ffc0e0f4:	4e 80 00 20 	blr                                            
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
  if ( !the_thread )                                                  
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
  /* Server is not valid. */                                          
  if ( !_Scheduler_CBS_Server_list[server_id] )                       
    return SCHEDULER_CBS_ERROR_NOSERVER;                              
ffc0e0f8:	38 60 ff e7 	li      r3,-25                                 
ffc0e0fc:	4b ff ff c0 	b       ffc0e0bc <_Scheduler_CBS_Detach_thread+0x9c>
                                                                      

ffc0e384 <_Scheduler_CBS_Get_server_id>: rtems_id task_id, Scheduler_CBS_Server_id *server_id ) { unsigned int i; for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
ffc0e384:	3d 20 00 00 	lis     r9,0                                   
ffc0e388:	81 29 27 d4 	lwz     r9,10196(r9)                           
ffc0e38c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0e390:	41 9e 00 38 	beq-    cr7,ffc0e3c8 <_Scheduler_CBS_Get_server_id+0x44><== NEVER TAKEN
#include <rtems/system.h>                                             
#include <rtems/config.h>                                             
#include <rtems/score/scheduler.h>                                    
#include <rtems/score/schedulercbs.h>                                 
                                                                      
int _Scheduler_CBS_Get_server_id (                                    
ffc0e394:	3d 40 00 00 	lis     r10,0                                  
  rtems_id                 task_id,                                   
  Scheduler_CBS_Server_id *server_id                                  
)                                                                     
{                                                                     
  unsigned int i;                                                     
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
ffc0e398:	7d 29 03 a6 	mtctr   r9                                     
#include <rtems/system.h>                                             
#include <rtems/config.h>                                             
#include <rtems/score/scheduler.h>                                    
#include <rtems/score/schedulercbs.h>                                 
                                                                      
int _Scheduler_CBS_Get_server_id (                                    
ffc0e39c:	81 4a 28 f4 	lwz     r10,10484(r10)                         
  rtems_id                 task_id,                                   
  Scheduler_CBS_Server_id *server_id                                  
)                                                                     
{                                                                     
  unsigned int i;                                                     
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
ffc0e3a0:	39 00 00 00 	li      r8,0                                   
#include <rtems/system.h>                                             
#include <rtems/config.h>                                             
#include <rtems/score/scheduler.h>                                    
#include <rtems/score/schedulercbs.h>                                 
                                                                      
int _Scheduler_CBS_Get_server_id (                                    
ffc0e3a4:	39 4a ff fc 	addi    r10,r10,-4                             
  Scheduler_CBS_Server_id *server_id                                  
)                                                                     
{                                                                     
  unsigned int i;                                                     
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
    if ( _Scheduler_CBS_Server_list[i] &&                             
ffc0e3a8:	85 2a 00 04 	lwzu    r9,4(r10)                              
ffc0e3ac:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0e3b0:	41 9e 00 10 	beq-    cr7,ffc0e3c0 <_Scheduler_CBS_Get_server_id+0x3c>
ffc0e3b4:	81 29 00 00 	lwz     r9,0(r9)                               
ffc0e3b8:	7f 89 18 00 	cmpw    cr7,r9,r3                              
ffc0e3bc:	41 9e 00 14 	beq-    cr7,ffc0e3d0 <_Scheduler_CBS_Get_server_id+0x4c>
  rtems_id                 task_id,                                   
  Scheduler_CBS_Server_id *server_id                                  
)                                                                     
{                                                                     
  unsigned int i;                                                     
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
ffc0e3c0:	39 08 00 01 	addi    r8,r8,1                                
ffc0e3c4:	42 00 ff e4 	bdnz+   ffc0e3a8 <_Scheduler_CBS_Get_server_id+0x24>
         _Scheduler_CBS_Server_list[i]->task_id == task_id ) {        
      *server_id = i;                                                 
      return SCHEDULER_CBS_OK;                                        
    }                                                                 
  }                                                                   
  return SCHEDULER_CBS_ERROR_NOSERVER;                                
ffc0e3c8:	38 60 ff e7 	li      r3,-25                                 
}                                                                     
ffc0e3cc:	4e 80 00 20 	blr                                            
{                                                                     
  unsigned int i;                                                     
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
    if ( _Scheduler_CBS_Server_list[i] &&                             
         _Scheduler_CBS_Server_list[i]->task_id == task_id ) {        
      *server_id = i;                                                 
ffc0e3d0:	91 04 00 00 	stw     r8,0(r4)                               
      return SCHEDULER_CBS_OK;                                        
ffc0e3d4:	38 60 00 00 	li      r3,0                                   
ffc0e3d8:	4e 80 00 20 	blr                                            
                                                                      

ffc0e464 <_Scheduler_CBS_Initialize>: int _Scheduler_CBS_Initialize(void) {
ffc0e464:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0e468:	7c 08 02 a6 	mflr    r0                                     
ffc0e46c:	93 e1 00 0c 	stw     r31,12(r1)                             
  unsigned int i;                                                     
  _Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
      _Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
ffc0e470:	3f e0 00 00 	lis     r31,0                                  
ffc0e474:	80 7f 27 d4 	lwz     r3,10196(r31)                          
    sched_info->cbs_server->cbs_budget_overrun( server_id );          
  }                                                                   
}                                                                     
                                                                      
int _Scheduler_CBS_Initialize(void)                                   
{                                                                     
ffc0e478:	90 01 00 14 	stw     r0,20(r1)                              
  unsigned int i;                                                     
  _Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
ffc0e47c:	54 63 10 3a 	rlwinm  r3,r3,2,0,29                           
ffc0e480:	48 00 21 d5 	bl      ffc10654 <_Workspace_Allocate>         
ffc0e484:	3d 00 00 00 	lis     r8,0                                   
      _Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
  if ( !_Scheduler_CBS_Server_list )                                  
ffc0e488:	2f 83 00 00 	cmpwi   cr7,r3,0                               
}                                                                     
                                                                      
int _Scheduler_CBS_Initialize(void)                                   
{                                                                     
  unsigned int i;                                                     
  _Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
ffc0e48c:	90 68 28 f4 	stw     r3,10484(r8)                           
      _Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
  if ( !_Scheduler_CBS_Server_list )                                  
ffc0e490:	41 9e 00 4c 	beq-    cr7,ffc0e4dc <_Scheduler_CBS_Initialize+0x78><== NEVER TAKEN
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
  for (i = 0; i<_Scheduler_CBS_Maximum_servers; i++) {                
ffc0e494:	81 5f 27 d4 	lwz     r10,10196(r31)                         
ffc0e498:	39 20 00 00 	li      r9,0                                   
    _Scheduler_CBS_Server_list[i] = NULL;                             
ffc0e49c:	38 e0 00 00 	li      r7,0                                   
  unsigned int i;                                                     
  _Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
      _Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
  if ( !_Scheduler_CBS_Server_list )                                  
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
  for (i = 0; i<_Scheduler_CBS_Maximum_servers; i++) {                
ffc0e4a0:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
    _Scheduler_CBS_Server_list[i] = NULL;                             
ffc0e4a4:	7d 49 03 a6 	mtctr   r10                                    
  unsigned int i;                                                     
  _Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
      _Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
  if ( !_Scheduler_CBS_Server_list )                                  
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
  for (i = 0; i<_Scheduler_CBS_Maximum_servers; i++) {                
ffc0e4a8:	40 be 00 0c 	bne+    cr7,ffc0e4b4 <_Scheduler_CBS_Initialize+0x50><== ALWAYS TAKEN
ffc0e4ac:	48 00 00 18 	b       ffc0e4c4 <_Scheduler_CBS_Initialize+0x60><== NOT EXECUTED
ffc0e4b0:	80 68 28 f4 	lwz     r3,10484(r8)                           
    _Scheduler_CBS_Server_list[i] = NULL;                             
ffc0e4b4:	55 2a 10 3a 	rlwinm  r10,r9,2,0,29                          
ffc0e4b8:	7c e3 51 2e 	stwx    r7,r3,r10                              
  unsigned int i;                                                     
  _Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
      _Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
  if ( !_Scheduler_CBS_Server_list )                                  
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
  for (i = 0; i<_Scheduler_CBS_Maximum_servers; i++) {                
ffc0e4bc:	39 29 00 01 	addi    r9,r9,1                                
ffc0e4c0:	42 00 ff f0 	bdnz+   ffc0e4b0 <_Scheduler_CBS_Initialize+0x4c>
    _Scheduler_CBS_Server_list[i] = NULL;                             
  }                                                                   
  return SCHEDULER_CBS_OK;                                            
ffc0e4c4:	38 60 00 00 	li      r3,0                                   
}                                                                     
ffc0e4c8:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0e4cc:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0e4d0:	7c 08 03 a6 	mtlr    r0                                     
ffc0e4d4:	38 21 00 10 	addi    r1,r1,16                               
ffc0e4d8:	4e 80 00 20 	blr                                            
{                                                                     
  unsigned int i;                                                     
  _Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
      _Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
  if ( !_Scheduler_CBS_Server_list )                                  
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
ffc0e4dc:	38 60 ff ef 	li      r3,-17                                 <== NOT EXECUTED
ffc0e4e0:	4b ff ff e8 	b       ffc0e4c8 <_Scheduler_CBS_Initialize+0x64><== NOT EXECUTED
                                                                      

ffc0c9c4 <_Scheduler_CBS_Release_job>: Scheduler_CBS_Per_thread *sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info; Scheduler_CBS_Server *serv_info = (Scheduler_CBS_Server *) sched_info->cbs_server; if (deadline) {
ffc0c9c4:	2c 04 00 00 	cmpwi   r4,0                                   
{                                                                     
  Priority_Control new_priority;                                      
  Scheduler_CBS_Per_thread *sched_info =                              
    (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;          
  Scheduler_CBS_Server *serv_info =                                   
    (Scheduler_CBS_Server *) sched_info->cbs_server;                  
ffc0c9c8:	81 23 00 88 	lwz     r9,136(r3)                             
)                                                                     
{                                                                     
  Priority_Control new_priority;                                      
  Scheduler_CBS_Per_thread *sched_info =                              
    (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;          
  Scheduler_CBS_Server *serv_info =                                   
ffc0c9cc:	81 29 00 18 	lwz     r9,24(r9)                              
    (Scheduler_CBS_Server *) sched_info->cbs_server;                  
                                                                      
  if (deadline) {                                                     
    /* Initializing or shifting deadline. */                          
    if (serv_info)                                                    
ffc0c9d0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
  Scheduler_CBS_Per_thread *sched_info =                              
    (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;          
  Scheduler_CBS_Server *serv_info =                                   
    (Scheduler_CBS_Server *) sched_info->cbs_server;                  
                                                                      
  if (deadline) {                                                     
ffc0c9d4:	41 82 00 30 	beq-    ffc0ca04 <_Scheduler_CBS_Release_job+0x40>
    /* Initializing or shifting deadline. */                          
    if (serv_info)                                                    
ffc0c9d8:	41 9e 00 38 	beq-    cr7,ffc0ca10 <_Scheduler_CBS_Release_job+0x4c>
      new_priority = (_Watchdog_Ticks_since_boot + serv_info->parameters.deadline)
ffc0c9dc:	3d 40 00 00 	lis     r10,0                                  
ffc0c9e0:	80 8a 28 e8 	lwz     r4,10472(r10)                          
ffc0c9e4:	81 49 00 04 	lwz     r10,4(r9)                              
ffc0c9e8:	7c 84 52 14 	add     r4,r4,r10                              
ffc0c9ec:	54 84 00 7e 	clrlwi  r4,r4,1                                
    new_priority = the_thread->Start.initial_priority;                
  }                                                                   
                                                                      
  /* Budget replenishment for the next job. */                        
  if (serv_info)                                                      
    the_thread->cpu_time_budget = serv_info->parameters.budget;       
ffc0c9f0:	81 29 00 08 	lwz     r9,8(r9)                               
ffc0c9f4:	91 23 00 74 	stw     r9,116(r3)                             
                                                                      
  the_thread->real_priority = new_priority;                           
ffc0c9f8:	90 83 00 18 	stw     r4,24(r3)                              
  _Thread_Change_priority(the_thread, new_priority, true);            
ffc0c9fc:	38 a0 00 01 	li      r5,1                                   
ffc0ca00:	48 00 05 94 	b       ffc0cf94 <_Thread_Change_priority>     
      new_priority = (_Watchdog_Ticks_since_boot + deadline)          
        & ~SCHEDULER_EDF_PRIO_MSB;                                    
  }                                                                   
  else {                                                              
    /* Switch back to background priority. */                         
    new_priority = the_thread->Start.initial_priority;                
ffc0ca04:	80 83 00 ac 	lwz     r4,172(r3)                             
  }                                                                   
                                                                      
  /* Budget replenishment for the next job. */                        
  if (serv_info)                                                      
ffc0ca08:	40 9e ff e8 	bne+    cr7,ffc0c9f0 <_Scheduler_CBS_Release_job+0x2c><== ALWAYS TAKEN
ffc0ca0c:	4b ff ff ec 	b       ffc0c9f8 <_Scheduler_CBS_Release_job+0x34><== NOT EXECUTED
    /* Initializing or shifting deadline. */                          
    if (serv_info)                                                    
      new_priority = (_Watchdog_Ticks_since_boot + serv_info->parameters.deadline)
        & ~SCHEDULER_EDF_PRIO_MSB;                                    
    else                                                              
      new_priority = (_Watchdog_Ticks_since_boot + deadline)          
ffc0ca10:	3d 20 00 00 	lis     r9,0                                   
ffc0ca14:	81 29 28 e8 	lwz     r9,10472(r9)                           
ffc0ca18:	7c 84 4a 14 	add     r4,r4,r9                               
ffc0ca1c:	54 84 00 7e 	clrlwi  r4,r4,1                                
ffc0ca20:	4b ff ff d8 	b       ffc0c9f8 <_Scheduler_CBS_Release_job+0x34>
                                                                      

ffc0ca24 <_Scheduler_CBS_Unblock>: #include <rtems/score/schedulercbs.h> void _Scheduler_CBS_Unblock( Thread_Control *the_thread ) {
ffc0ca24:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0ca28:	7c 08 02 a6 	mflr    r0                                     
ffc0ca2c:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc0ca30:	7c 7f 1b 78 	mr      r31,r3                                 
ffc0ca34:	90 01 00 14 	stw     r0,20(r1)                              
ffc0ca38:	93 c1 00 08 	stw     r30,8(r1)                              
  Scheduler_CBS_Per_thread *sched_info;                               
  Scheduler_CBS_Server *serv_info;                                    
  Priority_Control new_priority;                                      
                                                                      
  _Scheduler_EDF_Enqueue(the_thread);                                 
ffc0ca3c:	48 00 01 6d 	bl      ffc0cba8 <_Scheduler_EDF_Enqueue>      
  /* TODO: flash critical section? */                                 
                                                                      
  sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
  serv_info = (Scheduler_CBS_Server *) sched_info->cbs_server;        
ffc0ca40:	81 3f 00 88 	lwz     r9,136(r31)                            
ffc0ca44:	81 29 00 18 	lwz     r9,24(r9)                              
   * Late unblock rule for deadline-driven tasks. The remaining time to
   * deadline must be sufficient to serve the remaining computation time
   * without increased utilization of this task. It might cause a deadline
   * miss of another task.                                            
   */                                                                 
  if (serv_info) {                                                    
ffc0ca48:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0ca4c:	41 9e 00 58 	beq-    cr7,ffc0caa4 <_Scheduler_CBS_Unblock+0x80>
    time_t deadline = serv_info->parameters.deadline;                 
    time_t budget = serv_info->parameters.budget;                     
    time_t deadline_left = the_thread->cpu_time_budget;               
    time_t budget_left = the_thread->real_priority -                  
ffc0ca50:	3d 00 00 00 	lis     r8,0                                   
ffc0ca54:	81 5f 00 18 	lwz     r10,24(r31)                            
ffc0ca58:	81 08 28 e8 	lwz     r8,10472(r8)                           
                           _Watchdog_Ticks_since_boot;                
                                                                      
    if ( deadline*budget_left > budget*deadline_left ) {              
ffc0ca5c:	80 c9 00 04 	lwz     r6,4(r9)                               
ffc0ca60:	80 e9 00 08 	lwz     r7,8(r9)                               
   */                                                                 
  if (serv_info) {                                                    
    time_t deadline = serv_info->parameters.deadline;                 
    time_t budget = serv_info->parameters.budget;                     
    time_t deadline_left = the_thread->cpu_time_budget;               
    time_t budget_left = the_thread->real_priority -                  
ffc0ca64:	7d 08 50 50 	subf    r8,r8,r10                              
                           _Watchdog_Ticks_since_boot;                
                                                                      
    if ( deadline*budget_left > budget*deadline_left ) {              
ffc0ca68:	81 3f 00 74 	lwz     r9,116(r31)                            
ffc0ca6c:	7d 08 31 d6 	mullw   r8,r8,r6                               
ffc0ca70:	7d 27 49 d6 	mullw   r9,r7,r9                               
ffc0ca74:	7f 88 48 00 	cmpw    cr7,r8,r9                              
ffc0ca78:	40 9d 00 2c 	ble-    cr7,ffc0caa4 <_Scheduler_CBS_Unblock+0x80>
      /* Put late unblocked task to background until the end of period. */
      new_priority = the_thread->Start.initial_priority;              
ffc0ca7c:	80 9f 00 ac 	lwz     r4,172(r31)                            
      if ( the_thread->real_priority != new_priority )                
ffc0ca80:	7f 8a 20 00 	cmpw    cr7,r10,r4                             
ffc0ca84:	41 9e 00 08 	beq-    cr7,ffc0ca8c <_Scheduler_CBS_Unblock+0x68>
        the_thread->real_priority = new_priority;                     
ffc0ca88:	90 9f 00 18 	stw     r4,24(r31)                             
      if ( the_thread->current_priority != new_priority )             
ffc0ca8c:	80 7f 00 14 	lwz     r3,20(r31)                             
ffc0ca90:	7f 83 20 00 	cmpw    cr7,r3,r4                              
ffc0ca94:	41 9e 00 14 	beq-    cr7,ffc0caa8 <_Scheduler_CBS_Unblock+0x84>
        _Thread_Change_priority(the_thread, new_priority, true);      
ffc0ca98:	7f e3 fb 78 	mr      r3,r31                                 
ffc0ca9c:	38 a0 00 01 	li      r5,1                                   
ffc0caa0:	48 00 04 f5 	bl      ffc0cf94 <_Thread_Change_priority>     
ffc0caa4:	80 7f 00 14 	lwz     r3,20(r31)                             
   *    a context switch.                                             
   *  Pseudo-ISR case:                                                
   *    Even if the thread isn't preemptible, if the new heir is      
   *    a pseudo-ISR system task, we need to do a context switch.     
   */                                                                 
  if ( _Scheduler_Is_priority_higher_than( the_thread->current_priority,
ffc0caa8:	3f c0 00 00 	lis     r30,0                                  
ffc0caac:	3b de 32 40 	addi    r30,r30,12864                          
ffc0cab0:	3d 40 00 00 	lis     r10,0                                  
ffc0cab4:	81 3e 00 14 	lwz     r9,20(r30)                             
ffc0cab8:	81 4a 20 b0 	lwz     r10,8368(r10)                          
ffc0cabc:	80 89 00 14 	lwz     r4,20(r9)                              
ffc0cac0:	7d 49 03 a6 	mtctr   r10                                    
ffc0cac4:	4e 80 04 21 	bctrl                                          
ffc0cac8:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0cacc:	40 9d 00 20 	ble-    cr7,ffc0caec <_Scheduler_CBS_Unblock+0xc8>
       _Thread_Heir->current_priority)) {                             
    _Thread_Heir = the_thread;                                        
    if ( _Thread_Executing->is_preemptible ||                         
ffc0cad0:	81 3e 00 10 	lwz     r9,16(r30)                             
   *    Even if the thread isn't preemptible, if the new heir is      
   *    a pseudo-ISR system task, we need to do a context switch.     
   */                                                                 
  if ( _Scheduler_Is_priority_higher_than( the_thread->current_priority,
       _Thread_Heir->current_priority)) {                             
    _Thread_Heir = the_thread;                                        
ffc0cad4:	93 fe 00 14 	stw     r31,20(r30)                            
    if ( _Thread_Executing->is_preemptible ||                         
ffc0cad8:	89 29 00 70 	lbz     r9,112(r9)                             
ffc0cadc:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0cae0:	41 9e 00 24 	beq-    cr7,ffc0cb04 <_Scheduler_CBS_Unblock+0xe0>
         the_thread->current_priority == 0 )                          
      _Thread_Dispatch_necessary = true;                              
ffc0cae4:	39 20 00 01 	li      r9,1                                   
ffc0cae8:	99 3e 00 0c 	stb     r9,12(r30)                             
  }                                                                   
}                                                                     
ffc0caec:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0caf0:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0caf4:	7c 08 03 a6 	mtlr    r0                                     
ffc0caf8:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0cafc:	38 21 00 10 	addi    r1,r1,16                               
ffc0cb00:	4e 80 00 20 	blr                                            
   *    a pseudo-ISR system task, we need to do a context switch.     
   */                                                                 
  if ( _Scheduler_Is_priority_higher_than( the_thread->current_priority,
       _Thread_Heir->current_priority)) {                             
    _Thread_Heir = the_thread;                                        
    if ( _Thread_Executing->is_preemptible ||                         
ffc0cb04:	81 3f 00 14 	lwz     r9,20(r31)                             
ffc0cb08:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0cb0c:	41 9e ff d8 	beq+    cr7,ffc0cae4 <_Scheduler_CBS_Unblock+0xc0><== NEVER TAKEN
         the_thread->current_priority == 0 )                          
      _Thread_Dispatch_necessary = true;                              
  }                                                                   
}                                                                     
ffc0cb10:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0cb14:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0cb18:	7c 08 03 a6 	mtlr    r0                                     
ffc0cb1c:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0cb20:	38 21 00 10 	addi    r1,r1,16                               
ffc0cb24:	4e 80 00 20 	blr                                            
                                                                      

ffc0c974 <_Scheduler_EDF_Allocate>: #include <rtems/score/wkspace.h> void *_Scheduler_EDF_Allocate( Thread_Control *the_thread ) {
ffc0c974:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0c978:	7c 08 02 a6 	mflr    r0                                     
ffc0c97c:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc0c980:	7c 7f 1b 78 	mr      r31,r3                                 
  void *sched;                                                        
  Scheduler_EDF_Per_thread *schinfo;                                  
                                                                      
  sched = _Workspace_Allocate( sizeof(Scheduler_EDF_Per_thread) );    
ffc0c984:	38 60 00 18 	li      r3,24                                  
#include <rtems/score/wkspace.h>                                      
                                                                      
void *_Scheduler_EDF_Allocate(                                        
  Thread_Control      *the_thread                                     
)                                                                     
{                                                                     
ffc0c988:	90 01 00 14 	stw     r0,20(r1)                              
  void *sched;                                                        
  Scheduler_EDF_Per_thread *schinfo;                                  
                                                                      
  sched = _Workspace_Allocate( sizeof(Scheduler_EDF_Per_thread) );    
ffc0c98c:	48 00 21 c9 	bl      ffc0eb54 <_Workspace_Allocate>         
                                                                      
  if ( sched ) {                                                      
ffc0c990:	2c 03 00 00 	cmpwi   r3,0                                   
ffc0c994:	41 82 00 14 	beq-    ffc0c9a8 <_Scheduler_EDF_Allocate+0x34><== NEVER TAKEN
    the_thread->scheduler_info = sched;                               
    schinfo = (Scheduler_EDF_Per_thread *)(the_thread->scheduler_info);
    schinfo->thread = the_thread;                                     
    schinfo->queue_state = SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN;  
ffc0c998:	39 40 00 02 	li      r10,2                                  
  Scheduler_EDF_Per_thread *schinfo;                                  
                                                                      
  sched = _Workspace_Allocate( sizeof(Scheduler_EDF_Per_thread) );    
                                                                      
  if ( sched ) {                                                      
    the_thread->scheduler_info = sched;                               
ffc0c99c:	90 7f 00 88 	stw     r3,136(r31)                            
    schinfo = (Scheduler_EDF_Per_thread *)(the_thread->scheduler_info);
    schinfo->thread = the_thread;                                     
ffc0c9a0:	93 e3 00 00 	stw     r31,0(r3)                              
    schinfo->queue_state = SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN;  
ffc0c9a4:	91 43 00 14 	stw     r10,20(r3)                             
  }                                                                   
                                                                      
  return sched;                                                       
}                                                                     
ffc0c9a8:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0c9ac:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0c9b0:	7c 08 03 a6 	mtlr    r0                                     
ffc0c9b4:	38 21 00 10 	addi    r1,r1,16                               
ffc0c9b8:	4e 80 00 20 	blr                                            
                                                                      

ffc0cbc4 <_Scheduler_EDF_Unblock>: #include <rtems/score/scheduleredf.h> void _Scheduler_EDF_Unblock( Thread_Control *the_thread ) {
ffc0cbc4:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0cbc8:	7c 08 02 a6 	mflr    r0                                     
ffc0cbcc:	93 e1 00 0c 	stw     r31,12(r1)                             
   *    a context switch.                                             
   *  Pseudo-ISR case:                                                
   *    Even if the thread isn't preemptible, if the new heir is      
   *    a pseudo-ISR system task, we need to do a context switch.     
   */                                                                 
  if ( _Scheduler_Is_priority_lower_than(                             
ffc0cbd0:	3f e0 00 00 	lis     r31,0                                  
ffc0cbd4:	3b ff 32 40 	addi    r31,r31,12864                          
#include <rtems/score/scheduleredf.h>                                 
                                                                      
void _Scheduler_EDF_Unblock(                                          
  Thread_Control    *the_thread                                       
)                                                                     
{                                                                     
ffc0cbd8:	90 01 00 14 	stw     r0,20(r1)                              
ffc0cbdc:	93 c1 00 08 	stw     r30,8(r1)                              
ffc0cbe0:	7c 7e 1b 78 	mr      r30,r3                                 
  _Scheduler_EDF_Enqueue(the_thread);                                 
ffc0cbe4:	4b ff fe 59 	bl      ffc0ca3c <_Scheduler_EDF_Enqueue>      
ffc0cbe8:	3d 20 00 00 	lis     r9,0                                   
   *    a context switch.                                             
   *  Pseudo-ISR case:                                                
   *    Even if the thread isn't preemptible, if the new heir is      
   *    a pseudo-ISR system task, we need to do a context switch.     
   */                                                                 
  if ( _Scheduler_Is_priority_lower_than(                             
ffc0cbec:	81 5f 00 14 	lwz     r10,20(r31)                            
ffc0cbf0:	81 29 20 b0 	lwz     r9,8368(r9)                            
ffc0cbf4:	80 6a 00 14 	lwz     r3,20(r10)                             
ffc0cbf8:	80 9e 00 14 	lwz     r4,20(r30)                             
ffc0cbfc:	7d 29 03 a6 	mtctr   r9                                     
ffc0cc00:	4e 80 04 21 	bctrl                                          
ffc0cc04:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0cc08:	41 9c 00 1c 	blt-    cr7,ffc0cc24 <_Scheduler_EDF_Unblock+0x60>
    _Thread_Heir = the_thread;                                        
    if ( _Thread_Executing->is_preemptible ||                         
         the_thread->current_priority == 0 )                          
      _Thread_Dispatch_necessary = true;                              
  }                                                                   
}                                                                     
ffc0cc0c:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0cc10:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0cc14:	7c 08 03 a6 	mtlr    r0                                     
ffc0cc18:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0cc1c:	38 21 00 10 	addi    r1,r1,16                               
ffc0cc20:	4e 80 00 20 	blr                                            
   */                                                                 
  if ( _Scheduler_Is_priority_lower_than(                             
         _Thread_Heir->current_priority,                              
         the_thread->current_priority )) {                            
    _Thread_Heir = the_thread;                                        
    if ( _Thread_Executing->is_preemptible ||                         
ffc0cc24:	81 3f 00 10 	lwz     r9,16(r31)                             
   *    a pseudo-ISR system task, we need to do a context switch.     
   */                                                                 
  if ( _Scheduler_Is_priority_lower_than(                             
         _Thread_Heir->current_priority,                              
         the_thread->current_priority )) {                            
    _Thread_Heir = the_thread;                                        
ffc0cc28:	93 df 00 14 	stw     r30,20(r31)                            
    if ( _Thread_Executing->is_preemptible ||                         
ffc0cc2c:	89 29 00 70 	lbz     r9,112(r9)                             
ffc0cc30:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0cc34:	41 9e 00 24 	beq-    cr7,ffc0cc58 <_Scheduler_EDF_Unblock+0x94>
         the_thread->current_priority == 0 )                          
      _Thread_Dispatch_necessary = true;                              
ffc0cc38:	39 20 00 01 	li      r9,1                                   
ffc0cc3c:	99 3f 00 0c 	stb     r9,12(r31)                             
  }                                                                   
}                                                                     
ffc0cc40:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0cc44:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0cc48:	7c 08 03 a6 	mtlr    r0                                     
ffc0cc4c:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0cc50:	38 21 00 10 	addi    r1,r1,16                               
ffc0cc54:	4e 80 00 20 	blr                                            
   */                                                                 
  if ( _Scheduler_Is_priority_lower_than(                             
         _Thread_Heir->current_priority,                              
         the_thread->current_priority )) {                            
    _Thread_Heir = the_thread;                                        
    if ( _Thread_Executing->is_preemptible ||                         
ffc0cc58:	81 3e 00 14 	lwz     r9,20(r30)                             
ffc0cc5c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0cc60:	40 be ff ac 	bne-    cr7,ffc0cc0c <_Scheduler_EDF_Unblock+0x48><== ALWAYS TAKEN
         the_thread->current_priority == 0 )                          
      _Thread_Dispatch_necessary = true;                              
ffc0cc64:	39 20 00 01 	li      r9,1                                   <== NOT EXECUTED
ffc0cc68:	99 3f 00 0c 	stb     r9,12(r31)                             <== NOT EXECUTED
ffc0cc6c:	4b ff ff d4 	b       ffc0cc40 <_Scheduler_EDF_Unblock+0x7c> <== NOT EXECUTED
                                                                      

ffc0be58 <_Scheduler_priority_Block>: ) { Scheduler_priority_Per_thread *sched_info; Chain_Control *ready; sched_info = (Scheduler_priority_Per_thread *) the_thread->scheduler_info;
ffc0be58:	81 43 00 88 	lwz     r10,136(r3)                            
  ready      = sched_info->ready_chain;                               
ffc0be5c:	81 2a 00 00 	lwz     r9,0(r10)                              
                                                                      
  if ( _Chain_Has_only_one_node( ready ) ) {                          
ffc0be60:	80 e9 00 00 	lwz     r7,0(r9)                               
ffc0be64:	81 09 00 08 	lwz     r8,8(r9)                               
ffc0be68:	7f 87 40 00 	cmpw    cr7,r7,r8                              
ffc0be6c:	41 9e 00 40 	beq-    cr7,ffc0beac <_Scheduler_priority_Block+0x54>
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
ffc0be70:	81 23 00 00 	lwz     r9,0(r3)                               
  previous       = the_node->previous;                                
ffc0be74:	81 43 00 04 	lwz     r10,4(r3)                              
  next->previous = previous;                                          
ffc0be78:	91 49 00 04 	stw     r10,4(r9)                              
  previous->next = next;                                              
ffc0be7c:	91 2a 00 00 	stw     r9,0(r10)                              
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_heir (                           
  const Thread_Control *the_thread                                    
)                                                                     
{                                                                     
  return ( the_thread == _Thread_Heir );                              
ffc0be80:	3d 20 00 00 	lis     r9,0                                   
ffc0be84:	39 29 31 a0 	addi    r9,r9,12704                            
{                                                                     
  _Scheduler_priority_Ready_queue_extract( the_thread );              
                                                                      
  /* TODO: flash critical section? */                                 
                                                                      
  if ( _Thread_Is_heir( the_thread ) )                                
ffc0be88:	81 49 00 14 	lwz     r10,20(r9)                             
ffc0be8c:	7f 83 50 00 	cmpw    cr7,r3,r10                             
ffc0be90:	41 9e 00 64 	beq-    cr7,ffc0bef4 <_Scheduler_priority_Block+0x9c>
     _Scheduler_priority_Schedule_body();                             
                                                                      
  if ( _Thread_Is_executing( the_thread ) )                           
ffc0be94:	81 49 00 10 	lwz     r10,16(r9)                             
ffc0be98:	7f 83 50 00 	cmpw    cr7,r3,r10                             
ffc0be9c:	4c be 00 20 	bnelr+  cr7                                    
    _Thread_Dispatch_necessary = true;                                
ffc0bea0:	39 40 00 01 	li      r10,1                                  
ffc0bea4:	99 49 00 0c 	stb     r10,12(r9)                             
ffc0bea8:	4e 80 00 20 	blr                                            
                                                                      
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove (                  
  Priority_bit_map_Information *the_priority_map                      
)                                                                     
{                                                                     
  *the_priority_map->minor &= the_priority_map->block_minor;          
ffc0beac:	81 0a 00 04 	lwz     r8,4(r10)                              
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
ffc0beb0:	38 a9 00 04 	addi    r5,r9,4                                
ffc0beb4:	80 ea 00 14 	lwz     r7,20(r10)                             
ffc0beb8:	80 c8 00 00 	lwz     r6,0(r8)                               
                                                                      
  head->next = tail;                                                  
ffc0bebc:	90 a9 00 00 	stw     r5,0(r9)                               
ffc0bec0:	7c c7 38 38 	and     r7,r6,r7                               
  if ( *the_priority_map->minor == 0 )                                
ffc0bec4:	2f 87 00 00 	cmpwi   cr7,r7,0                               
  head->previous = NULL;                                              
  tail->previous = head;                                              
ffc0bec8:	91 29 00 08 	stw     r9,8(r9)                               
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
ffc0becc:	38 c0 00 00 	li      r6,0                                   
ffc0bed0:	90 c9 00 04 	stw     r6,4(r9)                               
                                                                      
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove (                  
  Priority_bit_map_Information *the_priority_map                      
)                                                                     
{                                                                     
  *the_priority_map->minor &= the_priority_map->block_minor;          
ffc0bed4:	90 e8 00 00 	stw     r7,0(r8)                               
  if ( *the_priority_map->minor == 0 )                                
ffc0bed8:	40 be ff a8 	bne-    cr7,ffc0be80 <_Scheduler_priority_Block+0x28>
    _Priority_Major_bit_map &= the_priority_map->block_major;         
ffc0bedc:	3d 20 00 00 	lis     r9,0                                   
ffc0bee0:	81 4a 00 10 	lwz     r10,16(r10)                            
ffc0bee4:	81 09 28 94 	lwz     r8,10388(r9)                           
ffc0bee8:	7d 0a 50 38 	and     r10,r8,r10                             
ffc0beec:	91 49 28 94 	stw     r10,10388(r9)                          
ffc0bef0:	4b ff ff 90 	b       ffc0be80 <_Scheduler_priority_Block+0x28>
RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void )
{                                                                     
  Priority_bit_map_Control minor;                                     
  Priority_bit_map_Control major;                                     
                                                                      
  _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );         
ffc0bef4:	3d 60 00 00 	lis     r11,0                                  
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
    (Chain_Control *) _Scheduler.information                          
ffc0bef8:	3d 40 00 00 	lis     r10,0                                  
ffc0befc:	81 0b 28 94 	lwz     r8,10388(r11)                          
ffc0bf00:	80 ea 20 80 	lwz     r7,8320(r10)                           
ffc0bf04:	7d 04 00 34 	cntlzw  r4,r8                                  
  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );        
ffc0bf08:	3c a0 00 00 	lis     r5,0                                   
RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void )
{                                                                     
  Priority_bit_map_Control minor;                                     
  Priority_bit_map_Control major;                                     
                                                                      
  _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );         
ffc0bf0c:	91 0b 28 94 	stw     r8,10388(r11)                          
  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );        
ffc0bf10:	38 a5 31 e0 	addi    r5,r5,12768                            
ffc0bf14:	54 86 10 3a 	rlwinm  r6,r4,2,0,29                           
ffc0bf18:	7d 45 30 2e 	lwzx    r10,r5,r6                              
ffc0bf1c:	7d 48 00 34 	cntlzw  r8,r10                                 
                                                                      
  return (_Priority_Bits_index( major ) << 4) +                       
ffc0bf20:	54 84 20 36 	rlwinm  r4,r4,4,0,27                           
{                                                                     
  Priority_bit_map_Control minor;                                     
  Priority_bit_map_Control major;                                     
                                                                      
  _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );         
  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );        
ffc0bf24:	7d 45 31 2e 	stwx    r10,r5,r6                              
                                                                      
  return (_Priority_Bits_index( major ) << 4) +                       
ffc0bf28:	7d 04 42 14 	add     r8,r4,r8                               
  Chain_Control       *the_ready_queue                                
)                                                                     
{                                                                     
  Priority_Control index = _Priority_bit_map_Get_highest();           
                                                                      
  if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )                
ffc0bf2c:	1d 08 00 0c 	mulli   r8,r8,12                               
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
ffc0bf30:	7d 47 40 2e 	lwzx    r10,r7,r8                              
ffc0bf34:	7c c7 42 14 	add     r6,r7,r8                               
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
ffc0bf38:	39 06 00 04 	addi    r8,r6,4                                
ffc0bf3c:	7f 8a 40 00 	cmpw    cr7,r10,r8                             
ffc0bf40:	41 9e 00 0c 	beq-    cr7,ffc0bf4c <_Scheduler_priority_Block+0xf4><== NEVER TAKEN
 *                                                                    
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
ffc0bf44:	91 49 00 14 	stw     r10,20(r9)                             
ffc0bf48:	4b ff ff 4c 	b       ffc0be94 <_Scheduler_priority_Block+0x3c>
  Priority_Control index = _Priority_bit_map_Get_highest();           
                                                                      
  if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )                
    return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
                                                                      
  return NULL;                                                        
ffc0bf4c:	39 40 00 00 	li      r10,0                                  <== NOT EXECUTED
 *                                                                    
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
ffc0bf50:	91 49 00 14 	stw     r10,20(r9)                             <== NOT EXECUTED
ffc0bf54:	4b ff ff 40 	b       ffc0be94 <_Scheduler_priority_Block+0x3c><== NOT EXECUTED
                                                                      

ffc0c114 <_Scheduler_priority_Schedule>: RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void ) { Priority_bit_map_Control minor; Priority_bit_map_Control major; _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );
ffc0c114:	3c 80 00 00 	lis     r4,0                                   
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
    (Chain_Control *) _Scheduler.information                          
ffc0c118:	3d 20 00 00 	lis     r9,0                                   
ffc0c11c:	81 44 28 94 	lwz     r10,10388(r4)                          
ffc0c120:	81 09 20 80 	lwz     r8,8320(r9)                            
ffc0c124:	7d 45 00 34 	cntlzw  r5,r10                                 
  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );        
ffc0c128:	3c c0 00 00 	lis     r6,0                                   
RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void )
{                                                                     
  Priority_bit_map_Control minor;                                     
  Priority_bit_map_Control major;                                     
                                                                      
  _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );         
ffc0c12c:	91 44 28 94 	stw     r10,10388(r4)                          
  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );        
ffc0c130:	38 c6 31 e0 	addi    r6,r6,12768                            
ffc0c134:	54 a7 10 3a 	rlwinm  r7,r5,2,0,29                           
ffc0c138:	7d 26 38 2e 	lwzx    r9,r6,r7                               
ffc0c13c:	7d 24 00 34 	cntlzw  r4,r9                                  
                                                                      
  return (_Priority_Bits_index( major ) << 4) +                       
ffc0c140:	54 aa 20 36 	rlwinm  r10,r5,4,0,27                          
{                                                                     
  Priority_bit_map_Control minor;                                     
  Priority_bit_map_Control major;                                     
                                                                      
  _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );         
  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );        
ffc0c144:	7d 26 39 2e 	stwx    r9,r6,r7                               
                                                                      
  return (_Priority_Bits_index( major ) << 4) +                       
ffc0c148:	7d 4a 22 14 	add     r10,r10,r4                             
  Chain_Control       *the_ready_queue                                
)                                                                     
{                                                                     
  Priority_Control index = _Priority_bit_map_Get_highest();           
                                                                      
  if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )                
ffc0c14c:	1d 4a 00 0c 	mulli   r10,r10,12                             
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
ffc0c150:	7d 28 50 2e 	lwzx    r9,r8,r10                              
ffc0c154:	7c e8 52 14 	add     r7,r8,r10                              
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
ffc0c158:	39 47 00 04 	addi    r10,r7,4                               
ffc0c15c:	7f 89 50 00 	cmpw    cr7,r9,r10                             
ffc0c160:	41 9e 00 10 	beq-    cr7,ffc0c170 <_Scheduler_priority_Schedule+0x5c><== NEVER TAKEN
 *                                                                    
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
ffc0c164:	3d 40 00 00 	lis     r10,0                                  
ffc0c168:	91 2a 31 b4 	stw     r9,12724(r10)                          
ffc0c16c:	4e 80 00 20 	blr                                            
  Priority_Control index = _Priority_bit_map_Get_highest();           
                                                                      
  if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )                
    return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
                                                                      
  return NULL;                                                        
ffc0c170:	39 20 00 00 	li      r9,0                                   <== NOT EXECUTED
 *                                                                    
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
ffc0c174:	3d 40 00 00 	lis     r10,0                                  <== NOT EXECUTED
ffc0c178:	91 2a 31 b4 	stw     r9,12724(r10)                          <== NOT EXECUTED
ffc0c17c:	4e 80 00 20 	blr                                            <== NOT EXECUTED
                                                                      

ffc0cb0c <_Scheduler_simple_Ready_queue_enqueue_first>: { Chain_Control *ready; Chain_Node *the_node; Thread_Control *current; ready = (Chain_Control *)_Scheduler.information;
ffc0cb0c:	3d 20 00 00 	lis     r9,0                                   
   */                                                                 
  for ( the_node = _Chain_First(ready) ; ; the_node = the_node->next ) {
    current = (Thread_Control *) the_node;                            
                                                                      
    /* break when AT HEAD OF (or PAST) our priority */                
    if ( the_thread->current_priority <= current->current_priority ) {
ffc0cb10:	81 03 00 14 	lwz     r8,20(r3)                              
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
ffc0cb14:	81 29 20 80 	lwz     r9,8320(r9)                            
ffc0cb18:	81 29 00 00 	lwz     r9,0(r9)                               
ffc0cb1c:	81 49 00 14 	lwz     r10,20(r9)                             
ffc0cb20:	7f 8a 40 40 	cmplw   cr7,r10,r8                             
ffc0cb24:	40 9c 00 14 	bge-    cr7,ffc0cb38 <_Scheduler_simple_Ready_queue_enqueue_first+0x2c>
   * Do NOT need to check for end of chain because there is always    
   * at least one task on the ready chain -- the IDLE task.  It can   
   * never block, should never attempt to obtain a semaphore or mutex,
   * and thus will always be there.                                   
   */                                                                 
  for ( the_node = _Chain_First(ready) ; ; the_node = the_node->next ) {
ffc0cb28:	81 29 00 00 	lwz     r9,0(r9)                               
    current = (Thread_Control *) the_node;                            
                                                                      
    /* break when AT HEAD OF (or PAST) our priority */                
    if ( the_thread->current_priority <= current->current_priority ) {
ffc0cb2c:	81 49 00 14 	lwz     r10,20(r9)                             
ffc0cb30:	7f 8a 40 40 	cmplw   cr7,r10,r8                             
ffc0cb34:	41 9c ff f4 	blt+    cr7,ffc0cb28 <_Scheduler_simple_Ready_queue_enqueue_first+0x1c><== NEVER TAKEN
      current = (Thread_Control *)current->Object.Node.previous;      
ffc0cb38:	81 29 00 04 	lwz     r9,4(r9)                               
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
ffc0cb3c:	81 49 00 00 	lwz     r10,0(r9)                              
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
ffc0cb40:	91 23 00 04 	stw     r9,4(r3)                               
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
ffc0cb44:	90 69 00 00 	stw     r3,0(r9)                               
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
ffc0cb48:	90 6a 00 04 	stw     r3,4(r10)                              
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
ffc0cb4c:	91 43 00 00 	stw     r10,0(r3)                              
ffc0cb50:	4e 80 00 20 	blr                                            
                                                                      

ffc0a958 <_TOD_Validate>: uint32_t days_in_month; uint32_t ticks_per_second; ticks_per_second = TOD_MICROSECONDS_PER_SECOND / rtems_configuration_get_microseconds_per_tick(); if ((!the_tod) ||
ffc0a958:	7c 69 1b 79 	mr.     r9,r3                                  
{                                                                     
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
	    rtems_configuration_get_microseconds_per_tick();                 
ffc0a95c:	3d 40 ff c2 	lis     r10,-62                                
)                                                                     
{                                                                     
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
ffc0a960:	81 4a 13 44 	lwz     r10,4932(r10)                          
ffc0a964:	3d 00 00 0f 	lis     r8,15                                  
ffc0a968:	61 08 42 40 	ori     r8,r8,16960                            
ffc0a96c:	7c e8 53 96 	divwu   r7,r8,r10                              
	    rtems_configuration_get_microseconds_per_tick();                 
  if ((!the_tod)                                  ||                  
ffc0a970:	41 82 00 90 	beq-    ffc0aa00 <_TOD_Validate+0xa8>          <== NEVER TAKEN
ffc0a974:	81 49 00 18 	lwz     r10,24(r9)                             
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
      (the_tod->day    == 0) )                                        
     return false;                                                    
ffc0a978:	38 60 00 00 	li      r3,0                                   
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
	    rtems_configuration_get_microseconds_per_tick();                 
  if ((!the_tod)                                  ||                  
ffc0a97c:	7f 87 50 40 	cmplw   cr7,r7,r10                             
ffc0a980:	4c 9d 00 20 	blelr   cr7                                    
      (the_tod->ticks  >= ticks_per_second)       ||                  
ffc0a984:	81 49 00 14 	lwz     r10,20(r9)                             
ffc0a988:	2b 8a 00 3b 	cmplwi  cr7,r10,59                             
ffc0a98c:	4d 9d 00 20 	bgtlr   cr7                                    
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                  
ffc0a990:	81 49 00 10 	lwz     r10,16(r9)                             
ffc0a994:	2b 8a 00 3b 	cmplwi  cr7,r10,59                             
ffc0a998:	4d 9d 00 20 	bgtlr   cr7                                    
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                  
ffc0a99c:	81 49 00 0c 	lwz     r10,12(r9)                             
ffc0a9a0:	2b 8a 00 17 	cmplwi  cr7,r10,23                             
ffc0a9a4:	4d 9d 00 20 	bgtlr   cr7                                    
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
ffc0a9a8:	81 49 00 04 	lwz     r10,4(r9)                              
	    rtems_configuration_get_microseconds_per_tick();                 
  if ((!the_tod)                                  ||                  
      (the_tod->ticks  >= ticks_per_second)       ||                  
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                  
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                  
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
ffc0a9ac:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0a9b0:	4d 9e 00 20 	beqlr   cr7                                    
      (the_tod->month  == 0)                      ||                  
ffc0a9b4:	2b 8a 00 0c 	cmplwi  cr7,r10,12                             
ffc0a9b8:	4d 9d 00 20 	bgtlr   cr7                                    
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
ffc0a9bc:	81 09 00 00 	lwz     r8,0(r9)                               
      (the_tod->ticks  >= ticks_per_second)       ||                  
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                  
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                  
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
ffc0a9c0:	2b 88 07 c3 	cmplwi  cr7,r8,1987                            
ffc0a9c4:	4c 9d 00 20 	blelr   cr7                                    
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
      (the_tod->day    == 0) )                                        
ffc0a9c8:	81 29 00 08 	lwz     r9,8(r9)                               
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                  
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                  
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
ffc0a9cc:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0a9d0:	4d 9e 00 20 	beqlr   cr7                                    
      (the_tod->day    == 0) )                                        
     return false;                                                    
                                                                      
  if ( (the_tod->year % 4) == 0 )                                     
ffc0a9d4:	71 07 00 03 	andi.   r7,r8,3                                
ffc0a9d8:	40 82 00 30 	bne-    ffc0aa08 <_TOD_Validate+0xb0>          
    days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];       
ffc0a9dc:	39 4a 00 0d 	addi    r10,r10,13                             
ffc0a9e0:	3d 00 ff c2 	lis     r8,-62                                 
ffc0a9e4:	55 4a 10 3a 	rlwinm  r10,r10,2,0,29                         
ffc0a9e8:	39 08 2b 90 	addi    r8,r8,11152                            
ffc0a9ec:	7c 68 50 2e 	lwzx    r3,r8,r10                              
  else                                                                
    days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ];       
                                                                      
  if ( the_tod->day > days_in_month )                                 
ffc0a9f0:	7c 69 18 10 	subfc   r3,r9,r3                               
ffc0a9f4:	38 60 00 00 	li      r3,0                                   
ffc0a9f8:	7c 63 19 14 	adde    r3,r3,r3                               
ffc0a9fc:	4e 80 00 20 	blr                                            
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
      (the_tod->day    == 0) )                                        
     return false;                                                    
ffc0aa00:	38 60 00 00 	li      r3,0                                   <== NOT EXECUTED
                                                                      
  if ( the_tod->day > days_in_month )                                 
    return false;                                                     
                                                                      
  return true;                                                        
}                                                                     
ffc0aa04:	4e 80 00 20 	blr                                            <== NOT EXECUTED
     return false;                                                    
                                                                      
  if ( (the_tod->year % 4) == 0 )                                     
    days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];       
  else                                                                
    days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ];       
ffc0aa08:	3d 00 ff c2 	lis     r8,-62                                 
ffc0aa0c:	55 4a 10 3a 	rlwinm  r10,r10,2,0,29                         
ffc0aa10:	39 08 2b 90 	addi    r8,r8,11152                            
ffc0aa14:	7c 68 50 2e 	lwzx    r3,r8,r10                              
ffc0aa18:	4b ff ff d8 	b       ffc0a9f0 <_TOD_Validate+0x98>          
                                                                      

ffc0c434 <_Thread_Change_priority>: void _Thread_Change_priority( Thread_Control *the_thread, Priority_Control new_priority, bool prepend_it ) {
ffc0c434:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0c438:	7c 08 02 a6 	mflr    r0                                     
ffc0c43c:	90 01 00 1c 	stw     r0,28(r1)                              
ffc0c440:	93 e1 00 14 	stw     r31,20(r1)                             
ffc0c444:	7c 7f 1b 78 	mr      r31,r3                                 
ffc0c448:	93 81 00 08 	stw     r28,8(r1)                              
ffc0c44c:	7c bc 2b 78 	mr      r28,r5                                 
ffc0c450:	93 a1 00 0c 	stw     r29,12(r1)                             
ffc0c454:	93 c1 00 10 	stw     r30,16(r1)                             
ffc0c458:	7c 9e 23 78 	mr      r30,r4                                 
  States_Control state, original_state;                               
                                                                      
  /*                                                                  
   * Save original state                                              
   */                                                                 
  original_state = the_thread->current_state;                         
ffc0c45c:	83 a3 00 10 	lwz     r29,16(r3)                             
  /*                                                                  
   * Set a transient state for the thread so it is pulled off the Ready chains.
   * This will prevent it from being scheduled no matter what happens in an
   * ISR.                                                             
   */                                                                 
  _Thread_Set_transient( the_thread );                                
ffc0c460:	48 00 11 c1 	bl      ffc0d620 <_Thread_Set_transient>       
                                                                      
  /*                                                                  
   *  Do not bother recomputing all the priority related information if
   *  we are not REALLY changing priority.                            
   */                                                                 
 if ( the_thread->current_priority != new_priority )                  
ffc0c464:	81 3f 00 14 	lwz     r9,20(r31)                             
ffc0c468:	7f 89 f0 00 	cmpw    cr7,r9,r30                             
ffc0c46c:	41 9e 00 10 	beq-    cr7,ffc0c47c <_Thread_Change_priority+0x48>
    _Thread_Set_priority( the_thread, new_priority );                 
ffc0c470:	7f e3 fb 78 	mr      r3,r31                                 
ffc0c474:	7f c4 f3 78 	mr      r4,r30                                 
ffc0c478:	48 00 11 1d 	bl      ffc0d594 <_Thread_Set_priority>        
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0c47c:	7f c0 00 a6 	mfmsr   r30                                    
ffc0c480:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc0c484:	7f c9 48 78 	andc    r9,r30,r9                              
ffc0c488:	7d 20 01 24 	mtmsr   r9                                     
                                                                      
  /*                                                                  
   *  If the thread has more than STATES_TRANSIENT set, then it is blocked,
   *  If it is blocked on a thread queue, then we need to requeue it. 
   */                                                                 
  state = the_thread->current_state;                                  
ffc0c48c:	81 3f 00 10 	lwz     r9,16(r31)                             
  if ( state != STATES_TRANSIENT ) {                                  
ffc0c490:	2f 89 00 04 	cmpwi   cr7,r9,4                               
ffc0c494:	41 9e 00 84 	beq-    cr7,ffc0c518 <_Thread_Change_priority+0xe4>
    /* Only clear the transient state if it wasn't set already */     
    if ( ! _States_Is_transient( original_state ) )                   
ffc0c498:	73 a8 00 04 	andi.   r8,r29,4                               
ffc0c49c:	41 82 00 38 	beq-    ffc0c4d4 <_Thread_Change_priority+0xa0><== ALWAYS TAKEN
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0c4a0:	7f c0 01 24 	mtmsr   r30                                    <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_ON_THREAD_QUEUE);              
ffc0c4a4:	3d 40 00 03 	lis     r10,3                                  <== NOT EXECUTED
ffc0c4a8:	61 4a be e0 	ori     r10,r10,48864                          <== NOT EXECUTED
      the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
    _ISR_Enable( level );                                             
    if ( _States_Is_waiting_on_thread_queue( state ) ) {              
ffc0c4ac:	7d 28 50 39 	and.    r8,r9,r10                              <== NOT EXECUTED
ffc0c4b0:	40 82 00 40 	bne-    ffc0c4f0 <_Thread_Change_priority+0xbc><== NOT EXECUTED
                                                                      
  if ( !_Thread_Is_executing_also_the_heir() &&                       
       _Thread_Executing->is_preemptible )                            
    _Thread_Dispatch_necessary = true;                                
  _ISR_Enable( level );                                               
}                                                                     
ffc0c4b4:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0c4b8:	83 81 00 08 	lwz     r28,8(r1)                              
ffc0c4bc:	7c 08 03 a6 	mtlr    r0                                     
ffc0c4c0:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0c4c4:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0c4c8:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0c4cc:	38 21 00 18 	addi    r1,r1,24                               
ffc0c4d0:	4e 80 00 20 	blr                                            
RTEMS_INLINE_ROUTINE States_Control _States_Clear (                   
  States_Control states_to_clear,                                     
  States_Control current_state                                        
)                                                                     
{                                                                     
   return (current_state & ~states_to_clear);                         
ffc0c4d4:	55 2a 07 b8 	rlwinm  r10,r9,0,30,28                         
   */                                                                 
  state = the_thread->current_state;                                  
  if ( state != STATES_TRANSIENT ) {                                  
    /* Only clear the transient state if it wasn't set already */     
    if ( ! _States_Is_transient( original_state ) )                   
      the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
ffc0c4d8:	91 5f 00 10 	stw     r10,16(r31)                            
ffc0c4dc:	7f c0 01 24 	mtmsr   r30                                    
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_ON_THREAD_QUEUE);              
ffc0c4e0:	3d 40 00 03 	lis     r10,3                                  
ffc0c4e4:	61 4a be e0 	ori     r10,r10,48864                          
    _ISR_Enable( level );                                             
    if ( _States_Is_waiting_on_thread_queue( state ) ) {              
ffc0c4e8:	7d 28 50 39 	and.    r8,r9,r10                              
ffc0c4ec:	41 82 ff c8 	beq+    ffc0c4b4 <_Thread_Change_priority+0x80>
                                                                      
  if ( !_Thread_Is_executing_also_the_heir() &&                       
       _Thread_Executing->is_preemptible )                            
    _Thread_Dispatch_necessary = true;                                
  _ISR_Enable( level );                                               
}                                                                     
ffc0c4f0:	80 01 00 1c 	lwz     r0,28(r1)                              
    /* Only clear the transient state if it wasn't set already */     
    if ( ! _States_Is_transient( original_state ) )                   
      the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
    _ISR_Enable( level );                                             
    if ( _States_Is_waiting_on_thread_queue( state ) ) {              
      _Thread_queue_Requeue( the_thread->Wait.queue, the_thread );    
ffc0c4f4:	7f e4 fb 78 	mr      r4,r31                                 
ffc0c4f8:	80 7f 00 44 	lwz     r3,68(r31)                             
                                                                      
  if ( !_Thread_Is_executing_also_the_heir() &&                       
       _Thread_Executing->is_preemptible )                            
    _Thread_Dispatch_necessary = true;                                
  _ISR_Enable( level );                                               
}                                                                     
ffc0c4fc:	7c 08 03 a6 	mtlr    r0                                     
ffc0c500:	83 81 00 08 	lwz     r28,8(r1)                              
ffc0c504:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0c508:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0c50c:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0c510:	38 21 00 18 	addi    r1,r1,24                               
    /* Only clear the transient state if it wasn't set already */     
    if ( ! _States_Is_transient( original_state ) )                   
      the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
    _ISR_Enable( level );                                             
    if ( _States_Is_waiting_on_thread_queue( state ) ) {              
      _Thread_queue_Requeue( the_thread->Wait.queue, the_thread );    
ffc0c514:	48 00 0f 88 	b       ffc0d49c <_Thread_queue_Requeue>       
    }                                                                 
    return;                                                           
  }                                                                   
                                                                      
  /* Only clear the transient state if it wasn't set already */       
  if ( ! _States_Is_transient( original_state ) ) {                   
ffc0c518:	73 a9 00 04 	andi.   r9,r29,4                               
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue_first(                   
  Thread_Control    *the_thread                                       
)                                                                     
{                                                                     
  _Scheduler.Operations.enqueue_first( the_thread );                  
ffc0c51c:	3f a0 00 00 	lis     r29,0                                  
ffc0c520:	3b bd 20 80 	addi    r29,r29,8320                           
ffc0c524:	40 82 00 20 	bne-    ffc0c544 <_Thread_Change_priority+0x110><== NEVER TAKEN
     *  the TRANSIENT state.  So we have to place it on the appropriate
     *  Ready Queue with interrupts off.                              
     */                                                               
    the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
                                                                      
    if ( prepend_it )                                                 
ffc0c528:	2f 9c 00 00 	cmpwi   cr7,r28,0                              
     *  Interrupts are STILL disabled.                                
     *  We now know the thread will be in the READY state when we remove
     *  the TRANSIENT state.  So we have to place it on the appropriate
     *  Ready Queue with interrupts off.                              
     */                                                               
    the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
ffc0c52c:	91 3f 00 10 	stw     r9,16(r31)                             
                                                                      
    if ( prepend_it )                                                 
ffc0c530:	41 9e 00 7c 	beq-    cr7,ffc0c5ac <_Thread_Change_priority+0x178>
ffc0c534:	81 3d 00 28 	lwz     r9,40(r29)                             
ffc0c538:	7f e3 fb 78 	mr      r3,r31                                 
ffc0c53c:	7d 29 03 a6 	mtctr   r9                                     
ffc0c540:	4e 80 04 21 	bctrl                                          
                                                                      
static inline void ppc_interrupt_flash( uint32_t level )              
{                                                                     
  uint32_t current_level;                                             
                                                                      
  __asm__ volatile (                                                  
ffc0c544:	7d 20 00 a6 	mfmsr   r9                                     
ffc0c548:	7f c0 01 24 	mtmsr   r30                                    
ffc0c54c:	7d 20 01 24 	mtmsr   r9                                     
 *  This kernel routine implements the scheduling decision logic for  
 *  the scheduler. It does NOT dispatch.                              
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_Schedule( void )                 
{                                                                     
  _Scheduler.Operations.schedule();                                   
ffc0c550:	81 3d 00 08 	lwz     r9,8(r29)                              
ffc0c554:	7d 29 03 a6 	mtctr   r9                                     
ffc0c558:	4e 80 04 21 	bctrl                                          
 *  is also the heir thread, and false otherwise.                     
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing_also_the_heir( void )  
{                                                                     
  return ( _Thread_Executing == _Thread_Heir );                       
ffc0c55c:	3d 20 00 00 	lis     r9,0                                   
ffc0c560:	39 29 31 a0 	addi    r9,r9,12704                            
ffc0c564:	81 49 00 10 	lwz     r10,16(r9)                             
   *  We altered the set of thread priorities.  So let's figure out   
   *  who is the heir and if we need to switch to them.               
   */                                                                 
  _Scheduler_Schedule();                                              
                                                                      
  if ( !_Thread_Is_executing_also_the_heir() &&                       
ffc0c568:	81 09 00 14 	lwz     r8,20(r9)                              
ffc0c56c:	7f 8a 40 00 	cmpw    cr7,r10,r8                             
ffc0c570:	41 9e 00 18 	beq-    cr7,ffc0c588 <_Thread_Change_priority+0x154>
ffc0c574:	89 4a 00 70 	lbz     r10,112(r10)                           
ffc0c578:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0c57c:	41 9e 00 0c 	beq-    cr7,ffc0c588 <_Thread_Change_priority+0x154>
       _Thread_Executing->is_preemptible )                            
    _Thread_Dispatch_necessary = true;                                
ffc0c580:	39 40 00 01 	li      r10,1                                  
ffc0c584:	99 49 00 0c 	stb     r10,12(r9)                             
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0c588:	7f c0 01 24 	mtmsr   r30                                    
  _ISR_Enable( level );                                               
}                                                                     
ffc0c58c:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0c590:	83 81 00 08 	lwz     r28,8(r1)                              
ffc0c594:	7c 08 03 a6 	mtlr    r0                                     
ffc0c598:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0c59c:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0c5a0:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0c5a4:	38 21 00 18 	addi    r1,r1,24                               
ffc0c5a8:	4e 80 00 20 	blr                                            
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue(                         
  Thread_Control    *the_thread                                       
)                                                                     
{                                                                     
  _Scheduler.Operations.enqueue( the_thread );                        
ffc0c5ac:	81 3d 00 24 	lwz     r9,36(r29)                             
ffc0c5b0:	7f e3 fb 78 	mr      r3,r31                                 
ffc0c5b4:	7d 29 03 a6 	mtctr   r9                                     
ffc0c5b8:	4e 80 04 21 	bctrl                                          
ffc0c5bc:	4b ff ff 88 	b       ffc0c544 <_Thread_Change_priority+0x110>
                                                                      

ffc0c82c <_Thread_Delay_ended>: void _Thread_Delay_ended( Objects_Id id, void *ignored __attribute__((unused)) ) {
ffc0c82c:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0c830:	7c 08 02 a6 	mflr    r0                                     
  Thread_Control    *the_thread;                                      
  Objects_Locations  location;                                        
                                                                      
  the_thread = _Thread_Get( id, &location );                          
ffc0c834:	38 81 00 08 	addi    r4,r1,8                                
                                                                      
void _Thread_Delay_ended(                                             
  Objects_Id  id,                                                     
  void       *ignored __attribute__((unused))                         
)                                                                     
{                                                                     
ffc0c838:	90 01 00 1c 	stw     r0,28(r1)                              
  Thread_Control    *the_thread;                                      
  Objects_Locations  location;                                        
                                                                      
  the_thread = _Thread_Get( id, &location );                          
ffc0c83c:	48 00 02 a1 	bl      ffc0cadc <_Thread_Get>                 
  switch ( location ) {                                               
ffc0c840:	81 21 00 08 	lwz     r9,8(r1)                               
ffc0c844:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0c848:	40 9e 00 20 	bne-    cr7,ffc0c868 <_Thread_Delay_ended+0x3c><== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
      break;                                                          
    case OBJECTS_LOCAL:                                               
      _Thread_Clear_state(                                            
ffc0c84c:	3c 80 10 00 	lis     r4,4096                                
ffc0c850:	60 84 00 18 	ori     r4,r4,24                               
ffc0c854:	4b ff fd 6d 	bl      ffc0c5c0 <_Thread_Clear_state>         
   *                                                                  
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc0c858:	3d 20 00 00 	lis     r9,0                                   
ffc0c85c:	81 49 28 68 	lwz     r10,10344(r9)                          
                                                                      
    --level;                                                          
ffc0c860:	39 4a ff ff 	addi    r10,r10,-1                             
    _Thread_Dispatch_disable_level = level;                           
ffc0c864:	91 49 28 68 	stw     r10,10344(r9)                          
          | STATES_INTERRUPTIBLE_BY_SIGNAL                            
      );                                                              
      _Thread_Unnest_dispatch();                                      
      break;                                                          
  }                                                                   
}                                                                     
ffc0c868:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0c86c:	38 21 00 18 	addi    r1,r1,24                               
ffc0c870:	7c 08 03 a6 	mtlr    r0                                     
ffc0c874:	4e 80 00 20 	blr                                            
                                                                      

ffc0c878 <_Thread_Dispatch>: #if defined(RTEMS_SMP) #include <rtems/score/smp.h> #endif void _Thread_Dispatch( void ) {
ffc0c878:	94 21 ff b8 	stwu    r1,-72(r1)                             
ffc0c87c:	7c 08 02 a6 	mflr    r0                                     
ffc0c880:	93 81 00 38 	stw     r28,56(r1)                             
  #endif                                                              
                                                                      
  /*                                                                  
   *  Now determine if we need to perform a dispatch on the current CPU.
   */                                                                 
  executing   = _Thread_Executing;                                    
ffc0c884:	3f 80 00 00 	lis     r28,0                                  
ffc0c888:	3b 9c 31 a0 	addi    r28,r28,12704                          
#if defined(RTEMS_SMP)                                                
  #include <rtems/score/smp.h>                                        
#endif                                                                
                                                                      
void _Thread_Dispatch( void )                                         
{                                                                     
ffc0c88c:	93 e1 00 44 	stw     r31,68(r1)                             
ffc0c890:	90 01 00 4c 	stw     r0,76(r1)                              
ffc0c894:	92 81 00 18 	stw     r20,24(r1)                             
ffc0c898:	92 a1 00 1c 	stw     r21,28(r1)                             
ffc0c89c:	92 c1 00 20 	stw     r22,32(r1)                             
ffc0c8a0:	92 e1 00 24 	stw     r23,36(r1)                             
ffc0c8a4:	93 01 00 28 	stw     r24,40(r1)                             
ffc0c8a8:	93 21 00 2c 	stw     r25,44(r1)                             
ffc0c8ac:	93 41 00 30 	stw     r26,48(r1)                             
ffc0c8b0:	93 61 00 34 	stw     r27,52(r1)                             
ffc0c8b4:	93 a1 00 3c 	stw     r29,60(r1)                             
ffc0c8b8:	93 c1 00 40 	stw     r30,64(r1)                             
  #endif                                                              
                                                                      
  /*                                                                  
   *  Now determine if we need to perform a dispatch on the current CPU.
   */                                                                 
  executing   = _Thread_Executing;                                    
ffc0c8bc:	83 fc 00 10 	lwz     r31,16(r28)                            
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0c8c0:	7d 20 00 a6 	mfmsr   r9                                     
ffc0c8c4:	7d 50 42 a6 	mfsprg  r10,0                                  
ffc0c8c8:	7d 2a 50 78 	andc    r10,r9,r10                             
ffc0c8cc:	7d 40 01 24 	mtmsr   r10                                    
  _ISR_Disable( level );                                              
  while ( _Thread_Dispatch_necessary == true ) {                      
ffc0c8d0:	89 5c 00 0c 	lbz     r10,12(r28)                            
ffc0c8d4:	3f 60 00 00 	lis     r27,0                                  
ffc0c8d8:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0c8dc:	41 9e 01 58 	beq-    cr7,ffc0ca34 <_Thread_Dispatch+0x1bc>  
    heir = _Thread_Heir;                                              
ffc0c8e0:	83 dc 00 14 	lwz     r30,20(r28)                            
   * This routine sets thread dispatch level to the                   
   * value passed in.                                                 
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_set_disable_level(uint32_t value)
  {                                                                   
    _Thread_Dispatch_disable_level = value;                           
ffc0c8e4:	39 40 00 01 	li      r10,1                                  
ffc0c8e8:	3f 60 00 00 	lis     r27,0                                  
    /*                                                                
     *  When the heir and executing are the same, then we are being   
     *  requested to do the post switch dispatching.  This is normally
     *  done to dispatch signals.                                     
     */                                                               
    if ( heir == executing )                                          
ffc0c8ec:	7f 9f f0 00 	cmpw    cr7,r31,r30                            
ffc0c8f0:	91 5b 28 68 	stw     r10,10344(r27)                         
  while ( _Thread_Dispatch_necessary == true ) {                      
    heir = _Thread_Heir;                                              
    #ifndef RTEMS_SMP                                                 
      _Thread_Dispatch_set_disable_level( 1 );                        
    #endif                                                            
    _Thread_Dispatch_necessary = false;                               
ffc0c8f4:	39 40 00 00 	li      r10,0                                  
    _Thread_Executing = heir;                                         
ffc0c8f8:	93 dc 00 10 	stw     r30,16(r28)                            
  while ( _Thread_Dispatch_necessary == true ) {                      
    heir = _Thread_Heir;                                              
    #ifndef RTEMS_SMP                                                 
      _Thread_Dispatch_set_disable_level( 1 );                        
    #endif                                                            
    _Thread_Dispatch_necessary = false;                               
ffc0c8fc:	99 5c 00 0c 	stb     r10,12(r28)                            
    /*                                                                
     *  When the heir and executing are the same, then we are being   
     *  requested to do the post switch dispatching.  This is normally
     *  done to dispatch signals.                                     
     */                                                               
    if ( heir == executing )                                          
ffc0c900:	41 9e 01 34 	beq-    cr7,ffc0ca34 <_Thread_Dispatch+0x1bc>  
ffc0c904:	3f 40 00 00 	lis     r26,0                                  
ffc0c908:	3b 5a 22 08 	addi    r26,r26,8712                           
ffc0c90c:	3f 00 00 00 	lis     r24,0                                  
ffc0c910:	3f 20 00 00 	lis     r25,0                                  
ffc0c914:	3b 18 2c 68 	addi    r24,r24,11368                          
ffc0c918:	3b 39 28 70 	addi    r25,r25,10352                          
ffc0c91c:	3b ba 00 04 	addi    r29,r26,4                              
#if __RTEMS_ADA__                                                     
    executing->rtems_ada_self = rtems_ada_self;                       
    rtems_ada_self = heir->rtems_ada_self;                            
#endif                                                                
    if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )
      heir->cpu_time_budget = _Thread_Ticks_per_timeslice;            
ffc0c920:	3e a0 00 00 	lis     r21,0                                  
ffc0c924:	3a c0 00 01 	li      r22,1                                  
  while ( _Thread_Dispatch_necessary == true ) {                      
    heir = _Thread_Heir;                                              
    #ifndef RTEMS_SMP                                                 
      _Thread_Dispatch_set_disable_level( 1 );                        
    #endif                                                            
    _Thread_Dispatch_necessary = false;                               
ffc0c928:	3a e0 00 00 	li      r23,0                                  
     */                                                               
#if __RTEMS_ADA__                                                     
    executing->rtems_ada_self = rtems_ada_self;                       
    rtems_ada_self = heir->rtems_ada_self;                            
#endif                                                                
    if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )
ffc0c92c:	81 5e 00 78 	lwz     r10,120(r30)                           
ffc0c930:	2f 8a 00 01 	cmpwi   cr7,r10,1                              
ffc0c934:	41 9e 01 80 	beq-    cr7,ffc0cab4 <_Thread_Dispatch+0x23c>  
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0c938:	7d 20 01 24 	mtmsr   r9                                     
 */                                                                   
static inline void _TOD_Get_uptime(                                   
  Timestamp_Control *time                                             
)                                                                     
{                                                                     
  _TOD_Get_with_nanoseconds( time, &_TOD.uptime );                    
ffc0c93c:	38 61 00 08 	addi    r3,r1,8                                
ffc0c940:	7f 04 c3 78 	mr      r4,r24                                 
ffc0c944:	4b ff e4 51 	bl      ffc0ad94 <_TOD_Get_with_nanoseconds>   
    #endif                                                            
                                                                      
    /*                                                                
     * Switch libc's task specific data.                              
     */                                                               
    if ( _Thread_libc_reent ) {                                       
ffc0c948:	80 b9 00 00 	lwz     r5,0(r25)                              
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
ffc0c94c:	80 dc 00 20 	lwz     r6,32(r28)                             
ffc0c950:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc0c954:	80 fc 00 24 	lwz     r7,36(r28)                             
                                                                      
    #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                        
      {                                                               
        Timestamp_Control uptime, ran;                                
        _TOD_Get_uptime( &uptime );                                   
        _Timestamp_Subtract(                                          
ffc0c958:	81 41 00 08 	lwz     r10,8(r1)                              
ffc0c95c:	81 61 00 0c 	lwz     r11,12(r1)                             
static inline void _Timestamp64_implementation_Add_to(                
  Timestamp64_Control       *_time,                                   
  const Timestamp64_Control *_add                                     
)                                                                     
{                                                                     
  *_time += *_add;                                                    
ffc0c960:	81 1f 00 80 	lwz     r8,128(r31)                            
ffc0c964:	81 3f 00 84 	lwz     r9,132(r31)                            
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
ffc0c968:	7c e7 58 10 	subfc   r7,r7,r11                              
ffc0c96c:	7c c6 51 10 	subfe   r6,r6,r10                              
static inline void _Timestamp64_implementation_Add_to(                
  Timestamp64_Control       *_time,                                   
  const Timestamp64_Control *_add                                     
)                                                                     
{                                                                     
  *_time += *_add;                                                    
ffc0c970:	7d 29 38 14 	addc    r9,r9,r7                               
ffc0c974:	7d 08 31 14 	adde    r8,r8,r6                               
ffc0c978:	91 1f 00 80 	stw     r8,128(r31)                            
ffc0c97c:	91 3f 00 84 	stw     r9,132(r31)                            
          &_Thread_Time_of_last_context_switch,                       
          &uptime,                                                    
          &ran                                                        
        );                                                            
        _Timestamp_Add_to( &executing->cpu_time_used, &ran );         
        _Thread_Time_of_last_context_switch = uptime;                 
ffc0c980:	91 5c 00 20 	stw     r10,32(r28)                            
ffc0c984:	91 7c 00 24 	stw     r11,36(r28)                            
    #endif                                                            
                                                                      
    /*                                                                
     * Switch libc's task specific data.                              
     */                                                               
    if ( _Thread_libc_reent ) {                                       
ffc0c988:	41 9e 00 14 	beq-    cr7,ffc0c99c <_Thread_Dispatch+0x124>  <== NEVER TAKEN
      executing->libc_reent = *_Thread_libc_reent;                    
ffc0c98c:	81 25 00 00 	lwz     r9,0(r5)                               
ffc0c990:	91 3f 01 48 	stw     r9,328(r31)                            
      *_Thread_libc_reent = heir->libc_reent;                         
ffc0c994:	81 3e 01 48 	lwz     r9,328(r30)                            
ffc0c998:	91 25 00 00 	stw     r9,0(r5)                               
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
ffc0c99c:	82 9a 00 00 	lwz     r20,0(r26)                             
{                                                                     
  const Chain_Control *chain = &_User_extensions_Switches_list;       
  const Chain_Node    *tail = _Chain_Immutable_tail( chain );         
  const Chain_Node    *node = _Chain_Immutable_first( chain );        
                                                                      
  while ( node != tail ) {                                            
ffc0c9a0:	7f 94 e8 00 	cmpw    cr7,r20,r29                            
ffc0c9a4:	41 9e 00 24 	beq-    cr7,ffc0c9c8 <_Thread_Dispatch+0x150>  <== NEVER TAKEN
    const User_extensions_Switch_control *extension =                 
      (const User_extensions_Switch_control *) node;                  
                                                                      
    (*extension->thread_switch)( executing, heir );                   
ffc0c9a8:	81 34 00 08 	lwz     r9,8(r20)                              
ffc0c9ac:	7f e3 fb 78 	mr      r3,r31                                 
ffc0c9b0:	7f c4 f3 78 	mr      r4,r30                                 
ffc0c9b4:	7d 29 03 a6 	mtctr   r9                                     
ffc0c9b8:	4e 80 04 21 	bctrl                                          
  #ifdef RTEMS_SMP                                                    
    _Thread_Unnest_dispatch();                                        
  #endif                                                              
                                                                      
  _API_extensions_Run_post_switch( executing );                       
}                                                                     
ffc0c9bc:	82 94 00 00 	lwz     r20,0(r20)                             
{                                                                     
  const Chain_Control *chain = &_User_extensions_Switches_list;       
  const Chain_Node    *tail = _Chain_Immutable_tail( chain );         
  const Chain_Node    *node = _Chain_Immutable_first( chain );        
                                                                      
  while ( node != tail ) {                                            
ffc0c9c0:	7f 94 e8 00 	cmpw    cr7,r20,r29                            
ffc0c9c4:	40 9e ff e4 	bne+    cr7,ffc0c9a8 <_Thread_Dispatch+0x130>  
     *  operations.                                                   
     */                                                               
                                                                      
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )        
#if ( CPU_USE_DEFERRED_FP_SWITCH != TRUE )                            
    if ( executing->fp_context != NULL )                              
ffc0c9c8:	81 3f 01 44 	lwz     r9,324(r31)                            
ffc0c9cc:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0c9d0:	41 9e 00 0c 	beq-    cr7,ffc0c9dc <_Thread_Dispatch+0x164>  
      _Context_Save_fp( &executing->fp_context );                     
ffc0c9d4:	38 7f 01 44 	addi    r3,r31,324                             
ffc0c9d8:	48 01 0e c9 	bl      ffc1d8a0 <_CPU_Context_save_fp>        
#endif                                                                
#endif                                                                
                                                                      
    _Context_Switch( &executing->Registers, &heir->Registers );       
ffc0c9dc:	38 7f 00 c4 	addi    r3,r31,196                             
ffc0c9e0:	38 9e 00 c4 	addi    r4,r30,196                             
ffc0c9e4:	48 01 10 3d 	bl      ffc1da20 <_CPU_Context_switch>         
        _Context_Save_fp( &_Thread_Allocated_fp->fp_context );        
      _Context_Restore_fp( &executing->fp_context );                  
      _Thread_Allocated_fp = executing;                               
    }                                                                 
#else                                                                 
    if ( executing->fp_context != NULL )                              
ffc0c9e8:	81 3f 01 44 	lwz     r9,324(r31)                            
ffc0c9ec:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0c9f0:	41 9e 00 0c 	beq-    cr7,ffc0c9fc <_Thread_Dispatch+0x184>  
      _Context_Restore_fp( &executing->fp_context );                  
ffc0c9f4:	38 7f 01 44 	addi    r3,r31,324                             
ffc0c9f8:	48 01 0f 69 	bl      ffc1d960 <_CPU_Context_restore_fp>     
#endif                                                                
#endif                                                                
                                                                      
    executing = _Thread_Executing;                                    
ffc0c9fc:	83 fc 00 10 	lwz     r31,16(r28)                            
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0ca00:	7d 20 00 a6 	mfmsr   r9                                     
ffc0ca04:	7d 50 42 a6 	mfsprg  r10,0                                  
ffc0ca08:	7d 2a 50 78 	andc    r10,r9,r10                             
ffc0ca0c:	7d 40 01 24 	mtmsr   r10                                    
  /*                                                                  
   *  Now determine if we need to perform a dispatch on the current CPU.
   */                                                                 
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
  while ( _Thread_Dispatch_necessary == true ) {                      
ffc0ca10:	89 5c 00 0c 	lbz     r10,12(r28)                            
ffc0ca14:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0ca18:	41 9e 00 1c 	beq-    cr7,ffc0ca34 <_Thread_Dispatch+0x1bc>  
    heir = _Thread_Heir;                                              
ffc0ca1c:	83 dc 00 14 	lwz     r30,20(r28)                            
ffc0ca20:	92 db 28 68 	stw     r22,10344(r27)                         
    /*                                                                
     *  When the heir and executing are the same, then we are being   
     *  requested to do the post switch dispatching.  This is normally
     *  done to dispatch signals.                                     
     */                                                               
    if ( heir == executing )                                          
ffc0ca24:	7f 9e f8 00 	cmpw    cr7,r30,r31                            
  while ( _Thread_Dispatch_necessary == true ) {                      
    heir = _Thread_Heir;                                              
    #ifndef RTEMS_SMP                                                 
      _Thread_Dispatch_set_disable_level( 1 );                        
    #endif                                                            
    _Thread_Dispatch_necessary = false;                               
ffc0ca28:	9a fc 00 0c 	stb     r23,12(r28)                            
    _Thread_Executing = heir;                                         
ffc0ca2c:	93 dc 00 10 	stw     r30,16(r28)                            
    /*                                                                
     *  When the heir and executing are the same, then we are being   
     *  requested to do the post switch dispatching.  This is normally
     *  done to dispatch signals.                                     
     */                                                               
    if ( heir == executing )                                          
ffc0ca30:	40 9e fe fc 	bne+    cr7,ffc0c92c <_Thread_Dispatch+0xb4>   <== ALWAYS TAKEN
ffc0ca34:	39 40 00 00 	li      r10,0                                  
ffc0ca38:	91 5b 28 68 	stw     r10,10344(r27)                         
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0ca3c:	7d 20 01 24 	mtmsr   r9                                     
ffc0ca40:	3d 20 00 00 	lis     r9,0                                   
ffc0ca44:	3b a9 2d 90 	addi    r29,r9,11664                           
ffc0ca48:	83 c9 2d 90 	lwz     r30,11664(r9)                          
{                                                                     
  const Chain_Control *chain = &_API_extensions_Post_switch_list;     
  const Chain_Node    *tail = _Chain_Immutable_tail( chain );         
  const Chain_Node    *node = _Chain_Immutable_first( chain );        
                                                                      
  while ( node != tail ) {                                            
ffc0ca4c:	3b bd 00 04 	addi    r29,r29,4                              
ffc0ca50:	7f 9e e8 00 	cmpw    cr7,r30,r29                            
ffc0ca54:	41 9e 00 20 	beq-    cr7,ffc0ca74 <_Thread_Dispatch+0x1fc>  
    const API_extensions_Post_switch_control *post_switch =           
      (const API_extensions_Post_switch_control *) node;              
                                                                      
    (*post_switch->hook)( executing );                                
ffc0ca58:	81 3e 00 08 	lwz     r9,8(r30)                              
ffc0ca5c:	7f e3 fb 78 	mr      r3,r31                                 
ffc0ca60:	7d 29 03 a6 	mtctr   r9                                     
ffc0ca64:	4e 80 04 21 	bctrl                                          
  #ifdef RTEMS_SMP                                                    
    _Thread_Unnest_dispatch();                                        
  #endif                                                              
                                                                      
  _API_extensions_Run_post_switch( executing );                       
}                                                                     
ffc0ca68:	83 de 00 00 	lwz     r30,0(r30)                             
{                                                                     
  const Chain_Control *chain = &_API_extensions_Post_switch_list;     
  const Chain_Node    *tail = _Chain_Immutable_tail( chain );         
  const Chain_Node    *node = _Chain_Immutable_first( chain );        
                                                                      
  while ( node != tail ) {                                            
ffc0ca6c:	7f 9e e8 00 	cmpw    cr7,r30,r29                            
ffc0ca70:	40 9e ff e8 	bne+    cr7,ffc0ca58 <_Thread_Dispatch+0x1e0>  <== NEVER TAKEN
ffc0ca74:	80 01 00 4c 	lwz     r0,76(r1)                              
ffc0ca78:	82 81 00 18 	lwz     r20,24(r1)                             
ffc0ca7c:	7c 08 03 a6 	mtlr    r0                                     
ffc0ca80:	82 a1 00 1c 	lwz     r21,28(r1)                             
ffc0ca84:	82 c1 00 20 	lwz     r22,32(r1)                             
ffc0ca88:	82 e1 00 24 	lwz     r23,36(r1)                             
ffc0ca8c:	83 01 00 28 	lwz     r24,40(r1)                             
ffc0ca90:	83 21 00 2c 	lwz     r25,44(r1)                             
ffc0ca94:	83 41 00 30 	lwz     r26,48(r1)                             
ffc0ca98:	83 61 00 34 	lwz     r27,52(r1)                             
ffc0ca9c:	83 81 00 38 	lwz     r28,56(r1)                             
ffc0caa0:	83 a1 00 3c 	lwz     r29,60(r1)                             
ffc0caa4:	83 c1 00 40 	lwz     r30,64(r1)                             
ffc0caa8:	83 e1 00 44 	lwz     r31,68(r1)                             
ffc0caac:	38 21 00 48 	addi    r1,r1,72                               
ffc0cab0:	4e 80 00 20 	blr                                            
#if __RTEMS_ADA__                                                     
    executing->rtems_ada_self = rtems_ada_self;                       
    rtems_ada_self = heir->rtems_ada_self;                            
#endif                                                                
    if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )
      heir->cpu_time_budget = _Thread_Ticks_per_timeslice;            
ffc0cab4:	81 55 28 64 	lwz     r10,10340(r21)                         
ffc0cab8:	91 5e 00 74 	stw     r10,116(r30)                           
ffc0cabc:	4b ff fe 7c 	b       ffc0c938 <_Thread_Dispatch+0xc0>       
                                                                      

ffc12e0c <_Thread_Handler>: #define INIT_NAME __main #define EXECUTE_GLOBAL_CONSTRUCTORS #endif void _Thread_Handler( void ) {
ffc12e0c:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc12e10:	7c 08 02 a6 	mflr    r0                                     
  #if defined(EXECUTE_GLOBAL_CONSTRUCTORS)                            
    static bool doneConstructors;                                     
    bool doCons;                                                      
  #endif                                                              
                                                                      
  executing = _Thread_Executing;                                      
ffc12e14:	3d 20 00 00 	lis     r9,0                                   
  #define INIT_NAME __main                                            
  #define EXECUTE_GLOBAL_CONSTRUCTORS                                 
#endif                                                                
                                                                      
void _Thread_Handler( void )                                          
{                                                                     
ffc12e18:	90 01 00 14 	stw     r0,20(r1)                              
ffc12e1c:	93 e1 00 0c 	stw     r31,12(r1)                             
  #if defined(EXECUTE_GLOBAL_CONSTRUCTORS)                            
    static bool doneConstructors;                                     
    bool doCons;                                                      
  #endif                                                              
                                                                      
  executing = _Thread_Executing;                                      
ffc12e20:	83 e9 31 b0 	lwz     r31,12720(r9)                          
  #define INIT_NAME __main                                            
  #define EXECUTE_GLOBAL_CONSTRUCTORS                                 
#endif                                                                
                                                                      
void _Thread_Handler( void )                                          
{                                                                     
ffc12e24:	93 c1 00 08 	stw     r30,8(r1)                              
                                                                      
  /*                                                                  
   * have to put level into a register for those cpu's that use       
   * inline asm here                                                  
   */                                                                 
  level = executing->Start.isr_level;                                 
ffc12e28:	81 5f 00 a8 	lwz     r10,168(r31)                           
}                                                                     
                                                                      
static inline void _CPU_ISR_Set_level( uint32_t   level )             
{                                                                     
  register unsigned int msr;                                          
  _CPU_MSR_GET(msr);                                                  
ffc12e2c:	39 20 00 00 	li      r9,0                                   
ffc12e30:	7d 20 00 a6 	mfmsr   r9                                     
  if (!(level & CPU_MODES_INTERRUPT_MASK)) {                          
ffc12e34:	71 48 00 01 	andi.   r8,r10,1                               
                                                                      
static inline uint32_t ppc_interrupt_get_disable_mask( void )         
{                                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc12e38:	7d 50 42 a6 	mfsprg  r10,0                                  
ffc12e3c:	40 82 00 6c 	bne-    ffc12ea8 <_Thread_Handler+0x9c>        
    msr |= ppc_interrupt_get_disable_mask();                          
ffc12e40:	7d 49 4b 78 	or      r9,r10,r9                              
  }                                                                   
  else {                                                              
    msr &= ~ppc_interrupt_get_disable_mask();                         
  }                                                                   
  _CPU_MSR_SET(msr);                                                  
ffc12e44:	7d 20 01 24 	mtmsr   r9                                     
      doCons = !doneConstructors                                      
        && _Objects_Get_API( executing->Object.id ) != OBJECTS_INTERNAL_API;
      if (doCons)                                                     
        doneConstructors = true;                                      
    #else                                                             
      doCons = !doneConstructors;                                     
ffc12e48:	3d 20 00 00 	lis     r9,0                                   
ffc12e4c:	8b c9 2a 40 	lbz     r30,10816(r9)                          
  );                                                                  
}                                                                     
                                                                      
static inline void _User_extensions_Thread_begin( Thread_Control *executing )
{                                                                     
  _User_extensions_Iterate(                                           
ffc12e50:	3c 80 ff c1 	lis     r4,-63                                 
      doneConstructors = true;                                        
ffc12e54:	39 40 00 01 	li      r10,1                                  
ffc12e58:	7f e3 fb 78 	mr      r3,r31                                 
ffc12e5c:	99 49 2a 40 	stb     r10,10816(r9)                          
ffc12e60:	38 84 d8 c0 	addi    r4,r4,-10048                           
ffc12e64:	4b ff aa a9 	bl      ffc0d90c <_User_extensions_Iterate>    
  _User_extensions_Thread_begin( executing );                         
                                                                      
  /*                                                                  
   *  At this point, the dispatch disable level BETTER be 1.          
   */                                                                 
  _Thread_Enable_dispatch();                                          
ffc12e68:	4b ff 9c 59 	bl      ffc0cac0 <_Thread_Enable_dispatch>     
    /*                                                                
     *  _init could be a weak symbol and we SHOULD test it but it isn't
     *  in any configuration I know of and it generates a warning on every
     *  RTEMS target configuration.  --joel (12 May 2007)             
     */                                                               
    if (doCons) /* && (volatile void *)_init) */ {                    
ffc12e6c:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
ffc12e70:	41 9e 00 40 	beq-    cr7,ffc12eb0 <_Thread_Handler+0xa4>    
        _Thread_Enable_dispatch();                                    
      #endif                                                          
    }                                                                 
 #endif                                                               
                                                                      
  if ( executing->Start.prototype == THREAD_START_NUMERIC ) {         
ffc12e74:	81 3f 00 90 	lwz     r9,144(r31)                            
ffc12e78:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc12e7c:	41 9e 00 3c 	beq-    cr7,ffc12eb8 <_Thread_Handler+0xac>    
      (*(Thread_Entry_numeric) executing->Start.entry_point)(         
        executing->Start.numeric_argument                             
      );                                                              
  }                                                                   
  #if defined(RTEMS_POSIX_API)                                        
    else if ( executing->Start.prototype == THREAD_START_POINTER ) {  
ffc12e80:	2f 89 00 01 	cmpwi   cr7,r9,1                               
ffc12e84:	41 9e 00 4c 	beq-    cr7,ffc12ed0 <_Thread_Handler+0xc4>    <== ALWAYS TAKEN
  }                                                                   
}                                                                     
                                                                      
static inline void _User_extensions_Thread_exitted( Thread_Control *executing )
{                                                                     
  _User_extensions_Iterate(                                           
ffc12e88:	3c 80 ff c1 	lis     r4,-63                                 
ffc12e8c:	7f e3 fb 78 	mr      r3,r31                                 
ffc12e90:	38 84 d8 d4 	addi    r4,r4,-10028                           
ffc12e94:	4b ff aa 79 	bl      ffc0d90c <_User_extensions_Iterate>    
   *  able to fit in a (void *).                                      
   */                                                                 
                                                                      
  _User_extensions_Thread_exitted( executing );                       
                                                                      
  _Internal_error_Occurred(                                           
ffc12e98:	38 60 00 00 	li      r3,0                                   
ffc12e9c:	38 80 00 01 	li      r4,1                                   
ffc12ea0:	38 a0 00 05 	li      r5,5                                   
ffc12ea4:	4b ff 84 cd 	bl      ffc0b370 <_Internal_error_Occurred>    
  _CPU_MSR_GET(msr);                                                  
  if (!(level & CPU_MODES_INTERRUPT_MASK)) {                          
    msr |= ppc_interrupt_get_disable_mask();                          
  }                                                                   
  else {                                                              
    msr &= ~ppc_interrupt_get_disable_mask();                         
ffc12ea8:	7d 29 50 78 	andc    r9,r9,r10                              
ffc12eac:	4b ff ff 98 	b       ffc12e44 <_Thread_Handler+0x38>        
     *  _init could be a weak symbol and we SHOULD test it but it isn't
     *  in any configuration I know of and it generates a warning on every
     *  RTEMS target configuration.  --joel (12 May 2007)             
     */                                                               
    if (doCons) /* && (volatile void *)_init) */ {                    
      INIT_NAME ();                                                   
ffc12eb0:	48 00 bb ed 	bl      ffc1ea9c <_init>                       
ffc12eb4:	4b ff ff c0 	b       ffc12e74 <_Thread_Handler+0x68>        
    }                                                                 
 #endif                                                               
                                                                      
  if ( executing->Start.prototype == THREAD_START_NUMERIC ) {         
    executing->Wait.return_argument =                                 
      (*(Thread_Entry_numeric) executing->Start.entry_point)(         
ffc12eb8:	81 3f 00 8c 	lwz     r9,140(r31)                            
ffc12ebc:	80 7f 00 98 	lwz     r3,152(r31)                            
ffc12ec0:	7d 29 03 a6 	mtctr   r9                                     
ffc12ec4:	4e 80 04 21 	bctrl                                          
      #endif                                                          
    }                                                                 
 #endif                                                               
                                                                      
  if ( executing->Start.prototype == THREAD_START_NUMERIC ) {         
    executing->Wait.return_argument =                                 
ffc12ec8:	90 7f 00 28 	stw     r3,40(r31)                             
ffc12ecc:	4b ff ff bc 	b       ffc12e88 <_Thread_Handler+0x7c>        
      );                                                              
  }                                                                   
  #if defined(RTEMS_POSIX_API)                                        
    else if ( executing->Start.prototype == THREAD_START_POINTER ) {  
      executing->Wait.return_argument =                               
        (*(Thread_Entry_pointer) executing->Start.entry_point)(       
ffc12ed0:	81 3f 00 8c 	lwz     r9,140(r31)                            
ffc12ed4:	80 7f 00 94 	lwz     r3,148(r31)                            
ffc12ed8:	7d 29 03 a6 	mtctr   r9                                     
ffc12edc:	4e 80 04 21 	bctrl                                          
        executing->Start.numeric_argument                             
      );                                                              
  }                                                                   
  #if defined(RTEMS_POSIX_API)                                        
    else if ( executing->Start.prototype == THREAD_START_POINTER ) {  
      executing->Wait.return_argument =                               
ffc12ee0:	90 7f 00 28 	stw     r3,40(r31)                             
ffc12ee4:	4b ff ff a4 	b       ffc12e88 <_Thread_Handler+0x7c>        
                                                                      

ffc0ce0c <_Thread_Handler_initialization>: #include <rtems/bspsmp.h> #endif void _Thread_Handler_initialization(void) { uint32_t ticks_per_timeslice =
ffc0ce0c:	3d 20 ff c2 	lis     r9,-62                                 
#if defined(RTEMS_SMP)                                                
  #include <rtems/bspsmp.h>                                           
#endif                                                                
                                                                      
void _Thread_Handler_initialization(void)                             
{                                                                     
ffc0ce10:	94 21 ff f0 	stwu    r1,-16(r1)                             
  uint32_t ticks_per_timeslice =                                      
ffc0ce14:	39 29 ea f8 	addi    r9,r9,-5384                            
#if defined(RTEMS_SMP)                                                
  #include <rtems/bspsmp.h>                                           
#endif                                                                
                                                                      
void _Thread_Handler_initialization(void)                             
{                                                                     
ffc0ce18:	7c 08 02 a6 	mflr    r0                                     
  #if defined(RTEMS_MULTIPROCESSING)                                  
    uint32_t maximum_proxies =                                        
      _Configuration_MP_table->maximum_proxies;                       
  #endif                                                              
                                                                      
  if ( rtems_configuration_get_stack_allocate_hook() == NULL ||       
ffc0ce1c:	81 49 00 28 	lwz     r10,40(r9)                             
#if defined(RTEMS_SMP)                                                
  #include <rtems/bspsmp.h>                                           
#endif                                                                
                                                                      
void _Thread_Handler_initialization(void)                             
{                                                                     
ffc0ce20:	93 c1 00 08 	stw     r30,8(r1)                              
  #if defined(RTEMS_MULTIPROCESSING)                                  
    uint32_t maximum_proxies =                                        
      _Configuration_MP_table->maximum_proxies;                       
  #endif                                                              
                                                                      
  if ( rtems_configuration_get_stack_allocate_hook() == NULL ||       
ffc0ce24:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
#if defined(RTEMS_SMP)                                                
  #include <rtems/bspsmp.h>                                           
#endif                                                                
                                                                      
void _Thread_Handler_initialization(void)                             
{                                                                     
ffc0ce28:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc0ce2c:	90 01 00 14 	stw     r0,20(r1)                              
  uint32_t ticks_per_timeslice =                                      
ffc0ce30:	83 e9 00 14 	lwz     r31,20(r9)                             
    rtems_configuration_get_ticks_per_timeslice();                    
  uint32_t maximum_extensions =                                       
ffc0ce34:	83 c9 00 08 	lwz     r30,8(r9)                              
    rtems_configuration_get_maximum_extensions();                     
  rtems_stack_allocate_init_hook stack_allocate_init_hook =           
ffc0ce38:	81 49 00 24 	lwz     r10,36(r9)                             
  #if defined(RTEMS_MULTIPROCESSING)                                  
    uint32_t maximum_proxies =                                        
      _Configuration_MP_table->maximum_proxies;                       
  #endif                                                              
                                                                      
  if ( rtems_configuration_get_stack_allocate_hook() == NULL ||       
ffc0ce3c:	41 9e 00 90 	beq-    cr7,ffc0cecc <_Thread_Handler_initialization+0xc0><== NEVER TAKEN
ffc0ce40:	81 09 00 2c 	lwz     r8,44(r9)                              
ffc0ce44:	2f 88 00 00 	cmpwi   cr7,r8,0                               
ffc0ce48:	41 9e 00 84 	beq-    cr7,ffc0cecc <_Thread_Handler_initialization+0xc0>
      INTERNAL_ERROR_CORE,                                            
      true,                                                           
      INTERNAL_ERROR_BAD_STACK_HOOK                                   
    );                                                                
                                                                      
  if ( stack_allocate_init_hook != NULL )                             
ffc0ce4c:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0ce50:	41 9e 00 10 	beq-    cr7,ffc0ce60 <_Thread_Handler_initialization+0x54>
    (*stack_allocate_init_hook)( rtems_configuration_get_stack_space_size() );
ffc0ce54:	80 69 00 04 	lwz     r3,4(r9)                               
ffc0ce58:	7d 49 03 a6 	mtctr   r10                                    
ffc0ce5c:	4e 80 04 21 	bctrl                                          
                                                                      
  _Thread_Dispatch_necessary = false;                                 
ffc0ce60:	3d 60 00 00 	lis     r11,0                                  
ffc0ce64:	39 6b 31 a0 	addi    r11,r11,12704                          
ffc0ce68:	38 00 00 00 	li      r0,0                                   
ffc0ce6c:	98 0b 00 0c 	stb     r0,12(r11)                             
  _Thread_Executing         = NULL;                                   
ffc0ce70:	39 40 00 00 	li      r10,0                                  
  #if defined(RTEMS_MULTIPROCESSING)                                  
    if ( _System_state_Is_multiprocessing )                           
      maximum_internal_threads += 1;                                  
  #endif                                                              
                                                                      
  _Objects_Initialize_information(                                    
ffc0ce74:	3c 60 00 00 	lis     r3,0                                   
      false,                      /* true if this is a global object class */
      NULL                        /* Proxy extraction support callout */
    #endif                                                            
  );                                                                  
                                                                      
}                                                                     
ffc0ce78:	80 01 00 14 	lwz     r0,20(r1)                              
  #if defined(RTEMS_MULTIPROCESSING)                                  
    if ( _System_state_Is_multiprocessing )                           
      maximum_internal_threads += 1;                                  
  #endif                                                              
                                                                      
  _Objects_Initialize_information(                                    
ffc0ce7c:	38 63 2d f4 	addi    r3,r3,11764                            
                                                                      
  if ( stack_allocate_init_hook != NULL )                             
    (*stack_allocate_init_hook)( rtems_configuration_get_stack_space_size() );
                                                                      
  _Thread_Dispatch_necessary = false;                                 
  _Thread_Executing         = NULL;                                   
ffc0ce80:	91 4b 00 10 	stw     r10,16(r11)                            
  #if defined(RTEMS_MULTIPROCESSING)                                  
    if ( _System_state_Is_multiprocessing )                           
      maximum_internal_threads += 1;                                  
  #endif                                                              
                                                                      
  _Objects_Initialize_information(                                    
ffc0ce84:	38 80 00 01 	li      r4,1                                   
      false,                      /* true if this is a global object class */
      NULL                        /* Proxy extraction support callout */
    #endif                                                            
  );                                                                  
                                                                      
}                                                                     
ffc0ce88:	7c 08 03 a6 	mtlr    r0                                     
  #if defined(RTEMS_MULTIPROCESSING)                                  
    if ( _System_state_Is_multiprocessing )                           
      maximum_internal_threads += 1;                                  
  #endif                                                              
                                                                      
  _Objects_Initialize_information(                                    
ffc0ce8c:	38 a0 00 01 	li      r5,1                                   
  if ( stack_allocate_init_hook != NULL )                             
    (*stack_allocate_init_hook)( rtems_configuration_get_stack_space_size() );
                                                                      
  _Thread_Dispatch_necessary = false;                                 
  _Thread_Executing         = NULL;                                   
  _Thread_Heir              = NULL;                                   
ffc0ce90:	91 4b 00 14 	stw     r10,20(r11)                            
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )        
  _Thread_Allocated_fp      = NULL;                                   
ffc0ce94:	3d 60 00 00 	lis     r11,0                                  
  #if defined(RTEMS_MULTIPROCESSING)                                  
    if ( _System_state_Is_multiprocessing )                           
      maximum_internal_threads += 1;                                  
  #endif                                                              
                                                                      
  _Objects_Initialize_information(                                    
ffc0ce98:	38 c0 00 01 	li      r6,1                                   
                                                                      
  _Thread_Dispatch_necessary = false;                                 
  _Thread_Executing         = NULL;                                   
  _Thread_Heir              = NULL;                                   
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )        
  _Thread_Allocated_fp      = NULL;                                   
ffc0ce9c:	91 4b 28 6c 	stw     r10,10348(r11)                         
#endif                                                                
                                                                      
  _Thread_Maximum_extensions = maximum_extensions;                    
ffc0cea0:	3d 40 00 00 	lis     r10,0                                  
  #if defined(RTEMS_MULTIPROCESSING)                                  
    if ( _System_state_Is_multiprocessing )                           
      maximum_internal_threads += 1;                                  
  #endif                                                              
                                                                      
  _Objects_Initialize_information(                                    
ffc0cea4:	38 e0 01 60 	li      r7,352                                 
  _Thread_Heir              = NULL;                                   
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )        
  _Thread_Allocated_fp      = NULL;                                   
#endif                                                                
                                                                      
  _Thread_Maximum_extensions = maximum_extensions;                    
ffc0cea8:	93 ca 28 74 	stw     r30,10356(r10)                         
                                                                      
  _Thread_Ticks_per_timeslice  = ticks_per_timeslice;                 
ffc0ceac:	3d 40 00 00 	lis     r10,0                                  
  #if defined(RTEMS_MULTIPROCESSING)                                  
    if ( _System_state_Is_multiprocessing )                           
      maximum_internal_threads += 1;                                  
  #endif                                                              
                                                                      
  _Objects_Initialize_information(                                    
ffc0ceb0:	39 00 00 00 	li      r8,0                                   
      false,                      /* true if this is a global object class */
      NULL                        /* Proxy extraction support callout */
    #endif                                                            
  );                                                                  
                                                                      
}                                                                     
ffc0ceb4:	83 c1 00 08 	lwz     r30,8(r1)                              
  #if defined(RTEMS_MULTIPROCESSING)                                  
    if ( _System_state_Is_multiprocessing )                           
      maximum_internal_threads += 1;                                  
  #endif                                                              
                                                                      
  _Objects_Initialize_information(                                    
ffc0ceb8:	39 20 00 08 	li      r9,8                                   
  _Thread_Allocated_fp      = NULL;                                   
#endif                                                                
                                                                      
  _Thread_Maximum_extensions = maximum_extensions;                    
                                                                      
  _Thread_Ticks_per_timeslice  = ticks_per_timeslice;                 
ffc0cebc:	93 ea 28 64 	stw     r31,10340(r10)                         
      false,                      /* true if this is a global object class */
      NULL                        /* Proxy extraction support callout */
    #endif                                                            
  );                                                                  
                                                                      
}                                                                     
ffc0cec0:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0cec4:	38 21 00 10 	addi    r1,r1,16                               
  #if defined(RTEMS_MULTIPROCESSING)                                  
    if ( _System_state_Is_multiprocessing )                           
      maximum_internal_threads += 1;                                  
  #endif                                                              
                                                                      
  _Objects_Initialize_information(                                    
ffc0cec8:	4b ff eb a0 	b       ffc0ba68 <_Objects_Initialize_information>
      _Configuration_MP_table->maximum_proxies;                       
  #endif                                                              
                                                                      
  if ( rtems_configuration_get_stack_allocate_hook() == NULL ||       
       rtems_configuration_get_stack_free_hook() == NULL)             
    _Internal_error_Occurred(                                         
ffc0cecc:	38 60 00 00 	li      r3,0                                   
ffc0ced0:	38 80 00 01 	li      r4,1                                   
ffc0ced4:	38 a0 00 0e 	li      r5,14                                  
ffc0ced8:	4b ff e4 99 	bl      ffc0b370 <_Internal_error_Occurred>    
                                                                      

ffc0cb74 <_Thread_Initialize>: Thread_CPU_budget_algorithms budget_algorithm, Thread_CPU_budget_algorithm_callout budget_callout, uint32_t isr_level, Objects_Name name ) {
ffc0cb74:	94 21 ff b8 	stwu    r1,-72(r1)                             
ffc0cb78:	7c 08 02 a6 	mflr    r0                                     
                                                                      
  /*                                                                  
   *  Zero out all the allocated memory fields                        
   */                                                                 
  for ( i=0 ; i <= THREAD_API_LAST ; i++ )                            
    the_thread->API_Extensions[i] = NULL;                             
ffc0cb7c:	39 60 00 00 	li      r11,0                                  
  Thread_CPU_budget_algorithms          budget_algorithm,             
  Thread_CPU_budget_algorithm_callout   budget_callout,               
  uint32_t                              isr_level,                    
  Objects_Name                          name                          
)                                                                     
{                                                                     
ffc0cb80:	93 c1 00 40 	stw     r30,64(r1)                             
    if ( !actual_stack_size || actual_stack_size < stack_size )       
      return false;                     /* stack allocation failed */ 
                                                                      
    stack = the_thread->Start.stack;                                  
  #else                                                               
    if ( !stack_area ) {                                              
ffc0cb84:	7c be 2b 79 	mr.     r30,r5                                 
  Thread_CPU_budget_algorithms          budget_algorithm,             
  Thread_CPU_budget_algorithm_callout   budget_callout,               
  uint32_t                              isr_level,                    
  Objects_Name                          name                          
)                                                                     
{                                                                     
ffc0cb88:	90 01 00 4c 	stw     r0,76(r1)                              
ffc0cb8c:	93 81 00 38 	stw     r28,56(r1)                             
ffc0cb90:	7d 5c 53 78 	mr      r28,r10                                
ffc0cb94:	81 41 00 58 	lwz     r10,88(r1)                             
ffc0cb98:	92 e1 00 24 	stw     r23,36(r1)                             
ffc0cb9c:	7d 37 4b 78 	mr      r23,r9                                 
ffc0cba0:	93 41 00 30 	stw     r26,48(r1)                             
ffc0cba4:	7c 7a 1b 78 	mr      r26,r3                                 
ffc0cba8:	93 61 00 34 	stw     r27,52(r1)                             
ffc0cbac:	93 a1 00 3c 	stw     r29,60(r1)                             
ffc0cbb0:	7d 1d 43 78 	mr      r29,r8                                 
ffc0cbb4:	93 e1 00 44 	stw     r31,68(r1)                             
ffc0cbb8:	7c 9f 23 78 	mr      r31,r4                                 
ffc0cbbc:	93 01 00 28 	stw     r24,40(r1)                             
ffc0cbc0:	93 21 00 2c 	stw     r25,44(r1)                             
ffc0cbc4:	83 6a 00 00 	lwz     r27,0(r10)                             
                                                                      
  /*                                                                  
   *  Zero out all the allocated memory fields                        
   */                                                                 
  for ( i=0 ; i <= THREAD_API_LAST ; i++ )                            
    the_thread->API_Extensions[i] = NULL;                             
ffc0cbc8:	91 64 01 4c 	stw     r11,332(r4)                            
ffc0cbcc:	91 64 01 50 	stw     r11,336(r4)                            
                                                                      
  extensions_area = NULL;                                             
  the_thread->libc_reent = NULL;                                      
ffc0cbd0:	91 64 01 48 	stw     r11,328(r4)                            
    if ( !actual_stack_size || actual_stack_size < stack_size )       
      return false;                     /* stack allocation failed */ 
                                                                      
    stack = the_thread->Start.stack;                                  
  #else                                                               
    if ( !stack_area ) {                                              
ffc0cbd4:	41 82 01 ec 	beq-    ffc0cdc0 <_Thread_Initialize+0x24c>    
      stack = the_thread->Start.stack;                                
      the_thread->Start.core_allocated_stack = true;                  
    } else {                                                          
      stack = stack_area;                                             
      actual_stack_size = stack_size;                                 
      the_thread->Start.core_allocated_stack = false;                 
ffc0cbd8:	99 64 00 b0 	stb     r11,176(r4)                            
ffc0cbdc:	7c ca 33 78 	mr      r10,r6                                 
                                                                      
  /*                                                                  
   *  Allocate the floating point area for this thread                
   */                                                                 
  #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )      
    if ( is_fp ) {                                                    
ffc0cbe0:	2f 87 00 00 	cmpwi   cr7,r7,0                               
  Stack_Control *the_stack,                                           
  void          *starting_address,                                    
  size_t         size                                                 
)                                                                     
{                                                                     
  the_stack->area = starting_address;                                 
ffc0cbe4:	93 df 00 b8 	stw     r30,184(r31)                           
                                                                      
  extensions_area = NULL;                                             
  the_thread->libc_reent = NULL;                                      
                                                                      
  #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )      
    fp_area = NULL;                                                   
ffc0cbe8:	3b c0 00 00 	li      r30,0                                  
  the_stack->size = size;                                             
ffc0cbec:	91 5f 00 b4 	stw     r10,180(r31)                           
                                                                      
  /*                                                                  
   *  Allocate the floating point area for this thread                
   */                                                                 
  #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )      
    if ( is_fp ) {                                                    
ffc0cbf0:	40 9e 01 64 	bne-    cr7,ffc0cd54 <_Thread_Initialize+0x1e0>
  #endif                                                              
                                                                      
  /*                                                                  
   *  Allocate the extensions area for this thread                    
   */                                                                 
  if ( _Thread_Maximum_extensions ) {                                 
ffc0cbf4:	3f 00 00 00 	lis     r24,0                                  
      fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE );               
      if ( !fp_area )                                                 
        goto failed;                                                  
      fp_area = _Context_Fp_start( fp_area, 0 );                      
    }                                                                 
    the_thread->fp_context       = fp_area;                           
ffc0cbf8:	93 df 01 44 	stw     r30,324(r31)                           
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
ffc0cbfc:	38 e0 00 00 	li      r7,0                                   
  #endif                                                              
                                                                      
  /*                                                                  
   *  Allocate the extensions area for this thread                    
   */                                                                 
  if ( _Thread_Maximum_extensions ) {                                 
ffc0cc00:	81 58 28 74 	lwz     r10,10356(r24)                         
      if ( !fp_area )                                                 
        goto failed;                                                  
      fp_area = _Context_Fp_start( fp_area, 0 );                      
    }                                                                 
    the_thread->fp_context       = fp_area;                           
    the_thread->Start.fp_context = fp_area;                           
ffc0cc04:	93 df 00 bc 	stw     r30,188(r31)                           
  #endif                                                              
                                                                      
  /*                                                                  
   *  Allocate the extensions area for this thread                    
   */                                                                 
  if ( _Thread_Maximum_extensions ) {                                 
ffc0cc08:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0cc0c:	90 ff 00 50 	stw     r7,80(r31)                             
  the_watchdog->routine   = routine;                                  
ffc0cc10:	90 ff 00 64 	stw     r7,100(r31)                            
  the_watchdog->id        = id;                                       
ffc0cc14:	90 ff 00 68 	stw     r7,104(r31)                            
  the_watchdog->user_data = user_data;                                
ffc0cc18:	90 ff 00 6c 	stw     r7,108(r31)                            
ffc0cc1c:	40 9e 01 54 	bne-    cr7,ffc0cd70 <_Thread_Initialize+0x1fc>
      (_Thread_Maximum_extensions + 1) * sizeof( void * )             
    );                                                                
    if ( !extensions_area )                                           
      goto failed;                                                    
  }                                                                   
  the_thread->extensions = (void **) extensions_area;                 
ffc0cc20:	91 5f 01 54 	stw     r10,340(r31)                           
   *  Zero out all the allocated memory fields                        
   */                                                                 
  for ( i=0 ; i <= THREAD_API_LAST ; i++ )                            
    the_thread->API_Extensions[i] = NULL;                             
                                                                      
  extensions_area = NULL;                                             
ffc0cc24:	3b 20 00 00 	li      r25,0                                  
                                                                      
  the_thread->Start.is_preemptible   = is_preemptible;                
  the_thread->Start.budget_algorithm = budget_algorithm;              
  the_thread->Start.budget_callout   = budget_callout;                
                                                                      
  switch ( budget_algorithm ) {                                       
ffc0cc28:	2f 9c 00 02 	cmpwi   cr7,r28,2                              
   *  General initialization                                          
   */                                                                 
                                                                      
  the_thread->Start.is_preemptible   = is_preemptible;                
  the_thread->Start.budget_algorithm = budget_algorithm;              
  the_thread->Start.budget_callout   = budget_callout;                
ffc0cc2c:	81 21 00 50 	lwz     r9,80(r1)                              
                                                                      
  /*                                                                  
   *  General initialization                                          
   */                                                                 
                                                                      
  the_thread->Start.is_preemptible   = is_preemptible;                
ffc0cc30:	9a ff 00 9c 	stb     r23,156(r31)                           
  the_thread->Start.budget_algorithm = budget_algorithm;              
ffc0cc34:	93 9f 00 a0 	stw     r28,160(r31)                           
  the_thread->Start.budget_callout   = budget_callout;                
ffc0cc38:	91 3f 00 a4 	stw     r9,164(r31)                            
                                                                      
  switch ( budget_algorithm ) {                                       
ffc0cc3c:	40 be 00 10 	bne+    cr7,ffc0cc4c <_Thread_Initialize+0xd8> 
    case THREAD_CPU_BUDGET_ALGORITHM_NONE:                            
    case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE:                 
      break;                                                          
    #if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE)          
      case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE:             
        the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;    
ffc0cc40:	3d 20 00 00 	lis     r9,0                                   
ffc0cc44:	81 29 28 64 	lwz     r9,10340(r9)                           
ffc0cc48:	91 3f 00 74 	stw     r9,116(r31)                            
  }                                                                   
                                                                      
  the_thread->Start.isr_level         = isr_level;                    
                                                                      
  the_thread->current_state           = STATES_DORMANT;               
  the_thread->Wait.queue              = NULL;                         
ffc0cc4c:	39 20 00 00 	li      r9,0                                   
      case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:                       
	break;                                                               
    #endif                                                            
  }                                                                   
                                                                      
  the_thread->Start.isr_level         = isr_level;                    
ffc0cc50:	81 41 00 54 	lwz     r10,84(r1)                             
                                                                      
  the_thread->current_state           = STATES_DORMANT;               
  the_thread->Wait.queue              = NULL;                         
ffc0cc54:	91 3f 00 44 	stw     r9,68(r31)                             
    #endif                                                            
  }                                                                   
                                                                      
  the_thread->Start.isr_level         = isr_level;                    
                                                                      
  the_thread->current_state           = STATES_DORMANT;               
ffc0cc58:	3b 80 00 01 	li      r28,1                                  
 */                                                                   
RTEMS_INLINE_ROUTINE void* _Scheduler_Allocate(                       
  Thread_Control    *the_thread                                       
)                                                                     
{                                                                     
  return _Scheduler.Operations.allocate( the_thread );                
ffc0cc5c:	7f e3 fb 78 	mr      r3,r31                                 
  the_thread->Wait.queue              = NULL;                         
  the_thread->resource_count          = 0;                            
ffc0cc60:	91 3f 00 1c 	stw     r9,28(r31)                             
ffc0cc64:	3d 20 00 00 	lis     r9,0                                   
ffc0cc68:	81 29 20 98 	lwz     r9,8344(r9)                            
      case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:                       
	break;                                                               
    #endif                                                            
  }                                                                   
                                                                      
  the_thread->Start.isr_level         = isr_level;                    
ffc0cc6c:	91 5f 00 a8 	stw     r10,168(r31)                           
ffc0cc70:	7d 29 03 a6 	mtctr   r9                                     
                                                                      
  the_thread->current_state           = STATES_DORMANT;               
ffc0cc74:	93 9f 00 10 	stw     r28,16(r31)                            
  the_thread->Wait.queue              = NULL;                         
  the_thread->resource_count          = 0;                            
  the_thread->real_priority           = priority;                     
ffc0cc78:	93 bf 00 18 	stw     r29,24(r31)                            
  the_thread->Start.initial_priority  = priority;                     
ffc0cc7c:	93 bf 00 ac 	stw     r29,172(r31)                           
ffc0cc80:	4e 80 04 21 	bctrl                                          
  sched =_Scheduler_Allocate( the_thread );                           
  if ( !sched )                                                       
ffc0cc84:	7c 78 1b 79 	mr.     r24,r3                                 
ffc0cc88:	41 82 00 5c 	beq-    ffc0cce4 <_Thread_Initialize+0x170>    
    goto failed;                                                      
  _Thread_Set_priority( the_thread, priority );                       
ffc0cc8c:	7f e3 fb 78 	mr      r3,r31                                 
ffc0cc90:	7f a4 eb 78 	mr      r4,r29                                 
ffc0cc94:	48 00 09 01 	bl      ffc0d594 <_Thread_Set_priority>        
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  Objects_Name         name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
ffc0cc98:	a1 3f 00 0a 	lhz     r9,10(r31)                             
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
ffc0cc9c:	81 1a 00 1c 	lwz     r8,28(r26)                             
                                                                      
static inline void _Timestamp64_implementation_Set_to_zero(           
  Timestamp64_Control *_time                                          
)                                                                     
{                                                                     
  *_time = 0;                                                         
ffc0cca0:	39 40 00 00 	li      r10,0                                  
ffc0cca4:	55 29 10 3a 	rlwinm  r9,r9,2,0,29                           
ffc0cca8:	91 5f 00 80 	stw     r10,128(r31)                           
ffc0ccac:	39 60 00 00 	li      r11,0                                  
ffc0ccb0:	91 7f 00 84 	stw     r11,132(r31)                           
                                                                      
static inline bool _User_extensions_Thread_create( Thread_Control *created )
{                                                                     
  User_extensions_Thread_create_context ctx = { created, true };      
                                                                      
  _User_extensions_Iterate( &ctx, _User_extensions_Thread_create_visitor );
ffc0ccb4:	3c 80 ff c1 	lis     r4,-63                                 
ffc0ccb8:	38 61 00 08 	addi    r3,r1,8                                
ffc0ccbc:	7f e8 49 2e 	stwx    r31,r8,r9                              
ffc0ccc0:	38 84 d8 14 	addi    r4,r4,-10220                           
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  the_object->name = name;                                            
ffc0ccc4:	93 7f 00 0c 	stw     r27,12(r31)                            
 * @{                                                                 
 */                                                                   
                                                                      
static inline bool _User_extensions_Thread_create( Thread_Control *created )
{                                                                     
  User_extensions_Thread_create_context ctx = { created, true };      
ffc0ccc8:	93 e1 00 08 	stw     r31,8(r1)                              
ffc0cccc:	9b 81 00 0c 	stb     r28,12(r1)                             
                                                                      
  _User_extensions_Iterate( &ctx, _User_extensions_Thread_create_visitor );
ffc0ccd0:	48 00 0c 3d 	bl      ffc0d90c <_User_extensions_Iterate>    
   *  Mutex provides sufficient protection to let the user extensions 
   *  run safely.                                                     
   */                                                                 
  extension_status = _User_extensions_Thread_create( the_thread );    
  if ( extension_status )                                             
    return true;                                                      
ffc0ccd4:	38 60 00 01 	li      r3,1                                   
                                                                      
  return ctx.ok;                                                      
ffc0ccd8:	89 21 00 0c 	lbz     r9,12(r1)                              
   *  user extensions with dispatching enabled.  The Allocator        
   *  Mutex provides sufficient protection to let the user extensions 
   *  run safely.                                                     
   */                                                                 
  extension_status = _User_extensions_Thread_create( the_thread );    
  if ( extension_status )                                             
ffc0ccdc:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0cce0:	40 9e 00 40 	bne-    cr7,ffc0cd20 <_Thread_Initialize+0x1ac>
    return true;                                                      
                                                                      
failed:                                                               
  _Workspace_Free( the_thread->libc_reent );                          
ffc0cce4:	80 7f 01 48 	lwz     r3,328(r31)                            
ffc0cce8:	48 00 12 9d 	bl      ffc0df84 <_Workspace_Free>             
                                                                      
  for ( i=0 ; i <= THREAD_API_LAST ; i++ )                            
    _Workspace_Free( the_thread->API_Extensions[i] );                 
ffc0ccec:	80 7f 01 4c 	lwz     r3,332(r31)                            
ffc0ccf0:	48 00 12 95 	bl      ffc0df84 <_Workspace_Free>             
ffc0ccf4:	80 7f 01 50 	lwz     r3,336(r31)                            
ffc0ccf8:	48 00 12 8d 	bl      ffc0df84 <_Workspace_Free>             
                                                                      
  _Workspace_Free( extensions_area );                                 
ffc0ccfc:	7f 23 cb 78 	mr      r3,r25                                 
ffc0cd00:	48 00 12 85 	bl      ffc0df84 <_Workspace_Free>             
                                                                      
  #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )      
    _Workspace_Free( fp_area );                                       
ffc0cd04:	7f c3 f3 78 	mr      r3,r30                                 
ffc0cd08:	48 00 12 7d 	bl      ffc0df84 <_Workspace_Free>             
  #endif                                                              
                                                                      
   _Workspace_Free( sched );                                          
ffc0cd0c:	7f 03 c3 78 	mr      r3,r24                                 
ffc0cd10:	48 00 12 75 	bl      ffc0df84 <_Workspace_Free>             
                                                                      
   _Thread_Stack_Free( the_thread );                                  
ffc0cd14:	7f e3 fb 78 	mr      r3,r31                                 
ffc0cd18:	48 00 09 f5 	bl      ffc0d70c <_Thread_Stack_Free>          
  return false;                                                       
ffc0cd1c:	38 60 00 00 	li      r3,0                                   
}                                                                     
ffc0cd20:	80 01 00 4c 	lwz     r0,76(r1)                              
ffc0cd24:	82 e1 00 24 	lwz     r23,36(r1)                             
ffc0cd28:	7c 08 03 a6 	mtlr    r0                                     
ffc0cd2c:	83 01 00 28 	lwz     r24,40(r1)                             
ffc0cd30:	83 21 00 2c 	lwz     r25,44(r1)                             
ffc0cd34:	83 41 00 30 	lwz     r26,48(r1)                             
ffc0cd38:	83 61 00 34 	lwz     r27,52(r1)                             
ffc0cd3c:	83 81 00 38 	lwz     r28,56(r1)                             
ffc0cd40:	83 a1 00 3c 	lwz     r29,60(r1)                             
ffc0cd44:	83 c1 00 40 	lwz     r30,64(r1)                             
ffc0cd48:	83 e1 00 44 	lwz     r31,68(r1)                             
ffc0cd4c:	38 21 00 48 	addi    r1,r1,72                               
ffc0cd50:	4e 80 00 20 	blr                                            
  /*                                                                  
   *  Allocate the floating point area for this thread                
   */                                                                 
  #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )      
    if ( is_fp ) {                                                    
      fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE );               
ffc0cd54:	38 60 01 08 	li      r3,264                                 
ffc0cd58:	48 00 12 15 	bl      ffc0df6c <_Workspace_Allocate>         
      if ( !fp_area )                                                 
ffc0cd5c:	7c 7e 1b 79 	mr.     r30,r3                                 
ffc0cd60:	40 82 fe 94 	bne+    ffc0cbf4 <_Thread_Initialize+0x80>     
   *  Zero out all the allocated memory fields                        
   */                                                                 
  for ( i=0 ; i <= THREAD_API_LAST ; i++ )                            
    the_thread->API_Extensions[i] = NULL;                             
                                                                      
  extensions_area = NULL;                                             
ffc0cd64:	3b 20 00 00 	li      r25,0                                  
  size_t               actual_stack_size = 0;                         
  void                *stack = NULL;                                  
  #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )      
    void              *fp_area;                                       
  #endif                                                              
  void                *sched = NULL;                                  
ffc0cd68:	3b 00 00 00 	li      r24,0                                  
ffc0cd6c:	4b ff ff 78 	b       ffc0cce4 <_Thread_Initialize+0x170>    
                                                                      
  /*                                                                  
   *  Allocate the extensions area for this thread                    
   */                                                                 
  if ( _Thread_Maximum_extensions ) {                                 
    extensions_area = _Workspace_Allocate(                            
ffc0cd70:	38 6a 00 01 	addi    r3,r10,1                               
ffc0cd74:	54 63 10 3a 	rlwinm  r3,r3,2,0,29                           
ffc0cd78:	48 00 11 f5 	bl      ffc0df6c <_Workspace_Allocate>         
      (_Thread_Maximum_extensions + 1) * sizeof( void * )             
    );                                                                
    if ( !extensions_area )                                           
ffc0cd7c:	7c 79 1b 79 	mr.     r25,r3                                 
ffc0cd80:	41 82 00 84 	beq-    ffc0ce04 <_Thread_Initialize+0x290>    
      goto failed;                                                    
  }                                                                   
  the_thread->extensions = (void **) extensions_area;                 
ffc0cd84:	93 3f 01 54 	stw     r25,340(r31)                           
ffc0cd88:	7f 25 cb 78 	mr      r5,r25                                 
   * create the extension long after tasks have been created          
   * so they cannot rely on the thread create user extension          
   * call.                                                            
   */                                                                 
  if ( the_thread->extensions ) {                                     
    for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )              
ffc0cd8c:	38 c0 00 00 	li      r6,0                                   
ffc0cd90:	80 18 28 74 	lwz     r0,10356(r24)                          
      (_Thread_Maximum_extensions + 1) * sizeof( void * )             
    );                                                                
    if ( !extensions_area )                                           
      goto failed;                                                    
  }                                                                   
  the_thread->extensions = (void **) extensions_area;                 
ffc0cd94:	38 e0 00 00 	li      r7,0                                   
   * so they cannot rely on the thread create user extension          
   * call.                                                            
   */                                                                 
  if ( the_thread->extensions ) {                                     
    for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )              
      the_thread->extensions[i] = NULL;                               
ffc0cd98:	39 60 00 00 	li      r11,0                                  
ffc0cd9c:	48 00 00 08 	b       ffc0cda4 <_Thread_Initialize+0x230>    
ffc0cda0:	80 bf 01 54 	lwz     r5,340(r31)                            
   * create the extension long after tasks have been created          
   * so they cannot rely on the thread create user extension          
   * call.                                                            
   */                                                                 
  if ( the_thread->extensions ) {                                     
    for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )              
ffc0cda4:	38 e7 00 01 	addi    r7,r7,1                                
ffc0cda8:	7f 87 00 40 	cmplw   cr7,r7,r0                              
      the_thread->extensions[i] = NULL;                               
ffc0cdac:	54 c6 10 3a 	rlwinm  r6,r6,2,0,29                           
ffc0cdb0:	7d 65 31 2e 	stwx    r11,r5,r6                              
   * create the extension long after tasks have been created          
   * so they cannot rely on the thread create user extension          
   * call.                                                            
   */                                                                 
  if ( the_thread->extensions ) {                                     
    for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )              
ffc0cdb4:	7c e6 3b 78 	mr      r6,r7                                  
ffc0cdb8:	40 9d ff e8 	ble+    cr7,ffc0cda0 <_Thread_Initialize+0x22c>
ffc0cdbc:	4b ff fe 6c 	b       ffc0cc28 <_Thread_Initialize+0xb4>     
      return false;                     /* stack allocation failed */ 
                                                                      
    stack = the_thread->Start.stack;                                  
  #else                                                               
    if ( !stack_area ) {                                              
      actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
ffc0cdc0:	7c 83 23 78 	mr      r3,r4                                  
ffc0cdc4:	90 c1 00 18 	stw     r6,24(r1)                              
ffc0cdc8:	7c c4 33 78 	mr      r4,r6                                  
ffc0cdcc:	90 e1 00 1c 	stw     r7,28(r1)                              
ffc0cdd0:	48 00 08 ad 	bl      ffc0d67c <_Thread_Stack_Allocate>      
      if ( !actual_stack_size || actual_stack_size < stack_size )     
ffc0cdd4:	7c 6a 1b 79 	mr.     r10,r3                                 
ffc0cdd8:	80 c1 00 18 	lwz     r6,24(r1)                              
        return false;                     /* stack allocation failed */
ffc0cddc:	38 60 00 00 	li      r3,0                                   
                                                                      
    stack = the_thread->Start.stack;                                  
  #else                                                               
    if ( !stack_area ) {                                              
      actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
      if ( !actual_stack_size || actual_stack_size < stack_size )     
ffc0cde0:	80 e1 00 1c 	lwz     r7,28(r1)                              
ffc0cde4:	41 a2 ff 3c 	beq-    ffc0cd20 <_Thread_Initialize+0x1ac>    
ffc0cde8:	7f 86 50 40 	cmplw   cr7,r6,r10                             
        return false;                     /* stack allocation failed */
ffc0cdec:	7f c3 f3 78 	mr      r3,r30                                 
                                                                      
    stack = the_thread->Start.stack;                                  
  #else                                                               
    if ( !stack_area ) {                                              
      actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
      if ( !actual_stack_size || actual_stack_size < stack_size )     
ffc0cdf0:	41 bd ff 30 	bgt-    cr7,ffc0cd20 <_Thread_Initialize+0x1ac><== NEVER TAKEN
        return false;                     /* stack allocation failed */
                                                                      
      stack = the_thread->Start.stack;                                
      the_thread->Start.core_allocated_stack = true;                  
ffc0cdf4:	39 20 00 01 	li      r9,1                                   
    if ( !stack_area ) {                                              
      actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
      if ( !actual_stack_size || actual_stack_size < stack_size )     
        return false;                     /* stack allocation failed */
                                                                      
      stack = the_thread->Start.stack;                                
ffc0cdf8:	83 df 00 c0 	lwz     r30,192(r31)                           
      the_thread->Start.core_allocated_stack = true;                  
ffc0cdfc:	99 3f 00 b0 	stb     r9,176(r31)                            
ffc0ce00:	4b ff fd e0 	b       ffc0cbe0 <_Thread_Initialize+0x6c>     
  size_t               actual_stack_size = 0;                         
  void                *stack = NULL;                                  
  #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )      
    void              *fp_area;                                       
  #endif                                                              
  void                *sched = NULL;                                  
ffc0ce04:	3b 00 00 00 	li      r24,0                                  
ffc0ce08:	4b ff fe dc 	b       ffc0cce4 <_Thread_Initialize+0x170>    
                                                                      

ffc0df58 <_Thread_Restart>: bool _Thread_Restart( Thread_Control *the_thread, void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) {
ffc0df58:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0df5c:	7c 08 02 a6 	mflr    r0                                     
ffc0df60:	90 01 00 1c 	stw     r0,28(r1)                              
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_dormant (                        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_DORMANT);                              
ffc0df64:	81 23 00 10 	lwz     r9,16(r3)                              
ffc0df68:	93 e1 00 14 	stw     r31,20(r1)                             
ffc0df6c:	7c 7f 1b 78 	mr      r31,r3                                 
  if ( !_States_Is_dormant( the_thread->current_state ) ) {           
ffc0df70:	71 2a 00 01 	andi.   r10,r9,1                               
bool _Thread_Restart(                                                 
  Thread_Control            *the_thread,                              
  void                      *pointer_argument,                        
  Thread_Entry_numeric_type  numeric_argument                         
)                                                                     
{                                                                     
ffc0df74:	93 c1 00 10 	stw     r30,16(r1)                             
  if ( !_States_Is_dormant( the_thread->current_state ) ) {           
ffc0df78:	41 82 00 20 	beq-    ffc0df98 <_Thread_Restart+0x40>        
      _Thread_Restart_self();                                         
                                                                      
    return true;                                                      
  }                                                                   
                                                                      
  return false;                                                       
ffc0df7c:	38 60 00 00 	li      r3,0                                   
}                                                                     
ffc0df80:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0df84:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0df88:	7c 08 03 a6 	mtlr    r0                                     
ffc0df8c:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0df90:	38 21 00 18 	addi    r1,r1,24                               
ffc0df94:	4e 80 00 20 	blr                                            
  Thread_Entry_numeric_type  numeric_argument                         
)                                                                     
{                                                                     
  if ( !_States_Is_dormant( the_thread->current_state ) ) {           
                                                                      
    _Thread_Set_transient( the_thread );                              
ffc0df98:	90 81 00 08 	stw     r4,8(r1)                               
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (                      
  const Thread_Control *the_thread                                    
)                                                                     
{                                                                     
  return ( the_thread == _Thread_Executing );                         
ffc0df9c:	3f c0 00 00 	lis     r30,0                                  
ffc0dfa0:	3b de 31 e0 	addi    r30,r30,12768                          
ffc0dfa4:	90 a1 00 0c 	stw     r5,12(r1)                              
ffc0dfa8:	48 00 00 f1 	bl      ffc0e098 <_Thread_Set_transient>       
                                                                      
    _Thread_Reset( the_thread, pointer_argument, numeric_argument );  
ffc0dfac:	7f e3 fb 78 	mr      r3,r31                                 
ffc0dfb0:	80 81 00 08 	lwz     r4,8(r1)                               
ffc0dfb4:	80 a1 00 0c 	lwz     r5,12(r1)                              
ffc0dfb8:	48 00 39 ad 	bl      ffc11964 <_Thread_Reset>               
                                                                      
    _Thread_Load_environment( the_thread );                           
ffc0dfbc:	7f e3 fb 78 	mr      r3,r31                                 
ffc0dfc0:	48 00 36 61 	bl      ffc11620 <_Thread_Load_environment>    
                                                                      
    _Thread_Ready( the_thread );                                      
ffc0dfc4:	7f e3 fb 78 	mr      r3,r31                                 
ffc0dfc8:	48 00 39 4d 	bl      ffc11914 <_Thread_Ready>               
  );                                                                  
}                                                                     
                                                                      
static inline void _User_extensions_Thread_restart( Thread_Control *restarted )
{                                                                     
  _User_extensions_Iterate(                                           
ffc0dfcc:	3c 80 ff c1 	lis     r4,-63                                 
ffc0dfd0:	7f e3 fb 78 	mr      r3,r31                                 
ffc0dfd4:	38 84 e3 24 	addi    r4,r4,-7388                            
ffc0dfd8:	48 00 03 ad 	bl      ffc0e384 <_User_extensions_Iterate>    
                                                                      
    _User_extensions_Thread_restart( the_thread );                    
                                                                      
    if ( _Thread_Is_executing ( the_thread ) )                        
ffc0dfdc:	81 3e 00 10 	lwz     r9,16(r30)                             
      _Thread_Restart_self();                                         
                                                                      
    return true;                                                      
ffc0dfe0:	38 60 00 01 	li      r3,1                                   
                                                                      
    _Thread_Ready( the_thread );                                      
                                                                      
    _User_extensions_Thread_restart( the_thread );                    
                                                                      
    if ( _Thread_Is_executing ( the_thread ) )                        
ffc0dfe4:	7f 9f 48 00 	cmpw    cr7,r31,r9                             
ffc0dfe8:	40 9e ff 98 	bne+    cr7,ffc0df80 <_Thread_Restart+0x28>    
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Restart_self( void )                
{                                                                     
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )        
  if ( _Thread_Executing->fp_context != NULL )                        
ffc0dfec:	81 3f 01 44 	lwz     r9,324(r31)                            
ffc0dff0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0dff4:	41 9e 00 0c 	beq-    cr7,ffc0e000 <_Thread_Restart+0xa8>    <== NEVER TAKEN
    _Context_Restore_fp( &_Thread_Executing->fp_context );            
ffc0dff8:	38 7f 01 44 	addi    r3,r31,324                             
ffc0dffc:	48 01 04 85 	bl      ffc1e480 <_CPU_Context_restore_fp>     
#endif                                                                
                                                                      
  _CPU_Context_Restart_self( &_Thread_Executing->Registers );         
ffc0e000:	80 7e 00 10 	lwz     r3,16(r30)                             
ffc0e004:	38 63 00 c4 	addi    r3,r3,196                              
ffc0e008:	48 01 06 0d 	bl      ffc1e614 <_CPU_Context_restore>        
                                                                      

ffc0d49c <_Thread_queue_Requeue>: void _Thread_queue_Requeue( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread ) {
ffc0d49c:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc0d4a0:	7c 08 02 a6 	mflr    r0                                     
ffc0d4a4:	93 e1 00 24 	stw     r31,36(r1)                             
  /*                                                                  
   * Just in case the thread really wasn't blocked on a thread queue  
   * when we get here.                                                
   */                                                                 
  if ( !the_thread_queue )                                            
ffc0d4a8:	7c 7f 1b 79 	mr.     r31,r3                                 
                                                                      
void _Thread_queue_Requeue(                                           
  Thread_queue_Control *the_thread_queue,                             
  Thread_Control       *the_thread                                    
)                                                                     
{                                                                     
ffc0d4ac:	90 01 00 2c 	stw     r0,44(r1)                              
ffc0d4b0:	93 a1 00 1c 	stw     r29,28(r1)                             
ffc0d4b4:	93 c1 00 20 	stw     r30,32(r1)                             
  /*                                                                  
   * Just in case the thread really wasn't blocked on a thread queue  
   * when we get here.                                                
   */                                                                 
  if ( !the_thread_queue )                                            
ffc0d4b8:	41 82 00 10 	beq-    ffc0d4c8 <_Thread_queue_Requeue+0x2c>  <== NEVER TAKEN
                                                                      
  /*                                                                  
   * If queueing by FIFO, there is nothing to do. This only applies to
   * priority blocking discipline.                                    
   */                                                                 
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
ffc0d4bc:	81 3f 00 34 	lwz     r9,52(r31)                             
ffc0d4c0:	2f 89 00 01 	cmpwi   cr7,r9,1                               
ffc0d4c4:	41 9e 00 20 	beq-    cr7,ffc0d4e4 <_Thread_queue_Requeue+0x48><== ALWAYS TAKEN
      _Thread_queue_Extract_priority_helper( tq, the_thread, true );  
      (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
    }                                                                 
    _ISR_Enable( level );                                             
  }                                                                   
}                                                                     
ffc0d4c8:	80 01 00 2c 	lwz     r0,44(r1)                              <== NOT EXECUTED
ffc0d4cc:	83 a1 00 1c 	lwz     r29,28(r1)                             <== NOT EXECUTED
ffc0d4d0:	7c 08 03 a6 	mtlr    r0                                     <== NOT EXECUTED
ffc0d4d4:	83 c1 00 20 	lwz     r30,32(r1)                             <== NOT EXECUTED
ffc0d4d8:	83 e1 00 24 	lwz     r31,36(r1)                             <== NOT EXECUTED
ffc0d4dc:	38 21 00 28 	addi    r1,r1,40                               <== NOT EXECUTED
ffc0d4e0:	4e 80 00 20 	blr                                            <== NOT EXECUTED
ffc0d4e4:	7c 9e 23 78 	mr      r30,r4                                 
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0d4e8:	7f a0 00 a6 	mfmsr   r29                                    
ffc0d4ec:	7d 50 42 a6 	mfsprg  r10,0                                  
ffc0d4f0:	7f aa 50 78 	andc    r10,r29,r10                            
ffc0d4f4:	7d 40 01 24 	mtmsr   r10                                    
ffc0d4f8:	3d 00 00 03 	lis     r8,3                                   
ffc0d4fc:	81 44 00 10 	lwz     r10,16(r4)                             
ffc0d500:	61 08 be e0 	ori     r8,r8,48864                            
    Thread_queue_Control *tq = the_thread_queue;                      
    ISR_Level             level;                                      
    ISR_Level             level_ignored;                              
                                                                      
    _ISR_Disable( level );                                            
    if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
ffc0d504:	7d 07 50 39 	and.    r7,r8,r10                              
ffc0d508:	40 82 00 24 	bne-    ffc0d52c <_Thread_queue_Requeue+0x90>  <== ALWAYS TAKEN
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0d50c:	7f a0 01 24 	mtmsr   r29                                    <== NOT EXECUTED
      _Thread_queue_Extract_priority_helper( tq, the_thread, true );  
      (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
    }                                                                 
    _ISR_Enable( level );                                             
  }                                                                   
}                                                                     
ffc0d510:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc0d514:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc0d518:	7c 08 03 a6 	mtlr    r0                                     
ffc0d51c:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc0d520:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc0d524:	38 21 00 28 	addi    r1,r1,40                               
ffc0d528:	4e 80 00 20 	blr                                            
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (      
  Thread_queue_Control *the_thread_queue                              
)                                                                     
{                                                                     
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
ffc0d52c:	91 3f 00 30 	stw     r9,48(r31)                             
    ISR_Level             level_ignored;                              
                                                                      
    _ISR_Disable( level );                                            
    if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
      _Thread_queue_Enter_critical_section( tq );                     
      _Thread_queue_Extract_priority_helper( tq, the_thread, true );  
ffc0d530:	38 a0 00 01 	li      r5,1                                   
ffc0d534:	48 00 38 21 	bl      ffc10d54 <_Thread_queue_Extract_priority_helper>
      (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
ffc0d538:	7f e3 fb 78 	mr      r3,r31                                 
ffc0d53c:	7f c4 f3 78 	mr      r4,r30                                 
ffc0d540:	38 a1 00 08 	addi    r5,r1,8                                
ffc0d544:	4b ff fc 69 	bl      ffc0d1ac <_Thread_queue_Enqueue_priority>
ffc0d548:	7f a0 01 24 	mtmsr   r29                                    
ffc0d54c:	4b ff ff c4 	b       ffc0d510 <_Thread_queue_Requeue+0x74>  
                                                                      

ffc0d550 <_Thread_queue_Timeout>: void _Thread_queue_Timeout( Objects_Id id, void *ignored __attribute__((unused)) ) {
ffc0d550:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0d554:	7c 08 02 a6 	mflr    r0                                     
  Thread_Control       *the_thread;                                   
  Objects_Locations     location;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
ffc0d558:	38 81 00 08 	addi    r4,r1,8                                
                                                                      
void _Thread_queue_Timeout(                                           
  Objects_Id  id,                                                     
  void       *ignored __attribute__((unused))                         
)                                                                     
{                                                                     
ffc0d55c:	90 01 00 1c 	stw     r0,28(r1)                              
  Thread_Control       *the_thread;                                   
  Objects_Locations     location;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
ffc0d560:	4b ff f5 7d 	bl      ffc0cadc <_Thread_Get>                 
  switch ( location ) {                                               
ffc0d564:	81 21 00 08 	lwz     r9,8(r1)                               
ffc0d568:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0d56c:	40 9e 00 18 	bne-    cr7,ffc0d584 <_Thread_queue_Timeout+0x34><== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
      break;                                                          
    case OBJECTS_LOCAL:                                               
      _Thread_queue_Process_timeout( the_thread );                    
ffc0d570:	48 00 38 e1 	bl      ffc10e50 <_Thread_queue_Process_timeout>
   *                                                                  
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc0d574:	3d 20 00 00 	lis     r9,0                                   
ffc0d578:	81 49 28 68 	lwz     r10,10344(r9)                          
                                                                      
    --level;                                                          
ffc0d57c:	39 4a ff ff 	addi    r10,r10,-1                             
    _Thread_Dispatch_disable_level = level;                           
ffc0d580:	91 49 28 68 	stw     r10,10344(r9)                          
      _Thread_Unnest_dispatch();                                      
      break;                                                          
  }                                                                   
}                                                                     
ffc0d584:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0d588:	38 21 00 18 	addi    r1,r1,24                               
ffc0d58c:	7c 08 03 a6 	mtlr    r0                                     
ffc0d590:	4e 80 00 20 	blr                                            
                                                                      

ffc1d878 <_Timer_server_Body>: * @a arg points to the corresponding timer server control block. */ static rtems_task _Timer_server_Body( rtems_task_argument arg ) {
ffc1d878:	94 21 ff 98 	stwu    r1,-104(r1)                            
ffc1d87c:	7c 08 02 a6 	mflr    r0                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
ffc1d880:	39 20 00 00 	li      r9,0                                   
ffc1d884:	92 c1 00 40 	stw     r22,64(r1)                             
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
ffc1d888:	3a c1 00 14 	addi    r22,r1,20                              
ffc1d88c:	93 01 00 48 	stw     r24,72(r1)                             
ffc1d890:	3b 01 00 0c 	addi    r24,r1,12                              
ffc1d894:	93 61 00 54 	stw     r27,84(r1)                             
ffc1d898:	3b 61 00 18 	addi    r27,r1,24                              
ffc1d89c:	93 a1 00 5c 	stw     r29,92(r1)                             
  head->previous = NULL;                                              
  tail->previous = head;                                              
ffc1d8a0:	3b a1 00 08 	addi    r29,r1,8                               
ffc1d8a4:	92 a1 00 3c 	stw     r21,60(r1)                             
ffc1d8a8:	3e a0 00 00 	lis     r21,0                                  
ffc1d8ac:	3a b5 29 3c 	addi    r21,r21,10556                          
ffc1d8b0:	93 21 00 4c 	stw     r25,76(r1)                             
ffc1d8b4:	3f 20 00 00 	lis     r25,0                                  
ffc1d8b8:	3b 39 29 5c 	addi    r25,r25,10588                          
ffc1d8bc:	93 41 00 50 	stw     r26,80(r1)                             
ffc1d8c0:	3f 40 00 00 	lis     r26,0                                  
ffc1d8c4:	3b 5a 70 80 	addi    r26,r26,28800                          
ffc1d8c8:	90 01 00 6c 	stw     r0,108(r1)                             
ffc1d8cc:	92 01 00 28 	stw     r16,40(r1)                             
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
ffc1d8d0:	93 61 00 14 	stw     r27,20(r1)                             
  head->previous = NULL;                                              
ffc1d8d4:	91 21 00 18 	stw     r9,24(r1)                              
  tail->previous = head;                                              
ffc1d8d8:	92 c1 00 1c 	stw     r22,28(r1)                             
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
ffc1d8dc:	93 01 00 08 	stw     r24,8(r1)                              
  head->previous = NULL;                                              
ffc1d8e0:	91 21 00 0c 	stw     r9,12(r1)                              
  tail->previous = head;                                              
ffc1d8e4:	93 a1 00 10 	stw     r29,16(r1)                             
ffc1d8e8:	92 21 00 2c 	stw     r17,44(r1)                             
ffc1d8ec:	3a 23 00 08 	addi    r17,r3,8                               
ffc1d8f0:	92 41 00 30 	stw     r18,48(r1)                             
ffc1d8f4:	3a 43 00 40 	addi    r18,r3,64                              
ffc1d8f8:	92 61 00 34 	stw     r19,52(r1)                             
         *  the active flag of the timer server is true.              
         */                                                           
        (*watchdog->routine)( watchdog->id, watchdog->user_data );    
      }                                                               
    } else {                                                          
      ts->active = false;                                             
ffc1d8fc:	3a 60 00 00 	li      r19,0                                  
 *  @a arg points to the corresponding timer server control block.    
 */                                                                   
static rtems_task _Timer_server_Body(                                 
  rtems_task_argument arg                                             
)                                                                     
{                                                                     
ffc1d900:	92 81 00 38 	stw     r20,56(r1)                             
        _Thread_Set_state( ts->thread, STATES_DELAYING );             
        _Timer_server_Reset_interval_system_watchdog( ts );           
        _Timer_server_Reset_tod_system_watchdog( ts );                
      _Thread_Enable_dispatch();                                      
                                                                      
      ts->active = true;                                              
ffc1d904:	3a 80 00 01 	li      r20,1                                  
 *  @a arg points to the corresponding timer server control block.    
 */                                                                   
static rtems_task _Timer_server_Body(                                 
  rtems_task_argument arg                                             
)                                                                     
{                                                                     
ffc1d908:	92 e1 00 44 	stw     r23,68(r1)                             
         *  service routine may remove a watchdog from the chain.     
         */                                                           
        _ISR_Disable( level );                                        
        watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
        if ( watchdog != NULL ) {                                     
          watchdog->state = WATCHDOG_INACTIVE;                        
ffc1d90c:	3a e0 00 00 	li      r23,0                                  
 *  @a arg points to the corresponding timer server control block.    
 */                                                                   
static rtems_task _Timer_server_Body(                                 
  rtems_task_argument arg                                             
)                                                                     
{                                                                     
ffc1d910:	93 81 00 58 	stw     r28,88(r1)                             
ffc1d914:	3b 83 00 30 	addi    r28,r3,48                              
ffc1d918:	93 c1 00 60 	stw     r30,96(r1)                             
ffc1d91c:	3b c3 00 68 	addi    r30,r3,104                             
ffc1d920:	93 e1 00 64 	stw     r31,100(r1)                            
ffc1d924:	7c 7f 1b 78 	mr      r31,r3                                 
{                                                                     
  /*                                                                  
   *  Afterwards all timer inserts are directed to this chain and the interval
   *  and TOD chains will be no more modified by other parties.       
   */                                                                 
  ts->insert_chain = insert_chain;                                    
ffc1d928:	92 df 00 78 	stw     r22,120(r31)                           
static void _Timer_server_Process_interval_watchdogs(                 
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot;            
ffc1d92c:	81 39 00 00 	lwz     r9,0(r25)                              
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
                                                                      
  watchdogs->last_snapshot = snapshot;                                
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
ffc1d930:	7f 83 e3 78 	mr      r3,r28                                 
  Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot;            
                                                                      
  /*                                                                  
   *  We assume adequate unsigned arithmetic here.                    
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
ffc1d934:	80 9f 00 3c 	lwz     r4,60(r31)                             
                                                                      
  watchdogs->last_snapshot = snapshot;                                
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
ffc1d938:	7f a5 eb 78 	mr      r5,r29                                 
  /*                                                                  
   *  We assume adequate unsigned arithmetic here.                    
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
                                                                      
  watchdogs->last_snapshot = snapshot;                                
ffc1d93c:	91 3f 00 3c 	stw     r9,60(r31)                             
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
ffc1d940:	7c 84 48 50 	subf    r4,r4,r9                               
ffc1d944:	48 00 52 b9 	bl      ffc22bfc <_Watchdog_Adjust_to_chain>   
ffc1d948:	80 7a 00 00 	lwz     r3,0(r26)                              
ffc1d94c:	80 9a 00 04 	lwz     r4,4(r26)                              
ffc1d950:	3c c0 3b 9a 	lis     r6,15258                               
ffc1d954:	38 a0 00 00 	li      r5,0                                   
ffc1d958:	60 c6 ca 00 	ori     r6,r6,51712                            
ffc1d95c:	48 01 60 69 	bl      ffc339c4 <__divdi3>                    
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
  Watchdog_Interval last_snapshot = watchdogs->last_snapshot;         
ffc1d960:	80 bf 00 74 	lwz     r5,116(r31)                            
ffc1d964:	7c 90 23 78 	mr      r16,r4                                 
  /*                                                                  
   *  Process the seconds chain.  Start by checking that the Time     
   *  of Day (TOD) has not been set backwards.  If it has then        
   *  we want to adjust the watchdogs->Chain to indicate this.        
   */                                                                 
  if ( snapshot > last_snapshot ) {                                   
ffc1d968:	7f 84 28 40 	cmplw   cr7,r4,r5                              
ffc1d96c:	41 9d 00 94 	bgt-    cr7,ffc1da00 <_Timer_server_Body+0x188>
     *  TOD has been set forward.                                     
     */                                                               
    delta = snapshot - last_snapshot;                                 
    _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
                                                                      
  } else if ( snapshot < last_snapshot ) {                            
ffc1d970:	41 9c 00 6c 	blt-    cr7,ffc1d9dc <_Timer_server_Body+0x164>
      */                                                              
     delta = last_snapshot - snapshot;                                
     _Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta ); 
  }                                                                   
                                                                      
  watchdogs->last_snapshot = snapshot;                                
ffc1d974:	92 1f 00 74 	stw     r16,116(r31)                           
}                                                                     
                                                                      
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{                                                                     
  while ( true ) {                                                    
    Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
ffc1d978:	80 7f 00 78 	lwz     r3,120(r31)                            
ffc1d97c:	48 00 0b 31 	bl      ffc1e4ac <_Chain_Get>                  
                                                                      
    if ( timer == NULL ) {                                            
ffc1d980:	7c 64 1b 79 	mr.     r4,r3                                  
ffc1d984:	41 82 00 34 	beq-    ffc1d9b8 <_Timer_server_Body+0x140>    
static void _Timer_server_Insert_timer(                               
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
ffc1d988:	81 24 00 38 	lwz     r9,56(r4)                              
ffc1d98c:	2f 89 00 01 	cmpwi   cr7,r9,1                               
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
ffc1d990:	2f 09 00 03 	cmpwi   cr6,r9,3                               
static void _Timer_server_Insert_timer(                               
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
ffc1d994:	41 9e 00 5c 	beq-    cr7,ffc1d9f0 <_Timer_server_Body+0x178>
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
ffc1d998:	40 9a ff e0 	bne+    cr6,ffc1d978 <_Timer_server_Body+0x100><== NEVER TAKEN
    _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );     
ffc1d99c:	38 84 00 10 	addi    r4,r4,16                               
ffc1d9a0:	7f c3 f3 78 	mr      r3,r30                                 
ffc1d9a4:	48 00 52 fd 	bl      ffc22ca0 <_Watchdog_Insert>            
}                                                                     
                                                                      
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{                                                                     
  while ( true ) {                                                    
    Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
ffc1d9a8:	80 7f 00 78 	lwz     r3,120(r31)                            
ffc1d9ac:	48 00 0b 01 	bl      ffc1e4ac <_Chain_Get>                  
                                                                      
    if ( timer == NULL ) {                                            
ffc1d9b0:	7c 64 1b 79 	mr.     r4,r3                                  
ffc1d9b4:	40 82 ff d4 	bne+    ffc1d988 <_Timer_server_Body+0x110>    <== NEVER TAKEN
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc1d9b8:	7d 40 00 a6 	mfmsr   r10                                    
ffc1d9bc:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc1d9c0:	7d 49 48 78 	andc    r9,r10,r9                              
ffc1d9c4:	7d 20 01 24 	mtmsr   r9                                     
     *  body loop.                                                    
     */                                                               
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
    if ( _Chain_Is_empty( insert_chain ) ) {                          
ffc1d9c8:	81 21 00 14 	lwz     r9,20(r1)                              
ffc1d9cc:	7f 89 d8 00 	cmpw    cr7,r9,r27                             
ffc1d9d0:	41 9e 00 44 	beq-    cr7,ffc1da14 <_Timer_server_Body+0x19c><== ALWAYS TAKEN
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc1d9d4:	7d 40 01 24 	mtmsr   r10                                    <== NOT EXECUTED
ffc1d9d8:	4b ff ff 54 	b       ffc1d92c <_Timer_server_Body+0xb4>     <== NOT EXECUTED
     /*                                                               
      *  The current TOD is before the last TOD which indicates that  
      *  TOD has been set backwards.                                  
      */                                                              
     delta = last_snapshot - snapshot;                                
     _Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta ); 
ffc1d9dc:	7f c3 f3 78 	mr      r3,r30                                 
ffc1d9e0:	38 80 00 01 	li      r4,1                                   
ffc1d9e4:	7c b0 28 50 	subf    r5,r16,r5                              
ffc1d9e8:	48 00 51 01 	bl      ffc22ae8 <_Watchdog_Adjust>            
ffc1d9ec:	4b ff ff 88 	b       ffc1d974 <_Timer_server_Body+0xfc>     
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
ffc1d9f0:	7f 83 e3 78 	mr      r3,r28                                 
ffc1d9f4:	38 84 00 10 	addi    r4,r4,16                               
ffc1d9f8:	48 00 52 a9 	bl      ffc22ca0 <_Watchdog_Insert>            
ffc1d9fc:	4b ff ff 7c 	b       ffc1d978 <_Timer_server_Body+0x100>    
    /*                                                                
     *  This path is for normal forward movement and cases where the  
     *  TOD has been set forward.                                     
     */                                                               
    delta = snapshot - last_snapshot;                                 
    _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
ffc1da00:	7c 85 20 50 	subf    r4,r5,r4                               
ffc1da04:	7f c3 f3 78 	mr      r3,r30                                 
ffc1da08:	7f a5 eb 78 	mr      r5,r29                                 
ffc1da0c:	48 00 51 f1 	bl      ffc22bfc <_Watchdog_Adjust_to_chain>   
ffc1da10:	4b ff ff 64 	b       ffc1d974 <_Timer_server_Body+0xfc>     
     */                                                               
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
    if ( _Chain_Is_empty( insert_chain ) ) {                          
      ts->insert_chain = NULL;                                        
ffc1da14:	90 9f 00 78 	stw     r4,120(r31)                            
ffc1da18:	7d 40 01 24 	mtmsr   r10                                    
  _Chain_Initialize_empty( &fire_chain );                             
                                                                      
  while ( true ) {                                                    
    _Timer_server_Get_watchdogs_that_fire_now( ts, &insert_chain, &fire_chain );
                                                                      
    if ( !_Chain_Is_empty( &fire_chain ) ) {                          
ffc1da1c:	81 21 00 08 	lwz     r9,8(r1)                               
ffc1da20:	7f 89 c0 00 	cmpw    cr7,r9,r24                             
ffc1da24:	40 be 00 30 	bne+    cr7,ffc1da54 <_Timer_server_Body+0x1dc>
ffc1da28:	48 00 00 50 	b       ffc1da78 <_Timer_server_Body+0x200>    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
ffc1da2c:	81 49 00 00 	lwz     r10,0(r9)                              
                                                                      
  head->next = new_first;                                             
  new_first->previous = head;                                         
ffc1da30:	93 aa 00 04 	stw     r29,4(r10)                             
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
                                                                      
  head->next = new_first;                                             
ffc1da34:	91 41 00 08 	stw     r10,8(r1)                              
         *  service routine may remove a watchdog from the chain.     
         */                                                           
        _ISR_Disable( level );                                        
        watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
        if ( watchdog != NULL ) {                                     
          watchdog->state = WATCHDOG_INACTIVE;                        
ffc1da38:	92 e9 00 08 	stw     r23,8(r9)                              
ffc1da3c:	7d 00 01 24 	mtmsr   r8                                     
        /*                                                            
         *  The timer server may block here and wait for resources or time.
         *  The system watchdogs are inactive and will remain inactive since
         *  the active flag of the timer server is true.              
         */                                                           
        (*watchdog->routine)( watchdog->id, watchdog->user_data );    
ffc1da40:	81 49 00 1c 	lwz     r10,28(r9)                             
ffc1da44:	80 69 00 20 	lwz     r3,32(r9)                              
ffc1da48:	80 89 00 24 	lwz     r4,36(r9)                              
ffc1da4c:	7d 49 03 a6 	mtctr   r10                                    
ffc1da50:	4e 80 04 21 	bctrl                                          
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc1da54:	7d 00 00 a6 	mfmsr   r8                                     
ffc1da58:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc1da5c:	7d 09 48 78 	andc    r9,r8,r9                               
ffc1da60:	7d 20 01 24 	mtmsr   r9                                     
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
ffc1da64:	81 21 00 08 	lwz     r9,8(r1)                               
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
ffc1da68:	7f 89 c0 00 	cmpw    cr7,r9,r24                             
ffc1da6c:	40 9e ff c0 	bne+    cr7,ffc1da2c <_Timer_server_Body+0x1b4>
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc1da70:	7d 00 01 24 	mtmsr   r8                                     
ffc1da74:	4b ff fe b4 	b       ffc1d928 <_Timer_server_Body+0xb0>     
      }                                                               
    } else {                                                          
      ts->active = false;                                             
ffc1da78:	9a 7f 00 7c 	stb     r19,124(r31)                           
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc1da7c:	81 35 00 00 	lwz     r9,0(r21)                              
                                                                      
    ++level;                                                          
ffc1da80:	39 29 00 01 	addi    r9,r9,1                                
    _Thread_Dispatch_disable_level = level;                           
ffc1da84:	91 35 00 00 	stw     r9,0(r21)                              
                                                                      
      /*                                                              
       *  Block until there is something to do.                       
       */                                                             
      _Thread_Disable_dispatch();                                     
        _Thread_Set_state( ts->thread, STATES_DELAYING );             
ffc1da88:	80 7f 00 00 	lwz     r3,0(r31)                              
ffc1da8c:	38 80 00 08 	li      r4,8                                   
ffc1da90:	48 00 4b 9d 	bl      ffc2262c <_Thread_Set_state>           
        _Timer_server_Reset_interval_system_watchdog( ts );           
ffc1da94:	7f e3 fb 78 	mr      r3,r31                                 
ffc1da98:	4b ff fb 21 	bl      ffc1d5b8 <_Timer_server_Reset_interval_system_watchdog>
        _Timer_server_Reset_tod_system_watchdog( ts );                
ffc1da9c:	7f e3 fb 78 	mr      r3,r31                                 
ffc1daa0:	4b ff fb a9 	bl      ffc1d648 <_Timer_server_Reset_tod_system_watchdog>
      _Thread_Enable_dispatch();                                      
ffc1daa4:	48 00 3f ed 	bl      ffc21a90 <_Thread_Enable_dispatch>     
                                                                      
      ts->active = true;                                              
ffc1daa8:	9a 9f 00 7c 	stb     r20,124(r31)                           
                                                                      
static void _Timer_server_Stop_interval_system_watchdog(              
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );        
ffc1daac:	7e 23 8b 78 	mr      r3,r17                                 
ffc1dab0:	48 00 53 b9 	bl      ffc22e68 <_Watchdog_Remove>            
                                                                      
static void _Timer_server_Stop_tod_system_watchdog(                   
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );             
ffc1dab4:	7e 43 93 78 	mr      r3,r18                                 
ffc1dab8:	48 00 53 b1 	bl      ffc22e68 <_Watchdog_Remove>            
ffc1dabc:	4b ff fe 6c 	b       ffc1d928 <_Timer_server_Body+0xb0>     
                                                                      

ffc1d6d8 <_Timer_server_Schedule_operation_method>: static void _Timer_server_Schedule_operation_method( Timer_server_Control *ts, Timer_Control *timer ) {
ffc1d6d8:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc1d6dc:	7c 08 02 a6 	mflr    r0                                     
ffc1d6e0:	90 01 00 1c 	stw     r0,28(r1)                              
  if ( ts->insert_chain == NULL ) {                                   
ffc1d6e4:	81 23 00 78 	lwz     r9,120(r3)                             
                                                                      
static void _Timer_server_Schedule_operation_method(                  
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
ffc1d6e8:	93 e1 00 14 	stw     r31,20(r1)                             
ffc1d6ec:	7c 7f 1b 78 	mr      r31,r3                                 
  if ( ts->insert_chain == NULL ) {                                   
ffc1d6f0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
                                                                      
static void _Timer_server_Schedule_operation_method(                  
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
ffc1d6f4:	93 a1 00 0c 	stw     r29,12(r1)                             
ffc1d6f8:	93 c1 00 10 	stw     r30,16(r1)                             
  if ( ts->insert_chain == NULL ) {                                   
ffc1d6fc:	41 9e 00 24 	beq-    cr7,ffc1d720 <_Timer_server_Schedule_operation_method+0x48>
     *  critical section.  We have to use the protected chain methods because
     *  we may be interrupted by a higher priority interrupt.         
     */                                                               
    _Chain_Append( ts->insert_chain, &timer->Object.Node );           
  }                                                                   
}                                                                     
ffc1d700:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc1d704:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc1d708:	7c 08 03 a6 	mtlr    r0                                     
ffc1d70c:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc1d710:	83 e1 00 14 	lwz     r31,20(r1)                             
     *  server is not preemptible, so we must be in interrupt context here.  No
     *  thread dispatch will happen until the timer server finishes its
     *  critical section.  We have to use the protected chain methods because
     *  we may be interrupted by a higher priority interrupt.         
     */                                                               
    _Chain_Append( ts->insert_chain, &timer->Object.Node );           
ffc1d714:	80 63 00 78 	lwz     r3,120(r3)                             
  }                                                                   
}                                                                     
ffc1d718:	38 21 00 18 	addi    r1,r1,24                               
     *  server is not preemptible, so we must be in interrupt context here.  No
     *  thread dispatch will happen until the timer server finishes its
     *  critical section.  We have to use the protected chain methods because
     *  we may be interrupted by a higher priority interrupt.         
     */                                                               
    _Chain_Append( ts->insert_chain, &timer->Object.Node );           
ffc1d71c:	48 00 0d 60 	b       ffc1e47c <_Chain_Append>               
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc1d720:	3d 20 00 00 	lis     r9,0                                   
ffc1d724:	81 49 29 3c 	lwz     r10,10556(r9)                          
ffc1d728:	7c 9e 23 78 	mr      r30,r4                                 
                                                                      
    ++level;                                                          
ffc1d72c:	39 4a 00 01 	addi    r10,r10,1                              
    _Thread_Dispatch_disable_level = level;                           
ffc1d730:	91 49 29 3c 	stw     r10,10556(r9)                          
   *  being inserted.  This could result in an integer overflow.      
   */                                                                 
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
ffc1d734:	81 24 00 38 	lwz     r9,56(r4)                              
ffc1d738:	2f 89 00 01 	cmpwi   cr7,r9,1                               
ffc1d73c:	41 9e 00 bc 	beq-    cr7,ffc1d7f8 <_Timer_server_Schedule_operation_method+0x120>
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
                                                                      
    if ( !ts->active ) {                                              
      _Timer_server_Reset_interval_system_watchdog( ts );             
    }                                                                 
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
ffc1d740:	2f 89 00 03 	cmpwi   cr7,r9,3                               
ffc1d744:	41 9e 00 20 	beq-    cr7,ffc1d764 <_Timer_server_Schedule_operation_method+0x8c>
     *  critical section.  We have to use the protected chain methods because
     *  we may be interrupted by a higher priority interrupt.         
     */                                                               
    _Chain_Append( ts->insert_chain, &timer->Object.Node );           
  }                                                                   
}                                                                     
ffc1d748:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc1d74c:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc1d750:	7c 08 03 a6 	mtlr    r0                                     
ffc1d754:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc1d758:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc1d75c:	38 21 00 18 	addi    r1,r1,24                               
    if ( !ts->active ) {                                              
      _Timer_server_Reset_tod_system_watchdog( ts );                  
    }                                                                 
  }                                                                   
                                                                      
  _Thread_Enable_dispatch();                                          
ffc1d760:	48 00 43 30 	b       ffc21a90 <_Thread_Enable_dispatch>     
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc1d764:	7f a0 00 a6 	mfmsr   r29                                    
ffc1d768:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc1d76c:	7f a9 48 78 	andc    r9,r29,r9                              
ffc1d770:	7d 20 01 24 	mtmsr   r9                                     
    /*                                                                
     *  We have to advance the last known seconds value of the server and update
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
    snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();        
ffc1d774:	3d 20 00 00 	lis     r9,0                                   
ffc1d778:	39 29 70 80 	addi    r9,r9,28800                            
ffc1d77c:	80 69 00 00 	lwz     r3,0(r9)                               
ffc1d780:	3c c0 3b 9a 	lis     r6,15258                               
ffc1d784:	80 89 00 04 	lwz     r4,4(r9)                               
ffc1d788:	38 a0 00 00 	li      r5,0                                   
ffc1d78c:	60 c6 ca 00 	ori     r6,r6,51712                            
ffc1d790:	48 01 62 35 	bl      ffc339c4 <__divdi3>                    
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
ffc1d794:	81 3f 00 68 	lwz     r9,104(r31)                            
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
ffc1d798:	39 5f 00 6c 	addi    r10,r31,108                            
    last_snapshot = ts->TOD_watchdogs.last_snapshot;                  
    if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {             
ffc1d79c:	7f 89 50 00 	cmpw    cr7,r9,r10                             
     *  We have to advance the last known seconds value of the server and update
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
    snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();        
    last_snapshot = ts->TOD_watchdogs.last_snapshot;                  
ffc1d7a0:	81 5f 00 74 	lwz     r10,116(r31)                           
    if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {             
ffc1d7a4:	41 9e 00 28 	beq-    cr7,ffc1d7cc <_Timer_server_Schedule_operation_method+0xf4>
      first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain );   
      delta_interval = first_watchdog->delta_interval;                
      if ( snapshot > last_snapshot ) {                               
ffc1d7a8:	7f 84 50 40 	cmplw   cr7,r4,r10                             
    _ISR_Disable( level );                                            
    snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();        
    last_snapshot = ts->TOD_watchdogs.last_snapshot;                  
    if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {             
      first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain );   
      delta_interval = first_watchdog->delta_interval;                
ffc1d7ac:	80 e9 00 10 	lwz     r7,16(r9)                              
      if ( snapshot > last_snapshot ) {                               
ffc1d7b0:	40 9d 00 bc 	ble-    cr7,ffc1d86c <_Timer_server_Schedule_operation_method+0x194>
        /*                                                            
         *  We advanced in time.                                      
         */                                                           
        delta = snapshot - last_snapshot;                             
ffc1d7b4:	7d 4a 20 50 	subf    r10,r10,r4                             
        if (delta_interval > delta) {                                 
ffc1d7b8:	7f 87 50 40 	cmplw   cr7,r7,r10                             
          delta_interval -= delta;                                    
        } else {                                                      
          delta_interval = 0;                                         
ffc1d7bc:	39 00 00 00 	li      r8,0                                   
      if ( snapshot > last_snapshot ) {                               
        /*                                                            
         *  We advanced in time.                                      
         */                                                           
        delta = snapshot - last_snapshot;                             
        if (delta_interval > delta) {                                 
ffc1d7c0:	40 9d 00 08 	ble-    cr7,ffc1d7c8 <_Timer_server_Schedule_operation_method+0xf0><== NEVER TAKEN
          delta_interval -= delta;                                    
ffc1d7c4:	7d 0a 38 50 	subf    r8,r10,r7                              
         *  Someone put us in the past.                               
         */                                                           
        delta = last_snapshot - snapshot;                             
        delta_interval += delta;                                      
      }                                                               
      first_watchdog->delta_interval = delta_interval;                
ffc1d7c8:	91 09 00 10 	stw     r8,16(r9)                              
    }                                                                 
    ts->TOD_watchdogs.last_snapshot = snapshot;                       
ffc1d7cc:	90 9f 00 74 	stw     r4,116(r31)                            
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc1d7d0:	7f a0 01 24 	mtmsr   r29                                    
    _ISR_Enable( level );                                             
                                                                      
    _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );     
ffc1d7d4:	38 7f 00 68 	addi    r3,r31,104                             
ffc1d7d8:	38 9e 00 10 	addi    r4,r30,16                              
ffc1d7dc:	48 00 54 c5 	bl      ffc22ca0 <_Watchdog_Insert>            
                                                                      
    if ( !ts->active ) {                                              
ffc1d7e0:	89 3f 00 7c 	lbz     r9,124(r31)                            
ffc1d7e4:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc1d7e8:	40 9e ff 60 	bne+    cr7,ffc1d748 <_Timer_server_Schedule_operation_method+0x70><== NEVER TAKEN
      _Timer_server_Reset_tod_system_watchdog( ts );                  
ffc1d7ec:	7f e3 fb 78 	mr      r3,r31                                 
ffc1d7f0:	4b ff fe 59 	bl      ffc1d648 <_Timer_server_Reset_tod_system_watchdog>
ffc1d7f4:	4b ff ff 54 	b       ffc1d748 <_Timer_server_Schedule_operation_method+0x70>
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc1d7f8:	7c a0 00 a6 	mfmsr   r5                                     
ffc1d7fc:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc1d800:	7c a9 48 78 	andc    r9,r5,r9                               
ffc1d804:	7d 20 01 24 	mtmsr   r9                                     
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
ffc1d808:	81 23 00 30 	lwz     r9,48(r3)                              
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
ffc1d80c:	39 43 00 34 	addi    r10,r3,52                              
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
    snapshot = _Watchdog_Ticks_since_boot;                            
    last_snapshot = ts->Interval_watchdogs.last_snapshot;             
    if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {        
ffc1d810:	7f 89 50 00 	cmpw    cr7,r9,r10                             
    /*                                                                
     *  We have to advance the last known ticks value of the server and update
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
    snapshot = _Watchdog_Ticks_since_boot;                            
ffc1d814:	3d 40 00 00 	lis     r10,0                                  
ffc1d818:	81 4a 29 5c 	lwz     r10,10588(r10)                         
    last_snapshot = ts->Interval_watchdogs.last_snapshot;             
ffc1d81c:	80 e3 00 3c 	lwz     r7,60(r3)                              
    if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {        
ffc1d820:	41 9e 00 20 	beq-    cr7,ffc1d840 <_Timer_server_Schedule_operation_method+0x168>
      /*                                                              
       *  We assume adequate unsigned arithmetic here.                
       */                                                             
      delta = snapshot - last_snapshot;                               
                                                                      
      delta_interval = first_watchdog->delta_interval;                
ffc1d824:	80 c9 00 10 	lwz     r6,16(r9)                              
      first_watchdog = _Watchdog_First( &ts->Interval_watchdogs.Chain );
                                                                      
      /*                                                              
       *  We assume adequate unsigned arithmetic here.                
       */                                                             
      delta = snapshot - last_snapshot;                               
ffc1d828:	7c e7 50 50 	subf    r7,r7,r10                              
                                                                      
      delta_interval = first_watchdog->delta_interval;                
      if (delta_interval > delta) {                                   
        delta_interval -= delta;                                      
      } else {                                                        
        delta_interval = 0;                                           
ffc1d82c:	39 00 00 00 	li      r8,0                                   
       *  We assume adequate unsigned arithmetic here.                
       */                                                             
      delta = snapshot - last_snapshot;                               
                                                                      
      delta_interval = first_watchdog->delta_interval;                
      if (delta_interval > delta) {                                   
ffc1d830:	7f 87 30 40 	cmplw   cr7,r7,r6                              
ffc1d834:	40 9c 00 08 	bge-    cr7,ffc1d83c <_Timer_server_Schedule_operation_method+0x164>
        delta_interval -= delta;                                      
ffc1d838:	7d 07 30 50 	subf    r8,r7,r6                               
      } else {                                                        
        delta_interval = 0;                                           
      }                                                               
      first_watchdog->delta_interval = delta_interval;                
ffc1d83c:	91 09 00 10 	stw     r8,16(r9)                              
    }                                                                 
    ts->Interval_watchdogs.last_snapshot = snapshot;                  
ffc1d840:	91 5f 00 3c 	stw     r10,60(r31)                            
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc1d844:	7c a0 01 24 	mtmsr   r5                                     
    _ISR_Enable( level );                                             
                                                                      
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
ffc1d848:	38 7f 00 30 	addi    r3,r31,48                              
ffc1d84c:	38 9e 00 10 	addi    r4,r30,16                              
ffc1d850:	48 00 54 51 	bl      ffc22ca0 <_Watchdog_Insert>            
                                                                      
    if ( !ts->active ) {                                              
ffc1d854:	89 3f 00 7c 	lbz     r9,124(r31)                            
ffc1d858:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc1d85c:	40 9e fe ec 	bne+    cr7,ffc1d748 <_Timer_server_Schedule_operation_method+0x70>
      _Timer_server_Reset_interval_system_watchdog( ts );             
ffc1d860:	7f e3 fb 78 	mr      r3,r31                                 
ffc1d864:	4b ff fd 55 	bl      ffc1d5b8 <_Timer_server_Reset_interval_system_watchdog>
ffc1d868:	4b ff fe e0 	b       ffc1d748 <_Timer_server_Schedule_operation_method+0x70>
        }                                                             
      } else {                                                        
        /*                                                            
         *  Someone put us in the past.                               
         */                                                           
        delta = last_snapshot - snapshot;                             
ffc1d86c:	7d 47 52 14 	add     r10,r7,r10                             
        delta_interval += delta;                                      
ffc1d870:	7d 04 50 50 	subf    r8,r4,r10                              
ffc1d874:	4b ff ff 54 	b       ffc1d7c8 <_Timer_server_Schedule_operation_method+0xf0>
                                                                      

ffc0f468 <_Timespec_Add_to>: { uint32_t seconds = add->tv_sec; /* Add the basics */ time->tv_sec += add->tv_sec; time->tv_nsec += add->tv_nsec;
ffc0f468:	81 24 00 04 	lwz     r9,4(r4)                               
                                                                      
  /* Now adjust it so nanoseconds is in range */                      
  while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {             
ffc0f46c:	3c e0 3b 9a 	lis     r7,15258                               
{                                                                     
  uint32_t seconds = add->tv_sec;                                     
                                                                      
  /* Add the basics */                                                
  time->tv_sec += add->tv_sec;                                        
  time->tv_nsec += add->tv_nsec;                                      
ffc0f470:	81 03 00 04 	lwz     r8,4(r3)                               
                                                                      
  /* Now adjust it so nanoseconds is in range */                      
  while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {             
ffc0f474:	60 e7 c9 ff 	ori     r7,r7,51711                            
uint32_t _Timespec_Add_to(                                            
  struct timespec       *time,                                        
  const struct timespec *add                                          
)                                                                     
{                                                                     
  uint32_t seconds = add->tv_sec;                                     
ffc0f478:	81 44 00 00 	lwz     r10,0(r4)                              
                                                                      
  /* Add the basics */                                                
  time->tv_sec += add->tv_sec;                                        
  time->tv_nsec += add->tv_nsec;                                      
ffc0f47c:	7d 08 4a 14 	add     r8,r8,r9                               
)                                                                     
{                                                                     
  uint32_t seconds = add->tv_sec;                                     
                                                                      
  /* Add the basics */                                                
  time->tv_sec += add->tv_sec;                                        
ffc0f480:	80 c3 00 00 	lwz     r6,0(r3)                               
  time->tv_nsec += add->tv_nsec;                                      
                                                                      
  /* Now adjust it so nanoseconds is in range */                      
  while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {             
ffc0f484:	7f 88 38 40 	cmplw   cr7,r8,r7                              
{                                                                     
  uint32_t seconds = add->tv_sec;                                     
                                                                      
  /* Add the basics */                                                
  time->tv_sec += add->tv_sec;                                        
  time->tv_nsec += add->tv_nsec;                                      
ffc0f488:	91 03 00 04 	stw     r8,4(r3)                               
)                                                                     
{                                                                     
  uint32_t seconds = add->tv_sec;                                     
                                                                      
  /* Add the basics */                                                
  time->tv_sec += add->tv_sec;                                        
ffc0f48c:	7c c6 52 14 	add     r6,r6,r10                              
  time->tv_nsec += add->tv_nsec;                                      
                                                                      
  /* Now adjust it so nanoseconds is in range */                      
  while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {             
ffc0f490:	7d 09 43 78 	mr      r9,r8                                  
)                                                                     
{                                                                     
  uint32_t seconds = add->tv_sec;                                     
                                                                      
  /* Add the basics */                                                
  time->tv_sec += add->tv_sec;                                        
ffc0f494:	90 c3 00 00 	stw     r6,0(r3)                               
  time->tv_nsec += add->tv_nsec;                                      
                                                                      
  /* Now adjust it so nanoseconds is in range */                      
  while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {             
ffc0f498:	40 9d 00 2c 	ble-    cr7,ffc0f4c4 <_Timespec_Add_to+0x5c>   
ffc0f49c:	38 c6 00 01 	addi    r6,r6,1                                
#include <sys/types.h>                                                
#include <rtems/score/timespec.h>                                     
#include <rtems/score/tod.h>                                          
#include <rtems/score/watchdog.h>                                     
                                                                      
uint32_t _Timespec_Add_to(                                            
ffc0f4a0:	7c ca 30 50 	subf    r6,r10,r6                              
  time->tv_sec += add->tv_sec;                                        
  time->tv_nsec += add->tv_nsec;                                      
                                                                      
  /* Now adjust it so nanoseconds is in range */                      
  while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {             
    time->tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                      
ffc0f4a4:	3d 29 c4 65 	addis   r9,r9,-15259                           
ffc0f4a8:	39 29 36 00 	addi    r9,r9,13824                            
  /* Add the basics */                                                
  time->tv_sec += add->tv_sec;                                        
  time->tv_nsec += add->tv_nsec;                                      
                                                                      
  /* Now adjust it so nanoseconds is in range */                      
  while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {             
ffc0f4ac:	7f 89 38 40 	cmplw   cr7,r9,r7                              
#include <sys/types.h>                                                
#include <rtems/score/timespec.h>                                     
#include <rtems/score/tod.h>                                          
#include <rtems/score/watchdog.h>                                     
                                                                      
uint32_t _Timespec_Add_to(                                            
ffc0f4b0:	7d 06 52 14 	add     r8,r6,r10                              
                                                                      
  /* Now adjust it so nanoseconds is in range */                      
  while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {             
    time->tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                      
    time->tv_sec++;                                                   
    seconds++;                                                        
ffc0f4b4:	39 4a 00 01 	addi    r10,r10,1                              
  /* Add the basics */                                                
  time->tv_sec += add->tv_sec;                                        
  time->tv_nsec += add->tv_nsec;                                      
                                                                      
  /* Now adjust it so nanoseconds is in range */                      
  while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {             
ffc0f4b8:	41 9d ff ec 	bgt+    cr7,ffc0f4a4 <_Timespec_Add_to+0x3c>   <== NEVER TAKEN
ffc0f4bc:	91 23 00 04 	stw     r9,4(r3)                               
ffc0f4c0:	91 03 00 00 	stw     r8,0(r3)                               
    time->tv_sec++;                                                   
    seconds++;                                                        
  }                                                                   
                                                                      
  return seconds;                                                     
}                                                                     
ffc0f4c4:	7d 43 53 78 	mr      r3,r10                                 
ffc0f4c8:	4e 80 00 20 	blr                                            
                                                                      

ffc0f5dc <_Timestamp64_Divide>: const Timestamp64_Control *_lhs, const Timestamp64_Control *_rhs, uint32_t *_ival_percentage, uint32_t *_fval_percentage ) {
ffc0f5dc:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0f5e0:	7c 08 02 a6 	mflr    r0                                     
ffc0f5e4:	90 01 00 1c 	stw     r0,28(r1)                              
  Timestamp64_Control answer;                                         
                                                                      
  if ( *_rhs == 0 ) {                                                 
ffc0f5e8:	81 44 00 00 	lwz     r10,0(r4)                              
ffc0f5ec:	81 24 00 04 	lwz     r9,4(r4)                               
  const Timestamp64_Control *_lhs,                                    
  const Timestamp64_Control *_rhs,                                    
  uint32_t                  *_ival_percentage,                        
  uint32_t                  *_fval_percentage                         
)                                                                     
{                                                                     
ffc0f5f0:	93 c1 00 10 	stw     r30,16(r1)                             
ffc0f5f4:	7c be 2b 78 	mr      r30,r5                                 
  Timestamp64_Control answer;                                         
                                                                      
  if ( *_rhs == 0 ) {                                                 
ffc0f5f8:	7d 48 4b 79 	or.     r8,r10,r9                              
  const Timestamp64_Control *_lhs,                                    
  const Timestamp64_Control *_rhs,                                    
  uint32_t                  *_ival_percentage,                        
  uint32_t                  *_fval_percentage                         
)                                                                     
{                                                                     
ffc0f5fc:	93 e1 00 14 	stw     r31,20(r1)                             
ffc0f600:	7c df 33 78 	mr      r31,r6                                 
ffc0f604:	93 81 00 08 	stw     r28,8(r1)                              
ffc0f608:	93 a1 00 0c 	stw     r29,12(r1)                             
  Timestamp64_Control answer;                                         
                                                                      
  if ( *_rhs == 0 ) {                                                 
ffc0f60c:	41 82 00 80 	beq-    ffc0f68c <_Timestamp64_Divide+0xb0>    <== NEVER TAKEN
   *  This looks odd but gives the results the proper precision.      
   *                                                                  
   *  TODO: Rounding on the last digit of the fval.                   
   */                                                                 
                                                                      
  answer = (*_lhs * 100000) / *_rhs;                                  
ffc0f610:	80 c3 00 04 	lwz     r6,4(r3)                               
ffc0f614:	3d 00 00 01 	lis     r8,1                                   
ffc0f618:	80 e3 00 00 	lwz     r7,0(r3)                               
ffc0f61c:	61 08 86 a0 	ori     r8,r8,34464                            
ffc0f620:	7c 68 30 16 	mulhwu  r3,r8,r6                               
ffc0f624:	7c e8 39 d6 	mullw   r7,r8,r7                               
ffc0f628:	7c 88 31 d6 	mullw   r4,r8,r6                               
ffc0f62c:	7d 45 53 78 	mr      r5,r10                                 
ffc0f630:	7d 26 4b 78 	mr      r6,r9                                  
ffc0f634:	7c 67 1a 14 	add     r3,r7,r3                               
ffc0f638:	48 00 fa 8d 	bl      ffc1f0c4 <__divdi3>                    
                                                                      
  *_ival_percentage = answer / 1000;                                  
ffc0f63c:	38 a0 00 00 	li      r5,0                                   
ffc0f640:	38 c0 03 e8 	li      r6,1000                                
   *  This looks odd but gives the results the proper precision.      
   *                                                                  
   *  TODO: Rounding on the last digit of the fval.                   
   */                                                                 
                                                                      
  answer = (*_lhs * 100000) / *_rhs;                                  
ffc0f644:	7c 7c 1b 78 	mr      r28,r3                                 
ffc0f648:	7c 9d 23 78 	mr      r29,r4                                 
                                                                      
  *_ival_percentage = answer / 1000;                                  
ffc0f64c:	48 00 fa 79 	bl      ffc1f0c4 <__divdi3>                    
ffc0f650:	90 9e 00 00 	stw     r4,0(r30)                              
  *_fval_percentage = answer % 1000;                                  
ffc0f654:	7f 83 e3 78 	mr      r3,r28                                 
ffc0f658:	7f a4 eb 78 	mr      r4,r29                                 
ffc0f65c:	38 a0 00 00 	li      r5,0                                   
ffc0f660:	38 c0 03 e8 	li      r6,1000                                
ffc0f664:	48 00 fe 85 	bl      ffc1f4e8 <__moddi3>                    
}                                                                     
ffc0f668:	80 01 00 1c 	lwz     r0,28(r1)                              
   */                                                                 
                                                                      
  answer = (*_lhs * 100000) / *_rhs;                                  
                                                                      
  *_ival_percentage = answer / 1000;                                  
  *_fval_percentage = answer % 1000;                                  
ffc0f66c:	90 9f 00 00 	stw     r4,0(r31)                              
}                                                                     
ffc0f670:	7c 08 03 a6 	mtlr    r0                                     
ffc0f674:	83 81 00 08 	lwz     r28,8(r1)                              
ffc0f678:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0f67c:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0f680:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0f684:	38 21 00 18 	addi    r1,r1,24                               
ffc0f688:	4e 80 00 20 	blr                                            
ffc0f68c:	80 01 00 1c 	lwz     r0,28(r1)                              <== NOT EXECUTED
)                                                                     
{                                                                     
  Timestamp64_Control answer;                                         
                                                                      
  if ( *_rhs == 0 ) {                                                 
    *_ival_percentage = 0;                                            
ffc0f690:	91 05 00 00 	stw     r8,0(r5)                               <== NOT EXECUTED
                                                                      
  answer = (*_lhs * 100000) / *_rhs;                                  
                                                                      
  *_ival_percentage = answer / 1000;                                  
  *_fval_percentage = answer % 1000;                                  
}                                                                     
ffc0f694:	7c 08 03 a6 	mtlr    r0                                     <== NOT EXECUTED
ffc0f698:	83 81 00 08 	lwz     r28,8(r1)                              <== NOT EXECUTED
ffc0f69c:	83 a1 00 0c 	lwz     r29,12(r1)                             <== NOT EXECUTED
ffc0f6a0:	83 c1 00 10 	lwz     r30,16(r1)                             <== NOT EXECUTED
ffc0f6a4:	83 e1 00 14 	lwz     r31,20(r1)                             <== NOT EXECUTED
{                                                                     
  Timestamp64_Control answer;                                         
                                                                      
  if ( *_rhs == 0 ) {                                                 
    *_ival_percentage = 0;                                            
    *_fval_percentage = 0;                                            
ffc0f6a8:	91 06 00 00 	stw     r8,0(r6)                               <== NOT EXECUTED
                                                                      
  answer = (*_lhs * 100000) / *_rhs;                                  
                                                                      
  *_ival_percentage = answer / 1000;                                  
  *_fval_percentage = answer % 1000;                                  
}                                                                     
ffc0f6ac:	38 21 00 18 	addi    r1,r1,24                               <== NOT EXECUTED
ffc0f6b0:	4e 80 00 20 	blr                                            <== NOT EXECUTED
                                                                      

ffc0d90c <_User_extensions_Iterate>: void _User_extensions_Iterate( void *arg, User_extensions_Visitor visitor ) {
ffc0d90c:	94 21 ff e0 	stwu    r1,-32(r1)                             
  Thread_Control   *executing = _Thread_Executing;                    
  const User_extensions_Table *callouts_current =                     
ffc0d910:	3d 20 ff c2 	lis     r9,-62                                 
ffc0d914:	39 29 ea f8 	addi    r9,r9,-5384                            
                                                                      
void _User_extensions_Iterate(                                        
  void                    *arg,                                       
  User_extensions_Visitor  visitor                                    
)                                                                     
{                                                                     
ffc0d918:	7c 08 02 a6 	mflr    r0                                     
ffc0d91c:	93 61 00 0c 	stw     r27,12(r1)                             
  Thread_Control   *executing = _Thread_Executing;                    
  const User_extensions_Table *callouts_current =                     
    rtems_configuration_get_user_extension_table();                   
  const User_extensions_Table *callouts_end =                         
    callouts_current + rtems_configuration_get_number_of_initial_extensions();
ffc0d920:	83 69 00 40 	lwz     r27,64(r9)                             
                                                                      
void _User_extensions_Iterate(                                        
  void                    *arg,                                       
  User_extensions_Visitor  visitor                                    
)                                                                     
{                                                                     
ffc0d924:	93 e1 00 1c 	stw     r31,28(r1)                             
  Thread_Control   *executing = _Thread_Executing;                    
  const User_extensions_Table *callouts_current =                     
    rtems_configuration_get_user_extension_table();                   
  const User_extensions_Table *callouts_end =                         
    callouts_current + rtems_configuration_get_number_of_initial_extensions();
ffc0d928:	57 7b 28 34 	rlwinm  r27,r27,5,0,26                         
  void                    *arg,                                       
  User_extensions_Visitor  visitor                                    
)                                                                     
{                                                                     
  Thread_Control   *executing = _Thread_Executing;                    
  const User_extensions_Table *callouts_current =                     
ffc0d92c:	83 e9 00 44 	lwz     r31,68(r9)                             
void _User_extensions_Iterate(                                        
  void                    *arg,                                       
  User_extensions_Visitor  visitor                                    
)                                                                     
{                                                                     
  Thread_Control   *executing = _Thread_Executing;                    
ffc0d930:	3d 20 00 00 	lis     r9,0                                   
                                                                      
void _User_extensions_Iterate(                                        
  void                    *arg,                                       
  User_extensions_Visitor  visitor                                    
)                                                                     
{                                                                     
ffc0d934:	93 81 00 10 	stw     r28,16(r1)                             
ffc0d938:	7c 9c 23 78 	mr      r28,r4                                 
  Thread_Control   *executing = _Thread_Executing;                    
  const User_extensions_Table *callouts_current =                     
    rtems_configuration_get_user_extension_table();                   
  const User_extensions_Table *callouts_end =                         
ffc0d93c:	7f 7f da 14 	add     r27,r31,r27                            
    callouts_current + rtems_configuration_get_number_of_initial_extensions();
  const Chain_Node *node;                                             
  const Chain_Node *tail;                                             
                                                                      
  while ( callouts_current != callouts_end ) {                        
ffc0d940:	7f 9f d8 00 	cmpw    cr7,r31,r27                            
                                                                      
void _User_extensions_Iterate(                                        
  void                    *arg,                                       
  User_extensions_Visitor  visitor                                    
)                                                                     
{                                                                     
ffc0d944:	93 a1 00 14 	stw     r29,20(r1)                             
ffc0d948:	7c 7d 1b 78 	mr      r29,r3                                 
ffc0d94c:	93 c1 00 18 	stw     r30,24(r1)                             
ffc0d950:	90 01 00 24 	stw     r0,36(r1)                              
  Thread_Control   *executing = _Thread_Executing;                    
ffc0d954:	83 c9 31 b0 	lwz     r30,12720(r9)                          
  const User_extensions_Table *callouts_end =                         
    callouts_current + rtems_configuration_get_number_of_initial_extensions();
  const Chain_Node *node;                                             
  const Chain_Node *tail;                                             
                                                                      
  while ( callouts_current != callouts_end ) {                        
ffc0d958:	41 9e 00 24 	beq-    cr7,ffc0d97c <_User_extensions_Iterate+0x70><== NEVER TAKEN
    (*visitor)( executing, arg, callouts_current );                   
ffc0d95c:	7f e5 fb 78 	mr      r5,r31                                 
ffc0d960:	7f 89 03 a6 	mtctr   r28                                    
ffc0d964:	7f c3 f3 78 	mr      r3,r30                                 
ffc0d968:	7f a4 eb 78 	mr      r4,r29                                 
                                                                      
    ++callouts_current;                                               
ffc0d96c:	3b ff 00 20 	addi    r31,r31,32                             
    callouts_current + rtems_configuration_get_number_of_initial_extensions();
  const Chain_Node *node;                                             
  const Chain_Node *tail;                                             
                                                                      
  while ( callouts_current != callouts_end ) {                        
    (*visitor)( executing, arg, callouts_current );                   
ffc0d970:	4e 80 04 21 	bctrl                                          
  const User_extensions_Table *callouts_end =                         
    callouts_current + rtems_configuration_get_number_of_initial_extensions();
  const Chain_Node *node;                                             
  const Chain_Node *tail;                                             
                                                                      
  while ( callouts_current != callouts_end ) {                        
ffc0d974:	7f 9b f8 00 	cmpw    cr7,r27,r31                            
ffc0d978:	40 9e ff e4 	bne+    cr7,ffc0d95c <_User_extensions_Iterate+0x50>
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
ffc0d97c:	3d 20 00 00 	lis     r9,0                                   
ffc0d980:	3b 69 21 fc 	addi    r27,r9,8700                            
ffc0d984:	83 e9 21 fc 	lwz     r31,8700(r9)                           
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_tail(         
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return &the_chain->Tail.Node;                                       
ffc0d988:	3b 7b 00 04 	addi    r27,r27,4                              
    ++callouts_current;                                               
  }                                                                   
                                                                      
  node = _Chain_Immutable_first( &_User_extensions_List );            
  tail = _Chain_Immutable_tail( &_User_extensions_List );             
  while ( node != tail ) {                                            
ffc0d98c:	7f 9f d8 00 	cmpw    cr7,r31,r27                            
ffc0d990:	41 9e 00 24 	beq-    cr7,ffc0d9b4 <_User_extensions_Iterate+0xa8>
    const User_extensions_Control *extension =                        
      (const User_extensions_Control *) node;                         
                                                                      
    (*visitor)( executing, arg, &extension->Callouts );               
ffc0d994:	38 bf 00 14 	addi    r5,r31,20                              
ffc0d998:	7f 89 03 a6 	mtctr   r28                                    
ffc0d99c:	7f c3 f3 78 	mr      r3,r30                                 
ffc0d9a0:	7f a4 eb 78 	mr      r4,r29                                 
ffc0d9a4:	4e 80 04 21 	bctrl                                          
                                                                      
    node = _Chain_Immutable_next( node );                             
  }                                                                   
}                                                                     
ffc0d9a8:	83 ff 00 00 	lwz     r31,0(r31)                             
    ++callouts_current;                                               
  }                                                                   
                                                                      
  node = _Chain_Immutable_first( &_User_extensions_List );            
  tail = _Chain_Immutable_tail( &_User_extensions_List );             
  while ( node != tail ) {                                            
ffc0d9ac:	7f 9f d8 00 	cmpw    cr7,r31,r27                            
ffc0d9b0:	40 9e ff e4 	bne+    cr7,ffc0d994 <_User_extensions_Iterate+0x88>
                                                                      
    (*visitor)( executing, arg, &extension->Callouts );               
                                                                      
    node = _Chain_Immutable_next( node );                             
  }                                                                   
}                                                                     
ffc0d9b4:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0d9b8:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0d9bc:	7c 08 03 a6 	mtlr    r0                                     
ffc0d9c0:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0d9c4:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0d9c8:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0d9cc:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0d9d0:	38 21 00 20 	addi    r1,r1,32                               
ffc0d9d4:	4e 80 00 20 	blr                                            
                                                                      

ffc0f96c <_Watchdog_Adjust>: void _Watchdog_Adjust( Chain_Control *header, Watchdog_Adjust_directions direction, Watchdog_Interval units ) {
ffc0f96c:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0f970:	7c 08 02 a6 	mflr    r0                                     
ffc0f974:	90 01 00 1c 	stw     r0,28(r1)                              
ffc0f978:	93 c1 00 10 	stw     r30,16(r1)                             
ffc0f97c:	7c 7e 1b 78 	mr      r30,r3                                 
ffc0f980:	93 81 00 08 	stw     r28,8(r1)                              
ffc0f984:	93 a1 00 0c 	stw     r29,12(r1)                             
ffc0f988:	93 e1 00 14 	stw     r31,20(r1)                             
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0f98c:	7d 40 00 a6 	mfmsr   r10                                    
ffc0f990:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc0f994:	7d 49 48 78 	andc    r9,r10,r9                              
ffc0f998:	7d 20 01 24 	mtmsr   r9                                     
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
ffc0f99c:	81 23 00 00 	lwz     r9,0(r3)                               
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
ffc0f9a0:	3b a3 00 04 	addi    r29,r3,4                               
   *       hence the compiler must not assume *header to remain       
   *       unmodified across that call.                               
   *                                                                  
   *       Till Straumann, 7/2003                                     
   */                                                                 
  if ( !_Chain_Is_empty( header ) ) {                                 
ffc0f9a4:	7f 89 e8 00 	cmpw    cr7,r9,r29                             
ffc0f9a8:	41 9e 00 70 	beq-    cr7,ffc0fa18 <_Watchdog_Adjust+0xac>   
    switch ( direction ) {                                            
ffc0f9ac:	2f 84 00 00 	cmpwi   cr7,r4,0                               
ffc0f9b0:	7c bf 2b 78 	mr      r31,r5                                 
ffc0f9b4:	40 9e 00 88 	bne-    cr7,ffc0fa3c <_Watchdog_Adjust+0xd0>   
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
        break;                                                        
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
ffc0f9b8:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc0f9bc:	41 9e 00 5c 	beq-    cr7,ffc0fa18 <_Watchdog_Adjust+0xac>   <== NEVER TAKEN
          if ( units < _Watchdog_First( header )->delta_interval ) {  
ffc0f9c0:	81 09 00 10 	lwz     r8,16(r9)                              
            _Watchdog_First( header )->delta_interval -= units;       
            break;                                                    
          } else {                                                    
            units -= _Watchdog_First( header )->delta_interval;       
            _Watchdog_First( header )->delta_interval = 1;            
ffc0f9c4:	3b 80 00 01 	li      r28,1                                  
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
        break;                                                        
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
          if ( units < _Watchdog_First( header )->delta_interval ) {  
ffc0f9c8:	7f 85 40 40 	cmplw   cr7,r5,r8                              
ffc0f9cc:	40 bc 00 18 	bge+    cr7,ffc0f9e4 <_Watchdog_Adjust+0x78>   <== ALWAYS TAKEN
ffc0f9d0:	48 00 00 a4 	b       ffc0fa74 <_Watchdog_Adjust+0x108>      <== NOT EXECUTED
    switch ( direction ) {                                            
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
        break;                                                        
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
ffc0f9d4:	41 9a 00 44 	beq-    cr6,ffc0fa18 <_Watchdog_Adjust+0xac>   <== NEVER TAKEN
          if ( units < _Watchdog_First( header )->delta_interval ) {  
ffc0f9d8:	81 09 00 10 	lwz     r8,16(r9)                              
ffc0f9dc:	7f 88 f8 40 	cmplw   cr7,r8,r31                             
ffc0f9e0:	41 9d 00 94 	bgt-    cr7,ffc0fa74 <_Watchdog_Adjust+0x108>  
            _Watchdog_First( header )->delta_interval -= units;       
            break;                                                    
          } else {                                                    
            units -= _Watchdog_First( header )->delta_interval;       
            _Watchdog_First( header )->delta_interval = 1;            
ffc0f9e4:	93 89 00 10 	stw     r28,16(r9)                             
        while ( units ) {                                             
          if ( units < _Watchdog_First( header )->delta_interval ) {  
            _Watchdog_First( header )->delta_interval -= units;       
            break;                                                    
          } else {                                                    
            units -= _Watchdog_First( header )->delta_interval;       
ffc0f9e8:	7f e8 f8 50 	subf    r31,r8,r31                             
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0f9ec:	7d 40 01 24 	mtmsr   r10                                    
            _Watchdog_First( header )->delta_interval = 1;            
                                                                      
            _ISR_Enable( level );                                     
                                                                      
            _Watchdog_Tickle( header );                               
ffc0f9f0:	7f c3 f3 78 	mr      r3,r30                                 
ffc0f9f4:	48 00 03 25 	bl      ffc0fd18 <_Watchdog_Tickle>            
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0f9f8:	7d 40 00 a6 	mfmsr   r10                                    
ffc0f9fc:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc0fa00:	7d 49 48 78 	andc    r9,r10,r9                              
ffc0fa04:	7d 20 01 24 	mtmsr   r9                                     
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
ffc0fa08:	81 3e 00 00 	lwz     r9,0(r30)                              
    switch ( direction ) {                                            
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
        break;                                                        
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
ffc0fa0c:	2f 1f 00 00 	cmpwi   cr6,r31,0                              
                                                                      
            _Watchdog_Tickle( header );                               
                                                                      
            _ISR_Disable( level );                                    
                                                                      
            if ( _Chain_Is_empty( header ) )                          
ffc0fa10:	7f 9d 48 00 	cmpw    cr7,r29,r9                             
ffc0fa14:	40 9e ff c0 	bne+    cr7,ffc0f9d4 <_Watchdog_Adjust+0x68>   
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0fa18:	7d 40 01 24 	mtmsr   r10                                    
    }                                                                 
  }                                                                   
                                                                      
  _ISR_Enable( level );                                               
                                                                      
}                                                                     
ffc0fa1c:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0fa20:	83 81 00 08 	lwz     r28,8(r1)                              
ffc0fa24:	7c 08 03 a6 	mtlr    r0                                     
ffc0fa28:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0fa2c:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0fa30:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0fa34:	38 21 00 18 	addi    r1,r1,24                               
ffc0fa38:	4e 80 00 20 	blr                                            
   *       unmodified across that call.                               
   *                                                                  
   *       Till Straumann, 7/2003                                     
   */                                                                 
  if ( !_Chain_Is_empty( header ) ) {                                 
    switch ( direction ) {                                            
ffc0fa3c:	2f 84 00 01 	cmpwi   cr7,r4,1                               
ffc0fa40:	40 9e ff d8 	bne+    cr7,ffc0fa18 <_Watchdog_Adjust+0xac>   <== NEVER TAKEN
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
ffc0fa44:	81 09 00 10 	lwz     r8,16(r9)                              
ffc0fa48:	7f e8 2a 14 	add     r31,r8,r5                              
ffc0fa4c:	93 e9 00 10 	stw     r31,16(r9)                             
ffc0fa50:	7d 40 01 24 	mtmsr   r10                                    
    }                                                                 
  }                                                                   
                                                                      
  _ISR_Enable( level );                                               
                                                                      
}                                                                     
ffc0fa54:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0fa58:	83 81 00 08 	lwz     r28,8(r1)                              
ffc0fa5c:	7c 08 03 a6 	mtlr    r0                                     
ffc0fa60:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0fa64:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0fa68:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0fa6c:	38 21 00 18 	addi    r1,r1,24                               
ffc0fa70:	4e 80 00 20 	blr                                            
        _Watchdog_First( header )->delta_interval += units;           
        break;                                                        
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
          if ( units < _Watchdog_First( header )->delta_interval ) {  
            _Watchdog_First( header )->delta_interval -= units;       
ffc0fa74:	7d 1f 40 50 	subf    r8,r31,r8                              
ffc0fa78:	91 09 00 10 	stw     r8,16(r9)                              
            break;                                                    
ffc0fa7c:	4b ff ff 9c 	b       ffc0fa18 <_Watchdog_Adjust+0xac>       
                                                                      

ffc22bfc <_Watchdog_Adjust_to_chain>: static inline uint32_t ppc_interrupt_disable( void ) { uint32_t level; uint32_t mask; __asm__ volatile (
ffc22bfc:	7d 60 00 a6 	mfmsr   r11                                    
ffc22c00:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc22c04:	7d 69 48 78 	andc    r9,r11,r9                              
ffc22c08:	7d 20 01 24 	mtmsr   r9                                     
{                                                                     
  Watchdog_Interval  units = units_arg;                               
  ISR_Level          level;                                           
  Watchdog_Control  *first;                                           
                                                                      
  _ISR_Disable( level );                                              
ffc22c0c:	81 23 00 00 	lwz     r9,0(r3)                               
ffc22c10:	38 c3 00 04 	addi    r6,r3,4                                
    /*                                                                
     *  The first set happens in less than units, so take all of them 
     *  off the chain and adjust units to reflect this.               
     */                                                               
    units -= first->delta_interval;                                   
    first->delta_interval = 0;                                        
ffc22c14:	39 80 00 00 	li      r12,0                                  
ffc22c18:	38 05 00 04 	addi    r0,r5,4                                
  Watchdog_Control  *first;                                           
                                                                      
  _ISR_Disable( level );                                              
                                                                      
  while ( 1 ) {                                                       
    if ( _Chain_Is_empty( header ) ) {                                
ffc22c1c:	7f 86 48 00 	cmpw    cr7,r6,r9                              
ffc22c20:	41 9e 00 68 	beq-    cr7,ffc22c88 <_Watchdog_Adjust_to_chain+0x8c>
                                                                      
    /*                                                                
     *  If it is longer than "units" until the first element on the chain
     *  fires, then bump it and quit.                                 
     */                                                               
    if ( units < first->delta_interval ) {                            
ffc22c24:	81 49 00 10 	lwz     r10,16(r9)                             
ffc22c28:	7f 84 50 40 	cmplw   cr7,r4,r10                             
ffc22c2c:	41 9c 00 64 	blt-    cr7,ffc22c90 <_Watchdog_Adjust_to_chain+0x94>
    /*                                                                
     *  The first set happens in less than units, so take all of them 
     *  off the chain and adjust units to reflect this.               
     */                                                               
    units -= first->delta_interval;                                   
    first->delta_interval = 0;                                        
ffc22c30:	91 89 00 10 	stw     r12,16(r9)                             
                                                                      
    /*                                                                
     *  The first set happens in less than units, so take all of them 
     *  off the chain and adjust units to reflect this.               
     */                                                               
    units -= first->delta_interval;                                   
ffc22c34:	7c 8a 20 50 	subf    r4,r10,r4                              
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
ffc22c38:	81 49 00 00 	lwz     r10,0(r9)                              
  previous       = the_node->previous;                                
ffc22c3c:	80 e9 00 04 	lwz     r7,4(r9)                               
  next->previous = previous;                                          
ffc22c40:	90 ea 00 04 	stw     r7,4(r10)                              
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
ffc22c44:	81 05 00 08 	lwz     r8,8(r5)                               
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
  next->previous = previous;                                          
  previous->next = next;                                              
ffc22c48:	91 47 00 00 	stw     r10,0(r7)                              
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
ffc22c4c:	90 09 00 00 	stw     r0,0(r9)                               
  tail->previous = the_node;                                          
  old_last->next = the_node;                                          
ffc22c50:	91 28 00 00 	stw     r9,0(r8)                               
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
  tail->previous = the_node;                                          
ffc22c54:	91 25 00 08 	stw     r9,8(r5)                               
  old_last->next = the_node;                                          
  the_node->previous = old_last;                                      
ffc22c58:	91 09 00 04 	stw     r8,4(r9)                               
                                                                      
static inline void ppc_interrupt_flash( uint32_t level )              
{                                                                     
  uint32_t current_level;                                             
                                                                      
  __asm__ volatile (                                                  
ffc22c5c:	7d 20 00 a6 	mfmsr   r9                                     
ffc22c60:	7d 60 01 24 	mtmsr   r11                                    
ffc22c64:	7d 20 01 24 	mtmsr   r9                                     
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
ffc22c68:	81 23 00 00 	lwz     r9,0(r3)                               
      _Chain_Extract_unprotected( &first->Node );                     
      _Chain_Append_unprotected( to_fire, &first->Node );             
                                                                      
      _ISR_Flash( level );                                            
                                                                      
      if ( _Chain_Is_empty( header ) )                                
ffc22c6c:	7f 86 48 00 	cmpw    cr7,r6,r9                              
ffc22c70:	41 be ff ac 	beq-    cr7,ffc22c1c <_Watchdog_Adjust_to_chain+0x20>
        break;                                                        
      first = _Watchdog_First( header );                              
      if ( first->delta_interval != 0 )                               
ffc22c74:	81 49 00 10 	lwz     r10,16(r9)                             
ffc22c78:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc22c7c:	41 9e ff bc 	beq+    cr7,ffc22c38 <_Watchdog_Adjust_to_chain+0x3c>
  Watchdog_Control  *first;                                           
                                                                      
  _ISR_Disable( level );                                              
                                                                      
  while ( 1 ) {                                                       
    if ( _Chain_Is_empty( header ) ) {                                
ffc22c80:	7f 86 48 00 	cmpw    cr7,r6,r9                              
ffc22c84:	40 9e ff a0 	bne+    cr7,ffc22c24 <_Watchdog_Adjust_to_chain+0x28><== ALWAYS TAKEN
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc22c88:	7d 60 01 24 	mtmsr   r11                                    
ffc22c8c:	4e 80 00 20 	blr                                            
    /*                                                                
     *  If it is longer than "units" until the first element on the chain
     *  fires, then bump it and quit.                                 
     */                                                               
    if ( units < first->delta_interval ) {                            
      first->delta_interval -= units;                                 
ffc22c90:	7d 44 50 50 	subf    r10,r4,r10                             
ffc22c94:	91 49 00 10 	stw     r10,16(r9)                             
ffc22c98:	7d 60 01 24 	mtmsr   r11                                    
ffc22c9c:	4e 80 00 20 	blr                                            
                                                                      

ffc0da64 <_Watchdog_Insert>: Watchdog_Control *after; uint32_t insert_isr_nest_level; Watchdog_Interval delta_interval; insert_isr_nest_level = _ISR_Nest_level;
ffc0da64:	3d 20 00 00 	lis     r9,0                                   
ffc0da68:	80 c9 31 a8 	lwz     r6,12712(r9)                           
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0da6c:	7c e0 00 a6 	mfmsr   r7                                     
ffc0da70:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc0da74:	7c e9 48 78 	andc    r9,r7,r9                               
ffc0da78:	7d 20 01 24 	mtmsr   r9                                     
  /*                                                                  
   *  Check to see if the watchdog has just been inserted by a        
   *  higher priority interrupt.  If so, abandon this insert.         
   */                                                                 
                                                                      
  if ( the_watchdog->state != WATCHDOG_INACTIVE ) {                   
ffc0da7c:	81 24 00 08 	lwz     r9,8(r4)                               
ffc0da80:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0da84:	40 9e 01 04 	bne-    cr7,ffc0db88 <_Watchdog_Insert+0x124>  
    _ISR_Enable( level );                                             
    return;                                                           
  }                                                                   
                                                                      
  the_watchdog->state = WATCHDOG_BEING_INSERTED;                      
  _Watchdog_Sync_count++;                                             
ffc0da88:	3d 60 00 00 	lis     r11,0                                  
ffc0da8c:	81 2b 28 84 	lwz     r9,10372(r11)                          
  if ( the_watchdog->state != WATCHDOG_INACTIVE ) {                   
    _ISR_Enable( level );                                             
    return;                                                           
  }                                                                   
                                                                      
  the_watchdog->state = WATCHDOG_BEING_INSERTED;                      
ffc0da90:	39 40 00 01 	li      r10,1                                  
ffc0da94:	91 44 00 08 	stw     r10,8(r4)                              
ffc0da98:	3d 80 00 00 	lis     r12,0                                  
  _Watchdog_Sync_count++;                                             
ffc0da9c:	39 29 00 01 	addi    r9,r9,1                                
ffc0daa0:	91 2b 28 84 	stw     r9,10372(r11)                          
                                                                      
restart:                                                              
  delta_interval = the_watchdog->initial;                             
ffc0daa4:	81 24 00 0c 	lwz     r9,12(r4)                              
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
ffc0daa8:	81 43 00 00 	lwz     r10,0(r3)                              
                                                                      
  for ( after = _Watchdog_First( header ) ;                           
        ;                                                             
        after = _Watchdog_Next( after ) ) {                           
                                                                      
     if ( delta_interval == 0 || !_Watchdog_Next( after ) )           
ffc0daac:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0dab0:	41 9e 00 98 	beq-    cr7,ffc0db48 <_Watchdog_Insert+0xe4>   
ffc0dab4:	81 0a 00 00 	lwz     r8,0(r10)                              
ffc0dab8:	2f 88 00 00 	cmpwi   cr7,r8,0                               
ffc0dabc:	41 9e 00 8c 	beq-    cr7,ffc0db48 <_Watchdog_Insert+0xe4>   
       break;                                                         
                                                                      
     if ( delta_interval < after->delta_interval ) {                  
ffc0dac0:	81 0a 00 10 	lwz     r8,16(r10)                             
ffc0dac4:	7f 89 40 40 	cmplw   cr7,r9,r8                              
ffc0dac8:	41 9c 00 c8 	blt-    cr7,ffc0db90 <_Watchdog_Insert+0x12c>  
       after->delta_interval -= delta_interval;                       
       break;                                                         
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
ffc0dacc:	7d 28 48 50 	subf    r9,r8,r9                               
                                                                      
static inline void ppc_interrupt_flash( uint32_t level )              
{                                                                     
  uint32_t current_level;                                             
                                                                      
  __asm__ volatile (                                                  
ffc0dad0:	7d 00 00 a6 	mfmsr   r8                                     
ffc0dad4:	7c e0 01 24 	mtmsr   r7                                     
ffc0dad8:	7d 00 01 24 	mtmsr   r8                                     
                                                                      
     _ISR_Flash( level );                                             
                                                                      
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
ffc0dadc:	81 04 00 08 	lwz     r8,8(r4)                               
ffc0dae0:	2f 88 00 01 	cmpwi   cr7,r8,1                               
ffc0dae4:	40 9e 00 94 	bne-    cr7,ffc0db78 <_Watchdog_Insert+0x114>  
       goto exit_insert;                                              
     }                                                                
                                                                      
     if ( _Watchdog_Sync_level > insert_isr_nest_level ) {            
ffc0dae8:	81 0c 28 7c 	lwz     r8,10364(r12)                          
ffc0daec:	38 ac 28 7c 	addi    r5,r12,10364                           
ffc0daf0:	7f 86 40 40 	cmplw   cr7,r6,r8                              
ffc0daf4:	40 bc 00 48 	bge+    cr7,ffc0db3c <_Watchdog_Insert+0xd8>   
ffc0daf8:	48 00 00 d4 	b       ffc0dbcc <_Watchdog_Insert+0x168>      
                                                                      
  for ( after = _Watchdog_First( header ) ;                           
        ;                                                             
        after = _Watchdog_Next( after ) ) {                           
                                                                      
     if ( delta_interval == 0 || !_Watchdog_Next( after ) )           
ffc0dafc:	81 0a 00 00 	lwz     r8,0(r10)                              
ffc0db00:	2f 88 00 00 	cmpwi   cr7,r8,0                               
ffc0db04:	41 9e 00 44 	beq-    cr7,ffc0db48 <_Watchdog_Insert+0xe4>   
       break;                                                         
                                                                      
     if ( delta_interval < after->delta_interval ) {                  
ffc0db08:	81 0a 00 10 	lwz     r8,16(r10)                             
ffc0db0c:	7f 88 48 40 	cmplw   cr7,r8,r9                              
ffc0db10:	41 9d 00 80 	bgt-    cr7,ffc0db90 <_Watchdog_Insert+0x12c>  
       after->delta_interval -= delta_interval;                       
       break;                                                         
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
ffc0db14:	7d 28 48 50 	subf    r9,r8,r9                               
ffc0db18:	7d 00 00 a6 	mfmsr   r8                                     
ffc0db1c:	7c e0 01 24 	mtmsr   r7                                     
ffc0db20:	7d 00 01 24 	mtmsr   r8                                     
                                                                      
     _ISR_Flash( level );                                             
                                                                      
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
ffc0db24:	81 04 00 08 	lwz     r8,8(r4)                               
ffc0db28:	2f 88 00 01 	cmpwi   cr7,r8,1                               
ffc0db2c:	40 9e 00 4c 	bne-    cr7,ffc0db78 <_Watchdog_Insert+0x114>  <== NEVER TAKEN
       goto exit_insert;                                              
     }                                                                
                                                                      
     if ( _Watchdog_Sync_level > insert_isr_nest_level ) {            
ffc0db30:	81 05 00 00 	lwz     r8,0(r5)                               
ffc0db34:	7f 86 40 40 	cmplw   cr7,r6,r8                              
ffc0db38:	41 9c 00 94 	blt-    cr7,ffc0dbcc <_Watchdog_Insert+0x168>  <== NEVER TAKEN
                                                                      
  for ( after = _Watchdog_First( header ) ;                           
        ;                                                             
        after = _Watchdog_Next( after ) ) {                           
                                                                      
     if ( delta_interval == 0 || !_Watchdog_Next( after ) )           
ffc0db3c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
                                                                      
exit_insert:                                                          
  _Watchdog_Sync_level = insert_isr_nest_level;                       
  _Watchdog_Sync_count--;                                             
  _ISR_Enable( level );                                               
}                                                                     
ffc0db40:	81 4a 00 00 	lwz     r10,0(r10)                             
                                                                      
  for ( after = _Watchdog_First( header ) ;                           
        ;                                                             
        after = _Watchdog_Next( after ) ) {                           
                                                                      
     if ( delta_interval == 0 || !_Watchdog_Next( after ) )           
ffc0db44:	40 9e ff b8 	bne+    cr7,ffc0dafc <_Watchdog_Insert+0x98>   
                                                                      
  _Watchdog_Activate( the_watchdog );                                 
                                                                      
  the_watchdog->delta_interval = delta_interval;                      
                                                                      
  _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
ffc0db48:	81 4a 00 04 	lwz     r10,4(r10)                             
                                                                      
  the_watchdog->start_time = _Watchdog_Ticks_since_boot;              
ffc0db4c:	3c a0 00 00 	lis     r5,0                                   
ffc0db50:	80 a5 28 88 	lwz     r5,10376(r5)                           
RTEMS_INLINE_ROUTINE void _Watchdog_Activate(                         
  Watchdog_Control *the_watchdog                                      
)                                                                     
{                                                                     
                                                                      
  the_watchdog->state = WATCHDOG_ACTIVE;                              
ffc0db54:	38 60 00 02 	li      r3,2                                   
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
ffc0db58:	81 0a 00 00 	lwz     r8,0(r10)                              
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
ffc0db5c:	91 44 00 04 	stw     r10,4(r4)                              
ffc0db60:	90 64 00 08 	stw     r3,8(r4)                               
     }                                                                
  }                                                                   
                                                                      
  _Watchdog_Activate( the_watchdog );                                 
                                                                      
  the_watchdog->delta_interval = delta_interval;                      
ffc0db64:	91 24 00 10 	stw     r9,16(r4)                              
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
ffc0db68:	90 8a 00 00 	stw     r4,0(r10)                              
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
ffc0db6c:	90 88 00 04 	stw     r4,4(r8)                               
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
ffc0db70:	91 04 00 00 	stw     r8,0(r4)                               
                                                                      
  _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
                                                                      
  the_watchdog->start_time = _Watchdog_Ticks_since_boot;              
ffc0db74:	90 a4 00 14 	stw     r5,20(r4)                              
                                                                      
exit_insert:                                                          
  _Watchdog_Sync_level = insert_isr_nest_level;                       
ffc0db78:	90 cc 28 7c 	stw     r6,10364(r12)                          
  _Watchdog_Sync_count--;                                             
ffc0db7c:	81 2b 28 84 	lwz     r9,10372(r11)                          
ffc0db80:	39 29 ff ff 	addi    r9,r9,-1                               
ffc0db84:	91 2b 28 84 	stw     r9,10372(r11)                          
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0db88:	7c e0 01 24 	mtmsr   r7                                     
ffc0db8c:	4e 80 00 20 	blr                                            
                                                                      
     if ( delta_interval == 0 || !_Watchdog_Next( after ) )           
       break;                                                         
                                                                      
     if ( delta_interval < after->delta_interval ) {                  
       after->delta_interval -= delta_interval;                       
ffc0db90:	7d 09 40 50 	subf    r8,r9,r8                               
ffc0db94:	91 0a 00 10 	stw     r8,16(r10)                             
                                                                      
  the_watchdog->delta_interval = delta_interval;                      
                                                                      
  _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
                                                                      
  the_watchdog->start_time = _Watchdog_Ticks_since_boot;              
ffc0db98:	3c a0 00 00 	lis     r5,0                                   
ffc0db9c:	38 60 00 02 	li      r3,2                                   
                                                                      
  _Watchdog_Activate( the_watchdog );                                 
                                                                      
  the_watchdog->delta_interval = delta_interval;                      
                                                                      
  _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
ffc0dba0:	81 4a 00 04 	lwz     r10,4(r10)                             
                                                                      
  the_watchdog->start_time = _Watchdog_Ticks_since_boot;              
ffc0dba4:	80 a5 28 88 	lwz     r5,10376(r5)                           
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
ffc0dba8:	81 0a 00 00 	lwz     r8,0(r10)                              
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
ffc0dbac:	91 44 00 04 	stw     r10,4(r4)                              
ffc0dbb0:	90 64 00 08 	stw     r3,8(r4)                               
     }                                                                
  }                                                                   
                                                                      
  _Watchdog_Activate( the_watchdog );                                 
                                                                      
  the_watchdog->delta_interval = delta_interval;                      
ffc0dbb4:	91 24 00 10 	stw     r9,16(r4)                              
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
ffc0dbb8:	90 8a 00 00 	stw     r4,0(r10)                              
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
ffc0dbbc:	90 88 00 04 	stw     r4,4(r8)                               
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
ffc0dbc0:	91 04 00 00 	stw     r8,0(r4)                               
                                                                      
  _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
                                                                      
  the_watchdog->start_time = _Watchdog_Ticks_since_boot;              
ffc0dbc4:	90 a4 00 14 	stw     r5,20(r4)                              
ffc0dbc8:	4b ff ff b0 	b       ffc0db78 <_Watchdog_Insert+0x114>      
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
       goto exit_insert;                                              
     }                                                                
                                                                      
     if ( _Watchdog_Sync_level > insert_isr_nest_level ) {            
       _Watchdog_Sync_level = insert_isr_nest_level;                  
ffc0dbcc:	90 cc 28 7c 	stw     r6,10364(r12)                          
       goto restart;                                                  
ffc0dbd0:	4b ff fe d4 	b       ffc0daa4 <_Watchdog_Insert+0x40>       
                                                                      

ffc0dc2c <_Watchdog_Remove>: static inline uint32_t ppc_interrupt_disable( void ) { uint32_t level; uint32_t mask; __asm__ volatile (
ffc0dc2c:	7d 40 00 a6 	mfmsr   r10                                    
ffc0dc30:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc0dc34:	7d 49 48 78 	andc    r9,r10,r9                              
ffc0dc38:	7d 20 01 24 	mtmsr   r9                                     
  ISR_Level         level;                                            
  Watchdog_States   previous_state;                                   
  Watchdog_Control *next_watchdog;                                    
                                                                      
  _ISR_Disable( level );                                              
  previous_state = the_watchdog->state;                               
ffc0dc3c:	81 23 00 08 	lwz     r9,8(r3)                               
  switch ( previous_state ) {                                         
ffc0dc40:	2f 89 00 01 	cmpwi   cr7,r9,1                               
ffc0dc44:	41 9e 00 98 	beq-    cr7,ffc0dcdc <_Watchdog_Remove+0xb0>   
ffc0dc48:	2b 89 00 01 	cmplwi  cr7,r9,1                               
ffc0dc4c:	40 9c 00 1c 	bge-    cr7,ffc0dc68 <_Watchdog_Remove+0x3c>   
        _Watchdog_Sync_level = _ISR_Nest_level;                       
                                                                      
      _Chain_Extract_unprotected( &the_watchdog->Node );              
      break;                                                          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
ffc0dc50:	3d 00 00 00 	lis     r8,0                                   
ffc0dc54:	81 08 28 88 	lwz     r8,10376(r8)                           
ffc0dc58:	91 03 00 18 	stw     r8,24(r3)                              
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0dc5c:	7d 40 01 24 	mtmsr   r10                                    
                                                                      
  _ISR_Enable( level );                                               
  return( previous_state );                                           
}                                                                     
ffc0dc60:	7d 23 4b 78 	mr      r3,r9                                  
ffc0dc64:	4e 80 00 20 	blr                                            
  Watchdog_States   previous_state;                                   
  Watchdog_Control *next_watchdog;                                    
                                                                      
  _ISR_Disable( level );                                              
  previous_state = the_watchdog->state;                               
  switch ( previous_state ) {                                         
ffc0dc68:	2b 89 00 03 	cmplwi  cr7,r9,3                               
ffc0dc6c:	41 bd ff e4 	bgt-    cr7,ffc0dc50 <_Watchdog_Remove+0x24>   <== NEVER TAKEN
      break;                                                          
                                                                      
    case WATCHDOG_ACTIVE:                                             
    case WATCHDOG_REMOVE_IT:                                          
                                                                      
      the_watchdog->state = WATCHDOG_INACTIVE;                        
ffc0dc70:	39 00 00 00 	li      r8,0                                   
ffc0dc74:	91 03 00 08 	stw     r8,8(r3)                               
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
                                                                      
  _ISR_Enable( level );                                               
  return( previous_state );                                           
}                                                                     
ffc0dc78:	81 03 00 00 	lwz     r8,0(r3)                               
    case WATCHDOG_REMOVE_IT:                                          
                                                                      
      the_watchdog->state = WATCHDOG_INACTIVE;                        
      next_watchdog = _Watchdog_Next( the_watchdog );                 
                                                                      
      if ( _Watchdog_Next(next_watchdog) )                            
ffc0dc7c:	80 e8 00 00 	lwz     r7,0(r8)                               
ffc0dc80:	2f 87 00 00 	cmpwi   cr7,r7,0                               
ffc0dc84:	41 9e 00 14 	beq-    cr7,ffc0dc98 <_Watchdog_Remove+0x6c>   
        next_watchdog->delta_interval += the_watchdog->delta_interval;
ffc0dc88:	80 c8 00 10 	lwz     r6,16(r8)                              
ffc0dc8c:	80 e3 00 10 	lwz     r7,16(r3)                              
ffc0dc90:	7c e6 3a 14 	add     r7,r6,r7                               
ffc0dc94:	90 e8 00 10 	stw     r7,16(r8)                              
                                                                      
      if ( _Watchdog_Sync_count )                                     
ffc0dc98:	3c e0 00 00 	lis     r7,0                                   
ffc0dc9c:	80 e7 28 84 	lwz     r7,10372(r7)                           
ffc0dca0:	2f 87 00 00 	cmpwi   cr7,r7,0                               
ffc0dca4:	41 9e 00 14 	beq-    cr7,ffc0dcb8 <_Watchdog_Remove+0x8c>   
        _Watchdog_Sync_level = _ISR_Nest_level;                       
ffc0dca8:	3c e0 00 00 	lis     r7,0                                   
ffc0dcac:	80 c7 31 a8 	lwz     r6,12712(r7)                           
ffc0dcb0:	3c e0 00 00 	lis     r7,0                                   
ffc0dcb4:	90 c7 28 7c 	stw     r6,10364(r7)                           
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
ffc0dcb8:	80 e3 00 04 	lwz     r7,4(r3)                               
  next->previous = previous;                                          
ffc0dcbc:	90 e8 00 04 	stw     r7,4(r8)                               
  previous->next = next;                                              
ffc0dcc0:	91 07 00 00 	stw     r8,0(r7)                               
                                                                      
      _Chain_Extract_unprotected( &the_watchdog->Node );              
      break;                                                          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
ffc0dcc4:	3d 00 00 00 	lis     r8,0                                   
ffc0dcc8:	81 08 28 88 	lwz     r8,10376(r8)                           
ffc0dccc:	91 03 00 18 	stw     r8,24(r3)                              
ffc0dcd0:	7d 40 01 24 	mtmsr   r10                                    
                                                                      
  _ISR_Enable( level );                                               
  return( previous_state );                                           
}                                                                     
ffc0dcd4:	7d 23 4b 78 	mr      r3,r9                                  
ffc0dcd8:	4e 80 00 20 	blr                                            
                                                                      
      /*                                                              
       *  It is not actually on the chain so just change the state and
       *  the Insert operation we interrupted will be aborted.        
       */                                                             
      the_watchdog->state = WATCHDOG_INACTIVE;                        
ffc0dcdc:	39 00 00 00 	li      r8,0                                   
ffc0dce0:	91 03 00 08 	stw     r8,8(r3)                               
        _Watchdog_Sync_level = _ISR_Nest_level;                       
                                                                      
      _Chain_Extract_unprotected( &the_watchdog->Node );              
      break;                                                          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
ffc0dce4:	3d 00 00 00 	lis     r8,0                                   
ffc0dce8:	81 08 28 88 	lwz     r8,10376(r8)                           
ffc0dcec:	91 03 00 18 	stw     r8,24(r3)                              
ffc0dcf0:	7d 40 01 24 	mtmsr   r10                                    
                                                                      
  _ISR_Enable( level );                                               
  return( previous_state );                                           
}                                                                     
ffc0dcf4:	7d 23 4b 78 	mr      r3,r9                                  
ffc0dcf8:	4e 80 00 20 	blr                                            
                                                                      

ffc0f1a4 <_Watchdog_Report_chain>: void _Watchdog_Report_chain( const char *name, Chain_Control *header ) {
ffc0f1a4:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0f1a8:	7c 08 02 a6 	mflr    r0                                     
ffc0f1ac:	93 a1 00 0c 	stw     r29,12(r1)                             
ffc0f1b0:	7c 7d 1b 78 	mr      r29,r3                                 
ffc0f1b4:	93 c1 00 10 	stw     r30,16(r1)                             
ffc0f1b8:	7c 9e 23 78 	mr      r30,r4                                 
ffc0f1bc:	90 01 00 1c 	stw     r0,28(r1)                              
ffc0f1c0:	93 81 00 08 	stw     r28,8(r1)                              
ffc0f1c4:	93 e1 00 14 	stw     r31,20(r1)                             
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0f1c8:	7f 80 00 a6 	mfmsr   r28                                    
ffc0f1cc:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc0f1d0:	7f 89 48 78 	andc    r9,r28,r9                              
ffc0f1d4:	7d 20 01 24 	mtmsr   r9                                     
  ISR_Level          level;                                           
  Chain_Node        *node;                                            
                                                                      
  _ISR_Disable( level );                                              
    printk( "Watchdog Chain: %s %p\n", name, header );                
ffc0f1d8:	3c 60 ff c2 	lis     r3,-62                                 
ffc0f1dc:	7f c5 f3 78 	mr      r5,r30                                 
ffc0f1e0:	38 63 21 24 	addi    r3,r3,8484                             
ffc0f1e4:	7f a4 eb 78 	mr      r4,r29                                 
ffc0f1e8:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0f1ec:	4b ff 75 b9 	bl      ffc067a4 <printk>                      
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
ffc0f1f0:	83 fe 00 00 	lwz     r31,0(r30)                             
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
ffc0f1f4:	3b de 00 04 	addi    r30,r30,4                              
    if ( !_Chain_Is_empty( header ) ) {                               
ffc0f1f8:	7f 9f f0 00 	cmpw    cr7,r31,r30                            
ffc0f1fc:	41 9e 00 54 	beq-    cr7,ffc0f250 <_Watchdog_Report_chain+0xac>
            node != _Chain_Tail(header) ;                             
            node = node->next )                                       
      {                                                               
        Watchdog_Control *watch = (Watchdog_Control *) node;          
                                                                      
        _Watchdog_Report( NULL, watch );                              
ffc0f200:	7f e4 fb 78 	mr      r4,r31                                 
ffc0f204:	38 60 00 00 	li      r3,0                                   
ffc0f208:	48 00 00 5d 	bl      ffc0f264 <_Watchdog_Report>            
  _ISR_Disable( level );                                              
    printk( "Watchdog Chain: %s %p\n", name, header );                
    if ( !_Chain_Is_empty( header ) ) {                               
      for ( node = _Chain_First( header ) ;                           
            node != _Chain_Tail(header) ;                             
            node = node->next )                                       
ffc0f20c:	83 ff 00 00 	lwz     r31,0(r31)                             
  Chain_Node        *node;                                            
                                                                      
  _ISR_Disable( level );                                              
    printk( "Watchdog Chain: %s %p\n", name, header );                
    if ( !_Chain_Is_empty( header ) ) {                               
      for ( node = _Chain_First( header ) ;                           
ffc0f210:	7f 9f f0 00 	cmpw    cr7,r31,r30                            
ffc0f214:	40 9e ff ec 	bne+    cr7,ffc0f200 <_Watchdog_Report_chain+0x5c><== NEVER TAKEN
      {                                                               
        Watchdog_Control *watch = (Watchdog_Control *) node;          
                                                                      
        _Watchdog_Report( NULL, watch );                              
      }                                                               
      printk( "== end of %s \n", name );                              
ffc0f218:	3c 60 ff c2 	lis     r3,-62                                 
ffc0f21c:	38 63 21 3c 	addi    r3,r3,8508                             
ffc0f220:	7f a4 eb 78 	mr      r4,r29                                 
ffc0f224:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0f228:	4b ff 75 7d 	bl      ffc067a4 <printk>                      
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0f22c:	7f 80 01 24 	mtmsr   r28                                    
    } else {                                                          
      printk( "Chain is empty\n" );                                   
    }                                                                 
  _ISR_Enable( level );                                               
}                                                                     
ffc0f230:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0f234:	83 81 00 08 	lwz     r28,8(r1)                              
ffc0f238:	7c 08 03 a6 	mtlr    r0                                     
ffc0f23c:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0f240:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0f244:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0f248:	38 21 00 18 	addi    r1,r1,24                               
ffc0f24c:	4e 80 00 20 	blr                                            
                                                                      
        _Watchdog_Report( NULL, watch );                              
      }                                                               
      printk( "== end of %s \n", name );                              
    } else {                                                          
      printk( "Chain is empty\n" );                                   
ffc0f250:	3c 60 ff c2 	lis     r3,-62                                 
ffc0f254:	38 63 21 4c 	addi    r3,r3,8524                             
ffc0f258:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0f25c:	4b ff 75 49 	bl      ffc067a4 <printk>                      
ffc0f260:	4b ff ff cc 	b       ffc0f22c <_Watchdog_Report_chain+0x88> 
                                                                      

ffc0ddd0 <_Workspace_Handler_initialization>: size_t area_count, Heap_Initialization_or_extend_handler extend ) { Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize; uintptr_t remaining = rtems_configuration_get_work_space_size();
ffc0ddd0:	3d 40 ff c2 	lis     r10,-62                                
void _Workspace_Handler_initialization(                               
  Heap_Area *areas,                                                   
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
ffc0ddd4:	7d 80 00 26 	mfcr    r12                                    
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
  uintptr_t remaining = rtems_configuration_get_work_space_size();    
ffc0ddd8:	39 2a ea f8 	addi    r9,r10,-5384                           
void _Workspace_Handler_initialization(                               
  Heap_Area *areas,                                                   
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
ffc0dddc:	94 21 ff d0 	stwu    r1,-48(r1)                             
ffc0dde0:	7c 08 02 a6 	mflr    r0                                     
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
  uintptr_t remaining = rtems_configuration_get_work_space_size();    
ffc0dde4:	89 09 00 32 	lbz     r8,50(r9)                              
void _Workspace_Handler_initialization(                               
  Heap_Area *areas,                                                   
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
ffc0dde8:	93 21 00 14 	stw     r25,20(r1)                             
ffc0ddec:	7c b9 2b 78 	mr      r25,r5                                 
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
  uintptr_t remaining = rtems_configuration_get_work_space_size();    
ffc0ddf0:	2f 88 00 00 	cmpwi   cr7,r8,0                               
void _Workspace_Handler_initialization(                               
  Heap_Area *areas,                                                   
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
ffc0ddf4:	93 61 00 1c 	stw     r27,28(r1)                             
ffc0ddf8:	7c 9b 23 78 	mr      r27,r4                                 
ffc0ddfc:	93 81 00 20 	stw     r28,32(r1)                             
ffc0de00:	90 01 00 34 	stw     r0,52(r1)                              
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
  uintptr_t remaining = rtems_configuration_get_work_space_size();    
ffc0de04:	83 8a ea f8 	lwz     r28,-5384(r10)                         
ffc0de08:	39 40 00 00 	li      r10,0                                  
void _Workspace_Handler_initialization(                               
  Heap_Area *areas,                                                   
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
ffc0de0c:	93 01 00 10 	stw     r24,16(r1)                             
ffc0de10:	93 41 00 18 	stw     r26,24(r1)                             
ffc0de14:	93 a1 00 24 	stw     r29,36(r1)                             
ffc0de18:	93 c1 00 28 	stw     r30,40(r1)                             
ffc0de1c:	93 e1 00 2c 	stw     r31,44(r1)                             
ffc0de20:	91 81 00 0c 	stw     r12,12(r1)                             
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
  uintptr_t remaining = rtems_configuration_get_work_space_size();    
ffc0de24:	40 9e 00 08 	bne-    cr7,ffc0de2c <_Workspace_Handler_initialization+0x5c>
ffc0de28:	81 49 00 04 	lwz     r10,4(r9)                              
  bool unified = rtems_configuration_get_unified_work_area();         
  uintptr_t page_size = CPU_HEAP_ALIGNMENT;                           
  uintptr_t overhead = _Heap_Area_overhead( page_size );              
  size_t i;                                                           
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
ffc0de2c:	2f 9b 00 00 	cmpwi   cr7,r27,0                              
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
  uintptr_t remaining = rtems_configuration_get_work_space_size();    
ffc0de30:	7f 8a e2 14 	add     r28,r10,r28                            
  bool do_zero = rtems_configuration_get_do_zero_of_workspace();      
ffc0de34:	89 49 00 30 	lbz     r10,48(r9)                             
  bool unified = rtems_configuration_get_unified_work_area();         
ffc0de38:	89 29 00 31 	lbz     r9,49(r9)                              
  uintptr_t page_size = CPU_HEAP_ALIGNMENT;                           
  uintptr_t overhead = _Heap_Area_overhead( page_size );              
  size_t i;                                                           
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
ffc0de3c:	41 9e 00 a0 	beq-    cr7,ffc0dedc <_Workspace_Handler_initialization+0x10c><== NEVER TAKEN
ffc0de40:	2e 0a 00 00 	cmpwi   cr4,r10,0                              
                                                                      
    if ( area->size > overhead ) {                                    
      uintptr_t space_available;                                      
      uintptr_t size;                                                 
                                                                      
      if ( unified ) {                                                
ffc0de44:	2d 89 00 00 	cmpwi   cr3,r9,0                               
  Heap_Area *areas,                                                   
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
ffc0de48:	3f 40 ff c1 	lis     r26,-63                                
        } else {                                                      
          size = 0;                                                   
        }                                                             
      }                                                               
                                                                      
      space_available = (*init_or_extend)(                            
ffc0de4c:	3f 00 00 00 	lis     r24,0                                  
ffc0de50:	7c 7f 1b 78 	mr      r31,r3                                 
  bool unified = rtems_configuration_get_unified_work_area();         
  uintptr_t page_size = CPU_HEAP_ALIGNMENT;                           
  uintptr_t overhead = _Heap_Area_overhead( page_size );              
  size_t i;                                                           
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
ffc0de54:	3b a0 00 00 	li      r29,0                                  
  Heap_Area *areas,                                                   
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
ffc0de58:	3b 5a b0 60 	addi    r26,r26,-20384                         
        } else {                                                      
          size = 0;                                                   
        }                                                             
      }                                                               
                                                                      
      space_available = (*init_or_extend)(                            
ffc0de5c:	3b 18 2d 14 	addi    r24,r24,11540                          
  size_t i;                                                           
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
    Heap_Area *area = &areas [i];                                     
                                                                      
    if ( do_zero ) {                                                  
ffc0de60:	40 92 00 bc 	bne-    cr4,ffc0df1c <_Workspace_Handler_initialization+0x14c>
      memset( area->begin, 0, area->size );                           
    }                                                                 
                                                                      
    if ( area->size > overhead ) {                                    
ffc0de64:	83 df 00 04 	lwz     r30,4(r31)                             
ffc0de68:	2b 9e 00 16 	cmplwi  cr7,r30,22                             
ffc0de6c:	40 9d 00 60 	ble-    cr7,ffc0decc <_Workspace_Handler_initialization+0xfc>
      uintptr_t space_available;                                      
      uintptr_t size;                                                 
                                                                      
      if ( unified ) {                                                
ffc0de70:	40 8e 00 1c 	bne-    cr3,ffc0de8c <_Workspace_Handler_initialization+0xbc>
        size = area->size;                                            
      } else {                                                        
        if ( remaining > 0 ) {                                        
ffc0de74:	2f 9c 00 00 	cmpwi   cr7,r28,0                              
ffc0de78:	41 9e 00 b8 	beq-    cr7,ffc0df30 <_Workspace_Handler_initialization+0x160><== NEVER TAKEN
          size = remaining < area->size - overhead ?                  
ffc0de7c:	39 3e ff ea 	addi    r9,r30,-22                             
            remaining + overhead : area->size;                        
ffc0de80:	7f 89 e0 40 	cmplw   cr7,r9,r28                             
ffc0de84:	40 9d 00 08 	ble-    cr7,ffc0de8c <_Workspace_Handler_initialization+0xbc><== NEVER TAKEN
ffc0de88:	3b dc 00 16 	addi    r30,r28,22                             
        } else {                                                      
          size = 0;                                                   
        }                                                             
      }                                                               
                                                                      
      space_available = (*init_or_extend)(                            
ffc0de8c:	7f c5 f3 78 	mr      r5,r30                                 
ffc0de90:	80 9f 00 00 	lwz     r4,0(r31)                              
ffc0de94:	7f 03 c3 78 	mr      r3,r24                                 
ffc0de98:	7f 49 03 a6 	mtctr   r26                                    
ffc0de9c:	38 c0 00 08 	li      r6,8                                   
ffc0dea0:	4e 80 04 21 	bctrl                                          
        area->begin,                                                  
        size,                                                         
        page_size                                                     
      );                                                              
                                                                      
      area->begin = (char *) area->begin + size;                      
ffc0dea4:	81 5f 00 00 	lwz     r10,0(r31)                             
      area->size -= size;                                             
                                                                      
      if ( space_available < remaining ) {                            
ffc0dea8:	7f 83 e0 40 	cmplw   cr7,r3,r28                             
        size,                                                         
        page_size                                                     
      );                                                              
                                                                      
      area->begin = (char *) area->begin + size;                      
      area->size -= size;                                             
ffc0deac:	81 3f 00 04 	lwz     r9,4(r31)                              
        area->begin,                                                  
        size,                                                         
        page_size                                                     
      );                                                              
                                                                      
      area->begin = (char *) area->begin + size;                      
ffc0deb0:	7d 4a f2 14 	add     r10,r10,r30                            
      area->size -= size;                                             
ffc0deb4:	7f de 48 50 	subf    r30,r30,r9                             
        area->begin,                                                  
        size,                                                         
        page_size                                                     
      );                                                              
                                                                      
      area->begin = (char *) area->begin + size;                      
ffc0deb8:	91 5f 00 00 	stw     r10,0(r31)                             
      area->size -= size;                                             
ffc0debc:	93 df 00 04 	stw     r30,4(r31)                             
                                                                      
      if ( space_available < remaining ) {                            
ffc0dec0:	40 9c 00 90 	bge-    cr7,ffc0df50 <_Workspace_Handler_initialization+0x180><== ALWAYS TAKEN
        remaining -= space_available;                                 
ffc0dec4:	7f 83 e0 50 	subf    r28,r3,r28                             <== NOT EXECUTED
      } else {                                                        
        remaining = 0;                                                
      }                                                               
                                                                      
      init_or_extend = extend;                                        
ffc0dec8:	7f 3a cb 78 	mr      r26,r25                                <== NOT EXECUTED
  bool unified = rtems_configuration_get_unified_work_area();         
  uintptr_t page_size = CPU_HEAP_ALIGNMENT;                           
  uintptr_t overhead = _Heap_Area_overhead( page_size );              
  size_t i;                                                           
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
ffc0decc:	3b bd 00 01 	addi    r29,r29,1                              
ffc0ded0:	7f 9d d8 00 	cmpw    cr7,r29,r27                            
ffc0ded4:	3b ff 00 08 	addi    r31,r31,8                              
ffc0ded8:	40 9e ff 88 	bne+    cr7,ffc0de60 <_Workspace_Handler_initialization+0x90><== NEVER TAKEN
                                                                      
      init_or_extend = extend;                                        
    }                                                                 
  }                                                                   
                                                                      
  if ( remaining > 0 ) {                                              
ffc0dedc:	2f 9c 00 00 	cmpwi   cr7,r28,0                              
ffc0dee0:	40 9e 00 7c 	bne-    cr7,ffc0df5c <_Workspace_Handler_initialization+0x18c>
      INTERNAL_ERROR_CORE,                                            
      true,                                                           
      INTERNAL_ERROR_TOO_LITTLE_WORKSPACE                             
    );                                                                
  }                                                                   
}                                                                     
ffc0dee4:	80 01 00 34 	lwz     r0,52(r1)                              
ffc0dee8:	81 81 00 0c 	lwz     r12,12(r1)                             
ffc0deec:	7c 08 03 a6 	mtlr    r0                                     
ffc0def0:	83 01 00 10 	lwz     r24,16(r1)                             
ffc0def4:	83 21 00 14 	lwz     r25,20(r1)                             
ffc0def8:	7d 81 81 20 	mtcrf   24,r12                                 
ffc0defc:	83 41 00 18 	lwz     r26,24(r1)                             
ffc0df00:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc0df04:	83 81 00 20 	lwz     r28,32(r1)                             
ffc0df08:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc0df0c:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc0df10:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc0df14:	38 21 00 30 	addi    r1,r1,48                               
ffc0df18:	4e 80 00 20 	blr                                            
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
    Heap_Area *area = &areas [i];                                     
                                                                      
    if ( do_zero ) {                                                  
      memset( area->begin, 0, area->size );                           
ffc0df1c:	80 7f 00 00 	lwz     r3,0(r31)                              
ffc0df20:	38 80 00 00 	li      r4,0                                   
ffc0df24:	80 bf 00 04 	lwz     r5,4(r31)                              
ffc0df28:	48 00 5f 49 	bl      ffc13e70 <memset>                      
ffc0df2c:	4b ff ff 38 	b       ffc0de64 <_Workspace_Handler_initialization+0x94>
        } else {                                                      
          size = 0;                                                   
        }                                                             
      }                                                               
                                                                      
      space_available = (*init_or_extend)(                            
ffc0df30:	7f 49 03 a6 	mtctr   r26                                    <== NOT EXECUTED
ffc0df34:	7f 03 c3 78 	mr      r3,r24                                 <== NOT EXECUTED
ffc0df38:	80 9f 00 00 	lwz     r4,0(r31)                              <== NOT EXECUTED
ffc0df3c:	38 a0 00 00 	li      r5,0                                   <== NOT EXECUTED
ffc0df40:	38 c0 00 08 	li      r6,8                                   <== NOT EXECUTED
        remaining -= space_available;                                 
      } else {                                                        
        remaining = 0;                                                
      }                                                               
                                                                      
      init_or_extend = extend;                                        
ffc0df44:	7f 3a cb 78 	mr      r26,r25                                <== NOT EXECUTED
        } else {                                                      
          size = 0;                                                   
        }                                                             
      }                                                               
                                                                      
      space_available = (*init_or_extend)(                            
ffc0df48:	4e 80 04 21 	bctrl                                          <== NOT EXECUTED
ffc0df4c:	4b ff ff 80 	b       ffc0decc <_Workspace_Handler_initialization+0xfc><== NOT EXECUTED
        remaining -= space_available;                                 
      } else {                                                        
        remaining = 0;                                                
      }                                                               
                                                                      
      init_or_extend = extend;                                        
ffc0df50:	7f 3a cb 78 	mr      r26,r25                                
      area->size -= size;                                             
                                                                      
      if ( space_available < remaining ) {                            
        remaining -= space_available;                                 
      } else {                                                        
        remaining = 0;                                                
ffc0df54:	3b 80 00 00 	li      r28,0                                  
ffc0df58:	4b ff ff 74 	b       ffc0decc <_Workspace_Handler_initialization+0xfc>
      init_or_extend = extend;                                        
    }                                                                 
  }                                                                   
                                                                      
  if ( remaining > 0 ) {                                              
    _Internal_error_Occurred(                                         
ffc0df5c:	38 60 00 00 	li      r3,0                                   
ffc0df60:	38 80 00 01 	li      r4,1                                   
ffc0df64:	38 a0 00 02 	li      r5,2                                   
ffc0df68:	4b ff d4 09 	bl      ffc0b370 <_Internal_error_Occurred>    
                                                                      

ffc09418 <adjtime>: */ int adjtime( const struct timeval *delta, struct timeval *olddelta ) {
ffc09418:	94 21 ff d0 	stwu    r1,-48(r1)                             
ffc0941c:	7d 80 00 26 	mfcr    r12                                    
ffc09420:	7c 08 02 a6 	mflr    r0                                     
ffc09424:	93 81 00 20 	stw     r28,32(r1)                             
  long   adjustment;                                                  
                                                                      
  /*                                                                  
   * Simple validations                                               
   */                                                                 
  if ( !delta )                                                       
ffc09428:	7c 7c 1b 79 	mr.     r28,r3                                 
 */                                                                   
int  adjtime(                                                         
  const struct timeval *delta,                                        
  struct timeval *olddelta                                            
)                                                                     
{                                                                     
ffc0942c:	90 01 00 34 	stw     r0,52(r1)                              
ffc09430:	93 61 00 1c 	stw     r27,28(r1)                             
ffc09434:	93 a1 00 24 	stw     r29,36(r1)                             
ffc09438:	93 c1 00 28 	stw     r30,40(r1)                             
ffc0943c:	93 e1 00 2c 	stw     r31,44(r1)                             
ffc09440:	91 81 00 18 	stw     r12,24(r1)                             
  long   adjustment;                                                  
                                                                      
  /*                                                                  
   * Simple validations                                               
   */                                                                 
  if ( !delta )                                                       
ffc09444:	41 82 01 a4 	beq-    ffc095e8 <adjtime+0x1d0>               
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )                
ffc09448:	81 5c 00 04 	lwz     r10,4(r28)                             
ffc0944c:	3d 20 00 0f 	lis     r9,15                                  
ffc09450:	61 29 42 3f 	ori     r9,r9,16959                            
ffc09454:	7f 8a 48 40 	cmplw   cr7,r10,r9                             
ffc09458:	41 9d 01 90 	bgt-    cr7,ffc095e8 <adjtime+0x1d0>           
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( olddelta ) {                                                   
ffc0945c:	2e 04 00 00 	cmpwi   cr4,r4,0                               
ffc09460:	7c 9b 23 78 	mr      r27,r4                                 
ffc09464:	41 92 00 14 	beq-    cr4,ffc09478 <adjtime+0x60>            
    olddelta->tv_sec  = 0;                                            
ffc09468:	39 20 00 00 	li      r9,0                                   
    olddelta->tv_usec = 0;                                            
ffc0946c:	91 24 00 04 	stw     r9,4(r4)                               
                                                                      
  if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( olddelta ) {                                                   
    olddelta->tv_sec  = 0;                                            
ffc09470:	91 24 00 00 	stw     r9,0(r4)                               
ffc09474:	81 5c 00 04 	lwz     r10,4(r28)                             
    olddelta->tv_usec = 0;                                            
  }                                                                   
                                                                      
  /* convert delta to microseconds */                                 
  adjustment  = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);        
ffc09478:	81 3c 00 00 	lwz     r9,0(r28)                              
ffc0947c:	55 27 40 2e 	rlwinm  r7,r9,8,0,23                           
ffc09480:	55 28 18 38 	rlwinm  r8,r9,3,0,28                           
ffc09484:	7d 08 38 50 	subf    r8,r8,r7                               
ffc09488:	55 07 30 32 	rlwinm  r7,r8,6,0,25                           
ffc0948c:	7d 08 38 50 	subf    r8,r8,r7                               
ffc09490:	7d 28 4a 14 	add     r9,r8,r9                               
  adjustment += delta->tv_usec;                                       
                                                                      
  /* too small to account for */                                      
  if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 
ffc09494:	3d 00 ff c2 	lis     r8,-62                                 
    olddelta->tv_sec  = 0;                                            
    olddelta->tv_usec = 0;                                            
  }                                                                   
                                                                      
  /* convert delta to microseconds */                                 
  adjustment  = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);        
ffc09498:	55 29 30 32 	rlwinm  r9,r9,6,0,25                           
  adjustment += delta->tv_usec;                                       
                                                                      
  /* too small to account for */                                      
  if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 
ffc0949c:	80 e8 b7 00 	lwz     r7,-18688(r8)                          
    olddelta->tv_usec = 0;                                            
  }                                                                   
                                                                      
  /* convert delta to microseconds */                                 
  adjustment  = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);        
  adjustment += delta->tv_usec;                                       
ffc094a0:	7d 49 52 14 	add     r10,r9,r10                             
                                                                      
  /* too small to account for */                                      
  if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 
ffc094a4:	7f 8a 38 40 	cmplw   cr7,r10,r7                             
ffc094a8:	40 9c 00 34 	bge-    cr7,ffc094dc <adjtime+0xc4>            
                                                                      
  /* set the user's output */                                         
  if ( olddelta )                                                     
    *olddelta = *delta;                                               
                                                                      
  return 0;                                                           
ffc094ac:	38 60 00 00 	li      r3,0                                   
}                                                                     
ffc094b0:	80 01 00 34 	lwz     r0,52(r1)                              
ffc094b4:	81 81 00 18 	lwz     r12,24(r1)                             
ffc094b8:	7c 08 03 a6 	mtlr    r0                                     
ffc094bc:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc094c0:	83 81 00 20 	lwz     r28,32(r1)                             
ffc094c4:	7d 80 81 20 	mtcrf   8,r12                                  
ffc094c8:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc094cc:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc094d0:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc094d4:	38 21 00 30 	addi    r1,r1,48                               
ffc094d8:	4e 80 00 20 	blr                                            
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc094dc:	3d 20 00 00 	lis     r9,0                                   
ffc094e0:	81 49 29 84 	lwz     r10,10628(r9)                          
                                                                      
    ++level;                                                          
ffc094e4:	39 4a 00 01 	addi    r10,r10,1                              
    _Thread_Dispatch_disable_level = level;                           
ffc094e8:	91 49 29 84 	stw     r10,10628(r9)                          
)                                                                     
{                                                                     
  Timestamp_Control  tod_as_timestamp;                                
  Timestamp_Control *tod_as_timestamp_ptr;                            
                                                                      
  tod_as_timestamp_ptr =                                              
ffc094ec:	3c 80 00 00 	lis     r4,0                                   
ffc094f0:	38 84 2d a0 	addi    r4,r4,11680                            
ffc094f4:	38 61 00 08 	addi    r3,r1,8                                
ffc094f8:	48 00 1f 39 	bl      ffc0b430 <_TOD_Get_with_nanoseconds>   
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
ffc094fc:	3c c0 3b 9a 	lis     r6,15258                               
ffc09500:	83 e3 00 04 	lwz     r31,4(r3)                              
ffc09504:	38 a0 00 00 	li      r5,0                                   
ffc09508:	83 c3 00 00 	lwz     r30,0(r3)                              
ffc0950c:	60 c6 ca 00 	ori     r6,r6,51712                            
ffc09510:	7f e4 fb 78 	mr      r4,r31                                 
ffc09514:	7f c3 f3 78 	mr      r3,r30                                 
ffc09518:	48 01 02 2d 	bl      ffc19744 <__divdi3>                    
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
ffc0951c:	83 bc 00 00 	lwz     r29,0(r28)                             
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
ffc09520:	3c c0 3b 9a 	lis     r6,15258                               
ffc09524:	7f bd 22 14 	add     r29,r29,r4                             
ffc09528:	38 a0 00 00 	li      r5,0                                   
ffc0952c:	60 c6 ca 00 	ori     r6,r6,51712                            
ffc09530:	7f c3 f3 78 	mr      r3,r30                                 
ffc09534:	7f e4 fb 78 	mr      r4,r31                                 
ffc09538:	48 01 06 31 	bl      ffc19b68 <__moddi3>                    
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
ffc0953c:	81 3c 00 04 	lwz     r9,4(r28)                              
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
ffc09540:	3d 40 3b 9a 	lis     r10,15258                              
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
ffc09544:	1d 29 03 e8 	mulli   r9,r9,1000                             
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
ffc09548:	61 4a c9 ff 	ori     r10,r10,51711                          
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
ffc0954c:	7c 84 4a 14 	add     r4,r4,r9                               
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
ffc09550:	7f 84 50 40 	cmplw   cr7,r4,r10                             
int _EXFUN(setitimer, (int __which, const struct itimerval *__value,  
					struct itimerval *__ovalue));                                    
                                                                      
#if defined(__rtems__)                                                
/* BSD function used by RTEMS code */                                 
int _EXFUN(adjtime,(const struct timeval *, struct timeval *));       
ffc09554:	39 1d 00 01 	addi    r8,r29,1                               
ffc09558:	40 9d 00 1c 	ble-    cr7,ffc09574 <adjtime+0x15c>           
      ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                       
ffc0955c:	3d 24 c4 65 	addis   r9,r4,-15259                           
ffc09560:	38 89 36 00 	addi    r4,r9,13824                            
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
ffc09564:	7f 84 50 40 	cmplw   cr7,r4,r10                             
      ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                       
      ts.tv_sec++;                                                    
ffc09568:	7d 1d 43 78 	mr      r29,r8                                 
ffc0956c:	39 08 00 01 	addi    r8,r8,1                                
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
ffc09570:	41 9d ff ec 	bgt+    cr7,ffc0955c <adjtime+0x144>           <== NEVER TAKEN
      ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                       
      ts.tv_sec++;                                                    
    }                                                                 
                                                                      
    /* if adjustment is too much negative */                          
    while ( ts.tv_nsec <= (-1 * TOD_NANOSECONDS_PER_SECOND) ) {       
ffc09574:	3d 20 c4 65 	lis     r9,-15259                              
ffc09578:	7c 87 23 78 	mr      r7,r4                                  
ffc0957c:	39 5d ff ff 	addi    r10,r29,-1                             
ffc09580:	61 29 36 00 	ori     r9,r9,13824                            
      ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND;                       
ffc09584:	3c e7 3b 9b 	addis   r7,r7,15259                            
ffc09588:	38 e7 ca 00 	addi    r7,r7,-13824                           
      ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                       
      ts.tv_sec++;                                                    
    }                                                                 
                                                                      
    /* if adjustment is too much negative */                          
    while ( ts.tv_nsec <= (-1 * TOD_NANOSECONDS_PER_SECOND) ) {       
ffc0958c:	7f 87 48 40 	cmplw   cr7,r7,r9                              
      ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND;                       
      ts.tv_sec--;                                                    
ffc09590:	7d 46 53 78 	mr      r6,r10                                 
ffc09594:	39 4a ff ff 	addi    r10,r10,-1                             
      ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                       
      ts.tv_sec++;                                                    
    }                                                                 
                                                                      
    /* if adjustment is too much negative */                          
    while ( ts.tv_nsec <= (-1 * TOD_NANOSECONDS_PER_SECOND) ) {       
ffc09598:	40 9d ff ec 	ble+    cr7,ffc09584 <adjtime+0x16c>           
  Timestamp64_Control *_time,                                         
  Timestamp64_Control  _seconds,                                      
  Timestamp64_Control  _nanoseconds                                   
)                                                                     
{                                                                     
  *_time = _seconds * 1000000000L + _nanoseconds;                     
ffc0959c:	3c a0 3b 9a 	lis     r5,15258                               
ffc095a0:	60 a5 ca 00 	ori     r5,r5,51712                            
ffc095a4:	7d 06 28 96 	mulhw   r8,r6,r5                               
ffc095a8:	7d 26 29 d6 	mullw   r9,r6,r5                               
  const struct timespec *tod_as_timespec                              
)                                                                     
{                                                                     
  Timestamp_Control tod_as_timestamp;                                 
                                                                      
  _Timestamp_Set(                                                     
ffc095ac:	7c eb 3b 78 	mr      r11,r7                                 
ffc095b0:	7c ea fe 70 	srawi   r10,r7,31                              
ffc095b4:	7d 6b 48 14 	addc    r11,r11,r9                             
ffc095b8:	7d 4a 41 14 	adde    r10,r10,r8                             
ffc095bc:	91 41 00 08 	stw     r10,8(r1)                              
    &tod_as_timestamp,                                                
    tod_as_timespec->tv_sec,                                          
    tod_as_timespec->tv_nsec                                          
  );                                                                  
  _TOD_Set_with_timestamp( &tod_as_timestamp );                       
ffc095c0:	38 61 00 08 	addi    r3,r1,8                                
ffc095c4:	91 61 00 0c 	stw     r11,12(r1)                             
ffc095c8:	48 00 1f 25 	bl      ffc0b4ec <_TOD_Set_with_timestamp>     
      ts.tv_sec--;                                                    
    }                                                                 
                                                                      
    _TOD_Set( &ts );                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
ffc095cc:	48 00 3c 2d 	bl      ffc0d1f8 <_Thread_Enable_dispatch>     
                                                                      
  /* set the user's output */                                         
  if ( olddelta )                                                     
ffc095d0:	41 b2 fe dc 	beq-    cr4,ffc094ac <adjtime+0x94>            
    *olddelta = *delta;                                               
ffc095d4:	81 3c 00 00 	lwz     r9,0(r28)                              
ffc095d8:	81 5c 00 04 	lwz     r10,4(r28)                             
ffc095dc:	91 3b 00 00 	stw     r9,0(r27)                              
ffc095e0:	91 5b 00 04 	stw     r10,4(r27)                             
ffc095e4:	4b ff fe c8 	b       ffc094ac <adjtime+0x94>                
   */                                                                 
  if ( !delta )                                                       
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
ffc095e8:	48 00 a2 41 	bl      ffc13828 <__errno>                     
ffc095ec:	39 20 00 16 	li      r9,22                                  
ffc095f0:	91 23 00 00 	stw     r9,0(r3)                               
ffc095f4:	38 60 ff ff 	li      r3,-1                                  
ffc095f8:	4b ff fe b8 	b       ffc094b0 <adjtime+0x98>                
                                                                      

ffc096d4 <aio_cancel>: #include <stdlib.h> #include <rtems/system.h> #include <rtems/seterr.h> int aio_cancel(int fildes, struct aiocb *aiocbp) {
ffc096d4:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc096d8:	7c 08 02 a6 	mflr    r0                                     
ffc096dc:	93 e1 00 14 	stw     r31,20(r1)                             
  rtems_aio_request_chain *r_chain;                                   
  int result;                                                         
                                                                      
  pthread_mutex_lock (&aio_request_queue.mutex);                      
ffc096e0:	3f e0 00 00 	lis     r31,0                                  
ffc096e4:	3b ff 2b b8 	addi    r31,r31,11192                          
#include <stdlib.h>                                                   
#include <rtems/system.h>                                             
#include <rtems/seterr.h>                                             
                                                                      
int aio_cancel(int fildes, struct aiocb  *aiocbp)                     
{                                                                     
ffc096e8:	93 a1 00 0c 	stw     r29,12(r1)                             
ffc096ec:	7c 7d 1b 78 	mr      r29,r3                                 
  rtems_aio_request_chain *r_chain;                                   
  int result;                                                         
                                                                      
  pthread_mutex_lock (&aio_request_queue.mutex);                      
ffc096f0:	7f e3 fb 78 	mr      r3,r31                                 
#include <stdlib.h>                                                   
#include <rtems/system.h>                                             
#include <rtems/seterr.h>                                             
                                                                      
int aio_cancel(int fildes, struct aiocb  *aiocbp)                     
{                                                                     
ffc096f4:	90 01 00 1c 	stw     r0,28(r1)                              
ffc096f8:	93 c1 00 10 	stw     r30,16(r1)                             
ffc096fc:	7c 9e 23 78 	mr      r30,r4                                 
ffc09700:	93 81 00 08 	stw     r28,8(r1)                              
  rtems_aio_request_chain *r_chain;                                   
  int result;                                                         
                                                                      
  pthread_mutex_lock (&aio_request_queue.mutex);                      
ffc09704:	48 00 16 dd 	bl      ffc0ade0 <pthread_mutex_lock>          
                                                                      
  if (fcntl (fildes, F_GETFD) < 0) {                                  
ffc09708:	7f a3 eb 78 	mr      r3,r29                                 
ffc0970c:	38 80 00 01 	li      r4,1                                   
ffc09710:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc09714:	48 00 7f d1 	bl      ffc116e4 <fcntl>                       
ffc09718:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0971c:	41 9c 01 bc 	blt-    cr7,ffc098d8 <aio_cancel+0x204>        
    pthread_mutex_unlock(&aio_request_queue.mutex);                   
    rtems_set_errno_and_return_minus_one (EBADF);                     
  }                                                                   
                                                                      
  /* if aiocbp is NULL remove all request for given file descriptor */
  if (aiocbp == NULL) {                                               
ffc09720:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
ffc09724:	41 9e 01 08 	beq-    cr7,ffc0982c <aio_cancel+0x158>        
    pthread_mutex_unlock (&aio_request_queue.mutex);                  
    return AIO_CANCELED;                                              
  } else {                                                            
    AIO_printf ("Cancel request\n");                                  
                                                                      
    if (aiocbp->aio_fildes != fildes) {                               
ffc09728:	83 9e 00 00 	lwz     r28,0(r30)                             
ffc0972c:	7f 9c e8 00 	cmpw    cr7,r28,r29                            
ffc09730:	40 9e 00 e0 	bne-    cr7,ffc09810 <aio_cancel+0x13c>        
      pthread_mutex_unlock (&aio_request_queue.mutex);                
      rtems_set_errno_and_return_minus_one (EINVAL);                  
    }                                                                 
                                                                      
    r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
ffc09734:	38 7f 00 48 	addi    r3,r31,72                              
ffc09738:	7f 84 e3 78 	mr      r4,r28                                 
ffc0973c:	38 a0 00 00 	li      r5,0                                   
ffc09740:	48 00 07 05 	bl      ffc09e44 <rtems_aio_search_fd>         
    if (r_chain == NULL) {                                            
ffc09744:	7c 7d 1b 79 	mr.     r29,r3                                 
ffc09748:	41 82 00 54 	beq-    ffc0979c <aio_cancel+0xc8>             
        return AIO_ALLDONE;                                           
      }                                                               
    }                                                                 
      AIO_printf ("Request on [WQ]\n");                               
                                                                      
      pthread_mutex_lock (&r_chain->mutex);                           
ffc0974c:	3b 9d 00 1c 	addi    r28,r29,28                             
ffc09750:	7f 83 e3 78 	mr      r3,r28                                 
ffc09754:	48 00 16 8d 	bl      ffc0ade0 <pthread_mutex_lock>          
      result = rtems_aio_remove_req (&r_chain->perfd, aiocbp);        
ffc09758:	7f c4 f3 78 	mr      r4,r30                                 
ffc0975c:	38 7d 00 08 	addi    r3,r29,8                               
ffc09760:	48 00 08 9d 	bl      ffc09ffc <rtems_aio_remove_req>        
ffc09764:	7c 7e 1b 78 	mr      r30,r3                                 
      pthread_mutex_unlock (&r_chain->mutex);                         
ffc09768:	7f 83 e3 78 	mr      r3,r28                                 
ffc0976c:	48 00 17 25 	bl      ffc0ae90 <pthread_mutex_unlock>        
      pthread_mutex_unlock (&aio_request_queue.mutex);                
ffc09770:	7f e3 fb 78 	mr      r3,r31                                 
ffc09774:	48 00 17 1d 	bl      ffc0ae90 <pthread_mutex_unlock>        
      return result;                                                  
  }                                                                   
  return AIO_ALLDONE;                                                 
}                                                                     
ffc09778:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0977c:	7f c3 f3 78 	mr      r3,r30                                 
ffc09780:	83 81 00 08 	lwz     r28,8(r1)                              
ffc09784:	7c 08 03 a6 	mtlr    r0                                     
ffc09788:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0978c:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc09790:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc09794:	38 21 00 18 	addi    r1,r1,24                               
ffc09798:	4e 80 00 20 	blr                                            
      rtems_set_errno_and_return_minus_one (EINVAL);                  
    }                                                                 
                                                                      
    r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
    if (r_chain == NULL) {                                            
      if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) {      
ffc0979c:	81 3f 00 54 	lwz     r9,84(r31)                             
ffc097a0:	39 5f 00 58 	addi    r10,r31,88                             
ffc097a4:	7f 89 50 00 	cmpw    cr7,r9,r10                             
ffc097a8:	41 9e 00 58 	beq-    cr7,ffc09800 <aio_cancel+0x12c>        <== NEVER TAKEN
        r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
ffc097ac:	38 7f 00 54 	addi    r3,r31,84                              
ffc097b0:	7f 84 e3 78 	mr      r4,r28                                 
ffc097b4:	38 a0 00 00 	li      r5,0                                   
ffc097b8:	48 00 06 8d 	bl      ffc09e44 <rtems_aio_search_fd>         
        if (r_chain == NULL) {                                        
ffc097bc:	2c 03 00 00 	cmpwi   r3,0                                   
ffc097c0:	41 82 00 50 	beq-    ffc09810 <aio_cancel+0x13c>            
          rtems_set_errno_and_return_minus_one (EINVAL);              
        }                                                             
                                                                      
        AIO_printf ("Request on [IQ]\n");                             
                                                                      
        result = rtems_aio_remove_req (&r_chain->perfd, aiocbp);      
ffc097c4:	7f c4 f3 78 	mr      r4,r30                                 
ffc097c8:	38 63 00 08 	addi    r3,r3,8                                
ffc097cc:	48 00 08 31 	bl      ffc09ffc <rtems_aio_remove_req>        
ffc097d0:	7c 7e 1b 78 	mr      r30,r3                                 
        pthread_mutex_unlock (&aio_request_queue.mutex);              
ffc097d4:	7f e3 fb 78 	mr      r3,r31                                 
ffc097d8:	48 00 16 b9 	bl      ffc0ae90 <pthread_mutex_unlock>        
      pthread_mutex_unlock (&r_chain->mutex);                         
      pthread_mutex_unlock (&aio_request_queue.mutex);                
      return result;                                                  
  }                                                                   
  return AIO_ALLDONE;                                                 
}                                                                     
ffc097dc:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc097e0:	7f c3 f3 78 	mr      r3,r30                                 
ffc097e4:	83 81 00 08 	lwz     r28,8(r1)                              
ffc097e8:	7c 08 03 a6 	mtlr    r0                                     
ffc097ec:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc097f0:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc097f4:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc097f8:	38 21 00 18 	addi    r1,r1,24                               
ffc097fc:	4e 80 00 20 	blr                                            
      AIO_printf ("Request chain not on [WQ]\n");                     
                                                                      
      if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) {      
        r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
        if (r_chain == NULL) {                                        
          pthread_mutex_unlock(&aio_request_queue.mutex);             
ffc09800:	7f e3 fb 78 	mr      r3,r31                                 
ffc09804:	48 00 16 8d 	bl      ffc0ae90 <pthread_mutex_unlock>        
          return AIO_ALLDONE;                                         
ffc09808:	3b c0 00 02 	li      r30,2                                  
ffc0980c:	4b ff ff 6c 	b       ffc09778 <aio_cancel+0xa4>             
    r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
    if (r_chain == NULL) {                                            
      if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) {      
        r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
        if (r_chain == NULL) {                                        
          pthread_mutex_unlock (&aio_request_queue.mutex);            
ffc09810:	7f e3 fb 78 	mr      r3,r31                                 
ffc09814:	48 00 16 7d 	bl      ffc0ae90 <pthread_mutex_unlock>        
          rtems_set_errno_and_return_minus_one (EINVAL);              
ffc09818:	3b c0 ff ff 	li      r30,-1                                 
ffc0981c:	48 00 c0 95 	bl      ffc158b0 <__errno>                     
ffc09820:	39 20 00 16 	li      r9,22                                  
ffc09824:	91 23 00 00 	stw     r9,0(r3)                               
ffc09828:	4b ff ff 50 	b       ffc09778 <aio_cancel+0xa4>             
                                                                      
  /* if aiocbp is NULL remove all request for given file descriptor */
  if (aiocbp == NULL) {                                               
    AIO_printf ("Cancel all requests\n");                             
                                                                      
    r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
ffc0982c:	38 7f 00 48 	addi    r3,r31,72                              
ffc09830:	7f a4 eb 78 	mr      r4,r29                                 
ffc09834:	38 a0 00 00 	li      r5,0                                   
ffc09838:	48 00 06 0d 	bl      ffc09e44 <rtems_aio_search_fd>         
    if (r_chain == NULL) {                                            
ffc0983c:	7c 7e 1b 79 	mr.     r30,r3                                 
ffc09840:	41 82 00 38 	beq-    ffc09878 <aio_cancel+0x1a4>            
      return AIO_ALLDONE;                                             
    }                                                                 
                                                                      
    AIO_printf ("Request chain on [WQ]\n");                           
                                                                      
    pthread_mutex_lock (&r_chain->mutex);                             
ffc09844:	3b be 00 1c 	addi    r29,r30,28                             
ffc09848:	7f a3 eb 78 	mr      r3,r29                                 
ffc0984c:	48 00 15 95 	bl      ffc0ade0 <pthread_mutex_lock>          
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
ffc09850:	7f c3 f3 78 	mr      r3,r30                                 
ffc09854:	48 00 36 d1 	bl      ffc0cf24 <_Chain_Extract>              
    rtems_chain_extract (&r_chain->next_fd);                          
    rtems_aio_remove_fd (r_chain);                                    
ffc09858:	7f c3 f3 78 	mr      r3,r30                                 
ffc0985c:	48 00 07 19 	bl      ffc09f74 <rtems_aio_remove_fd>         
    pthread_mutex_unlock (&r_chain->mutex);                           
ffc09860:	7f a3 eb 78 	mr      r3,r29                                 
ffc09864:	48 00 16 2d 	bl      ffc0ae90 <pthread_mutex_unlock>        
    pthread_mutex_unlock (&aio_request_queue.mutex);                  
ffc09868:	7f e3 fb 78 	mr      r3,r31                                 
ffc0986c:	48 00 16 25 	bl      ffc0ae90 <pthread_mutex_unlock>        
    return AIO_CANCELED;                                              
ffc09870:	3b c0 00 00 	li      r30,0                                  
ffc09874:	4b ff ff 04 	b       ffc09778 <aio_cancel+0xa4>             
                                                                      
    r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
    if (r_chain == NULL) {                                            
      AIO_printf ("Request chain not on [WQ]\n");                     
                                                                      
      if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) {      
ffc09878:	81 3f 00 54 	lwz     r9,84(r31)                             
ffc0987c:	39 5f 00 58 	addi    r10,r31,88                             
ffc09880:	7f 89 50 00 	cmpw    cr7,r9,r10                             
ffc09884:	41 be ff 7c 	beq-    cr7,ffc09800 <aio_cancel+0x12c>        <== NEVER TAKEN
        r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
ffc09888:	38 7f 00 54 	addi    r3,r31,84                              
ffc0988c:	7f a4 eb 78 	mr      r4,r29                                 
ffc09890:	38 a0 00 00 	li      r5,0                                   
ffc09894:	48 00 05 b1 	bl      ffc09e44 <rtems_aio_search_fd>         
        if (r_chain == NULL) {                                        
ffc09898:	7c 7e 1b 79 	mr.     r30,r3                                 
ffc0989c:	41 a2 ff 64 	beq-    ffc09800 <aio_cancel+0x12c>            
                                                                      
        AIO_printf ("Request chain on [IQ]\n");                       
                                                                      
        rtems_chain_extract (&r_chain->next_fd);                      
        rtems_aio_remove_fd (r_chain);                                
        pthread_mutex_destroy (&r_chain->mutex);                      
ffc098a0:	3b be 00 1c 	addi    r29,r30,28                             
ffc098a4:	48 00 36 81 	bl      ffc0cf24 <_Chain_Extract>              
        }                                                             
                                                                      
        AIO_printf ("Request chain on [IQ]\n");                       
                                                                      
        rtems_chain_extract (&r_chain->next_fd);                      
        rtems_aio_remove_fd (r_chain);                                
ffc098a8:	7f c3 f3 78 	mr      r3,r30                                 
ffc098ac:	48 00 06 c9 	bl      ffc09f74 <rtems_aio_remove_fd>         
        pthread_mutex_destroy (&r_chain->mutex);                      
ffc098b0:	7f a3 eb 78 	mr      r3,r29                                 
ffc098b4:	48 00 11 85 	bl      ffc0aa38 <pthread_mutex_destroy>       
        pthread_cond_destroy (&r_chain->mutex);                       
ffc098b8:	7f a3 eb 78 	mr      r3,r29                                 
ffc098bc:	48 00 0c c1 	bl      ffc0a57c <pthread_cond_destroy>        
        free (r_chain);                                               
ffc098c0:	7f c3 f3 78 	mr      r3,r30                                 
ffc098c4:	4b ff b5 81 	bl      ffc04e44 <free>                        
                                                                      
        pthread_mutex_unlock (&aio_request_queue.mutex);              
ffc098c8:	7f e3 fb 78 	mr      r3,r31                                 
ffc098cc:	48 00 15 c5 	bl      ffc0ae90 <pthread_mutex_unlock>        
        return AIO_CANCELED;                                          
ffc098d0:	3b c0 00 00 	li      r30,0                                  
ffc098d4:	4b ff fe a4 	b       ffc09778 <aio_cancel+0xa4>             
  int result;                                                         
                                                                      
  pthread_mutex_lock (&aio_request_queue.mutex);                      
                                                                      
  if (fcntl (fildes, F_GETFD) < 0) {                                  
    pthread_mutex_unlock(&aio_request_queue.mutex);                   
ffc098d8:	7f e3 fb 78 	mr      r3,r31                                 
ffc098dc:	48 00 15 b5 	bl      ffc0ae90 <pthread_mutex_unlock>        
    rtems_set_errno_and_return_minus_one (EBADF);                     
ffc098e0:	3b c0 ff ff 	li      r30,-1                                 
ffc098e4:	48 00 bf cd 	bl      ffc158b0 <__errno>                     
ffc098e8:	39 20 00 09 	li      r9,9                                   
ffc098ec:	91 23 00 00 	stw     r9,0(r3)                               
ffc098f0:	4b ff fe 88 	b       ffc09778 <aio_cancel+0xa4>             
                                                                      

ffc098fc <aio_fsync>: ) { rtems_aio_request *req; int mode; if (op != O_SYNC)
ffc098fc:	2f 83 20 00 	cmpwi   cr7,r3,8192                            
                                                                      
int aio_fsync(                                                        
  int            op,                                                  
  struct aiocb  *aiocbp                                               
)                                                                     
{                                                                     
ffc09900:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc09904:	7c 08 02 a6 	mflr    r0                                     
ffc09908:	93 c1 00 08 	stw     r30,8(r1)                              
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  if (op != O_SYNC)                                                   
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
ffc0990c:	3b c0 00 16 	li      r30,22                                 
                                                                      
int aio_fsync(                                                        
  int            op,                                                  
  struct aiocb  *aiocbp                                               
)                                                                     
{                                                                     
ffc09910:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc09914:	7c 9f 23 78 	mr      r31,r4                                 
ffc09918:	90 01 00 14 	stw     r0,20(r1)                              
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  if (op != O_SYNC)                                                   
ffc0991c:	40 9e 00 60 	bne-    cr7,ffc0997c <aio_fsync+0x80>          
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
ffc09920:	80 64 00 00 	lwz     r3,0(r4)                               
ffc09924:	38 80 00 03 	li      r4,3                                   
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
ffc09928:	3b c0 00 09 	li      r30,9                                  
  int mode;                                                           
                                                                      
  if (op != O_SYNC)                                                   
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
ffc0992c:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc09930:	48 00 7d b5 	bl      ffc116e4 <fcntl>                       
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
ffc09934:	54 63 07 be 	clrlwi  r3,r3,30                               
ffc09938:	38 63 ff ff 	addi    r3,r3,-1                               
ffc0993c:	2b 83 00 01 	cmplwi  cr7,r3,1                               
ffc09940:	41 9d 00 3c 	bgt-    cr7,ffc0997c <aio_fsync+0x80>          
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
ffc09944:	38 60 00 18 	li      r3,24                                  
ffc09948:	4b ff ba c1 	bl      ffc05408 <malloc>                      
  if (req == NULL)                                                    
ffc0994c:	7c 69 1b 79 	mr.     r9,r3                                  
ffc09950:	41 82 00 28 	beq-    ffc09978 <aio_fsync+0x7c>              <== NEVER TAKEN
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_SYNC;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
                                                                      
}                                                                     
ffc09954:	80 01 00 14 	lwz     r0,20(r1)                              
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
ffc09958:	93 e9 00 14 	stw     r31,20(r9)                             
  req->aiocbp->aio_lio_opcode = LIO_SYNC;                             
ffc0995c:	39 20 00 03 	li      r9,3                                   
                                                                      
  return rtems_aio_enqueue (req);                                     
                                                                      
}                                                                     
ffc09960:	7c 08 03 a6 	mtlr    r0                                     
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_SYNC;                             
ffc09964:	91 3f 00 30 	stw     r9,48(r31)                             
                                                                      
  return rtems_aio_enqueue (req);                                     
                                                                      
}                                                                     
ffc09968:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0996c:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc09970:	38 21 00 10 	addi    r1,r1,16                               
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_SYNC;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
ffc09974:	48 00 07 30 	b       ffc0a0a4 <rtems_aio_enqueue>           
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
ffc09978:	3b c0 00 0b 	li      r30,11                                 <== NOT EXECUTED
ffc0997c:	39 20 ff ff 	li      r9,-1                                  
ffc09980:	93 df 00 34 	stw     r30,52(r31)                            
ffc09984:	91 3f 00 38 	stw     r9,56(r31)                             
ffc09988:	48 00 bf 29 	bl      ffc158b0 <__errno>                     
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_SYNC;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
                                                                      
}                                                                     
ffc0998c:	80 01 00 14 	lwz     r0,20(r1)                              
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
ffc09990:	93 c3 00 00 	stw     r30,0(r3)                              
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_SYNC;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
                                                                      
}                                                                     
ffc09994:	38 60 ff ff 	li      r3,-1                                  
ffc09998:	7c 08 03 a6 	mtlr    r0                                     
ffc0999c:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc099a0:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc099a4:	38 21 00 10 	addi    r1,r1,16                               
ffc099a8:	4e 80 00 20 	blr                                            
                                                                      

ffc0a2d4 <aio_read>: * 0 - otherwise */ int aio_read (struct aiocb *aiocbp) {
ffc0a2d4:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0a2d8:	7c 08 02 a6 	mflr    r0                                     
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
ffc0a2dc:	38 80 00 03 	li      r4,3                                   
 *         0 - otherwise                                              
 */                                                                   
                                                                      
int                                                                   
aio_read (struct aiocb *aiocbp)                                       
{                                                                     
ffc0a2e0:	90 01 00 14 	stw     r0,20(r1)                              
ffc0a2e4:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc0a2e8:	7c 7f 1b 78 	mr      r31,r3                                 
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
ffc0a2ec:	80 63 00 00 	lwz     r3,0(r3)                               
 *         0 - otherwise                                              
 */                                                                   
                                                                      
int                                                                   
aio_read (struct aiocb *aiocbp)                                       
{                                                                     
ffc0a2f0:	93 c1 00 08 	stw     r30,8(r1)                              
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
ffc0a2f4:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0a2f8:	48 00 73 ed 	bl      ffc116e4 <fcntl>                       
  if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
ffc0a2fc:	70 63 00 03 	andi.   r3,r3,3                                
ffc0a300:	41 82 00 10 	beq-    ffc0a310 <aio_read+0x3c>               <== NEVER TAKEN
ffc0a304:	2f 83 00 02 	cmpwi   cr7,r3,2                               
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
ffc0a308:	3b c0 00 09 	li      r30,9                                  
{                                                                     
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
  if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
ffc0a30c:	40 9e 00 20 	bne-    cr7,ffc0a32c <aio_read+0x58>           
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
ffc0a310:	81 3f 00 18 	lwz     r9,24(r31)                             
ffc0a314:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0a318:	40 9e 00 10 	bne-    cr7,ffc0a328 <aio_read+0x54>           
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  if (aiocbp->aio_offset < 0)                                         
ffc0a31c:	81 3f 00 08 	lwz     r9,8(r31)                              
ffc0a320:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0a324:	40 9c 00 38 	bge-    cr7,ffc0a35c <aio_read+0x88>           
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
ffc0a328:	3b c0 00 16 	li      r30,22                                 
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
ffc0a32c:	39 20 ff ff 	li      r9,-1                                  
ffc0a330:	93 df 00 34 	stw     r30,52(r31)                            
ffc0a334:	91 3f 00 38 	stw     r9,56(r31)                             
ffc0a338:	48 00 b5 79 	bl      ffc158b0 <__errno>                     
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_READ;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
}                                                                     
ffc0a33c:	80 01 00 14 	lwz     r0,20(r1)                              
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
ffc0a340:	93 c3 00 00 	stw     r30,0(r3)                              
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_READ;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
}                                                                     
ffc0a344:	38 60 ff ff 	li      r3,-1                                  
ffc0a348:	7c 08 03 a6 	mtlr    r0                                     
ffc0a34c:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0a350:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0a354:	38 21 00 10 	addi    r1,r1,16                               
ffc0a358:	4e 80 00 20 	blr                                            
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
ffc0a35c:	38 60 00 18 	li      r3,24                                  
ffc0a360:	4b ff b0 a9 	bl      ffc05408 <malloc>                      
  if (req == NULL)                                                    
ffc0a364:	7c 69 1b 79 	mr.     r9,r3                                  
ffc0a368:	41 82 00 28 	beq-    ffc0a390 <aio_read+0xbc>               <== NEVER TAKEN
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_READ;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
}                                                                     
ffc0a36c:	80 01 00 14 	lwz     r0,20(r1)                              
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
ffc0a370:	93 e9 00 14 	stw     r31,20(r9)                             
  req->aiocbp->aio_lio_opcode = LIO_READ;                             
ffc0a374:	39 20 00 01 	li      r9,1                                   
                                                                      
  return rtems_aio_enqueue (req);                                     
}                                                                     
ffc0a378:	7c 08 03 a6 	mtlr    r0                                     
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_READ;                             
ffc0a37c:	91 3f 00 30 	stw     r9,48(r31)                             
                                                                      
  return rtems_aio_enqueue (req);                                     
}                                                                     
ffc0a380:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0a384:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0a388:	38 21 00 10 	addi    r1,r1,16                               
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_READ;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
ffc0a38c:	4b ff fd 18 	b       ffc0a0a4 <rtems_aio_enqueue>           
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
ffc0a390:	3b c0 00 0b 	li      r30,11                                 <== NOT EXECUTED
ffc0a394:	4b ff ff 98 	b       ffc0a32c <aio_read+0x58>               <== NOT EXECUTED
                                                                      

ffc0a3a0 <aio_write>: * 0 - otherwise */ int aio_write (struct aiocb *aiocbp) {
ffc0a3a0:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0a3a4:	7c 08 02 a6 	mflr    r0                                     
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
ffc0a3a8:	38 80 00 03 	li      r4,3                                   
 *         0 - otherwise                                              
 */                                                                   
                                                                      
int                                                                   
aio_write (struct aiocb *aiocbp)                                      
{                                                                     
ffc0a3ac:	90 01 00 14 	stw     r0,20(r1)                              
ffc0a3b0:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc0a3b4:	7c 7f 1b 78 	mr      r31,r3                                 
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
ffc0a3b8:	80 63 00 00 	lwz     r3,0(r3)                               
 *         0 - otherwise                                              
 */                                                                   
                                                                      
int                                                                   
aio_write (struct aiocb *aiocbp)                                      
{                                                                     
ffc0a3bc:	93 c1 00 08 	stw     r30,8(r1)                              
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
ffc0a3c0:	3b c0 00 09 	li      r30,9                                  
aio_write (struct aiocb *aiocbp)                                      
{                                                                     
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
ffc0a3c4:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0a3c8:	48 00 73 1d 	bl      ffc116e4 <fcntl>                       
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
ffc0a3cc:	54 63 07 be 	clrlwi  r3,r3,30                               
ffc0a3d0:	38 63 ff ff 	addi    r3,r3,-1                               
ffc0a3d4:	2b 83 00 01 	cmplwi  cr7,r3,1                               
ffc0a3d8:	41 9d 00 20 	bgt-    cr7,ffc0a3f8 <aio_write+0x58>          
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
ffc0a3dc:	81 3f 00 18 	lwz     r9,24(r31)                             
ffc0a3e0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0a3e4:	40 9e 00 10 	bne-    cr7,ffc0a3f4 <aio_write+0x54>          
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  if (aiocbp->aio_offset < 0)                                         
ffc0a3e8:	81 3f 00 08 	lwz     r9,8(r31)                              
ffc0a3ec:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0a3f0:	40 9c 00 38 	bge-    cr7,ffc0a428 <aio_write+0x88>          
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
ffc0a3f4:	3b c0 00 16 	li      r30,22                                 
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
ffc0a3f8:	39 20 ff ff 	li      r9,-1                                  
ffc0a3fc:	93 df 00 34 	stw     r30,52(r31)                            
ffc0a400:	91 3f 00 38 	stw     r9,56(r31)                             
ffc0a404:	48 00 b4 ad 	bl      ffc158b0 <__errno>                     
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_WRITE;                            
                                                                      
  return rtems_aio_enqueue (req);                                     
}                                                                     
ffc0a408:	80 01 00 14 	lwz     r0,20(r1)                              
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
ffc0a40c:	93 c3 00 00 	stw     r30,0(r3)                              
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_WRITE;                            
                                                                      
  return rtems_aio_enqueue (req);                                     
}                                                                     
ffc0a410:	38 60 ff ff 	li      r3,-1                                  
ffc0a414:	7c 08 03 a6 	mtlr    r0                                     
ffc0a418:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0a41c:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0a420:	38 21 00 10 	addi    r1,r1,16                               
ffc0a424:	4e 80 00 20 	blr                                            
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
ffc0a428:	38 60 00 18 	li      r3,24                                  
ffc0a42c:	4b ff af dd 	bl      ffc05408 <malloc>                      
  if (req == NULL)                                                    
ffc0a430:	7c 69 1b 79 	mr.     r9,r3                                  
ffc0a434:	41 82 00 28 	beq-    ffc0a45c <aio_write+0xbc>              <== NEVER TAKEN
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_WRITE;                            
                                                                      
  return rtems_aio_enqueue (req);                                     
}                                                                     
ffc0a438:	80 01 00 14 	lwz     r0,20(r1)                              
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
ffc0a43c:	93 e9 00 14 	stw     r31,20(r9)                             
  req->aiocbp->aio_lio_opcode = LIO_WRITE;                            
ffc0a440:	39 20 00 02 	li      r9,2                                   
                                                                      
  return rtems_aio_enqueue (req);                                     
}                                                                     
ffc0a444:	7c 08 03 a6 	mtlr    r0                                     
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_WRITE;                            
ffc0a448:	91 3f 00 30 	stw     r9,48(r31)                             
                                                                      
  return rtems_aio_enqueue (req);                                     
}                                                                     
ffc0a44c:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc0a450:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0a454:	38 21 00 10 	addi    r1,r1,16                               
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_WRITE;                            
                                                                      
  return rtems_aio_enqueue (req);                                     
ffc0a458:	4b ff fc 4c 	b       ffc0a0a4 <rtems_aio_enqueue>           
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
ffc0a45c:	3b c0 00 0b 	li      r30,11                                 <== NOT EXECUTED
ffc0a460:	4b ff ff 98 	b       ffc0a3f8 <aio_write+0x58>              <== NOT EXECUTED
                                                                      

ffc0a958 <check_and_merge>: rtems_rbtree_control *chunk_tree, rtems_rbheap_chunk *a, rtems_rbheap_chunk *b ) { if (b != NULL_PAGE && rtems_rbheap_is_chunk_free(b)) {
ffc0a958:	2f 86 ff f8 	cmpwi   cr7,r6,-8                              
  rtems_chain_control *free_chain,                                    
  rtems_rbtree_control *chunk_tree,                                   
  rtems_rbheap_chunk *a,                                              
  rtems_rbheap_chunk *b                                               
)                                                                     
{                                                                     
ffc0a95c:	7c 6a 1b 78 	mr      r10,r3                                 
  if (b != NULL_PAGE && rtems_rbheap_is_chunk_free(b)) {              
ffc0a960:	4d 9e 00 20 	beqlr   cr7                                    
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(                   
  const Chain_Node *node                                              
)                                                                     
{                                                                     
  return (node->next == NULL) && (node->previous == NULL);            
ffc0a964:	81 26 00 00 	lwz     r9,0(r6)                               
ffc0a968:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0a96c:	41 9e 00 60 	beq-    cr7,ffc0a9cc <check_and_merge+0x74>    
    if (b->begin < a->begin) {                                        
ffc0a970:	80 e6 00 18 	lwz     r7,24(r6)                              
ffc0a974:	81 05 00 18 	lwz     r8,24(r5)                              
ffc0a978:	7f 87 40 40 	cmplw   cr7,r7,r8                              
ffc0a97c:	40 9c 00 14 	bge-    cr7,ffc0a990 <check_and_merge+0x38>    
ffc0a980:	7c a8 2b 78 	mr      r8,r5                                  
ffc0a984:	81 25 00 00 	lwz     r9,0(r5)                               
ffc0a988:	7c c5 33 78 	mr      r5,r6                                  
ffc0a98c:	7d 06 43 78 	mr      r6,r8                                  
                                                                      
      a = b;                                                          
      b = t;                                                          
    }                                                                 
                                                                      
    a->size += b->size;                                               
ffc0a990:	80 65 00 1c 	lwz     r3,28(r5)                              
ffc0a994:	80 e6 00 1c 	lwz     r7,28(r6)                              
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
ffc0a998:	81 06 00 04 	lwz     r8,4(r6)                               
ffc0a99c:	7c e3 3a 14 	add     r7,r3,r7                               
ffc0a9a0:	90 e5 00 1c 	stw     r7,28(r5)                              
    rtems_chain_extract_unprotected(&b->chain_node);                  
    add_to_chain(free_chain, b);                                      
    _RBTree_Extract_unprotected(chunk_tree, &b->tree_node);           
ffc0a9a4:	7c 83 23 78 	mr      r3,r4                                  
ffc0a9a8:	38 86 00 08 	addi    r4,r6,8                                
  next->previous = previous;                                          
  previous->next = next;                                              
ffc0a9ac:	91 28 00 00 	stw     r9,0(r8)                               
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
ffc0a9b0:	80 ea 00 00 	lwz     r7,0(r10)                              
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
  next->previous = previous;                                          
ffc0a9b4:	91 09 00 04 	stw     r8,4(r9)                               
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
ffc0a9b8:	90 ca 00 00 	stw     r6,0(r10)                              
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
ffc0a9bc:	91 46 00 04 	stw     r10,4(r6)                              
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
ffc0a9c0:	90 e6 00 00 	stw     r7,0(r6)                               
  before_node->previous = the_node;                                   
ffc0a9c4:	90 c7 00 04 	stw     r6,4(r7)                               
ffc0a9c8:	48 00 1f 94 	b       ffc0c95c <_RBTree_Extract_unprotected> 
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(                   
  const Chain_Node *node                                              
)                                                                     
{                                                                     
  return (node->next == NULL) && (node->previous == NULL);            
ffc0a9cc:	81 06 00 04 	lwz     r8,4(r6)                               
ffc0a9d0:	2f 88 00 00 	cmpwi   cr7,r8,0                               
ffc0a9d4:	40 9e ff 9c 	bne+    cr7,ffc0a970 <check_and_merge+0x18>    <== NEVER TAKEN
ffc0a9d8:	4e 80 00 20 	blr                                            
                                                                      

ffc0925c <clock_gettime>: int clock_gettime( clockid_t clock_id, struct timespec *tp ) {
ffc0925c:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc09260:	7c 08 02 a6 	mflr    r0                                     
ffc09264:	93 a1 00 1c 	stw     r29,28(r1)                             
  if ( !tp )                                                          
ffc09268:	7c 9d 23 79 	mr.     r29,r4                                 
                                                                      
int clock_gettime(                                                    
  clockid_t        clock_id,                                          
  struct timespec *tp                                                 
)                                                                     
{                                                                     
ffc0926c:	90 01 00 2c 	stw     r0,44(r1)                              
ffc09270:	93 c1 00 20 	stw     r30,32(r1)                             
ffc09274:	93 e1 00 24 	stw     r31,36(r1)                             
  if ( !tp )                                                          
ffc09278:	41 82 00 24 	beq-    ffc0929c <clock_gettime+0x40>          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( clock_id == CLOCK_REALTIME ) {                                 
ffc0927c:	2f 83 00 01 	cmpwi   cr7,r3,1                               
ffc09280:	41 9e 00 9c 	beq-    cr7,ffc0931c <clock_gettime+0xc0>      
    _TOD_Get(tp);                                                     
    return 0;                                                         
  }                                                                   
#ifdef CLOCK_MONOTONIC                                                
  if ( clock_id == CLOCK_MONOTONIC ) {                                
ffc09284:	2f 83 00 04 	cmpwi   cr7,r3,4                               
ffc09288:	41 9e 00 6c 	beq-    cr7,ffc092f4 <clock_gettime+0x98>      <== NEVER TAKEN
    return 0;                                                         
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_CPUTIME                                                 
  if ( clock_id == CLOCK_PROCESS_CPUTIME_ID ) {                       
ffc0928c:	2f 83 00 02 	cmpwi   cr7,r3,2                               
ffc09290:	41 9e 00 64 	beq-    cr7,ffc092f4 <clock_gettime+0x98>      
    return 0;                                                         
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_THREAD_CPUTIME                                          
  if ( clock_id == CLOCK_THREAD_CPUTIME_ID )                          
ffc09294:	2f 83 00 03 	cmpwi   cr7,r3,3                               
ffc09298:	41 9e 00 30 	beq-    cr7,ffc092c8 <clock_gettime+0x6c>      
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
ffc0929c:	48 00 ad 11 	bl      ffc13fac <__errno>                     
ffc092a0:	39 20 00 16 	li      r9,22                                  
ffc092a4:	91 23 00 00 	stw     r9,0(r3)                               
ffc092a8:	38 60 ff ff 	li      r3,-1                                  
                                                                      
  return 0;                                                           
}                                                                     
ffc092ac:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc092b0:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc092b4:	7c 08 03 a6 	mtlr    r0                                     
ffc092b8:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc092bc:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc092c0:	38 21 00 28 	addi    r1,r1,40                               
ffc092c4:	4e 80 00 20 	blr                                            
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_THREAD_CPUTIME                                          
  if ( clock_id == CLOCK_THREAD_CPUTIME_ID )                          
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
ffc092c8:	48 00 ac e5 	bl      ffc13fac <__errno>                     
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
                                                                      
  return 0;                                                           
}                                                                     
ffc092cc:	80 01 00 2c 	lwz     r0,44(r1)                              
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_THREAD_CPUTIME                                          
  if ( clock_id == CLOCK_THREAD_CPUTIME_ID )                          
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
ffc092d0:	39 20 00 58 	li      r9,88                                  
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
                                                                      
  return 0;                                                           
}                                                                     
ffc092d4:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc092d8:	7c 08 03 a6 	mtlr    r0                                     
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_THREAD_CPUTIME                                          
  if ( clock_id == CLOCK_THREAD_CPUTIME_ID )                          
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
ffc092dc:	91 23 00 00 	stw     r9,0(r3)                               
ffc092e0:	38 60 ff ff 	li      r3,-1                                  
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
                                                                      
  return 0;                                                           
}                                                                     
ffc092e4:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc092e8:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc092ec:	38 21 00 28 	addi    r1,r1,40                               
ffc092f0:	4e 80 00 20 	blr                                            
    _TOD_Get(tp);                                                     
    return 0;                                                         
  }                                                                   
#ifdef CLOCK_MONOTONIC                                                
  if ( clock_id == CLOCK_MONOTONIC ) {                                
    _TOD_Get_uptime_as_timespec( tp );                                
ffc092f4:	7f a3 eb 78 	mr      r3,r29                                 
ffc092f8:	48 00 28 29 	bl      ffc0bb20 <_TOD_Get_uptime_as_timespec> 
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
                                                                      
  return 0;                                                           
}                                                                     
ffc092fc:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc09300:	83 a1 00 1c 	lwz     r29,28(r1)                             
    return 0;                                                         
  }                                                                   
#ifdef CLOCK_MONOTONIC                                                
  if ( clock_id == CLOCK_MONOTONIC ) {                                
    _TOD_Get_uptime_as_timespec( tp );                                
    return 0;                                                         
ffc09304:	38 60 00 00 	li      r3,0                                   
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
                                                                      
  return 0;                                                           
}                                                                     
ffc09308:	7c 08 03 a6 	mtlr    r0                                     
ffc0930c:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc09310:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc09314:	38 21 00 28 	addi    r1,r1,40                               
ffc09318:	4e 80 00 20 	blr                                            
)                                                                     
{                                                                     
  Timestamp_Control  tod_as_timestamp;                                
  Timestamp_Control *tod_as_timestamp_ptr;                            
                                                                      
  tod_as_timestamp_ptr =                                              
ffc0931c:	3c 80 00 00 	lis     r4,0                                   
ffc09320:	38 84 2c a0 	addi    r4,r4,11424                            
ffc09324:	38 61 00 08 	addi    r3,r1,8                                
ffc09328:	48 00 27 75 	bl      ffc0ba9c <_TOD_Get_with_nanoseconds>   
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
ffc0932c:	3c c0 3b 9a 	lis     r6,15258                               
ffc09330:	83 e3 00 04 	lwz     r31,4(r3)                              
ffc09334:	38 a0 00 00 	li      r5,0                                   
ffc09338:	83 c3 00 00 	lwz     r30,0(r3)                              
ffc0933c:	60 c6 ca 00 	ori     r6,r6,51712                            
ffc09340:	7f e4 fb 78 	mr      r4,r31                                 
ffc09344:	7f c3 f3 78 	mr      r3,r30                                 
ffc09348:	48 01 15 05 	bl      ffc1a84c <__divdi3>                    
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
ffc0934c:	3c c0 3b 9a 	lis     r6,15258                               
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
ffc09350:	90 9d 00 00 	stw     r4,0(r29)                              
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
ffc09354:	38 a0 00 00 	li      r5,0                                   
ffc09358:	60 c6 ca 00 	ori     r6,r6,51712                            
ffc0935c:	7f c3 f3 78 	mr      r3,r30                                 
ffc09360:	7f e4 fb 78 	mr      r4,r31                                 
ffc09364:	48 01 19 0d 	bl      ffc1ac70 <__moddi3>                    
  if ( !tp )                                                          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( clock_id == CLOCK_REALTIME ) {                                 
    _TOD_Get(tp);                                                     
    return 0;                                                         
ffc09368:	38 60 00 00 	li      r3,0                                   
ffc0936c:	90 9d 00 04 	stw     r4,4(r29)                              
ffc09370:	4b ff ff 3c 	b       ffc092ac <clock_gettime+0x50>          
                                                                      

ffc2eb68 <clock_settime>: int clock_settime( clockid_t clock_id, const struct timespec *tp ) { if ( !tp )
ffc2eb68:	2c 04 00 00 	cmpwi   r4,0                                   
                                                                      
int clock_settime(                                                    
  clockid_t              clock_id,                                    
  const struct timespec *tp                                           
)                                                                     
{                                                                     
ffc2eb6c:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc2eb70:	7c 08 02 a6 	mflr    r0                                     
ffc2eb74:	90 01 00 1c 	stw     r0,28(r1)                              
  if ( !tp )                                                          
ffc2eb78:	41 82 00 1c 	beq-    ffc2eb94 <clock_settime+0x2c>          <== NEVER TAKEN
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( clock_id == CLOCK_REALTIME ) {                                 
ffc2eb7c:	2f 83 00 01 	cmpwi   cr7,r3,1                               
ffc2eb80:	41 9e 00 34 	beq-    cr7,ffc2ebb4 <clock_settime+0x4c>      
    _Thread_Disable_dispatch();                                       
      _TOD_Set( tp );                                                 
    _Thread_Enable_dispatch();                                        
  }                                                                   
#ifdef _POSIX_CPUTIME                                                 
  else if ( clock_id == CLOCK_PROCESS_CPUTIME_ID )                    
ffc2eb84:	2f 83 00 02 	cmpwi   cr7,r3,2                               
ffc2eb88:	41 9e 00 9c 	beq-    cr7,ffc2ec24 <clock_settime+0xbc>      
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
#ifdef _POSIX_THREAD_CPUTIME                                          
  else if ( clock_id == CLOCK_THREAD_CPUTIME_ID )                     
ffc2eb8c:	2f 83 00 03 	cmpwi   cr7,r3,3                               
ffc2eb90:	41 9e 00 94 	beq-    cr7,ffc2ec24 <clock_settime+0xbc>      
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
  else                                                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
ffc2eb94:	48 01 4e 85 	bl      ffc43a18 <__errno>                     
                                                                      
  return 0;                                                           
}                                                                     
ffc2eb98:	80 01 00 1c 	lwz     r0,28(r1)                              
#ifdef _POSIX_THREAD_CPUTIME                                          
  else if ( clock_id == CLOCK_THREAD_CPUTIME_ID )                     
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
  else                                                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
ffc2eb9c:	39 20 00 16 	li      r9,22                                  
                                                                      
  return 0;                                                           
}                                                                     
ffc2eba0:	7c 08 03 a6 	mtlr    r0                                     
#ifdef _POSIX_THREAD_CPUTIME                                          
  else if ( clock_id == CLOCK_THREAD_CPUTIME_ID )                     
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
  else                                                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
ffc2eba4:	91 23 00 00 	stw     r9,0(r3)                               
ffc2eba8:	38 60 ff ff 	li      r3,-1                                  
                                                                      
  return 0;                                                           
}                                                                     
ffc2ebac:	38 21 00 18 	addi    r1,r1,24                               
ffc2ebb0:	4e 80 00 20 	blr                                            
{                                                                     
  if ( !tp )                                                          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( clock_id == CLOCK_REALTIME ) {                                 
    if ( tp->tv_sec < TOD_SECONDS_1970_THROUGH_1988 )                 
ffc2ebb4:	81 24 00 00 	lwz     r9,0(r4)                               
ffc2ebb8:	3d 40 21 da 	lis     r10,8666                               
ffc2ebbc:	61 4a e4 ff 	ori     r10,r10,58623                          
ffc2ebc0:	7f 89 50 40 	cmplw   cr7,r9,r10                             
ffc2ebc4:	40 bd ff d0 	ble-    cr7,ffc2eb94 <clock_settime+0x2c>      
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc2ebc8:	3d 20 00 00 	lis     r9,0                                   
ffc2ebcc:	81 49 34 e4 	lwz     r10,13540(r9)                          
                                                                      
    ++level;                                                          
ffc2ebd0:	39 4a 00 01 	addi    r10,r10,1                              
    _Thread_Dispatch_disable_level = level;                           
ffc2ebd4:	91 49 34 e4 	stw     r10,13540(r9)                          
  Timestamp64_Control *_time,                                         
  Timestamp64_Control  _seconds,                                      
  Timestamp64_Control  _nanoseconds                                   
)                                                                     
{                                                                     
  *_time = _seconds * 1000000000L + _nanoseconds;                     
ffc2ebd8:	3c e0 3b 9a 	lis     r7,15258                               
  const struct timespec *tod_as_timespec                              
)                                                                     
{                                                                     
  Timestamp_Control tod_as_timestamp;                                 
                                                                      
  _Timestamp_Set(                                                     
ffc2ebdc:	80 c4 00 00 	lwz     r6,0(r4)                               
ffc2ebe0:	60 e7 ca 00 	ori     r7,r7,51712                            
ffc2ebe4:	81 64 00 04 	lwz     r11,4(r4)                              
ffc2ebe8:	7d 06 38 96 	mulhw   r8,r6,r7                               
ffc2ebec:	7d 26 39 d6 	mullw   r9,r6,r7                               
ffc2ebf0:	7d 6a fe 70 	srawi   r10,r11,31                             
ffc2ebf4:	7d 6b 48 14 	addc    r11,r11,r9                             
ffc2ebf8:	7d 4a 41 14 	adde    r10,r10,r8                             
ffc2ebfc:	7c 23 0b 78 	mr      r3,r1                                  
ffc2ec00:	95 43 00 08 	stwu    r10,8(r3)                              
ffc2ec04:	91 63 00 04 	stw     r11,4(r3)                              
    &tod_as_timestamp,                                                
    tod_as_timespec->tv_sec,                                          
    tod_as_timespec->tv_nsec                                          
  );                                                                  
  _TOD_Set_with_timestamp( &tod_as_timestamp );                       
ffc2ec08:	48 00 14 35 	bl      ffc3003c <_TOD_Set_with_timestamp>     
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    _Thread_Disable_dispatch();                                       
      _TOD_Set( tp );                                                 
    _Thread_Enable_dispatch();                                        
ffc2ec0c:	4b fd d6 d9 	bl      ffc0c2e4 <_Thread_Enable_dispatch>     
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
  else                                                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  return 0;                                                           
ffc2ec10:	38 60 00 00 	li      r3,0                                   
}                                                                     
ffc2ec14:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc2ec18:	38 21 00 18 	addi    r1,r1,24                               
ffc2ec1c:	7c 08 03 a6 	mtlr    r0                                     
ffc2ec20:	4e 80 00 20 	blr                                            
  else if ( clock_id == CLOCK_PROCESS_CPUTIME_ID )                    
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
#ifdef _POSIX_THREAD_CPUTIME                                          
  else if ( clock_id == CLOCK_THREAD_CPUTIME_ID )                     
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
ffc2ec24:	48 01 4d f5 	bl      ffc43a18 <__errno>                     
#endif                                                                
  else                                                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  return 0;                                                           
}                                                                     
ffc2ec28:	80 01 00 1c 	lwz     r0,28(r1)                              
  else if ( clock_id == CLOCK_PROCESS_CPUTIME_ID )                    
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
#ifdef _POSIX_THREAD_CPUTIME                                          
  else if ( clock_id == CLOCK_THREAD_CPUTIME_ID )                     
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
ffc2ec2c:	39 20 00 58 	li      r9,88                                  
#endif                                                                
  else                                                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  return 0;                                                           
}                                                                     
ffc2ec30:	7c 08 03 a6 	mtlr    r0                                     
  else if ( clock_id == CLOCK_PROCESS_CPUTIME_ID )                    
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
#ifdef _POSIX_THREAD_CPUTIME                                          
  else if ( clock_id == CLOCK_THREAD_CPUTIME_ID )                     
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
ffc2ec34:	91 23 00 00 	stw     r9,0(r3)                               
ffc2ec38:	38 60 ff ff 	li      r3,-1                                  
#endif                                                                
  else                                                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  return 0;                                                           
}                                                                     
ffc2ec3c:	38 21 00 18 	addi    r1,r1,24                               
ffc2ec40:	4e 80 00 20 	blr                                            
                                                                      

ffc1e064 <killinfo>: int killinfo( pid_t pid, int sig, const union sigval *value ) {
ffc1e064:	94 21 ff d0 	stwu    r1,-48(r1)                             
ffc1e068:	7c 08 02 a6 	mflr    r0                                     
ffc1e06c:	93 61 00 1c 	stw     r27,28(r1)                             
ffc1e070:	7c bb 2b 78 	mr      r27,r5                                 
ffc1e074:	93 c1 00 28 	stw     r30,40(r1)                             
ffc1e078:	7c 9e 23 78 	mr      r30,r4                                 
ffc1e07c:	93 e1 00 2c 	stw     r31,44(r1)                             
ffc1e080:	7c 7f 1b 78 	mr      r31,r3                                 
ffc1e084:	90 01 00 34 	stw     r0,52(r1)                              
ffc1e088:	93 41 00 18 	stw     r26,24(r1)                             
ffc1e08c:	93 81 00 20 	stw     r28,32(r1)                             
ffc1e090:	93 a1 00 24 	stw     r29,36(r1)                             
  POSIX_signals_Siginfo_node  *psiginfo;                              
                                                                      
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
  if ( pid != getpid() )                                              
ffc1e094:	4b ff fb dd 	bl      ffc1dc70 <getpid>                      
ffc1e098:	7f 83 f8 00 	cmpw    cr7,r3,r31                             
ffc1e09c:	40 9e 02 ac 	bne-    cr7,ffc1e348 <killinfo+0x2e4>          
    rtems_set_errno_and_return_minus_one( ESRCH );                    
                                                                      
  /*                                                                  
   *  Validate the signal passed.                                     
   */                                                                 
  if ( !sig )                                                         
ffc1e0a0:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
ffc1e0a4:	41 9e 02 b8 	beq-    cr7,ffc1e35c <killinfo+0x2f8>          
                                                                      
static inline bool is_valid_signo(                                    
  int signo                                                           
)                                                                     
{                                                                     
  return ((signo) >= 1 && (signo) <= 32 );                            
ffc1e0a8:	3b fe ff ff 	addi    r31,r30,-1                             
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
ffc1e0ac:	2b 9f 00 1f 	cmplwi  cr7,r31,31                             
ffc1e0b0:	41 9d 02 ac 	bgt-    cr7,ffc1e35c <killinfo+0x2f8>          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  /*                                                                  
   *  If the signal is being ignored, then we are out of here.        
   */                                                                 
  if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN )          
ffc1e0b4:	1f be 00 0c 	mulli   r29,r30,12                             
ffc1e0b8:	3f 80 00 00 	lis     r28,0                                  
ffc1e0bc:	3b 9c 32 20 	addi    r28,r28,12832                          
ffc1e0c0:	7d 3c ea 14 	add     r9,r28,r29                             
ffc1e0c4:	81 29 00 08 	lwz     r9,8(r9)                               
ffc1e0c8:	2f 89 00 01 	cmpwi   cr7,r9,1                               
ffc1e0cc:	41 9e 02 58 	beq-    cr7,ffc1e324 <killinfo+0x2c0>          
  /*                                                                  
   *  P1003.1c/Draft 10, p. 33 says that certain signals should always
   *  be directed to the executing thread such as those caused by hardware
   *  faults.                                                         
   */                                                                 
  if ( (sig == SIGFPE) || (sig == SIGILL) || (sig == SIGSEGV ) )      
ffc1e0d0:	2f 9e 00 08 	cmpwi   cr7,r30,8                              
ffc1e0d4:	41 9e 01 d0 	beq-    cr7,ffc1e2a4 <killinfo+0x240>          
ffc1e0d8:	2f 9e 00 04 	cmpwi   cr7,r30,4                              
ffc1e0dc:	41 9e 01 c8 	beq-    cr7,ffc1e2a4 <killinfo+0x240>          
ffc1e0e0:	2f 9e 00 0b 	cmpwi   cr7,r30,11                             
ffc1e0e4:	41 9e 01 c0 	beq-    cr7,ffc1e2a4 <killinfo+0x240>          
   *  Build up a siginfo structure                                    
   */                                                                 
  siginfo = &siginfo_struct;                                          
  siginfo->si_signo = sig;                                            
  siginfo->si_code = SI_USER;                                         
  if ( !value ) {                                                     
ffc1e0e8:	2f 9b 00 00 	cmpwi   cr7,r27,0                              
                                                                      
  /*                                                                  
   *  Build up a siginfo structure                                    
   */                                                                 
  siginfo = &siginfo_struct;                                          
  siginfo->si_signo = sig;                                            
ffc1e0ec:	93 c1 00 08 	stw     r30,8(r1)                              
                                                                      
static inline sigset_t signo_to_mask(                                 
  uint32_t sig                                                        
)                                                                     
{                                                                     
  return 1u << (sig - 1);                                             
ffc1e0f0:	39 20 00 01 	li      r9,1                                   
ffc1e0f4:	7d 3f f8 30 	slw     r31,r9,r31                             
  siginfo->si_code = SI_USER;                                         
ffc1e0f8:	91 21 00 0c 	stw     r9,12(r1)                              
  if ( !value ) {                                                     
ffc1e0fc:	41 9e 02 30 	beq-    cr7,ffc1e32c <killinfo+0x2c8>          
    siginfo->si_value.sival_int = 0;                                  
  } else {                                                            
    siginfo->si_value = *value;                                       
ffc1e100:	81 3b 00 00 	lwz     r9,0(r27)                              
ffc1e104:	91 21 00 10 	stw     r9,16(r1)                              
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc1e108:	3d 20 00 00 	lis     r9,0                                   
ffc1e10c:	81 49 28 68 	lwz     r10,10344(r9)                          
                                                                      
    ++level;                                                          
ffc1e110:	39 4a 00 01 	addi    r10,r10,1                              
    _Thread_Dispatch_disable_level = level;                           
ffc1e114:	91 49 28 68 	stw     r10,10344(r9)                          
 */                                                                   
void _POSIX_signals_Manager_Initialization(void);                     
                                                                      
static inline void _POSIX_signals_Add_post_switch_extension(void)     
{                                                                     
  _API_extensions_Add_post_switch( &_POSIX_signals_Post_switch );     
ffc1e118:	3c 60 00 00 	lis     r3,0                                   
ffc1e11c:	38 63 22 20 	addi    r3,r3,8736                             
ffc1e120:	4b fe c5 01 	bl      ffc0a620 <_API_extensions_Add_post_switch>
                                                                      
  /*                                                                  
   *  Is the currently executing thread interested?  If so then it will
   *  get it an execute it as soon as the dispatcher executes.        
   */                                                                 
  the_thread = _Thread_Executing;                                     
ffc1e124:	3d 20 00 00 	lis     r9,0                                   
ffc1e128:	80 69 31 b0 	lwz     r3,12720(r9)                           
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
  if ( _POSIX_signals_Is_interested( api, mask ) ) {                  
ffc1e12c:	81 23 01 50 	lwz     r9,336(r3)                             
ffc1e130:	81 29 00 d0 	lwz     r9,208(r9)                             
ffc1e134:	7f e6 48 79 	andc.   r6,r31,r9                              
ffc1e138:	40 82 01 14 	bne-    ffc1e24c <killinfo+0x1e8>              
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
ffc1e13c:	3d 20 00 00 	lis     r9,0                                   
ffc1e140:	38 e9 33 ac 	addi    r7,r9,13228                            
ffc1e144:	81 29 33 ac 	lwz     r9,13228(r9)                           
                                                                      
  /* XXX violation of visibility -- need to define thread queue support */
                                                                      
  the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;                 
                                                                      
  for ( the_node = _Chain_First( the_chain );                         
ffc1e148:	38 e7 00 04 	addi    r7,r7,4                                
ffc1e14c:	7f 89 38 00 	cmpw    cr7,r9,r7                              
ffc1e150:	41 9e 00 4c 	beq-    cr7,ffc1e19c <killinfo+0x138>          
    #endif                                                            
                                                                      
    /*                                                                
     * Is this thread is actually blocked waiting for the signal?     
     */                                                               
    if (the_thread->Wait.option & mask)                               
ffc1e154:	81 49 00 30 	lwz     r10,48(r9)                             
  for ( the_node = _Chain_First( the_chain );                         
        !_Chain_Is_tail( the_chain, the_node ) ;                      
        the_node = the_node->next ) {                                 
                                                                      
    the_thread = (Thread_Control *)the_node;                          
    api = the_thread->API_Extensions[ THREAD_API_POSIX ];             
ffc1e158:	81 09 01 50 	lwz     r8,336(r9)                             
    #endif                                                            
                                                                      
    /*                                                                
     * Is this thread is actually blocked waiting for the signal?     
     */                                                               
    if (the_thread->Wait.option & mask)                               
ffc1e15c:	7f eb 50 39 	and.    r11,r31,r10                            
ffc1e160:	40 82 01 78 	bne-    ffc1e2d8 <killinfo+0x274>              
                                                                      
    /*                                                                
     * Is this thread is blocked waiting for another signal but has   
     * not blocked this one?                                          
     */                                                               
    if (~api->signals_blocked & mask)                                 
ffc1e164:	81 48 00 d0 	lwz     r10,208(r8)                            
ffc1e168:	7f fa 50 79 	andc.   r26,r31,r10                            
ffc1e16c:	41 a2 00 24 	beq+    ffc1e190 <killinfo+0x12c>              
ffc1e170:	48 00 01 68 	b       ffc1e2d8 <killinfo+0x274>              
    #endif                                                            
                                                                      
    /*                                                                
     * Is this thread is actually blocked waiting for the signal?     
     */                                                               
    if (the_thread->Wait.option & mask)                               
ffc1e174:	81 49 00 30 	lwz     r10,48(r9)                             <== NOT EXECUTED
  for ( the_node = _Chain_First( the_chain );                         
        !_Chain_Is_tail( the_chain, the_node ) ;                      
        the_node = the_node->next ) {                                 
                                                                      
    the_thread = (Thread_Control *)the_node;                          
    api = the_thread->API_Extensions[ THREAD_API_POSIX ];             
ffc1e178:	81 09 01 50 	lwz     r8,336(r9)                             <== NOT EXECUTED
    #endif                                                            
                                                                      
    /*                                                                
     * Is this thread is actually blocked waiting for the signal?     
     */                                                               
    if (the_thread->Wait.option & mask)                               
ffc1e17c:	7f fb 50 39 	and.    r27,r31,r10                            <== NOT EXECUTED
ffc1e180:	40 82 01 58 	bne-    ffc1e2d8 <killinfo+0x274>              <== NOT EXECUTED
                                                                      
    /*                                                                
     * Is this thread is blocked waiting for another signal but has   
     * not blocked this one?                                          
     */                                                               
    if (~api->signals_blocked & mask)                                 
ffc1e184:	81 48 00 d0 	lwz     r10,208(r8)                            <== NOT EXECUTED
ffc1e188:	7f e6 50 79 	andc.   r6,r31,r10                             <== NOT EXECUTED
ffc1e18c:	40 82 01 4c 	bne-    ffc1e2d8 <killinfo+0x274>              <== NOT EXECUTED
                                                                      
  the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;                 
                                                                      
  for ( the_node = _Chain_First( the_chain );                         
        !_Chain_Is_tail( the_chain, the_node ) ;                      
        the_node = the_node->next ) {                                 
ffc1e190:	81 29 00 00 	lwz     r9,0(r9)                               
                                                                      
  /* XXX violation of visibility -- need to define thread queue support */
                                                                      
  the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;                 
                                                                      
  for ( the_node = _Chain_First( the_chain );                         
ffc1e194:	7f 89 38 00 	cmpw    cr7,r9,r7                              
ffc1e198:	40 9e ff dc 	bne+    cr7,ffc1e174 <killinfo+0x110>          <== NEVER TAKEN
   *  NOTES:                                                          
   *                                                                  
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
  interested_priority = PRIORITY_MAXIMUM + 1;                         
ffc1e19c:	3d 20 00 00 	lis     r9,0                                   
ffc1e1a0:	88 89 27 84 	lbz     r4,10116(r9)                           
ffc1e1a4:	3d 20 00 00 	lis     r9,0                                   
ffc1e1a8:	39 29 2c 7c 	addi    r9,r9,11388                            
ffc1e1ac:	38 84 00 01 	addi    r4,r4,1                                
 */                                                                   
                                                                      
#define _POSIX_signals_Is_interested( _api, _mask ) \                 
  ( ~(_api)->signals_blocked & (_mask) )                              
                                                                      
int killinfo(                                                         
ffc1e1b0:	38 09 00 08 	addi    r0,r9,8                                
   *                                                                  
   *  NOTES:                                                          
   *                                                                  
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
ffc1e1b4:	38 60 00 00 	li      r3,0                                   
  for (the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; the_api++) {
                                                                      
    /*                                                                
     *  This can occur when no one is interested and an API is not configured.
     */                                                               
    if ( !_Objects_Information_table[ the_api ] )                     
ffc1e1b8:	85 49 00 04 	lwzu    r10,4(r9)                              
ffc1e1bc:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc1e1c0:	41 9e 00 7c 	beq-    cr7,ffc1e23c <killinfo+0x1d8>          <== NEVER TAKEN
      continue;                                                       
                                                                      
    the_info = _Objects_Information_table[ the_api ][ 1 ];            
ffc1e1c4:	81 4a 00 04 	lwz     r10,4(r10)                             
       */                                                             
      if ( !the_info )                                                
        continue;                                                     
    #endif                                                            
                                                                      
    maximum = the_info->maximum;                                      
ffc1e1c8:	a0 aa 00 10 	lhz     r5,16(r10)                             
    object_table = the_info->local_table;                             
ffc1e1cc:	80 ea 00 1c 	lwz     r7,28(r10)                             
                                                                      
    for ( index = 1 ; index <= maximum ; index++ ) {                  
ffc1e1d0:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc1e1d4:	41 9e 00 68 	beq-    cr7,ffc1e23c <killinfo+0x1d8>          
ffc1e1d8:	39 00 00 01 	li      r8,1                                   
      the_thread = (Thread_Control *) object_table[ index ];          
ffc1e1dc:	85 47 00 04 	lwzu    r10,4(r7)                              
                                                                      
      if ( !the_thread )                                              
ffc1e1e0:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc1e1e4:	41 9e 00 4c 	beq-    cr7,ffc1e230 <killinfo+0x1cc>          
                                                                      
      /*                                                              
       *  If this thread is of lower priority than the interested thread,
       *  go on to the next thread.                                   
       */                                                             
      if ( the_thread->current_priority > interested_priority )       
ffc1e1e8:	80 ca 00 14 	lwz     r6,20(r10)                             
ffc1e1ec:	7f 86 20 40 	cmplw   cr7,r6,r4                              
ffc1e1f0:	41 9d 00 40 	bgt-    cr7,ffc1e230 <killinfo+0x1cc>          
      #if defined(RTEMS_DEBUG)                                        
        if ( !api )                                                   
          continue;                                                   
      #endif                                                          
                                                                      
      if ( !_POSIX_signals_Is_interested( api, mask ) )               
ffc1e1f4:	81 6a 01 50 	lwz     r11,336(r10)                           
ffc1e1f8:	81 6b 00 d0 	lwz     r11,208(r11)                           
ffc1e1fc:	7f fa 58 79 	andc.   r26,r31,r11                            
ffc1e200:	41 82 00 30 	beq-    ffc1e230 <killinfo+0x1cc>              
       *                                                              
       *  NOTE: We initialized interested_priority to PRIORITY_MAXIMUM + 1
       *        so we never have to worry about deferencing a NULL    
       *        interested thread.                                    
       */                                                             
      if ( the_thread->current_priority < interested_priority ) {     
ffc1e204:	41 9c 00 24 	blt-    cr7,ffc1e228 <killinfo+0x1c4>          
       *  and blocking interruptibutable by signal.                   
       *                                                              
       *  If the interested thread is ready, don't think about changing.
       */                                                             
                                                                      
      if ( interested && !_States_Is_ready( interested->current_state ) ) {
ffc1e208:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc1e20c:	41 9e 00 24 	beq-    cr7,ffc1e230 <killinfo+0x1cc>          <== NEVER TAKEN
ffc1e210:	81 63 00 10 	lwz     r11,16(r3)                             
ffc1e214:	2f 8b 00 00 	cmpwi   cr7,r11,0                              
ffc1e218:	41 9e 00 18 	beq-    cr7,ffc1e230 <killinfo+0x1cc>          <== NEVER TAKEN
        /* preferred ready over blocked */                            
        DEBUG_STEP("5");                                              
        if ( _States_Is_ready( the_thread->current_state ) ) {        
ffc1e21c:	83 6a 00 10 	lwz     r27,16(r10)                            
ffc1e220:	2f 9b 00 00 	cmpwi   cr7,r27,0                              
ffc1e224:	40 9e 01 10 	bne-    cr7,ffc1e334 <killinfo+0x2d0>          
ffc1e228:	7c c4 33 78 	mr      r4,r6                                  
ffc1e22c:	7d 43 53 78 	mr      r3,r10                                 
    #endif                                                            
                                                                      
    maximum = the_info->maximum;                                      
    object_table = the_info->local_table;                             
                                                                      
    for ( index = 1 ; index <= maximum ; index++ ) {                  
ffc1e230:	39 08 00 01 	addi    r8,r8,1                                
ffc1e234:	7f 85 40 40 	cmplw   cr7,r5,r8                              
ffc1e238:	40 9c ff a4 	bge+    cr7,ffc1e1dc <killinfo+0x178>          
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
  interested_priority = PRIORITY_MAXIMUM + 1;                         
                                                                      
  for (the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; the_api++) {
ffc1e23c:	7f 89 00 00 	cmpw    cr7,r9,r0                              
ffc1e240:	40 be ff 78 	bne-    cr7,ffc1e1b8 <killinfo+0x154>          
        }                                                             
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ( interested ) {                                                 
ffc1e244:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc1e248:	41 9e 00 18 	beq-    cr7,ffc1e260 <killinfo+0x1fc>          
                                                                      
  /*                                                                  
   *  Returns true if the signal was synchronously given to a thread  
   *  blocked waiting for the signal.                                 
   */                                                                 
  if ( _POSIX_signals_Unblock_thread( the_thread, sig, siginfo ) ) {  
ffc1e24c:	7f c4 f3 78 	mr      r4,r30                                 
ffc1e250:	38 a1 00 08 	addi    r5,r1,8                                
ffc1e254:	48 00 01 5d 	bl      ffc1e3b0 <_POSIX_signals_Unblock_thread>
ffc1e258:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc1e25c:	40 9e 00 18 	bne-    cr7,ffc1e274 <killinfo+0x210>          
                                                                      
  /*                                                                  
   *  We may have woken up a thread but we definitely need to post the
   *  signal to the process wide information set.                     
   */                                                                 
  _POSIX_signals_Set_process_signals( mask );                         
ffc1e260:	7f e3 fb 78 	mr      r3,r31                                 
ffc1e264:	48 00 01 25 	bl      ffc1e388 <_POSIX_signals_Set_process_signals>
                                                                      
  if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {       
ffc1e268:	7d 3c e8 2e 	lwzx    r9,r28,r29                             
ffc1e26c:	2f 89 00 02 	cmpwi   cr7,r9,2                               
ffc1e270:	41 9e 00 70 	beq-    cr7,ffc1e2e0 <killinfo+0x27c>          
  /*                                                                  
   *  Returns true if the signal was synchronously given to a thread  
   *  blocked waiting for the signal.                                 
   */                                                                 
  if ( _POSIX_signals_Unblock_thread( the_thread, sig, siginfo ) ) {  
    _Thread_Enable_dispatch();                                        
ffc1e274:	4b fe e8 4d 	bl      ffc0cac0 <_Thread_Enable_dispatch>     
  }                                                                   
                                                                      
  DEBUG_STEP("\n");                                                   
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
ffc1e278:	80 01 00 34 	lwz     r0,52(r1)                              
ffc1e27c:	83 41 00 18 	lwz     r26,24(r1)                             
   *  Returns true if the signal was synchronously given to a thread  
   *  blocked waiting for the signal.                                 
   */                                                                 
  if ( _POSIX_signals_Unblock_thread( the_thread, sig, siginfo ) ) {  
    _Thread_Enable_dispatch();                                        
    return 0;                                                         
ffc1e280:	38 60 00 00 	li      r3,0                                   
  }                                                                   
                                                                      
  DEBUG_STEP("\n");                                                   
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
ffc1e284:	7c 08 03 a6 	mtlr    r0                                     
ffc1e288:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc1e28c:	83 81 00 20 	lwz     r28,32(r1)                             
ffc1e290:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc1e294:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc1e298:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc1e29c:	38 21 00 30 	addi    r1,r1,48                               
ffc1e2a0:	4e 80 00 20 	blr                                            
   *  P1003.1c/Draft 10, p. 33 says that certain signals should always
   *  be directed to the executing thread such as those caused by hardware
   *  faults.                                                         
   */                                                                 
  if ( (sig == SIGFPE) || (sig == SIGILL) || (sig == SIGSEGV ) )      
      return pthread_kill( pthread_self(), sig );                     
ffc1e2a4:	48 00 03 79 	bl      ffc1e61c <pthread_self>                
ffc1e2a8:	7f c4 f3 78 	mr      r4,r30                                 
ffc1e2ac:	48 00 02 61 	bl      ffc1e50c <pthread_kill>                
  }                                                                   
                                                                      
  DEBUG_STEP("\n");                                                   
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
ffc1e2b0:	80 01 00 34 	lwz     r0,52(r1)                              
ffc1e2b4:	83 41 00 18 	lwz     r26,24(r1)                             
ffc1e2b8:	7c 08 03 a6 	mtlr    r0                                     
ffc1e2bc:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc1e2c0:	83 81 00 20 	lwz     r28,32(r1)                             
ffc1e2c4:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc1e2c8:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc1e2cc:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc1e2d0:	38 21 00 30 	addi    r1,r1,48                               
ffc1e2d4:	4e 80 00 20 	blr                                            
                                                                      
  the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;                 
                                                                      
  for ( the_node = _Chain_First( the_chain );                         
        !_Chain_Is_tail( the_chain, the_node ) ;                      
        the_node = the_node->next ) {                                 
ffc1e2d8:	7d 23 4b 78 	mr      r3,r9                                  
ffc1e2dc:	4b ff ff 70 	b       ffc1e24c <killinfo+0x1e8>              
   */                                                                 
  _POSIX_signals_Set_process_signals( mask );                         
                                                                      
  if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {       
                                                                      
    psiginfo = (POSIX_signals_Siginfo_node *)                         
ffc1e2e0:	3c 60 00 00 	lis     r3,0                                   
ffc1e2e4:	38 63 33 a0 	addi    r3,r3,13216                            
ffc1e2e8:	4b fe c5 15 	bl      ffc0a7fc <_Chain_Get>                  
               _Chain_Get( &_POSIX_signals_Inactive_siginfo );        
    if ( !psiginfo ) {                                                
ffc1e2ec:	7c 69 1b 79 	mr.     r9,r3                                  
ffc1e2f0:	41 82 00 80 	beq-    ffc1e370 <killinfo+0x30c>              
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
    }                                                                 
                                                                      
    psiginfo->Info = *siginfo;                                        
ffc1e2f4:	81 41 00 08 	lwz     r10,8(r1)                              
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
ffc1e2f8:	3c 60 00 00 	lis     r3,0                                   
ffc1e2fc:	38 63 34 14 	addi    r3,r3,13332                            
    if ( !psiginfo ) {                                                
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
    }                                                                 
                                                                      
    psiginfo->Info = *siginfo;                                        
ffc1e300:	91 49 00 08 	stw     r10,8(r9)                              
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
ffc1e304:	7c 63 ea 14 	add     r3,r3,r29                              
ffc1e308:	7d 24 4b 78 	mr      r4,r9                                  
    if ( !psiginfo ) {                                                
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
    }                                                                 
                                                                      
    psiginfo->Info = *siginfo;                                        
ffc1e30c:	81 41 00 0c 	lwz     r10,12(r1)                             
ffc1e310:	91 49 00 0c 	stw     r10,12(r9)                             
ffc1e314:	81 41 00 10 	lwz     r10,16(r1)                             
ffc1e318:	91 49 00 10 	stw     r10,16(r9)                             
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
ffc1e31c:	4b fe c4 b1 	bl      ffc0a7cc <_Chain_Append>               
ffc1e320:	4b ff ff 54 	b       ffc1e274 <killinfo+0x210>              
                                                                      
  /*                                                                  
   *  If the signal is being ignored, then we are out of here.        
   */                                                                 
  if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN )          
    return 0;                                                         
ffc1e324:	38 60 00 00 	li      r3,0                                   
ffc1e328:	4b ff ff 88 	b       ffc1e2b0 <killinfo+0x24c>              
   */                                                                 
  siginfo = &siginfo_struct;                                          
  siginfo->si_signo = sig;                                            
  siginfo->si_code = SI_USER;                                         
  if ( !value ) {                                                     
    siginfo->si_value.sival_int = 0;                                  
ffc1e32c:	93 61 00 10 	stw     r27,16(r1)                             
ffc1e330:	4b ff fd d8 	b       ffc1e108 <killinfo+0xa4>               
          continue;                                                   
        }                                                             
                                                                      
        DEBUG_STEP("6");                                              
        /* prefer blocked/interruptible over blocked/not interruptible */
        if ( !_States_Is_interruptible_by_signal(interested->current_state) ) {
ffc1e334:	75 7a 10 00 	andis.  r26,r11,4096                           
ffc1e338:	40 a2 fe f8 	bne-    ffc1e230 <killinfo+0x1cc>              
          DEBUG_STEP("7");                                            
          if ( _States_Is_interruptible_by_signal(the_thread->current_state) ) {
ffc1e33c:	77 6b 10 00 	andis.  r11,r27,4096                           
ffc1e340:	41 a2 fe f0 	beq-    ffc1e230 <killinfo+0x1cc>              
ffc1e344:	4b ff fe e4 	b       ffc1e228 <killinfo+0x1c4>              
                                                                      
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
  if ( pid != getpid() )                                              
    rtems_set_errno_and_return_minus_one( ESRCH );                    
ffc1e348:	4b ff 4d 31 	bl      ffc13078 <__errno>                     
ffc1e34c:	39 20 00 03 	li      r9,3                                   
ffc1e350:	91 23 00 00 	stw     r9,0(r3)                               
ffc1e354:	38 60 ff ff 	li      r3,-1                                  
ffc1e358:	4b ff ff 58 	b       ffc1e2b0 <killinfo+0x24c>              
   */                                                                 
  if ( !sig )                                                         
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
    rtems_set_errno_and_return_minus_one( EINVAL );                   
ffc1e35c:	4b ff 4d 1d 	bl      ffc13078 <__errno>                     
ffc1e360:	39 20 00 16 	li      r9,22                                  
ffc1e364:	91 23 00 00 	stw     r9,0(r3)                               
ffc1e368:	38 60 ff ff 	li      r3,-1                                  
ffc1e36c:	4b ff ff 44 	b       ffc1e2b0 <killinfo+0x24c>              
  if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {       
                                                                      
    psiginfo = (POSIX_signals_Siginfo_node *)                         
               _Chain_Get( &_POSIX_signals_Inactive_siginfo );        
    if ( !psiginfo ) {                                                
      _Thread_Enable_dispatch();                                      
ffc1e370:	4b fe e7 51 	bl      ffc0cac0 <_Thread_Enable_dispatch>     
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
ffc1e374:	4b ff 4d 05 	bl      ffc13078 <__errno>                     
ffc1e378:	39 20 00 0b 	li      r9,11                                  
ffc1e37c:	91 23 00 00 	stw     r9,0(r3)                               
ffc1e380:	38 60 ff ff 	li      r3,-1                                  
ffc1e384:	4b ff ff 2c 	b       ffc1e2b0 <killinfo+0x24c>              
                                                                      

ffc09ca0 <mq_open>: * * This rountine increments the thread dispatch level */ RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void) { uint32_t level = _Thread_Dispatch_disable_level;
ffc09ca0:	3d 20 00 00 	lis     r9,0                                   
  int         oflag,                                                  
  ...                                                                 
  /* mode_t mode, */                                                  
  /* struct mq_attr  attr */                                          
)                                                                     
{                                                                     
ffc09ca4:	94 21 ff b0 	stwu    r1,-80(r1)                             
ffc09ca8:	7c 08 02 a6 	mflr    r0                                     
ffc09cac:	81 49 28 a8 	lwz     r10,10408(r9)                          
ffc09cb0:	7d 80 00 26 	mfcr    r12                                    
ffc09cb4:	93 81 00 40 	stw     r28,64(r1)                             
ffc09cb8:	7c 7c 1b 78 	mr      r28,r3                                 
                                                                      
    ++level;                                                          
ffc09cbc:	39 4a 00 01 	addi    r10,r10,1                              
ffc09cc0:	93 c1 00 48 	stw     r30,72(r1)                             
ffc09cc4:	7c 9e 23 78 	mr      r30,r4                                 
ffc09cc8:	90 01 00 54 	stw     r0,84(r1)                              
ffc09ccc:	93 21 00 34 	stw     r25,52(r1)                             
ffc09cd0:	93 41 00 38 	stw     r26,56(r1)                             
ffc09cd4:	93 61 00 3c 	stw     r27,60(r1)                             
ffc09cd8:	93 a1 00 44 	stw     r29,68(r1)                             
ffc09cdc:	93 e1 00 4c 	stw     r31,76(r1)                             
ffc09ce0:	91 81 00 30 	stw     r12,48(r1)                             
ffc09ce4:	90 a1 00 28 	stw     r5,40(r1)                              
ffc09ce8:	90 c1 00 2c 	stw     r6,44(r1)                              
    _Thread_Dispatch_disable_level = level;                           
ffc09cec:	91 49 28 a8 	stw     r10,10408(r9)                          
  Objects_Locations               location;                           
  size_t                          name_len;                           
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
ffc09cf0:	54 89 bf fe 	rlwinm  r9,r4,23,31,31                         
ffc09cf4:	2e 09 00 00 	cmpwi   cr4,r9,0                               
  /* struct mq_attr  attr */                                          
)                                                                     
{                                                                     
  va_list                         arg;                                
  mode_t                          mode;                               
  struct mq_attr                 *attr = NULL;                        
ffc09cf8:	3b 20 00 00 	li      r25,0                                  
  Objects_Locations               location;                           
  size_t                          name_len;                           
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
ffc09cfc:	40 92 01 20 	bne-    cr4,ffc09e1c <mq_open+0x17c>           
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *                 
  _POSIX_Message_queue_Allocate_fd( void )                            
{                                                                     
  return (POSIX_Message_queue_Control_fd *)                           
ffc09d00:	3f a0 00 00 	lis     r29,0                                  
ffc09d04:	3b bd 5b 0c 	addi    r29,r29,23308                          
ffc09d08:	7f a3 eb 78 	mr      r3,r29                                 
ffc09d0c:	48 00 3a 9d 	bl      ffc0d7a8 <_Objects_Allocate>           
    attr = va_arg( arg, struct mq_attr * );                           
    va_end(arg);                                                      
  }                                                                   
                                                                      
  the_mq_fd = _POSIX_Message_queue_Allocate_fd();                     
  if ( !the_mq_fd ) {                                                 
ffc09d10:	7c 7f 1b 79 	mr.     r31,r3                                 
ffc09d14:	41 82 01 3c 	beq-    ffc09e50 <mq_open+0x1b0>               <== NEVER TAKEN
  const char          *name,                                          
  Objects_Id          *id,                                            
  size_t              *len                                            
)                                                                     
{                                                                     
  return _POSIX_Name_to_id( &_POSIX_Message_queue_Information, name, id, len );
ffc09d18:	3f 60 00 00 	lis     r27,0                                  
    _Thread_Enable_dispatch();                                        
    rtems_set_errno_and_return_minus_one( ENFILE );                   
  }                                                                   
  the_mq_fd->oflag = oflag;                                           
ffc09d1c:	93 df 00 14 	stw     r30,20(r31)                            
ffc09d20:	3b 7b 59 80 	addi    r27,r27,22912                          
ffc09d24:	7f 63 db 78 	mr      r3,r27                                 
ffc09d28:	7f 84 e3 78 	mr      r4,r28                                 
ffc09d2c:	38 a1 00 20 	addi    r5,r1,32                               
ffc09d30:	38 c1 00 14 	addi    r6,r1,20                               
ffc09d34:	48 00 06 49 	bl      ffc0a37c <_POSIX_Name_to_id>           
   *  If the name to id translation worked, then the message queue exists
   *  and we can just return a pointer to the id.  Otherwise we may   
   *  need to check to see if this is a "message queue does not exist"
   *  or some other miscellaneous error on the name.                  
   */                                                                 
  if ( status ) {                                                     
ffc09d38:	7c 7a 1b 79 	mr.     r26,r3                                 
ffc09d3c:	40 82 00 88 	bne-    ffc09dc4 <mq_open+0x124>               
                                                                      
  } else {                /* name -> ID translation succeeded */      
    /*                                                                
     * Check for existence with creation.                             
     */                                                               
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
ffc09d40:	73 de 0a 00 	andi.   r30,r30,2560                           
ffc09d44:	2f 9e 0a 00 	cmpwi   cr7,r30,2560                           
ffc09d48:	41 9e 01 50 	beq-    cr7,ffc09e98 <mq_open+0x1f8>           
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control *_POSIX_Message_queue_Get (
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (POSIX_Message_queue_Control *)                              
ffc09d4c:	80 81 00 20 	lwz     r4,32(r1)                              
ffc09d50:	38 a1 00 18 	addi    r5,r1,24                               
ffc09d54:	7f 63 db 78 	mr      r3,r27                                 
ffc09d58:	48 00 40 39 	bl      ffc0dd90 <_Objects_Get>                
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  const char          *name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
ffc09d5c:	a1 5f 00 0a 	lhz     r10,10(r31)                            
    /*                                                                
     * In this case we need to do an ID->pointer conversion to        
     * check the mode.                                                
     */                                                               
    the_mq = _POSIX_Message_queue_Get( the_mq_id, &location );        
    the_mq->open_count += 1;                                          
ffc09d60:	81 23 00 18 	lwz     r9,24(r3)                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
ffc09d64:	81 1d 00 1c 	lwz     r8,28(r29)                             
ffc09d68:	55 4a 10 3a 	rlwinm  r10,r10,2,0,29                         
ffc09d6c:	39 29 00 01 	addi    r9,r9,1                                
                                                                      
    /*                                                                
     * In this case we need to do an ID->pointer conversion to        
     * check the mode.                                                
     */                                                               
    the_mq = _POSIX_Message_queue_Get( the_mq_id, &location );        
ffc09d70:	90 61 00 1c 	stw     r3,28(r1)                              
    the_mq->open_count += 1;                                          
ffc09d74:	91 23 00 18 	stw     r9,24(r3)                              
    the_mq_fd->Queue = the_mq;                                        
ffc09d78:	90 7f 00 10 	stw     r3,16(r31)                             
ffc09d7c:	7f e8 51 2e 	stwx    r31,r8,r10                             
    the_object                                                        
  );                                                                  
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    /* ASSERT: information->is_string */                              
    the_object->name.name_p = name;                                   
ffc09d80:	93 5f 00 0c 	stw     r26,12(r31)                            
    _Objects_Open_string(                                             
      &_POSIX_Message_queue_Information_fds,                          
      &the_mq_fd->Object,                                             
      NULL                                                            
    );                                                                
    _Thread_Enable_dispatch();                                        
ffc09d84:	48 00 52 09 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
    _Thread_Enable_dispatch();                                        
ffc09d88:	48 00 52 05 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
    return (mqd_t)the_mq_fd->Object.id;                               
ffc09d8c:	80 7f 00 08 	lwz     r3,8(r31)                              
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
}                                                                     
ffc09d90:	80 01 00 54 	lwz     r0,84(r1)                              
ffc09d94:	81 81 00 30 	lwz     r12,48(r1)                             
ffc09d98:	7c 08 03 a6 	mtlr    r0                                     
ffc09d9c:	83 21 00 34 	lwz     r25,52(r1)                             
ffc09da0:	83 41 00 38 	lwz     r26,56(r1)                             
ffc09da4:	7d 80 81 20 	mtcrf   8,r12                                  
ffc09da8:	83 61 00 3c 	lwz     r27,60(r1)                             
ffc09dac:	83 81 00 40 	lwz     r28,64(r1)                             
ffc09db0:	83 a1 00 44 	lwz     r29,68(r1)                             
ffc09db4:	83 c1 00 48 	lwz     r30,72(r1)                             
ffc09db8:	83 e1 00 4c 	lwz     r31,76(r1)                             
ffc09dbc:	38 21 00 50 	addi    r1,r1,80                               
ffc09dc0:	4e 80 00 20 	blr                                            
  if ( status ) {                                                     
    /*                                                                
     * Unless provided a valid name that did not already exist        
     * and we are willing to create then it is an error.              
     */                                                               
    if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {               
ffc09dc4:	2f 9a 00 02 	cmpwi   cr7,r26,2                              
ffc09dc8:	41 9e 01 24 	beq-    cr7,ffc09eec <mq_open+0x24c>           
                                                                      
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free_fd (              
  POSIX_Message_queue_Control_fd *the_mq_fd                           
)                                                                     
{                                                                     
  _Objects_Free( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object );
ffc09dcc:	7f a3 eb 78 	mr      r3,r29                                 
ffc09dd0:	7f e4 fb 78 	mr      r4,r31                                 
ffc09dd4:	48 00 3d e5 	bl      ffc0dbb8 <_Objects_Free>               
      _POSIX_Message_queue_Free_fd( the_mq_fd );                      
      _Thread_Enable_dispatch();                                      
ffc09dd8:	48 00 51 b5 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
      rtems_set_errno_and_return_minus_one_cast( status, mqd_t );     
ffc09ddc:	48 00 ba a1 	bl      ffc1587c <__errno>                     
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
}                                                                     
ffc09de0:	80 01 00 54 	lwz     r0,84(r1)                              
ffc09de4:	81 81 00 30 	lwz     r12,48(r1)                             
ffc09de8:	7c 08 03 a6 	mtlr    r0                                     
     * and we are willing to create then it is an error.              
     */                                                               
    if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {               
      _POSIX_Message_queue_Free_fd( the_mq_fd );                      
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one_cast( status, mqd_t );     
ffc09dec:	93 43 00 00 	stw     r26,0(r3)                              
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
}                                                                     
ffc09df0:	7d 80 81 20 	mtcrf   8,r12                                  
     * and we are willing to create then it is an error.              
     */                                                               
    if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {               
      _POSIX_Message_queue_Free_fd( the_mq_fd );                      
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one_cast( status, mqd_t );     
ffc09df4:	38 60 ff ff 	li      r3,-1                                  
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
}                                                                     
ffc09df8:	83 21 00 34 	lwz     r25,52(r1)                             
ffc09dfc:	83 41 00 38 	lwz     r26,56(r1)                             
ffc09e00:	83 61 00 3c 	lwz     r27,60(r1)                             
ffc09e04:	83 81 00 40 	lwz     r28,64(r1)                             
ffc09e08:	83 a1 00 44 	lwz     r29,68(r1)                             
ffc09e0c:	83 c1 00 48 	lwz     r30,72(r1)                             
ffc09e10:	83 e1 00 4c 	lwz     r31,76(r1)                             
ffc09e14:	38 21 00 50 	addi    r1,r1,80                               
ffc09e18:	4e 80 00 20 	blr                                            
  size_t                          name_len;                           
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
    va_start(arg, oflag);                                             
ffc09e1c:	39 21 00 58 	addi    r9,r1,88                               
    mode = va_arg( arg, mode_t );                                     
    attr = va_arg( arg, struct mq_attr * );                           
ffc09e20:	83 21 00 2c 	lwz     r25,44(r1)                             
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *                 
  _POSIX_Message_queue_Allocate_fd( void )                            
{                                                                     
  return (POSIX_Message_queue_Control_fd *)                           
ffc09e24:	3f a0 00 00 	lis     r29,0                                  
  size_t                          name_len;                           
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
    va_start(arg, oflag);                                             
ffc09e28:	91 21 00 0c 	stw     r9,12(r1)                              
ffc09e2c:	3b bd 5b 0c 	addi    r29,r29,23308                          
ffc09e30:	39 21 00 20 	addi    r9,r1,32                               
ffc09e34:	91 21 00 10 	stw     r9,16(r1)                              
ffc09e38:	7f a3 eb 78 	mr      r3,r29                                 
    mode = va_arg( arg, mode_t );                                     
ffc09e3c:	39 20 00 03 	li      r9,3                                   
ffc09e40:	99 21 00 08 	stb     r9,8(r1)                               
ffc09e44:	48 00 39 65 	bl      ffc0d7a8 <_Objects_Allocate>           
    attr = va_arg( arg, struct mq_attr * );                           
    va_end(arg);                                                      
  }                                                                   
                                                                      
  the_mq_fd = _POSIX_Message_queue_Allocate_fd();                     
  if ( !the_mq_fd ) {                                                 
ffc09e48:	7c 7f 1b 79 	mr.     r31,r3                                 
ffc09e4c:	40 82 fe cc 	bne+    ffc09d18 <mq_open+0x78>                
    _Thread_Enable_dispatch();                                        
ffc09e50:	48 00 51 3d 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
    rtems_set_errno_and_return_minus_one( ENFILE );                   
ffc09e54:	48 00 ba 29 	bl      ffc1587c <__errno>                     
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
}                                                                     
ffc09e58:	80 01 00 54 	lwz     r0,84(r1)                              
ffc09e5c:	81 81 00 30 	lwz     r12,48(r1)                             
  }                                                                   
                                                                      
  the_mq_fd = _POSIX_Message_queue_Allocate_fd();                     
  if ( !the_mq_fd ) {                                                 
    _Thread_Enable_dispatch();                                        
    rtems_set_errno_and_return_minus_one( ENFILE );                   
ffc09e60:	39 20 00 17 	li      r9,23                                  
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
}                                                                     
ffc09e64:	7c 08 03 a6 	mtlr    r0                                     
  }                                                                   
                                                                      
  the_mq_fd = _POSIX_Message_queue_Allocate_fd();                     
  if ( !the_mq_fd ) {                                                 
    _Thread_Enable_dispatch();                                        
    rtems_set_errno_and_return_minus_one( ENFILE );                   
ffc09e68:	91 23 00 00 	stw     r9,0(r3)                               
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
}                                                                     
ffc09e6c:	7d 80 81 20 	mtcrf   8,r12                                  
  }                                                                   
                                                                      
  the_mq_fd = _POSIX_Message_queue_Allocate_fd();                     
  if ( !the_mq_fd ) {                                                 
    _Thread_Enable_dispatch();                                        
    rtems_set_errno_and_return_minus_one( ENFILE );                   
ffc09e70:	38 60 ff ff 	li      r3,-1                                  
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
}                                                                     
ffc09e74:	83 21 00 34 	lwz     r25,52(r1)                             
ffc09e78:	83 41 00 38 	lwz     r26,56(r1)                             
ffc09e7c:	83 61 00 3c 	lwz     r27,60(r1)                             
ffc09e80:	83 81 00 40 	lwz     r28,64(r1)                             
ffc09e84:	83 a1 00 44 	lwz     r29,68(r1)                             
ffc09e88:	83 c1 00 48 	lwz     r30,72(r1)                             
ffc09e8c:	83 e1 00 4c 	lwz     r31,76(r1)                             
ffc09e90:	38 21 00 50 	addi    r1,r1,80                               
ffc09e94:	4e 80 00 20 	blr                                            
                                                                      
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free_fd (              
  POSIX_Message_queue_Control_fd *the_mq_fd                           
)                                                                     
{                                                                     
  _Objects_Free( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object );
ffc09e98:	7f a3 eb 78 	mr      r3,r29                                 
ffc09e9c:	7f e4 fb 78 	mr      r4,r31                                 
ffc09ea0:	48 00 3d 19 	bl      ffc0dbb8 <_Objects_Free>               
    /*                                                                
     * Check for existence with creation.                             
     */                                                               
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
      _POSIX_Message_queue_Free_fd( the_mq_fd );                      
      _Thread_Enable_dispatch();                                      
ffc09ea4:	48 00 50 e9 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
      rtems_set_errno_and_return_minus_one_cast( EEXIST, mqd_t );     
ffc09ea8:	48 00 b9 d5 	bl      ffc1587c <__errno>                     
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
}                                                                     
ffc09eac:	80 01 00 54 	lwz     r0,84(r1)                              
ffc09eb0:	81 81 00 30 	lwz     r12,48(r1)                             
     * Check for existence with creation.                             
     */                                                               
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
      _POSIX_Message_queue_Free_fd( the_mq_fd );                      
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one_cast( EEXIST, mqd_t );     
ffc09eb4:	39 20 00 11 	li      r9,17                                  
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
}                                                                     
ffc09eb8:	7c 08 03 a6 	mtlr    r0                                     
     * Check for existence with creation.                             
     */                                                               
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
      _POSIX_Message_queue_Free_fd( the_mq_fd );                      
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one_cast( EEXIST, mqd_t );     
ffc09ebc:	91 23 00 00 	stw     r9,0(r3)                               
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
}                                                                     
ffc09ec0:	7d 80 81 20 	mtcrf   8,r12                                  
     * Check for existence with creation.                             
     */                                                               
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
      _POSIX_Message_queue_Free_fd( the_mq_fd );                      
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one_cast( EEXIST, mqd_t );     
ffc09ec4:	38 60 ff ff 	li      r3,-1                                  
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
}                                                                     
ffc09ec8:	83 21 00 34 	lwz     r25,52(r1)                             
ffc09ecc:	83 41 00 38 	lwz     r26,56(r1)                             
ffc09ed0:	83 61 00 3c 	lwz     r27,60(r1)                             
ffc09ed4:	83 81 00 40 	lwz     r28,64(r1)                             
ffc09ed8:	83 a1 00 44 	lwz     r29,68(r1)                             
ffc09edc:	83 c1 00 48 	lwz     r30,72(r1)                             
ffc09ee0:	83 e1 00 4c 	lwz     r31,76(r1)                             
ffc09ee4:	38 21 00 50 	addi    r1,r1,80                               
ffc09ee8:	4e 80 00 20 	blr                                            
  if ( status ) {                                                     
    /*                                                                
     * Unless provided a valid name that did not already exist        
     * and we are willing to create then it is an error.              
     */                                                               
    if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {               
ffc09eec:	41 92 fe e0 	beq+    cr4,ffc09dcc <mq_open+0x12c>           
                                                                      
  /*                                                                  
   *  At this point, the message queue does not exist and everything has been
   *  checked. We should go ahead and create a message queue.         
   */                                                                 
  status = _POSIX_Message_queue_Create_support(                       
ffc09ef0:	80 81 00 14 	lwz     r4,20(r1)                              
ffc09ef4:	7f 83 e3 78 	mr      r3,r28                                 
ffc09ef8:	38 a0 00 01 	li      r5,1                                   
ffc09efc:	7f 26 cb 78 	mr      r6,r25                                 
ffc09f00:	38 e1 00 1c 	addi    r7,r1,28                               
ffc09f04:	48 00 81 a5 	bl      ffc120a8 <_POSIX_Message_queue_Create_support>
  );                                                                  
                                                                      
  /*                                                                  
   * errno was set by Create_support, so don't set it again.          
   */                                                                 
  if ( status == -1 ) {                                               
ffc09f08:	2f 83 ff ff 	cmpwi   cr7,r3,-1                              
ffc09f0c:	41 9e 00 30 	beq-    cr7,ffc09f3c <mq_open+0x29c>           
    _POSIX_Message_queue_Free_fd( the_mq_fd );                        
    _Thread_Enable_dispatch();                                        
    return (mqd_t) -1;                                                
  }                                                                   
                                                                      
  the_mq_fd->Queue = the_mq;                                          
ffc09f10:	81 21 00 1c 	lwz     r9,28(r1)                              
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  const char          *name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
ffc09f14:	a1 5f 00 0a 	lhz     r10,10(r31)                            
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
ffc09f18:	81 1d 00 1c 	lwz     r8,28(r29)                             
ffc09f1c:	55 4a 10 3a 	rlwinm  r10,r10,2,0,29                         
ffc09f20:	91 3f 00 10 	stw     r9,16(r31)                             
    the_object                                                        
  );                                                                  
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    /* ASSERT: information->is_string */                              
    the_object->name.name_p = name;                                   
ffc09f24:	39 20 00 00 	li      r9,0                                   
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
ffc09f28:	7f e8 51 2e 	stwx    r31,r8,r10                             
    the_object                                                        
  );                                                                  
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    /* ASSERT: information->is_string */                              
    the_object->name.name_p = name;                                   
ffc09f2c:	91 3f 00 0c 	stw     r9,12(r31)                             
    &_POSIX_Message_queue_Information_fds,                            
    &the_mq_fd->Object,                                               
    NULL                                                              
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
ffc09f30:	48 00 50 5d 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
ffc09f34:	80 7f 00 08 	lwz     r3,8(r31)                              
ffc09f38:	4b ff fe 58 	b       ffc09d90 <mq_open+0xf0>                
ffc09f3c:	7f a3 eb 78 	mr      r3,r29                                 
ffc09f40:	7f e4 fb 78 	mr      r4,r31                                 
ffc09f44:	48 00 3c 75 	bl      ffc0dbb8 <_Objects_Free>               
  /*                                                                  
   * errno was set by Create_support, so don't set it again.          
   */                                                                 
  if ( status == -1 ) {                                               
    _POSIX_Message_queue_Free_fd( the_mq_fd );                        
    _Thread_Enable_dispatch();                                        
ffc09f48:	48 00 50 45 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
    return (mqd_t) -1;                                                
ffc09f4c:	38 60 ff ff 	li      r3,-1                                  
ffc09f50:	4b ff fe 40 	b       ffc09d90 <mq_open+0xf0>                
                                                                      

ffc0e97c <pthread_attr_setschedpolicy>: int pthread_attr_setschedpolicy( pthread_attr_t *attr, int policy ) { if ( !attr || !attr->is_initialized )
ffc0e97c:	7c 69 1b 79 	mr.     r9,r3                                  
ffc0e980:	41 82 00 38 	beq-    ffc0e9b8 <pthread_attr_setschedpolicy+0x3c>
ffc0e984:	81 49 00 00 	lwz     r10,0(r9)                              
    return EINVAL;                                                    
ffc0e988:	38 60 00 16 	li      r3,22                                  
int pthread_attr_setschedpolicy(                                      
  pthread_attr_t  *attr,                                              
  int              policy                                             
)                                                                     
{                                                                     
  if ( !attr || !attr->is_initialized )                               
ffc0e98c:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0e990:	4d be 00 20 	beqlr+  cr7                                    
    return EINVAL;                                                    
                                                                      
  switch ( policy ) {                                                 
ffc0e994:	2b 84 00 04 	cmplwi  cr7,r4,4                               
ffc0e998:	41 9d 00 28 	bgt-    cr7,ffc0e9c0 <pthread_attr_setschedpolicy+0x44>
ffc0e99c:	39 40 00 01 	li      r10,1                                  
ffc0e9a0:	7d 4a 20 30 	slw     r10,r10,r4                             
ffc0e9a4:	71 48 00 17 	andi.   r8,r10,23                              
ffc0e9a8:	41 82 00 18 	beq-    ffc0e9c0 <pthread_attr_setschedpolicy+0x44><== NEVER TAKEN
    case SCHED_OTHER:                                                 
    case SCHED_FIFO:                                                  
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      attr->schedpolicy = policy;                                     
ffc0e9ac:	90 89 00 14 	stw     r4,20(r9)                              
      return 0;                                                       
ffc0e9b0:	38 60 00 00 	li      r3,0                                   
ffc0e9b4:	4e 80 00 20 	blr                                            
  pthread_attr_t  *attr,                                              
  int              policy                                             
)                                                                     
{                                                                     
  if ( !attr || !attr->is_initialized )                               
    return EINVAL;                                                    
ffc0e9b8:	38 60 00 16 	li      r3,22                                  
ffc0e9bc:	4e 80 00 20 	blr                                            
    case SCHED_SPORADIC:                                              
      attr->schedpolicy = policy;                                     
      return 0;                                                       
                                                                      
    default:                                                          
      return ENOTSUP;                                                 
ffc0e9c0:	38 60 00 86 	li      r3,134                                 
  }                                                                   
}                                                                     
ffc0e9c4:	4e 80 00 20 	blr                                            
                                                                      

ffc098c8 <pthread_barrier_init>: int pthread_barrier_init( pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count ) {
ffc098c8:	94 21 ff d0 	stwu    r1,-48(r1)                             
ffc098cc:	7c 08 02 a6 	mflr    r0                                     
ffc098d0:	93 e1 00 2c 	stw     r31,44(r1)                             
  const pthread_barrierattr_t   *the_attr;                            
                                                                      
  /*                                                                  
   *  Error check parameters                                          
   */                                                                 
  if ( !barrier )                                                     
ffc098d4:	7c 7f 1b 79 	mr.     r31,r3                                 
int pthread_barrier_init(                                             
  pthread_barrier_t           *barrier,                               
  const pthread_barrierattr_t *attr,                                  
  unsigned int                 count                                  
)                                                                     
{                                                                     
ffc098d8:	90 01 00 34 	stw     r0,52(r1)                              
ffc098dc:	93 81 00 20 	stw     r28,32(r1)                             
ffc098e0:	93 a1 00 24 	stw     r29,36(r1)                             
ffc098e4:	93 c1 00 28 	stw     r30,40(r1)                             
  const pthread_barrierattr_t   *the_attr;                            
                                                                      
  /*                                                                  
   *  Error check parameters                                          
   */                                                                 
  if ( !barrier )                                                     
ffc098e8:	41 82 00 0c 	beq-    ffc098f4 <pthread_barrier_init+0x2c>   
    return EINVAL;                                                    
                                                                      
  if ( count == 0 )                                                   
ffc098ec:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc098f0:	40 9e 00 28 	bne-    cr7,ffc09918 <pthread_barrier_init+0x50>
  switch ( the_attr->process_shared ) {                               
    case PTHREAD_PROCESS_PRIVATE:    /* only supported values */      
      break;                                                          
    case PTHREAD_PROCESS_SHARED:                                      
    default:                                                          
      return EINVAL;                                                  
ffc098f4:	38 60 00 16 	li      r3,22                                  
   * Exit the critical section and return the user an operational barrier
   */                                                                 
  *barrier = the_barrier->Object.id;                                  
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
ffc098f8:	80 01 00 34 	lwz     r0,52(r1)                              
ffc098fc:	83 81 00 20 	lwz     r28,32(r1)                             
ffc09900:	7c 08 03 a6 	mtlr    r0                                     
ffc09904:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc09908:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc0990c:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc09910:	38 21 00 30 	addi    r1,r1,48                               
ffc09914:	4e 80 00 20 	blr                                            
    return EINVAL;                                                    
                                                                      
  /*                                                                  
   * If the user passed in NULL, use the default attributes           
   */                                                                 
  if ( attr ) {                                                       
ffc09918:	2f 84 00 00 	cmpwi   cr7,r4,0                               
ffc0991c:	7c 89 23 78 	mr      r9,r4                                  
ffc09920:	41 9e 00 7c 	beq-    cr7,ffc0999c <pthread_barrier_init+0xd4>
  }                                                                   
                                                                      
  /*                                                                  
   * Now start error checking the attributes that we are going to use 
   */                                                                 
  if ( !the_attr->is_initialized )                                    
ffc09924:	81 49 00 00 	lwz     r10,0(r9)                              
ffc09928:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0992c:	41 9e ff c8 	beq+    cr7,ffc098f4 <pthread_barrier_init+0x2c>
    return EINVAL;                                                    
                                                                      
  switch ( the_attr->process_shared ) {                               
ffc09930:	83 c9 00 04 	lwz     r30,4(r9)                              
ffc09934:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
ffc09938:	40 be ff bc 	bne-    cr7,ffc098f4 <pthread_barrier_init+0x2c><== NEVER TAKEN
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc0993c:	3d 20 00 00 	lis     r9,0                                   
  }                                                                   
                                                                      
  /*                                                                  
   * Convert from POSIX attributes to Core Barrier attributes         
   */                                                                 
  the_attributes.discipline    = CORE_BARRIER_AUTOMATIC_RELEASE;      
ffc09940:	93 c1 00 10 	stw     r30,16(r1)                             
ffc09944:	81 49 28 90 	lwz     r10,10384(r9)                          
  the_attributes.maximum_count = count;                               
ffc09948:	90 a1 00 14 	stw     r5,20(r1)                              
                                                                      
    ++level;                                                          
ffc0994c:	39 4a 00 01 	addi    r10,r10,1                              
    _Thread_Dispatch_disable_level = level;                           
ffc09950:	91 49 28 90 	stw     r10,10384(r9)                          
 *  This function allocates a barrier control block from              
 *  the inactive chain of free barrier control blocks.                
 */                                                                   
RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Allocate( void )
{                                                                     
  return (POSIX_Barrier_Control *)                                    
ffc09954:	3f 80 00 00 	lis     r28,0                                  
ffc09958:	3b 9c 30 00 	addi    r28,r28,12288                          
ffc0995c:	7f 83 e3 78 	mr      r3,r28                                 
ffc09960:	48 00 29 71 	bl      ffc0c2d0 <_Objects_Allocate>           
   */                                                                 
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_barrier = _POSIX_Barrier_Allocate();                            
                                                                      
  if ( !the_barrier ) {                                               
ffc09964:	7c 7d 1b 79 	mr.     r29,r3                                 
ffc09968:	41 82 00 4c 	beq-    ffc099b4 <pthread_barrier_init+0xec>   
    _Thread_Enable_dispatch();                                        
    return EAGAIN;                                                    
  }                                                                   
                                                                      
  _CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes ); 
ffc0996c:	38 7d 00 10 	addi    r3,r29,16                              
ffc09970:	38 81 00 10 	addi    r4,r1,16                               
ffc09974:	48 00 1d 59 	bl      ffc0b6cc <_CORE_barrier_Initialize>    
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
ffc09978:	81 3d 00 08 	lwz     r9,8(r29)                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
ffc0997c:	81 1c 00 1c 	lwz     r8,28(r28)                             
ffc09980:	55 2a 13 ba 	rlwinm  r10,r9,2,14,29                         
ffc09984:	7f a8 51 2e 	stwx    r29,r8,r10                             
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
ffc09988:	93 dd 00 0c 	stw     r30,12(r29)                            
  );                                                                  
                                                                      
  /*                                                                  
   * Exit the critical section and return the user an operational barrier
   */                                                                 
  *barrier = the_barrier->Object.id;                                  
ffc0998c:	91 3f 00 00 	stw     r9,0(r31)                              
  _Thread_Enable_dispatch();                                          
ffc09990:	48 00 3f 79 	bl      ffc0d908 <_Thread_Enable_dispatch>     
  return 0;                                                           
ffc09994:	38 60 00 00 	li      r3,0                                   
ffc09998:	4b ff ff 60 	b       ffc098f8 <pthread_barrier_init+0x30>   
   * If the user passed in NULL, use the default attributes           
   */                                                                 
  if ( attr ) {                                                       
    the_attr = attr;                                                  
  } else {                                                            
    (void) pthread_barrierattr_init( &my_attr );                      
ffc0999c:	38 61 00 08 	addi    r3,r1,8                                
ffc099a0:	90 a1 00 18 	stw     r5,24(r1)                              
ffc099a4:	4b ff fe 29 	bl      ffc097cc <pthread_barrierattr_init>    
    the_attr = &my_attr;                                              
ffc099a8:	39 21 00 08 	addi    r9,r1,8                                
ffc099ac:	80 a1 00 18 	lwz     r5,24(r1)                              
ffc099b0:	4b ff ff 74 	b       ffc09924 <pthread_barrier_init+0x5c>   
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_barrier = _POSIX_Barrier_Allocate();                            
                                                                      
  if ( !the_barrier ) {                                               
    _Thread_Enable_dispatch();                                        
ffc099b4:	48 00 3f 55 	bl      ffc0d908 <_Thread_Enable_dispatch>     
    return EAGAIN;                                                    
ffc099b8:	38 60 00 0b 	li      r3,11                                  
ffc099bc:	4b ff ff 3c 	b       ffc098f8 <pthread_barrier_init+0x30>   
                                                                      

ffc09078 <pthread_cleanup_push>: void pthread_cleanup_push( void (*routine)( void * ), void *arg ) {
ffc09078:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0907c:	7c 08 02 a6 	mflr    r0                                     
ffc09080:	93 c1 00 08 	stw     r30,8(r1)                              
  /*                                                                  
   *  The POSIX standard does not address what to do when the routine 
   *  is NULL.  It also does not address what happens when we cannot  
   *  allocate memory or anything else bad happens.                   
   */                                                                 
  if ( !routine )                                                     
ffc09084:	7c 7e 1b 79 	mr.     r30,r3                                 
                                                                      
void pthread_cleanup_push(                                            
  void   (*routine)( void * ),                                        
  void    *arg                                                        
)                                                                     
{                                                                     
ffc09088:	90 01 00 14 	stw     r0,20(r1)                              
ffc0908c:	93 e1 00 0c 	stw     r31,12(r1)                             
  /*                                                                  
   *  The POSIX standard does not address what to do when the routine 
   *  is NULL.  It also does not address what happens when we cannot  
   *  allocate memory or anything else bad happens.                   
   */                                                                 
  if ( !routine )                                                     
ffc09090:	41 82 00 60 	beq-    ffc090f0 <pthread_cleanup_push+0x78>   
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc09094:	3d 20 00 00 	lis     r9,0                                   
ffc09098:	81 49 28 68 	lwz     r10,10344(r9)                          
ffc0909c:	7c 9f 23 78 	mr      r31,r4                                 
                                                                      
    ++level;                                                          
ffc090a0:	39 4a 00 01 	addi    r10,r10,1                              
    _Thread_Dispatch_disable_level = level;                           
ffc090a4:	91 49 28 68 	stw     r10,10344(r9)                          
    return;                                                           
                                                                      
  _Thread_Disable_dispatch();                                         
  handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) );
ffc090a8:	38 60 00 10 	li      r3,16                                  
ffc090ac:	48 00 57 49 	bl      ffc0e7f4 <_Workspace_Allocate>         
                                                                      
  if ( handler ) {                                                    
ffc090b0:	7c 69 1b 79 	mr.     r9,r3                                  
ffc090b4:	41 82 00 24 	beq-    ffc090d8 <pthread_cleanup_push+0x60>   <== NEVER TAKEN
    thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
ffc090b8:	3d 40 00 00 	lis     r10,0                                  
ffc090bc:	81 4a 31 70 	lwz     r10,12656(r10)                         
    handler_stack = &thread_support->Cancellation_Handlers;           
                                                                      
    handler->routine = routine;                                       
    handler->arg = arg;                                               
                                                                      
    _Chain_Append( handler_stack, &handler->Node );                   
ffc090c0:	7d 24 4b 78 	mr      r4,r9                                  
  handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) );
                                                                      
  if ( handler ) {                                                    
    thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
                                                                      
    handler_stack = &thread_support->Cancellation_Handlers;           
ffc090c4:	80 6a 01 50 	lwz     r3,336(r10)                            
                                                                      
    handler->routine = routine;                                       
ffc090c8:	93 c9 00 08 	stw     r30,8(r9)                              
    handler->arg = arg;                                               
                                                                      
    _Chain_Append( handler_stack, &handler->Node );                   
ffc090cc:	38 63 00 e4 	addi    r3,r3,228                              
    thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
                                                                      
    handler_stack = &thread_support->Cancellation_Handlers;           
                                                                      
    handler->routine = routine;                                       
    handler->arg = arg;                                               
ffc090d0:	93 e9 00 0c 	stw     r31,12(r9)                             
                                                                      
    _Chain_Append( handler_stack, &handler->Node );                   
ffc090d4:	48 00 1f 39 	bl      ffc0b00c <_Chain_Append>               
  }                                                                   
  _Thread_Enable_dispatch();                                          
}                                                                     
ffc090d8:	80 01 00 14 	lwz     r0,20(r1)                              
ffc090dc:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc090e0:	7c 08 03 a6 	mtlr    r0                                     
ffc090e4:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc090e8:	38 21 00 10 	addi    r1,r1,16                               
    handler->routine = routine;                                       
    handler->arg = arg;                                               
                                                                      
    _Chain_Append( handler_stack, &handler->Node );                   
  }                                                                   
  _Thread_Enable_dispatch();                                          
ffc090ec:	48 00 41 7c 	b       ffc0d268 <_Thread_Enable_dispatch>     
}                                                                     
ffc090f0:	80 01 00 14 	lwz     r0,20(r1)                              
ffc090f4:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc090f8:	7c 08 03 a6 	mtlr    r0                                     
ffc090fc:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc09100:	38 21 00 10 	addi    r1,r1,16                               
ffc09104:	4e 80 00 20 	blr                                            
                                                                      

ffc0a304 <pthread_cond_init>: */ int pthread_cond_init( pthread_cond_t *cond, const pthread_condattr_t *attr ) {
ffc0a304:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0a308:	7c 08 02 a6 	mflr    r0                                     
ffc0a30c:	93 e1 00 14 	stw     r31,20(r1)                             
  POSIX_Condition_variables_Control   *the_cond;                      
  const pthread_condattr_t            *the_attr;                      
                                                                      
  if ( attr ) the_attr = attr;                                        
ffc0a310:	7c 9f 23 79 	mr.     r31,r4                                 
 */                                                                   
int pthread_cond_init(                                                
  pthread_cond_t           *cond,                                     
  const pthread_condattr_t *attr                                      
)                                                                     
{                                                                     
ffc0a314:	93 c1 00 10 	stw     r30,16(r1)                             
ffc0a318:	7c 7e 1b 78 	mr      r30,r3                                 
ffc0a31c:	90 01 00 1c 	stw     r0,28(r1)                              
ffc0a320:	93 81 00 08 	stw     r28,8(r1)                              
ffc0a324:	93 a1 00 0c 	stw     r29,12(r1)                             
  POSIX_Condition_variables_Control   *the_cond;                      
  const pthread_condattr_t            *the_attr;                      
                                                                      
  if ( attr ) the_attr = attr;                                        
ffc0a328:	41 82 00 b4 	beq-    ffc0a3dc <pthread_cond_init+0xd8>      
  else        the_attr = &_POSIX_Condition_variables_Default_attributes;
                                                                      
  /*                                                                  
   *  Be careful about attributes when global!!!                      
   */                                                                 
  if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )           
ffc0a32c:	81 5f 00 04 	lwz     r10,4(r31)                             
    return EINVAL;                                                    
ffc0a330:	38 60 00 16 	li      r3,22                                  
  else        the_attr = &_POSIX_Condition_variables_Default_attributes;
                                                                      
  /*                                                                  
   *  Be careful about attributes when global!!!                      
   */                                                                 
  if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )           
ffc0a334:	2f 8a 00 01 	cmpwi   cr7,r10,1                              
ffc0a338:	41 9e 00 10 	beq-    cr7,ffc0a348 <pthread_cond_init+0x44>  <== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  if ( !the_attr->is_initialized )                                    
ffc0a33c:	81 5f 00 00 	lwz     r10,0(r31)                             
ffc0a340:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0a344:	40 9e 00 24 	bne-    cr7,ffc0a368 <pthread_cond_init+0x64>  
  *cond = the_cond->Object.id;                                        
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return 0;                                                           
}                                                                     
ffc0a348:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0a34c:	83 81 00 08 	lwz     r28,8(r1)                              
ffc0a350:	7c 08 03 a6 	mtlr    r0                                     
ffc0a354:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0a358:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0a35c:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0a360:	38 21 00 18 	addi    r1,r1,24                               
ffc0a364:	4e 80 00 20 	blr                                            
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc0a368:	3d 20 00 00 	lis     r9,0                                   
ffc0a36c:	81 49 28 9c 	lwz     r10,10396(r9)                          
                                                                      
    ++level;                                                          
ffc0a370:	39 4a 00 01 	addi    r10,r10,1                              
    _Thread_Dispatch_disable_level = level;                           
ffc0a374:	91 49 28 9c 	stw     r10,10396(r9)                          
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Condition_variables_Control                
  *_POSIX_Condition_variables_Allocate( void )                        
{                                                                     
  return (POSIX_Condition_variables_Control *)                        
ffc0a378:	3f 80 00 00 	lis     r28,0                                  
ffc0a37c:	3b 9c 30 98 	addi    r28,r28,12440                          
ffc0a380:	7f 83 e3 78 	mr      r3,r28                                 
ffc0a384:	48 00 32 89 	bl      ffc0d60c <_Objects_Allocate>           
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  the_cond = _POSIX_Condition_variables_Allocate();                   
                                                                      
  if ( !the_cond ) {                                                  
ffc0a388:	7c 7d 1b 79 	mr.     r29,r3                                 
ffc0a38c:	41 82 00 5c 	beq-    ffc0a3e8 <pthread_cond_init+0xe4>      
    _Thread_Enable_dispatch();                                        
    return ENOMEM;                                                    
  }                                                                   
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
ffc0a390:	81 3f 00 04 	lwz     r9,4(r31)                              
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
ffc0a394:	3b e0 00 00 	li      r31,0                                  
ffc0a398:	93 fd 00 14 	stw     r31,20(r29)                            
                                                                      
  _Thread_queue_Initialize(                                           
ffc0a39c:	3c a0 10 00 	lis     r5,4096                                
ffc0a3a0:	38 7d 00 18 	addi    r3,r29,24                              
  if ( !the_cond ) {                                                  
    _Thread_Enable_dispatch();                                        
    return ENOMEM;                                                    
  }                                                                   
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
ffc0a3a4:	91 3d 00 10 	stw     r9,16(r29)                             
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
                                                                      
  _Thread_queue_Initialize(                                           
ffc0a3a8:	38 80 00 00 	li      r4,0                                   
ffc0a3ac:	60 a5 08 00 	ori     r5,r5,2048                             
ffc0a3b0:	38 c0 00 74 	li      r6,116                                 
ffc0a3b4:	48 00 52 6d 	bl      ffc0f620 <_Thread_queue_Initialize>    
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
ffc0a3b8:	81 3d 00 08 	lwz     r9,8(r29)                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
ffc0a3bc:	81 1c 00 1c 	lwz     r8,28(r28)                             
ffc0a3c0:	55 2a 13 ba 	rlwinm  r10,r9,2,14,29                         
ffc0a3c4:	7f a8 51 2e 	stwx    r29,r8,r10                             
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
ffc0a3c8:	93 fd 00 0c 	stw     r31,12(r29)                            
    &_POSIX_Condition_variables_Information,                          
    &the_cond->Object,                                                
    0                                                                 
  );                                                                  
                                                                      
  *cond = the_cond->Object.id;                                        
ffc0a3cc:	91 3e 00 00 	stw     r9,0(r30)                              
                                                                      
  _Thread_Enable_dispatch();                                          
ffc0a3d0:	48 00 48 75 	bl      ffc0ec44 <_Thread_Enable_dispatch>     
                                                                      
  return 0;                                                           
ffc0a3d4:	38 60 00 00 	li      r3,0                                   
ffc0a3d8:	4b ff ff 70 	b       ffc0a348 <pthread_cond_init+0x44>      
{                                                                     
  POSIX_Condition_variables_Control   *the_cond;                      
  const pthread_condattr_t            *the_attr;                      
                                                                      
  if ( attr ) the_attr = attr;                                        
  else        the_attr = &_POSIX_Condition_variables_Default_attributes;
ffc0a3dc:	3f e0 00 00 	lis     r31,0                                  
ffc0a3e0:	3b ff 27 e4 	addi    r31,r31,10212                          
ffc0a3e4:	4b ff ff 48 	b       ffc0a32c <pthread_cond_init+0x28>      
  _Thread_Disable_dispatch();                                         
                                                                      
  the_cond = _POSIX_Condition_variables_Allocate();                   
                                                                      
  if ( !the_cond ) {                                                  
    _Thread_Enable_dispatch();                                        
ffc0a3e8:	48 00 48 5d 	bl      ffc0ec44 <_Thread_Enable_dispatch>     
    return ENOMEM;                                                    
ffc0a3ec:	38 60 00 0c 	li      r3,12                                  
ffc0a3f0:	4b ff ff 58 	b       ffc0a348 <pthread_cond_init+0x44>      
                                                                      

ffc0954c <pthread_create>: pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)( void * ), void *arg ) {
ffc0954c:	94 21 ff 80 	stwu    r1,-128(r1)                            
ffc09550:	7c 08 02 a6 	mflr    r0                                     
ffc09554:	93 61 00 6c 	stw     r27,108(r1)                            
  int                                 schedpolicy = SCHED_RR;         
  struct sched_param                  schedparam;                     
  Objects_Name                        name;                           
  int                                 rc;                             
                                                                      
  if ( !start_routine )                                               
ffc09558:	7c bb 2b 79 	mr.     r27,r5                                 
  pthread_t              *thread,                                     
  const pthread_attr_t   *attr,                                       
  void                 *(*start_routine)( void * ),                   
  void                   *arg                                         
)                                                                     
{                                                                     
ffc0955c:	93 c1 00 78 	stw     r30,120(r1)                            
  struct sched_param                  schedparam;                     
  Objects_Name                        name;                           
  int                                 rc;                             
                                                                      
  if ( !start_routine )                                               
    return EFAULT;                                                    
ffc09560:	3b c0 00 0e 	li      r30,14                                 
  pthread_t              *thread,                                     
  const pthread_attr_t   *attr,                                       
  void                 *(*start_routine)( void * ),                   
  void                   *arg                                         
)                                                                     
{                                                                     
ffc09564:	90 01 00 84 	stw     r0,132(r1)                             
ffc09568:	92 81 00 50 	stw     r20,80(r1)                             
ffc0956c:	92 a1 00 54 	stw     r21,84(r1)                             
ffc09570:	92 c1 00 58 	stw     r22,88(r1)                             
ffc09574:	92 e1 00 5c 	stw     r23,92(r1)                             
ffc09578:	93 01 00 60 	stw     r24,96(r1)                             
ffc0957c:	93 21 00 64 	stw     r25,100(r1)                            
ffc09580:	93 41 00 68 	stw     r26,104(r1)                            
ffc09584:	93 81 00 70 	stw     r28,112(r1)                            
ffc09588:	93 a1 00 74 	stw     r29,116(r1)                            
ffc0958c:	93 e1 00 7c 	stw     r31,124(r1)                            
  int                                 schedpolicy = SCHED_RR;         
  struct sched_param                  schedparam;                     
  Objects_Name                        name;                           
  int                                 rc;                             
                                                                      
  if ( !start_routine )                                               
ffc09590:	41 82 00 28 	beq-    ffc095b8 <pthread_create+0x6c>         
    return EFAULT;                                                    
                                                                      
  the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;      
ffc09594:	2f 84 00 00 	cmpwi   cr7,r4,0                               
ffc09598:	7c 7d 1b 78 	mr      r29,r3                                 
ffc0959c:	7c dc 33 78 	mr      r28,r6                                 
ffc095a0:	7c 9f 23 78 	mr      r31,r4                                 
ffc095a4:	41 9e 01 b4 	beq-    cr7,ffc09758 <pthread_create+0x20c>    
                                                                      
  if ( !the_attr->is_initialized )                                    
ffc095a8:	81 3f 00 00 	lwz     r9,0(r31)                              
ffc095ac:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc095b0:	40 9e 00 4c 	bne-    cr7,ffc095fc <pthread_create+0xb0>     
      schedpolicy = the_attr->schedpolicy;                            
      schedparam  = the_attr->schedparam;                             
      break;                                                          
                                                                      
    default:                                                          
      return EINVAL;                                                  
ffc095b4:	3b c0 00 16 	li      r30,22                                 
   */                                                                 
  *thread = the_thread->Object.id;                                    
                                                                      
  _RTEMS_Unlock_allocator();                                          
  return 0;                                                           
}                                                                     
ffc095b8:	80 01 00 84 	lwz     r0,132(r1)                             
ffc095bc:	7f c3 f3 78 	mr      r3,r30                                 
ffc095c0:	82 81 00 50 	lwz     r20,80(r1)                             
ffc095c4:	7c 08 03 a6 	mtlr    r0                                     
ffc095c8:	82 a1 00 54 	lwz     r21,84(r1)                             
ffc095cc:	82 c1 00 58 	lwz     r22,88(r1)                             
ffc095d0:	82 e1 00 5c 	lwz     r23,92(r1)                             
ffc095d4:	83 01 00 60 	lwz     r24,96(r1)                             
ffc095d8:	83 21 00 64 	lwz     r25,100(r1)                            
ffc095dc:	83 41 00 68 	lwz     r26,104(r1)                            
ffc095e0:	83 61 00 6c 	lwz     r27,108(r1)                            
ffc095e4:	83 81 00 70 	lwz     r28,112(r1)                            
ffc095e8:	83 a1 00 74 	lwz     r29,116(r1)                            
ffc095ec:	83 c1 00 78 	lwz     r30,120(r1)                            
ffc095f0:	83 e1 00 7c 	lwz     r31,124(r1)                            
ffc095f4:	38 21 00 80 	addi    r1,r1,128                              
ffc095f8:	4e 80 00 20 	blr                                            
   *  stack space if it is allowed to allocate it itself.             
   *                                                                  
   *  NOTE: If the user provides the stack we will let it drop below  
   *        twice the minimum.                                        
   */                                                                 
  if ( the_attr->stackaddr && !_Stack_Is_enough(the_attr->stacksize) )
ffc095fc:	81 3f 00 04 	lwz     r9,4(r31)                              
ffc09600:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc09604:	41 9e 00 18 	beq-    cr7,ffc0961c <pthread_create+0xd0>     
ffc09608:	3d 40 00 00 	lis     r10,0                                  
ffc0960c:	81 3f 00 08 	lwz     r9,8(r31)                              
ffc09610:	81 4a 27 88 	lwz     r10,10120(r10)                         
ffc09614:	7f 89 50 40 	cmplw   cr7,r9,r10                             
ffc09618:	41 9c ff 9c 	blt+    cr7,ffc095b4 <pthread_create+0x68>     
   *  If inheritsched is set to PTHREAD_INHERIT_SCHED, then this thread
   *  inherits scheduling attributes from the creating thread.   If it is
   *  PTHREAD_EXPLICIT_SCHED, then scheduling parameters come from the
   *  attributes structure.                                           
   */                                                                 
  switch ( the_attr->inheritsched ) {                                 
ffc0961c:	81 3f 00 10 	lwz     r9,16(r31)                             
ffc09620:	2f 89 00 01 	cmpwi   cr7,r9,1                               
ffc09624:	41 9e 01 40 	beq-    cr7,ffc09764 <pthread_create+0x218>    
ffc09628:	2f 89 00 02 	cmpwi   cr7,r9,2                               
ffc0962c:	40 9e ff 88 	bne+    cr7,ffc095b4 <pthread_create+0x68>     
      schedparam  = api->schedparam;                                  
      break;                                                          
                                                                      
    case PTHREAD_EXPLICIT_SCHED:                                      
      schedpolicy = the_attr->schedpolicy;                            
      schedparam  = the_attr->schedparam;                             
ffc09630:	80 9f 00 18 	lwz     r4,24(r31)                             
ffc09634:	80 bf 00 1c 	lwz     r5,28(r31)                             
ffc09638:	80 df 00 20 	lwz     r6,32(r31)                             
ffc0963c:	80 ff 00 24 	lwz     r7,36(r31)                             
ffc09640:	81 1f 00 28 	lwz     r8,40(r31)                             
ffc09644:	81 5f 00 2c 	lwz     r10,44(r31)                            
ffc09648:	81 3f 00 30 	lwz     r9,48(r31)                             
      schedpolicy = api->schedpolicy;                                 
      schedparam  = api->schedparam;                                  
      break;                                                          
                                                                      
    case PTHREAD_EXPLICIT_SCHED:                                      
      schedpolicy = the_attr->schedpolicy;                            
ffc0964c:	83 5f 00 14 	lwz     r26,20(r31)                            
      schedparam  = the_attr->schedparam;                             
ffc09650:	90 81 00 18 	stw     r4,24(r1)                              
ffc09654:	90 a1 00 1c 	stw     r5,28(r1)                              
ffc09658:	90 c1 00 20 	stw     r6,32(r1)                              
ffc0965c:	90 e1 00 24 	stw     r7,36(r1)                              
ffc09660:	91 01 00 28 	stw     r8,40(r1)                              
ffc09664:	91 41 00 2c 	stw     r10,44(r1)                             
ffc09668:	91 21 00 30 	stw     r9,48(r1)                              
                                                                      
  /*                                                                  
   *  Check the contentionscope since rtems only supports PROCESS wide
   *  contention (i.e. no system wide contention).                    
   */                                                                 
  if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS )           
ffc0966c:	81 3f 00 0c 	lwz     r9,12(r31)                             
    return ENOTSUP;                                                   
ffc09670:	3b c0 00 86 	li      r30,134                                
                                                                      
  /*                                                                  
   *  Check the contentionscope since rtems only supports PROCESS wide
   *  contention (i.e. no system wide contention).                    
   */                                                                 
  if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS )           
ffc09674:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc09678:	40 9e ff 40 	bne+    cr7,ffc095b8 <pthread_create+0x6c>     
    return ENOTSUP;                                                   
                                                                      
  /*                                                                  
   *  Interpret the scheduling parameters.                            
   */                                                                 
  if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )       
ffc0967c:	80 61 00 18 	lwz     r3,24(r1)                              
ffc09680:	48 00 76 49 	bl      ffc10cc8 <_POSIX_Priority_Is_valid>    
ffc09684:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc09688:	41 9e ff 2c 	beq+    cr7,ffc095b4 <pthread_create+0x68>     <== NEVER TAKEN
                                                                      
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(        
  int priority                                                        
)                                                                     
{                                                                     
  return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
ffc0968c:	3d 20 00 00 	lis     r9,0                                   
    return EINVAL;                                                    
                                                                      
  core_priority = _POSIX_Priority_To_core( schedparam.sched_priority );
ffc09690:	82 c1 00 18 	lwz     r22,24(r1)                             
                                                                      
  /*                                                                  
   *  Set the core scheduling policy information.                     
   */                                                                 
  rc = _POSIX_Thread_Translate_sched_param(                           
ffc09694:	7f 43 d3 78 	mr      r3,r26                                 
ffc09698:	8a a9 27 84 	lbz     r21,10116(r9)                          
ffc0969c:	38 81 00 18 	addi    r4,r1,24                               
ffc096a0:	38 a1 00 38 	addi    r5,r1,56                               
ffc096a4:	38 c1 00 34 	addi    r6,r1,52                               
ffc096a8:	48 00 76 49 	bl      ffc10cf0 <_POSIX_Thread_Translate_sched_param>
    schedpolicy,                                                      
    &schedparam,                                                      
    &budget_algorithm,                                                
    &budget_callout                                                   
  );                                                                  
  if ( rc )                                                           
ffc096ac:	7c 7e 1b 79 	mr.     r30,r3                                 
ffc096b0:	40 82 ff 08 	bne+    ffc095b8 <pthread_create+0x6c>         
  #endif                                                              
                                                                      
  /*                                                                  
   *  Lock the allocator mutex for protection                         
   */                                                                 
  _RTEMS_Lock_allocator();                                            
ffc096b4:	3e e0 00 00 	lis     r23,0                                  
ffc096b8:	80 77 28 7c 	lwz     r3,10364(r23)                          
 *  _POSIX_Threads_Allocate                                           
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Allocate( void )  
{                                                                     
  return (Thread_Control *) _Objects_Allocate( &_POSIX_Threads_Information );
ffc096bc:	3f 20 00 00 	lis     r25,0                                  
ffc096c0:	3b 39 2e 60 	addi    r25,r25,11872                          
ffc096c4:	48 00 1f 59 	bl      ffc0b61c <_API_Mutex_Lock>             
ffc096c8:	7f 23 cb 78 	mr      r3,r25                                 
ffc096cc:	48 00 2b f9 	bl      ffc0c2c4 <_Objects_Allocate>           
ffc096d0:	7f 34 cb 78 	mr      r20,r25                                
   *  Allocate the thread control block.                              
   *                                                                  
   *  NOTE:  Global threads are not currently supported.              
   */                                                                 
  the_thread = _POSIX_Threads_Allocate();                             
  if ( !the_thread ) {                                                
ffc096d4:	7c 78 1b 79 	mr.     r24,r3                                 
ffc096d8:	41 82 00 70 	beq-    ffc09748 <pthread_create+0x1fc>        
                                                                      
static inline size_t _POSIX_Threads_Ensure_minimum_stack (            
  size_t size                                                         
)                                                                     
{                                                                     
  if ( size >= PTHREAD_MINIMUM_STACK_SIZE )                           
ffc096dc:	3d 20 00 00 	lis     r9,0                                   
ffc096e0:	80 c9 27 88 	lwz     r6,10120(r9)                           
                                                                      
  /*                                                                  
   *  Initialize the core thread for this task.                       
   */                                                                 
  name.name_p = NULL;   /* posix threads don't have a name by default */
  status = _Thread_Initialize(                                        
ffc096e4:	81 3f 00 08 	lwz     r9,8(r31)                              
ffc096e8:	54 c6 08 3c 	rlwinm  r6,r6,1,0,30                           
ffc096ec:	93 c1 00 48 	stw     r30,72(r1)                             
ffc096f0:	7f 86 48 40 	cmplw   cr7,r6,r9                              
ffc096f4:	80 bf 00 04 	lwz     r5,4(r31)                              
ffc096f8:	40 9c 00 08 	bge-    cr7,ffc09700 <pthread_create+0x1b4>    
ffc096fc:	7d 26 4b 78 	mr      r6,r9                                  
ffc09700:	81 21 00 34 	lwz     r9,52(r1)                              
ffc09704:	7e 83 a3 78 	mr      r3,r20                                 
ffc09708:	81 41 00 38 	lwz     r10,56(r1)                             
ffc0970c:	7f 04 c3 78 	mr      r4,r24                                 
ffc09710:	91 21 00 08 	stw     r9,8(r1)                               
ffc09714:	39 20 00 00 	li      r9,0                                   
ffc09718:	38 e0 00 01 	li      r7,1                                   
ffc0971c:	91 21 00 0c 	stw     r9,12(r1)                              
ffc09720:	39 21 00 48 	addi    r9,r1,72                               
ffc09724:	7d 16 a8 50 	subf    r8,r22,r21                             
ffc09728:	91 21 00 10 	stw     r9,16(r1)                              
ffc0972c:	39 20 00 01 	li      r9,1                                   
ffc09730:	48 00 42 81 	bl      ffc0d9b0 <_Thread_Initialize>          
    budget_callout,                                                   
    0,                    /* isr level */                             
    name                  /* posix threads don't have a name */       
  );                                                                  
                                                                      
  if ( !status ) {                                                    
ffc09734:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc09738:	40 9e 00 78 	bne-    cr7,ffc097b0 <pthread_create+0x264>    
                                                                      
RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free (                       
  Thread_Control *the_pthread                                         
)                                                                     
{                                                                     
  _Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object ); 
ffc0973c:	7f 23 cb 78 	mr      r3,r25                                 
ffc09740:	7f 04 c3 78 	mr      r4,r24                                 
ffc09744:	48 00 2f 91 	bl      ffc0c6d4 <_Objects_Free>               
    _POSIX_Threads_Free( the_thread );                                
    _RTEMS_Unlock_allocator();                                        
ffc09748:	80 77 28 7c 	lwz     r3,10364(r23)                          
    return EAGAIN;                                                    
ffc0974c:	3b c0 00 0b 	li      r30,11                                 
    name                  /* posix threads don't have a name */       
  );                                                                  
                                                                      
  if ( !status ) {                                                    
    _POSIX_Threads_Free( the_thread );                                
    _RTEMS_Unlock_allocator();                                        
ffc09750:	48 00 1f 15 	bl      ffc0b664 <_API_Mutex_Unlock>           
ffc09754:	4b ff fe 64 	b       ffc095b8 <pthread_create+0x6c>         
  int                                 rc;                             
                                                                      
  if ( !start_routine )                                               
    return EFAULT;                                                    
                                                                      
  the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;      
ffc09758:	3f e0 ff c2 	lis     r31,-62                                
ffc0975c:	3b ff 16 1c 	addi    r31,r31,5660                           
ffc09760:	4b ff fe 48 	b       ffc095a8 <pthread_create+0x5c>         
   *  PTHREAD_EXPLICIT_SCHED, then scheduling parameters come from the
   *  attributes structure.                                           
   */                                                                 
  switch ( the_attr->inheritsched ) {                                 
    case PTHREAD_INHERIT_SCHED:                                       
      api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];    
ffc09764:	3d 20 00 00 	lis     r9,0                                   
ffc09768:	81 29 31 90 	lwz     r9,12688(r9)                           
ffc0976c:	81 29 01 50 	lwz     r9,336(r9)                             
      schedpolicy = api->schedpolicy;                                 
      schedparam  = api->schedparam;                                  
ffc09770:	80 69 00 88 	lwz     r3,136(r9)                             
ffc09774:	80 89 00 8c 	lwz     r4,140(r9)                             
ffc09778:	80 a9 00 90 	lwz     r5,144(r9)                             
ffc0977c:	80 c9 00 94 	lwz     r6,148(r9)                             
ffc09780:	80 e9 00 98 	lwz     r7,152(r9)                             
ffc09784:	81 09 00 9c 	lwz     r8,156(r9)                             
ffc09788:	81 49 00 a0 	lwz     r10,160(r9)                            
   *  attributes structure.                                           
   */                                                                 
  switch ( the_attr->inheritsched ) {                                 
    case PTHREAD_INHERIT_SCHED:                                       
      api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];    
      schedpolicy = api->schedpolicy;                                 
ffc0978c:	83 49 00 84 	lwz     r26,132(r9)                            
      schedparam  = api->schedparam;                                  
ffc09790:	90 61 00 18 	stw     r3,24(r1)                              
ffc09794:	90 81 00 1c 	stw     r4,28(r1)                              
ffc09798:	90 a1 00 20 	stw     r5,32(r1)                              
ffc0979c:	90 c1 00 24 	stw     r6,36(r1)                              
ffc097a0:	90 e1 00 28 	stw     r7,40(r1)                              
ffc097a4:	91 01 00 2c 	stw     r8,44(r1)                              
ffc097a8:	91 41 00 30 	stw     r10,48(r1)                             
      break;                                                          
ffc097ac:	4b ff fe c0 	b       ffc0966c <pthread_create+0x120>        
  }                                                                   
                                                                      
  /*                                                                  
   *  finish initializing the per API structure                       
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
ffc097b0:	83 38 01 50 	lwz     r25,336(r24)                           
                                                                      
  api->Attributes  = *the_attr;                                       
ffc097b4:	7f e4 fb 78 	mr      r4,r31                                 
ffc097b8:	38 a0 00 40 	li      r5,64                                  
ffc097bc:	7f 23 cb 78 	mr      r3,r25                                 
ffc097c0:	48 00 af 41 	bl      ffc14700 <memcpy>                      
  api->detachstate = the_attr->detachstate;                           
ffc097c4:	81 3f 00 3c 	lwz     r9,60(r31)                             
  api->schedpolicy = schedpolicy;                                     
ffc097c8:	93 59 00 84 	stw     r26,132(r25)                           
  api->schedparam  = schedparam;                                      
                                                                      
  /*                                                                  
   *  POSIX threads are allocated and started in one operation.       
   */                                                                 
  status = _Thread_Start(                                             
ffc097cc:	7f 03 c3 78 	mr      r3,r24                                 
ffc097d0:	38 80 00 01 	li      r4,1                                   
   *  finish initializing the per API structure                       
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  api->Attributes  = *the_attr;                                       
  api->detachstate = the_attr->detachstate;                           
ffc097d4:	91 39 00 40 	stw     r9,64(r25)                             
  api->schedparam  = schedparam;                                      
                                                                      
  /*                                                                  
   *  POSIX threads are allocated and started in one operation.       
   */                                                                 
  status = _Thread_Start(                                             
ffc097d8:	7f 65 db 78 	mr      r5,r27                                 
ffc097dc:	7f 86 e3 78 	mr      r6,r28                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  api->Attributes  = *the_attr;                                       
  api->detachstate = the_attr->detachstate;                           
  api->schedpolicy = schedpolicy;                                     
  api->schedparam  = schedparam;                                      
ffc097e0:	81 21 00 18 	lwz     r9,24(r1)                              
                                                                      
  /*                                                                  
   *  POSIX threads are allocated and started in one operation.       
   */                                                                 
  status = _Thread_Start(                                             
ffc097e4:	38 e0 00 00 	li      r7,0                                   
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  api->Attributes  = *the_attr;                                       
  api->detachstate = the_attr->detachstate;                           
  api->schedpolicy = schedpolicy;                                     
  api->schedparam  = schedparam;                                      
ffc097e8:	91 39 00 88 	stw     r9,136(r25)                            
ffc097ec:	81 21 00 1c 	lwz     r9,28(r1)                              
ffc097f0:	91 39 00 8c 	stw     r9,140(r25)                            
ffc097f4:	81 21 00 20 	lwz     r9,32(r1)                              
ffc097f8:	91 39 00 90 	stw     r9,144(r25)                            
ffc097fc:	81 21 00 24 	lwz     r9,36(r1)                              
ffc09800:	91 39 00 94 	stw     r9,148(r25)                            
ffc09804:	81 21 00 28 	lwz     r9,40(r1)                              
ffc09808:	91 39 00 98 	stw     r9,152(r25)                            
ffc0980c:	81 21 00 2c 	lwz     r9,44(r1)                              
ffc09810:	91 39 00 9c 	stw     r9,156(r25)                            
ffc09814:	81 21 00 30 	lwz     r9,48(r1)                              
ffc09818:	91 39 00 a0 	stw     r9,160(r25)                            
                                                                      
  /*                                                                  
   *  POSIX threads are allocated and started in one operation.       
   */                                                                 
  status = _Thread_Start(                                             
ffc0981c:	48 00 4d b9 	bl      ffc0e5d4 <_Thread_Start>               
      _RTEMS_Unlock_allocator();                                      
      return EINVAL;                                                  
    }                                                                 
  #endif                                                              
                                                                      
  if ( schedpolicy == SCHED_SPORADIC ) {                              
ffc09820:	2f 9a 00 04 	cmpwi   cr7,r26,4                              
ffc09824:	41 9e 00 18 	beq-    cr7,ffc0983c <pthread_create+0x2f0>    
  }                                                                   
                                                                      
  /*                                                                  
   *  Return the id and indicate we successfully created the thread   
   */                                                                 
  *thread = the_thread->Object.id;                                    
ffc09828:	81 38 00 08 	lwz     r9,8(r24)                              
                                                                      
  _RTEMS_Unlock_allocator();                                          
ffc0982c:	80 77 28 7c 	lwz     r3,10364(r23)                          
  }                                                                   
                                                                      
  /*                                                                  
   *  Return the id and indicate we successfully created the thread   
   */                                                                 
  *thread = the_thread->Object.id;                                    
ffc09830:	91 3d 00 00 	stw     r9,0(r29)                              
                                                                      
  _RTEMS_Unlock_allocator();                                          
ffc09834:	48 00 1e 31 	bl      ffc0b664 <_API_Mutex_Unlock>           
ffc09838:	4b ff fd 80 	b       ffc095b8 <pthread_create+0x6c>         
      return EINVAL;                                                  
    }                                                                 
  #endif                                                              
                                                                      
  if ( schedpolicy == SCHED_SPORADIC ) {                              
    _Watchdog_Insert_ticks(                                           
ffc0983c:	38 79 00 90 	addi    r3,r25,144                             
ffc09840:	48 00 4e 5d 	bl      ffc0e69c <_Timespec_To_ticks>          
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
ffc09844:	38 99 00 a8 	addi    r4,r25,168                             
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
ffc09848:	90 79 00 b4 	stw     r3,180(r25)                            
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
ffc0984c:	3c 60 00 00 	lis     r3,0                                   
ffc09850:	38 63 2d 88 	addi    r3,r3,11656                            
ffc09854:	48 00 51 79 	bl      ffc0e9cc <_Watchdog_Insert>            
ffc09858:	4b ff ff d0 	b       ffc09828 <pthread_create+0x2dc>        
                                                                      

ffc1e50c <pthread_kill>: int pthread_kill( pthread_t thread, int sig ) {
ffc1e50c:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc1e510:	7c 08 02 a6 	mflr    r0                                     
ffc1e514:	93 e1 00 24 	stw     r31,36(r1)                             
  POSIX_API_Control  *api;                                            
  Thread_Control     *the_thread;                                     
  Objects_Locations  location;                                        
                                                                      
  if ( !sig )                                                         
ffc1e518:	7c 9f 23 79 	mr.     r31,r4                                 
                                                                      
int pthread_kill(                                                     
  pthread_t   thread,                                                 
  int         sig                                                     
)                                                                     
{                                                                     
ffc1e51c:	90 01 00 2c 	stw     r0,44(r1)                              
ffc1e520:	93 81 00 18 	stw     r28,24(r1)                             
ffc1e524:	93 a1 00 1c 	stw     r29,28(r1)                             
ffc1e528:	93 c1 00 20 	stw     r30,32(r1)                             
  POSIX_API_Control  *api;                                            
  Thread_Control     *the_thread;                                     
  Objects_Locations  location;                                        
                                                                      
  if ( !sig )                                                         
ffc1e52c:	41 82 00 c8 	beq-    ffc1e5f4 <pthread_kill+0xe8>           
                                                                      
static inline bool is_valid_signo(                                    
  int signo                                                           
)                                                                     
{                                                                     
  return ((signo) >= 1 && (signo) <= 32 );                            
ffc1e530:	3b bf ff ff 	addi    r29,r31,-1                             
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
ffc1e534:	2b 9d 00 1f 	cmplwi  cr7,r29,31                             
ffc1e538:	41 9d 00 bc 	bgt-    cr7,ffc1e5f4 <pthread_kill+0xe8>       
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  the_thread = _Thread_Get( thread, &location );                      
ffc1e53c:	38 81 00 08 	addi    r4,r1,8                                
ffc1e540:	4b fe e5 9d 	bl      ffc0cadc <_Thread_Get>                 
  switch ( location ) {                                               
ffc1e544:	81 21 00 08 	lwz     r9,8(r1)                               
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  the_thread = _Thread_Get( thread, &location );                      
ffc1e548:	7c 7e 1b 78 	mr      r30,r3                                 
  switch ( location ) {                                               
ffc1e54c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc1e550:	40 9e 00 b8 	bne-    cr7,ffc1e608 <pthread_kill+0xfc>       <== NEVER TAKEN
ffc1e554:	3c 60 00 00 	lis     r3,0                                   
ffc1e558:	38 63 22 20 	addi    r3,r3,8736                             
ffc1e55c:	4b fe c0 c5 	bl      ffc0a620 <_API_extensions_Add_post_switch>
                                                                      
      api = the_thread->API_Extensions[ THREAD_API_POSIX ];           
                                                                      
      if ( sig ) {                                                    
                                                                      
        if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) {  
ffc1e560:	1d 1f 00 0c 	mulli   r8,r31,12                              
       *  If sig == 0 then just validate arguments                    
       */                                                             
                                                                      
      _POSIX_signals_Add_post_switch_extension();                     
                                                                      
      api = the_thread->API_Extensions[ THREAD_API_POSIX ];           
ffc1e564:	81 3e 01 50 	lwz     r9,336(r30)                            
                                                                      
      if ( sig ) {                                                    
                                                                      
        if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) {  
ffc1e568:	3d 40 00 00 	lis     r10,0                                  
ffc1e56c:	39 4a 32 20 	addi    r10,r10,12832                          
ffc1e570:	7d 4a 42 14 	add     r10,r10,r8                             
ffc1e574:	81 4a 00 08 	lwz     r10,8(r10)                             
ffc1e578:	2f 8a 00 01 	cmpwi   cr7,r10,1                              
ffc1e57c:	41 9e 00 48 	beq-    cr7,ffc1e5c4 <pthread_kill+0xb8>       
          return 0;                                                   
        }                                                             
                                                                      
        /* XXX critical section */                                    
                                                                      
        api->signals_pending |= signo_to_mask( sig );                 
ffc1e580:	81 49 00 d4 	lwz     r10,212(r9)                            
                                                                      
static inline sigset_t signo_to_mask(                                 
  uint32_t sig                                                        
)                                                                     
{                                                                     
  return 1u << (sig - 1);                                             
ffc1e584:	3b 80 00 01 	li      r28,1                                  
ffc1e588:	7f 9d e8 30 	slw     r29,r28,r29                            
ffc1e58c:	7d 4a eb 78 	or      r10,r10,r29                            
ffc1e590:	91 49 00 d4 	stw     r10,212(r9)                            
                                                                      
        (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL );
ffc1e594:	7f c3 f3 78 	mr      r3,r30                                 
ffc1e598:	7f e4 fb 78 	mr      r4,r31                                 
ffc1e59c:	38 a0 00 00 	li      r5,0                                   
ffc1e5a0:	4b ff fe 11 	bl      ffc1e3b0 <_POSIX_signals_Unblock_thread>
                                                                      
        if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
ffc1e5a4:	3d 20 00 00 	lis     r9,0                                   
ffc1e5a8:	39 29 31 a0 	addi    r9,r9,12704                            
ffc1e5ac:	81 49 00 08 	lwz     r10,8(r9)                              
ffc1e5b0:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc1e5b4:	41 9e 00 10 	beq-    cr7,ffc1e5c4 <pthread_kill+0xb8>       
ffc1e5b8:	81 49 00 10 	lwz     r10,16(r9)                             
ffc1e5bc:	7f 9e 50 00 	cmpw    cr7,r30,r10                            
ffc1e5c0:	41 9e 00 2c 	beq-    cr7,ffc1e5ec <pthread_kill+0xe0>       
      api = the_thread->API_Extensions[ THREAD_API_POSIX ];           
                                                                      
      if ( sig ) {                                                    
                                                                      
        if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) {  
          _Thread_Enable_dispatch();                                  
ffc1e5c4:	4b fe e4 fd 	bl      ffc0cac0 <_Thread_Enable_dispatch>     
          return 0;                                                   
ffc1e5c8:	38 60 00 00 	li      r3,0                                   
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( ESRCH );                      
}                                                                     
ffc1e5cc:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc1e5d0:	83 81 00 18 	lwz     r28,24(r1)                             
ffc1e5d4:	7c 08 03 a6 	mtlr    r0                                     
ffc1e5d8:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc1e5dc:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc1e5e0:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc1e5e4:	38 21 00 28 	addi    r1,r1,40                               
ffc1e5e8:	4e 80 00 20 	blr                                            
        api->signals_pending |= signo_to_mask( sig );                 
                                                                      
        (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL );
                                                                      
        if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
	  _Thread_Dispatch_necessary = true;                                 
ffc1e5ec:	9b 89 00 0c 	stb     r28,12(r9)                             
ffc1e5f0:	4b ff ff d4 	b       ffc1e5c4 <pthread_kill+0xb8>           
                                                                      
  if ( !sig )                                                         
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
    rtems_set_errno_and_return_minus_one( EINVAL );                   
ffc1e5f4:	4b ff 4a 85 	bl      ffc13078 <__errno>                     
ffc1e5f8:	39 20 00 16 	li      r9,22                                  
ffc1e5fc:	91 23 00 00 	stw     r9,0(r3)                               
ffc1e600:	38 60 ff ff 	li      r3,-1                                  
ffc1e604:	4b ff ff c8 	b       ffc1e5cc <pthread_kill+0xc0>           
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( ESRCH );                      
ffc1e608:	4b ff 4a 71 	bl      ffc13078 <__errno>                     <== NOT EXECUTED
ffc1e60c:	39 20 00 03 	li      r9,3                                   <== NOT EXECUTED
ffc1e610:	91 23 00 00 	stw     r9,0(r3)                               <== NOT EXECUTED
ffc1e614:	38 60 ff ff 	li      r3,-1                                  <== NOT EXECUTED
ffc1e618:	4b ff ff b4 	b       ffc1e5cc <pthread_kill+0xc0>           <== NOT EXECUTED
                                                                      

ffc0ba9c <pthread_mutex_timedlock>: */ int pthread_mutex_timedlock( pthread_mutex_t *mutex, const struct timespec *abstime ) {
ffc0ba9c:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc0baa0:	7c 08 02 a6 	mflr    r0                                     
ffc0baa4:	93 c1 00 18 	stw     r30,24(r1)                             
ffc0baa8:	7c 7e 1b 78 	mr      r30,r3                                 
   *                                                                  
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
ffc0baac:	7c 83 23 78 	mr      r3,r4                                  
ffc0bab0:	38 81 00 08 	addi    r4,r1,8                                
 */                                                                   
int pthread_mutex_timedlock(                                          
  pthread_mutex_t       *mutex,                                       
  const struct timespec *abstime                                      
)                                                                     
{                                                                     
ffc0bab4:	93 e1 00 1c 	stw     r31,28(r1)                             
ffc0bab8:	90 01 00 24 	stw     r0,36(r1)                              
   *                                                                  
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
ffc0babc:	48 00 01 11 	bl      ffc0bbcc <_POSIX_Absolute_timeout_to_ticks>
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
ffc0bac0:	2f 83 00 03 	cmpwi   cr7,r3,3                               
   *                                                                  
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
ffc0bac4:	7c 7f 1b 78 	mr      r31,r3                                 
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
ffc0bac8:	41 9e 00 34 	beq-    cr7,ffc0bafc <pthread_mutex_timedlock+0x60>
    do_wait = false;                                                  
                                                                      
  lock_status = _POSIX_Mutex_Lock_support( mutex, do_wait, ticks );   
ffc0bacc:	80 a1 00 08 	lwz     r5,8(r1)                               
ffc0bad0:	7f c3 f3 78 	mr      r3,r30                                 
ffc0bad4:	38 80 00 00 	li      r4,0                                   
ffc0bad8:	4b ff fe 71 	bl      ffc0b948 <_POSIX_Mutex_Lock_support>   
   *  This service only gives us the option to block.  We used a polling
   *  attempt to lock if the abstime was not in the future.  If we did
   *  not obtain the mutex, then not look at the status immediately,  
   *  make sure the right reason is returned.                         
   */                                                                 
  if ( !do_wait && (lock_status == EBUSY) ) {                         
ffc0badc:	2f 83 00 10 	cmpwi   cr7,r3,16                              
ffc0bae0:	41 9e 00 44 	beq-    cr7,ffc0bb24 <pthread_mutex_timedlock+0x88>
         status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                    
      return ETIMEDOUT;                                               
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
ffc0bae4:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0bae8:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0baec:	7c 08 03 a6 	mtlr    r0                                     
ffc0baf0:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0baf4:	38 21 00 20 	addi    r1,r1,32                               
ffc0baf8:	4e 80 00 20 	blr                                            
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
    do_wait = false;                                                  
                                                                      
  lock_status = _POSIX_Mutex_Lock_support( mutex, do_wait, ticks );   
ffc0bafc:	80 a1 00 08 	lwz     r5,8(r1)                               
ffc0bb00:	7f c3 f3 78 	mr      r3,r30                                 
ffc0bb04:	38 80 00 01 	li      r4,1                                   
ffc0bb08:	4b ff fe 41 	bl      ffc0b948 <_POSIX_Mutex_Lock_support>   
         status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                    
      return ETIMEDOUT;                                               
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
ffc0bb0c:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0bb10:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0bb14:	7c 08 03 a6 	mtlr    r0                                     
ffc0bb18:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0bb1c:	38 21 00 20 	addi    r1,r1,32                               
ffc0bb20:	4e 80 00 20 	blr                                            
   *  attempt to lock if the abstime was not in the future.  If we did
   *  not obtain the mutex, then not look at the status immediately,  
   *  make sure the right reason is returned.                         
   */                                                                 
  if ( !do_wait && (lock_status == EBUSY) ) {                         
    if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                   
ffc0bb24:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
ffc0bb28:	40 9e 00 0c 	bne-    cr7,ffc0bb34 <pthread_mutex_timedlock+0x98><== ALWAYS TAKEN
      return EINVAL;                                                  
ffc0bb2c:	38 60 00 16 	li      r3,22                                  <== NOT EXECUTED
ffc0bb30:	4b ff ff b4 	b       ffc0bae4 <pthread_mutex_timedlock+0x48><== NOT EXECUTED
    if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||               
ffc0bb34:	3b ff ff ff 	addi    r31,r31,-1                             
ffc0bb38:	2b 9f 00 01 	cmplwi  cr7,r31,1                              
ffc0bb3c:	41 9d ff a8 	bgt+    cr7,ffc0bae4 <pthread_mutex_timedlock+0x48><== NEVER TAKEN
         status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                    
      return ETIMEDOUT;                                               
ffc0bb40:	38 60 00 74 	li      r3,116                                 
ffc0bb44:	4b ff ff a0 	b       ffc0bae4 <pthread_mutex_timedlock+0x48>
                                                                      

ffc09df8 <pthread_once>: int pthread_once( pthread_once_t *once_control, void (*init_routine)(void) ) {
ffc09df8:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc09dfc:	7c 08 02 a6 	mflr    r0                                     
ffc09e00:	93 e1 00 1c 	stw     r31,28(r1)                             
  if ( !once_control || !init_routine )                               
ffc09e04:	7c 7f 1b 79 	mr.     r31,r3                                 
                                                                      
int pthread_once(                                                     
  pthread_once_t  *once_control,                                      
  void           (*init_routine)(void)                                
)                                                                     
{                                                                     
ffc09e08:	90 01 00 24 	stw     r0,36(r1)                              
ffc09e0c:	93 c1 00 18 	stw     r30,24(r1)                             
  if ( !once_control || !init_routine )                               
ffc09e10:	41 82 00 84 	beq-    ffc09e94 <pthread_once+0x9c>           
ffc09e14:	2f 84 00 00 	cmpwi   cr7,r4,0                               
ffc09e18:	7c 9e 23 78 	mr      r30,r4                                 
    return EINVAL;                                                    
ffc09e1c:	38 60 00 16 	li      r3,22                                  
int pthread_once(                                                     
  pthread_once_t  *once_control,                                      
  void           (*init_routine)(void)                                
)                                                                     
{                                                                     
  if ( !once_control || !init_routine )                               
ffc09e20:	41 9e 00 14 	beq-    cr7,ffc09e34 <pthread_once+0x3c>       
    return EINVAL;                                                    
                                                                      
  if ( !once_control->init_executed ) {                               
ffc09e24:	81 3f 00 04 	lwz     r9,4(r31)                              
      once_control->init_executed = true;                             
      (*init_routine)();                                              
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
  }                                                                   
  return 0;                                                           
ffc09e28:	38 60 00 00 	li      r3,0                                   
)                                                                     
{                                                                     
  if ( !once_control || !init_routine )                               
    return EINVAL;                                                    
                                                                      
  if ( !once_control->init_executed ) {                               
ffc09e2c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc09e30:	41 9e 00 1c 	beq-    cr7,ffc09e4c <pthread_once+0x54>       
      (*init_routine)();                                              
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
  }                                                                   
  return 0;                                                           
}                                                                     
ffc09e34:	80 01 00 24 	lwz     r0,36(r1)                              
ffc09e38:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc09e3c:	7c 08 03 a6 	mtlr    r0                                     
ffc09e40:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc09e44:	38 21 00 20 	addi    r1,r1,32                               
ffc09e48:	4e 80 00 20 	blr                                            
  if ( !once_control || !init_routine )                               
    return EINVAL;                                                    
                                                                      
  if ( !once_control->init_executed ) {                               
    rtems_mode saveMode;                                              
    rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 
ffc09e4c:	38 60 01 00 	li      r3,256                                 
ffc09e50:	38 80 01 00 	li      r4,256                                 
ffc09e54:	38 a1 00 08 	addi    r5,r1,8                                
ffc09e58:	48 00 0f 5d 	bl      ffc0adb4 <rtems_task_mode>             
    if ( !once_control->init_executed ) {                             
ffc09e5c:	81 3f 00 04 	lwz     r9,4(r31)                              
ffc09e60:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc09e64:	41 9e 00 4c 	beq-    cr7,ffc09eb0 <pthread_once+0xb8>       <== ALWAYS TAKEN
      once_control->is_initialized = true;                            
      once_control->init_executed = true;                             
      (*init_routine)();                                              
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
ffc09e68:	80 61 00 08 	lwz     r3,8(r1)                               
ffc09e6c:	38 a1 00 08 	addi    r5,r1,8                                
ffc09e70:	38 80 01 00 	li      r4,256                                 
ffc09e74:	48 00 0f 41 	bl      ffc0adb4 <rtems_task_mode>             
  }                                                                   
  return 0;                                                           
}                                                                     
ffc09e78:	80 01 00 24 	lwz     r0,36(r1)                              
ffc09e7c:	83 c1 00 18 	lwz     r30,24(r1)                             
      once_control->init_executed = true;                             
      (*init_routine)();                                              
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
  }                                                                   
  return 0;                                                           
ffc09e80:	38 60 00 00 	li      r3,0                                   
}                                                                     
ffc09e84:	7c 08 03 a6 	mtlr    r0                                     
ffc09e88:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc09e8c:	38 21 00 20 	addi    r1,r1,32                               
ffc09e90:	4e 80 00 20 	blr                                            
ffc09e94:	80 01 00 24 	lwz     r0,36(r1)                              
  pthread_once_t  *once_control,                                      
  void           (*init_routine)(void)                                
)                                                                     
{                                                                     
  if ( !once_control || !init_routine )                               
    return EINVAL;                                                    
ffc09e98:	38 60 00 16 	li      r3,22                                  
      (*init_routine)();                                              
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
  }                                                                   
  return 0;                                                           
}                                                                     
ffc09e9c:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc09ea0:	7c 08 03 a6 	mtlr    r0                                     
ffc09ea4:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc09ea8:	38 21 00 20 	addi    r1,r1,32                               
ffc09eac:	4e 80 00 20 	blr                                            
                                                                      
  if ( !once_control->init_executed ) {                               
    rtems_mode saveMode;                                              
    rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 
    if ( !once_control->init_executed ) {                             
      once_control->is_initialized = true;                            
ffc09eb0:	39 20 00 01 	li      r9,1                                   
      once_control->init_executed = true;                             
      (*init_routine)();                                              
ffc09eb4:	7f c9 03 a6 	mtctr   r30                                    
                                                                      
  if ( !once_control->init_executed ) {                               
    rtems_mode saveMode;                                              
    rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 
    if ( !once_control->init_executed ) {                             
      once_control->is_initialized = true;                            
ffc09eb8:	91 3f 00 00 	stw     r9,0(r31)                              
      once_control->init_executed = true;                             
ffc09ebc:	91 3f 00 04 	stw     r9,4(r31)                              
      (*init_routine)();                                              
ffc09ec0:	4e 80 04 21 	bctrl                                          
ffc09ec4:	4b ff ff a4 	b       ffc09e68 <pthread_once+0x70>           
                                                                      

ffc0a1dc <pthread_rwlock_init>: int pthread_rwlock_init( pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr ) {
ffc0a1dc:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc0a1e0:	7c 08 02 a6 	mflr    r0                                     
ffc0a1e4:	93 e1 00 24 	stw     r31,36(r1)                             
  const pthread_rwlockattr_t  *the_attr;                              
                                                                      
  /*                                                                  
   *  Error check parameters                                          
   */                                                                 
  if ( !rwlock )                                                      
ffc0a1e8:	7c 7f 1b 79 	mr.     r31,r3                                 
                                                                      
int pthread_rwlock_init(                                              
  pthread_rwlock_t           *rwlock,                                 
  const pthread_rwlockattr_t *attr                                    
)                                                                     
{                                                                     
ffc0a1ec:	90 01 00 2c 	stw     r0,44(r1)                              
ffc0a1f0:	93 81 00 18 	stw     r28,24(r1)                             
ffc0a1f4:	93 a1 00 1c 	stw     r29,28(r1)                             
ffc0a1f8:	93 c1 00 20 	stw     r30,32(r1)                             
  const pthread_rwlockattr_t  *the_attr;                              
                                                                      
  /*                                                                  
   *  Error check parameters                                          
   */                                                                 
  if ( !rwlock )                                                      
ffc0a1fc:	41 82 00 1c 	beq-    ffc0a218 <pthread_rwlock_init+0x3c>    
    return EINVAL;                                                    
                                                                      
  /*                                                                  
   * If the user passed in NULL, use the default attributes           
   */                                                                 
  if ( attr ) {                                                       
ffc0a200:	2f 84 00 00 	cmpwi   cr7,r4,0                               
ffc0a204:	7c 89 23 78 	mr      r9,r4                                  
ffc0a208:	41 9e 00 9c 	beq-    cr7,ffc0a2a4 <pthread_rwlock_init+0xc8>
  }                                                                   
                                                                      
  /*                                                                  
   * Now start error checking the attributes that we are going to use 
   */                                                                 
  if ( !the_attr->is_initialized )                                    
ffc0a20c:	81 49 00 00 	lwz     r10,0(r9)                              
ffc0a210:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0a214:	40 9e 00 28 	bne-    cr7,ffc0a23c <pthread_rwlock_init+0x60><== ALWAYS TAKEN
  switch ( the_attr->process_shared ) {                               
    case PTHREAD_PROCESS_PRIVATE:    /* only supported values */      
      break;                                                          
    case PTHREAD_PROCESS_SHARED:                                      
    default:                                                          
      return EINVAL;                                                  
ffc0a218:	38 60 00 16 	li      r3,22                                  
                                                                      
  *rwlock = the_rwlock->Object.id;                                    
                                                                      
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
ffc0a21c:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc0a220:	83 81 00 18 	lwz     r28,24(r1)                             
ffc0a224:	7c 08 03 a6 	mtlr    r0                                     
ffc0a228:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc0a22c:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc0a230:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc0a234:	38 21 00 28 	addi    r1,r1,40                               
ffc0a238:	4e 80 00 20 	blr                                            
   * Now start error checking the attributes that we are going to use 
   */                                                                 
  if ( !the_attr->is_initialized )                                    
    return EINVAL;                                                    
                                                                      
  switch ( the_attr->process_shared ) {                               
ffc0a23c:	83 c9 00 04 	lwz     r30,4(r9)                              
ffc0a240:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
ffc0a244:	40 be ff d4 	bne-    cr7,ffc0a218 <pthread_rwlock_init+0x3c><== NEVER TAKEN
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc0a248:	3d 20 00 00 	lis     r9,0                                   
 */                                                                   
RTEMS_INLINE_ROUTINE void _CORE_RWLock_Initialize_attributes(         
  CORE_RWLock_Attributes *the_attributes                              
)                                                                     
{                                                                     
  the_attributes->XXX = 0;                                            
ffc0a24c:	93 c1 00 10 	stw     r30,16(r1)                             
ffc0a250:	81 49 28 a8 	lwz     r10,10408(r9)                          
                                                                      
    ++level;                                                          
ffc0a254:	39 4a 00 01 	addi    r10,r10,1                              
    _Thread_Dispatch_disable_level = level;                           
ffc0a258:	91 49 28 a8 	stw     r10,10408(r9)                          
 *  This function allocates a RWLock control block from               
 *  the inactive chain of free RWLock control blocks.                 
 */                                                                   
RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Allocate( void )
{                                                                     
  return (POSIX_RWLock_Control *)                                     
ffc0a25c:	3f 80 00 00 	lis     r28,0                                  
ffc0a260:	3b 9c 58 40 	addi    r28,r28,22592                          
ffc0a264:	7f 83 e3 78 	mr      r3,r28                                 
ffc0a268:	48 00 35 41 	bl      ffc0d7a8 <_Objects_Allocate>           
   */                                                                 
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_rwlock = _POSIX_RWLock_Allocate();                              
                                                                      
  if ( !the_rwlock ) {                                                
ffc0a26c:	7c 7d 1b 79 	mr.     r29,r3                                 
ffc0a270:	41 82 00 44 	beq-    ffc0a2b4 <pthread_rwlock_init+0xd8>    
    _Thread_Enable_dispatch();                                        
    return EAGAIN;                                                    
  }                                                                   
                                                                      
  _CORE_RWLock_Initialize( &the_rwlock->RWLock, &the_attributes );    
ffc0a274:	38 7d 00 10 	addi    r3,r29,16                              
ffc0a278:	38 81 00 10 	addi    r4,r1,16                               
ffc0a27c:	48 00 2d dd 	bl      ffc0d058 <_CORE_RWLock_Initialize>     
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
ffc0a280:	81 3d 00 08 	lwz     r9,8(r29)                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
ffc0a284:	81 1c 00 1c 	lwz     r8,28(r28)                             
ffc0a288:	55 2a 13 ba 	rlwinm  r10,r9,2,14,29                         
ffc0a28c:	7f a8 51 2e 	stwx    r29,r8,r10                             
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
ffc0a290:	93 dd 00 0c 	stw     r30,12(r29)                            
    &_POSIX_RWLock_Information,                                       
    &the_rwlock->Object,                                              
    0                                                                 
  );                                                                  
                                                                      
  *rwlock = the_rwlock->Object.id;                                    
ffc0a294:	91 3f 00 00 	stw     r9,0(r31)                              
                                                                      
  _Thread_Enable_dispatch();                                          
ffc0a298:	48 00 4c f5 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
  return 0;                                                           
ffc0a29c:	38 60 00 00 	li      r3,0                                   
ffc0a2a0:	4b ff ff 7c 	b       ffc0a21c <pthread_rwlock_init+0x40>    
   * If the user passed in NULL, use the default attributes           
   */                                                                 
  if ( attr ) {                                                       
    the_attr = attr;                                                  
  } else {                                                            
    (void) pthread_rwlockattr_init( &default_attr );                  
ffc0a2a4:	38 61 00 08 	addi    r3,r1,8                                
ffc0a2a8:	48 00 08 95 	bl      ffc0ab3c <pthread_rwlockattr_init>     
    the_attr = &default_attr;                                         
ffc0a2ac:	39 21 00 08 	addi    r9,r1,8                                
ffc0a2b0:	4b ff ff 5c 	b       ffc0a20c <pthread_rwlock_init+0x30>    
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_rwlock = _POSIX_RWLock_Allocate();                              
                                                                      
  if ( !the_rwlock ) {                                                
    _Thread_Enable_dispatch();                                        
ffc0a2b4:	48 00 4c d9 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
    return EAGAIN;                                                    
ffc0a2b8:	38 60 00 0b 	li      r3,11                                  
ffc0a2bc:	4b ff ff 60 	b       ffc0a21c <pthread_rwlock_init+0x40>    
                                                                      

ffc0a80c <pthread_rwlock_timedrdlock>: int pthread_rwlock_timedrdlock( pthread_rwlock_t *rwlock, const struct timespec *abstime ) {
ffc0a80c:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc0a810:	7c 08 02 a6 	mflr    r0                                     
ffc0a814:	93 e1 00 24 	stw     r31,36(r1)                             
  Objects_Locations                            location;              
  Watchdog_Interval                            ticks;                 
  bool                                         do_wait = true;        
  POSIX_Absolute_timeout_conversion_results_t  status;                
                                                                      
  if ( !rwlock )                                                      
ffc0a818:	7c 7f 1b 79 	mr.     r31,r3                                 
                                                                      
int pthread_rwlock_timedrdlock(                                       
  pthread_rwlock_t      *rwlock,                                      
  const struct timespec *abstime                                      
)                                                                     
{                                                                     
ffc0a81c:	90 01 00 2c 	stw     r0,44(r1)                              
ffc0a820:	93 a1 00 1c 	stw     r29,28(r1)                             
ffc0a824:	93 c1 00 20 	stw     r30,32(r1)                             
  Objects_Locations                            location;              
  Watchdog_Interval                            ticks;                 
  bool                                         do_wait = true;        
  POSIX_Absolute_timeout_conversion_results_t  status;                
                                                                      
  if ( !rwlock )                                                      
ffc0a828:	41 82 00 84 	beq-    ffc0a8ac <pthread_rwlock_timedrdlock+0xa0>
ffc0a82c:	7c 83 23 78 	mr      r3,r4                                  
   *                                                                  
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
ffc0a830:	38 81 00 08 	addi    r4,r1,8                                
ffc0a834:	48 00 79 45 	bl      ffc12178 <_POSIX_Absolute_timeout_to_ticks>
ffc0a838:	80 9f 00 00 	lwz     r4,0(r31)                              
ffc0a83c:	7c 7e 1b 78 	mr      r30,r3                                 
ffc0a840:	3c 60 00 00 	lis     r3,0                                   
ffc0a844:	38 63 2e 40 	addi    r3,r3,11840                            
ffc0a848:	38 a1 00 0c 	addi    r5,r1,12                               
ffc0a84c:	48 00 36 41 	bl      ffc0de8c <_Objects_Get>                
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
    do_wait = false;                                                  
                                                                      
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
ffc0a850:	81 21 00 0c 	lwz     r9,12(r1)                              
ffc0a854:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0a858:	40 9e 00 54 	bne-    cr7,ffc0a8ac <pthread_rwlock_timedrdlock+0xa0>
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
ffc0a85c:	6b dd 00 03 	xori    r29,r30,3                              
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      _CORE_RWLock_Obtain_for_reading(                                
ffc0a860:	80 9f 00 00 	lwz     r4,0(r31)                              
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
ffc0a864:	7f bd 00 34 	cntlzw  r29,r29                                
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      _CORE_RWLock_Obtain_for_reading(                                
ffc0a868:	80 c1 00 08 	lwz     r6,8(r1)                               
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
ffc0a86c:	57 bd d9 7e 	rlwinm  r29,r29,27,5,31                        
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      _CORE_RWLock_Obtain_for_reading(                                
ffc0a870:	38 63 00 10 	addi    r3,r3,16                               
ffc0a874:	7f a5 eb 78 	mr      r5,r29                                 
ffc0a878:	38 e0 00 00 	li      r7,0                                   
ffc0a87c:	48 00 25 69 	bl      ffc0cde4 <_CORE_RWLock_Obtain_for_reading>
	do_wait,                                                             
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
ffc0a880:	48 00 46 5d 	bl      ffc0eedc <_Thread_Enable_dispatch>     
      if ( !do_wait ) {                                               
ffc0a884:	2f 9d 00 00 	cmpwi   cr7,r29,0                              
        if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
ffc0a888:	3d 20 00 00 	lis     r9,0                                   
ffc0a88c:	81 29 31 b0 	lwz     r9,12720(r9)                           
ffc0a890:	81 29 00 34 	lwz     r9,52(r9)                              
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait ) {                                               
ffc0a894:	40 9e 00 0c 	bne-    cr7,ffc0a8a0 <pthread_rwlock_timedrdlock+0x94>
        if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
ffc0a898:	2f 89 00 02 	cmpwi   cr7,r9,2                               
ffc0a89c:	41 9e 00 30 	beq-    cr7,ffc0a8cc <pthread_rwlock_timedrdlock+0xc0>
	       status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                     
	    return ETIMEDOUT;                                                
        }                                                             
      }                                                               
                                                                      
      return _POSIX_RWLock_Translate_core_RWLock_return_code(         
ffc0a8a0:	7d 23 4b 78 	mr      r3,r9                                  
ffc0a8a4:	48 00 01 21 	bl      ffc0a9c4 <_POSIX_RWLock_Translate_core_RWLock_return_code>
ffc0a8a8:	48 00 00 08 	b       ffc0a8b0 <pthread_rwlock_timedrdlock+0xa4>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return EINVAL;                                                      
ffc0a8ac:	38 60 00 16 	li      r3,22                                  
}                                                                     
ffc0a8b0:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc0a8b4:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc0a8b8:	7c 08 03 a6 	mtlr    r0                                     
ffc0a8bc:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc0a8c0:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc0a8c4:	38 21 00 28 	addi    r1,r1,40                               
ffc0a8c8:	4e 80 00 20 	blr                                            
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait ) {                                               
        if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
	  if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                    
ffc0a8cc:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
ffc0a8d0:	41 9e ff dc 	beq+    cr7,ffc0a8ac <pthread_rwlock_timedrdlock+0xa0><== NEVER TAKEN
	    return EINVAL;                                                   
	  if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                
ffc0a8d4:	3b de ff ff 	addi    r30,r30,-1                             
ffc0a8d8:	2b 9e 00 01 	cmplwi  cr7,r30,1                              
	       status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                     
	    return ETIMEDOUT;                                                
ffc0a8dc:	38 60 00 74 	li      r3,116                                 
      _Thread_Enable_dispatch();                                      
      if ( !do_wait ) {                                               
        if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
	  if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                    
	    return EINVAL;                                                   
	  if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                
ffc0a8e0:	41 9d ff c0 	bgt+    cr7,ffc0a8a0 <pthread_rwlock_timedrdlock+0x94><== NEVER TAKEN
ffc0a8e4:	4b ff ff cc 	b       ffc0a8b0 <pthread_rwlock_timedrdlock+0xa4>
                                                                      

ffc0a8e8 <pthread_rwlock_timedwrlock>: int pthread_rwlock_timedwrlock( pthread_rwlock_t *rwlock, const struct timespec *abstime ) {
ffc0a8e8:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc0a8ec:	7c 08 02 a6 	mflr    r0                                     
ffc0a8f0:	93 e1 00 24 	stw     r31,36(r1)                             
  Objects_Locations                            location;              
  Watchdog_Interval                            ticks;                 
  bool                                         do_wait = true;        
  POSIX_Absolute_timeout_conversion_results_t  status;                
                                                                      
  if ( !rwlock )                                                      
ffc0a8f4:	7c 7f 1b 79 	mr.     r31,r3                                 
                                                                      
int pthread_rwlock_timedwrlock(                                       
  pthread_rwlock_t      *rwlock,                                      
  const struct timespec *abstime                                      
)                                                                     
{                                                                     
ffc0a8f8:	90 01 00 2c 	stw     r0,44(r1)                              
ffc0a8fc:	93 a1 00 1c 	stw     r29,28(r1)                             
ffc0a900:	93 c1 00 20 	stw     r30,32(r1)                             
  Objects_Locations                            location;              
  Watchdog_Interval                            ticks;                 
  bool                                         do_wait = true;        
  POSIX_Absolute_timeout_conversion_results_t  status;                
                                                                      
  if ( !rwlock )                                                      
ffc0a904:	41 82 00 84 	beq-    ffc0a988 <pthread_rwlock_timedwrlock+0xa0>
ffc0a908:	7c 83 23 78 	mr      r3,r4                                  
   *                                                                  
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
ffc0a90c:	38 81 00 08 	addi    r4,r1,8                                
ffc0a910:	48 00 78 69 	bl      ffc12178 <_POSIX_Absolute_timeout_to_ticks>
ffc0a914:	80 9f 00 00 	lwz     r4,0(r31)                              
ffc0a918:	7c 7e 1b 78 	mr      r30,r3                                 
ffc0a91c:	3c 60 00 00 	lis     r3,0                                   
ffc0a920:	38 63 2e 40 	addi    r3,r3,11840                            
ffc0a924:	38 a1 00 0c 	addi    r5,r1,12                               
ffc0a928:	48 00 35 65 	bl      ffc0de8c <_Objects_Get>                
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
    do_wait = false;                                                  
                                                                      
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
ffc0a92c:	81 21 00 0c 	lwz     r9,12(r1)                              
ffc0a930:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0a934:	40 9e 00 54 	bne-    cr7,ffc0a988 <pthread_rwlock_timedwrlock+0xa0>
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
ffc0a938:	6b dd 00 03 	xori    r29,r30,3                              
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      _CORE_RWLock_Obtain_for_writing(                                
ffc0a93c:	80 9f 00 00 	lwz     r4,0(r31)                              
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
ffc0a940:	7f bd 00 34 	cntlzw  r29,r29                                
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      _CORE_RWLock_Obtain_for_writing(                                
ffc0a944:	80 c1 00 08 	lwz     r6,8(r1)                               
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
ffc0a948:	57 bd d9 7e 	rlwinm  r29,r29,27,5,31                        
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      _CORE_RWLock_Obtain_for_writing(                                
ffc0a94c:	38 63 00 10 	addi    r3,r3,16                               
ffc0a950:	7f a5 eb 78 	mr      r5,r29                                 
ffc0a954:	38 e0 00 00 	li      r7,0                                   
ffc0a958:	48 00 25 bd 	bl      ffc0cf14 <_CORE_RWLock_Obtain_for_writing>
	do_wait,                                                             
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
ffc0a95c:	48 00 45 81 	bl      ffc0eedc <_Thread_Enable_dispatch>     
      if ( !do_wait &&                                                
ffc0a960:	2f 9d 00 00 	cmpwi   cr7,r29,0                              
           (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
ffc0a964:	3d 20 00 00 	lis     r9,0                                   
ffc0a968:	81 29 31 b0 	lwz     r9,12720(r9)                           
ffc0a96c:	81 29 00 34 	lwz     r9,52(r9)                              
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
ffc0a970:	40 9e 00 0c 	bne-    cr7,ffc0a97c <pthread_rwlock_timedwrlock+0x94>
ffc0a974:	2f 89 00 02 	cmpwi   cr7,r9,2                               
ffc0a978:	41 9e 00 30 	beq-    cr7,ffc0a9a8 <pthread_rwlock_timedwrlock+0xc0>
	if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                  
	     status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                       
	  return ETIMEDOUT;                                                  
      }                                                               
                                                                      
      return _POSIX_RWLock_Translate_core_RWLock_return_code(         
ffc0a97c:	7d 23 4b 78 	mr      r3,r9                                  
ffc0a980:	48 00 00 45 	bl      ffc0a9c4 <_POSIX_RWLock_Translate_core_RWLock_return_code>
ffc0a984:	48 00 00 08 	b       ffc0a98c <pthread_rwlock_timedwrlock+0xa4>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return EINVAL;                                                      
ffc0a988:	38 60 00 16 	li      r3,22                                  
}                                                                     
ffc0a98c:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc0a990:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc0a994:	7c 08 03 a6 	mtlr    r0                                     
ffc0a998:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc0a99c:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc0a9a0:	38 21 00 28 	addi    r1,r1,40                               
ffc0a9a4:	4e 80 00 20 	blr                                            
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
           (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
	if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                      
ffc0a9a8:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
ffc0a9ac:	41 9e ff dc 	beq+    cr7,ffc0a988 <pthread_rwlock_timedwrlock+0xa0><== NEVER TAKEN
	  return EINVAL;                                                     
	if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                  
ffc0a9b0:	3b de ff ff 	addi    r30,r30,-1                             
ffc0a9b4:	2b 9e 00 01 	cmplwi  cr7,r30,1                              
	     status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                       
	  return ETIMEDOUT;                                                  
ffc0a9b8:	38 60 00 74 	li      r3,116                                 
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
           (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
	if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                      
	  return EINVAL;                                                     
	if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                  
ffc0a9bc:	41 9d ff c0 	bgt+    cr7,ffc0a97c <pthread_rwlock_timedwrlock+0x94><== NEVER TAKEN
ffc0a9c0:	4b ff ff cc 	b       ffc0a98c <pthread_rwlock_timedwrlock+0xa4>
                                                                      

ffc0c66c <pthread_setschedparam>: int pthread_setschedparam( pthread_t thread, int policy, struct sched_param *param ) {
ffc0c66c:	94 21 ff d0 	stwu    r1,-48(r1)                             
ffc0c670:	7c 08 02 a6 	mflr    r0                                     
ffc0c674:	93 c1 00 28 	stw     r30,40(r1)                             
  int                                  rc;                            
                                                                      
  /*                                                                  
   *  Check all the parameters                                        
   */                                                                 
  if ( !param )                                                       
ffc0c678:	7c be 2b 79 	mr.     r30,r5                                 
int pthread_setschedparam(                                            
  pthread_t           thread,                                         
  int                 policy,                                         
  struct sched_param *param                                           
)                                                                     
{                                                                     
ffc0c67c:	93 e1 00 2c 	stw     r31,44(r1)                             
                                                                      
  /*                                                                  
   *  Check all the parameters                                        
   */                                                                 
  if ( !param )                                                       
    return EINVAL;                                                    
ffc0c680:	3b e0 00 16 	li      r31,22                                 
int pthread_setschedparam(                                            
  pthread_t           thread,                                         
  int                 policy,                                         
  struct sched_param *param                                           
)                                                                     
{                                                                     
ffc0c684:	90 01 00 34 	stw     r0,52(r1)                              
ffc0c688:	93 61 00 1c 	stw     r27,28(r1)                             
ffc0c68c:	93 81 00 20 	stw     r28,32(r1)                             
ffc0c690:	93 a1 00 24 	stw     r29,36(r1)                             
  int                                  rc;                            
                                                                      
  /*                                                                  
   *  Check all the parameters                                        
   */                                                                 
  if ( !param )                                                       
ffc0c694:	41 82 00 28 	beq-    ffc0c6bc <pthread_setschedparam+0x50>  
ffc0c698:	7c 7c 1b 78 	mr      r28,r3                                 
ffc0c69c:	7c 9d 23 78 	mr      r29,r4                                 
    return EINVAL;                                                    
                                                                      
  rc = _POSIX_Thread_Translate_sched_param(                           
ffc0c6a0:	7c 83 23 78 	mr      r3,r4                                  
ffc0c6a4:	38 a1 00 10 	addi    r5,r1,16                               
ffc0c6a8:	7f c4 f3 78 	mr      r4,r30                                 
ffc0c6ac:	38 c1 00 0c 	addi    r6,r1,12                               
ffc0c6b0:	48 00 6e e9 	bl      ffc13598 <_POSIX_Thread_Translate_sched_param>
    policy,                                                           
    param,                                                            
    &budget_algorithm,                                                
    &budget_callout                                                   
  );                                                                  
  if ( rc )                                                           
ffc0c6b4:	7c 7f 1b 79 	mr.     r31,r3                                 
ffc0c6b8:	41 82 00 2c 	beq-    ffc0c6e4 <pthread_setschedparam+0x78>  
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return ESRCH;                                                       
}                                                                     
ffc0c6bc:	80 01 00 34 	lwz     r0,52(r1)                              
ffc0c6c0:	7f e3 fb 78 	mr      r3,r31                                 
ffc0c6c4:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc0c6c8:	7c 08 03 a6 	mtlr    r0                                     
ffc0c6cc:	83 81 00 20 	lwz     r28,32(r1)                             
ffc0c6d0:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc0c6d4:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc0c6d8:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc0c6dc:	38 21 00 30 	addi    r1,r1,48                               
ffc0c6e0:	4e 80 00 20 	blr                                            
    return rc;                                                        
                                                                      
  /*                                                                  
   *  Actually change the scheduling policy and parameters            
   */                                                                 
  the_thread = _Thread_Get( thread, &location );                      
ffc0c6e4:	7f 83 e3 78 	mr      r3,r28                                 
ffc0c6e8:	38 81 00 08 	addi    r4,r1,8                                
ffc0c6ec:	48 00 39 6d 	bl      ffc10058 <_Thread_Get>                 
  switch ( location ) {                                               
ffc0c6f0:	81 21 00 08 	lwz     r9,8(r1)                               
    return rc;                                                        
                                                                      
  /*                                                                  
   *  Actually change the scheduling policy and parameters            
   */                                                                 
  the_thread = _Thread_Get( thread, &location );                      
ffc0c6f4:	7c 7b 1b 78 	mr      r27,r3                                 
  switch ( location ) {                                               
ffc0c6f8:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0c6fc:	40 9e 00 98 	bne-    cr7,ffc0c794 <pthread_setschedparam+0x128>
                                                                      
    case OBJECTS_LOCAL:                                               
      api = the_thread->API_Extensions[ THREAD_API_POSIX ];           
ffc0c700:	83 83 01 50 	lwz     r28,336(r3)                            
                                                                      
      if ( api->schedpolicy == SCHED_SPORADIC )                       
ffc0c704:	81 3c 00 84 	lwz     r9,132(r28)                            
ffc0c708:	2f 89 00 04 	cmpwi   cr7,r9,4                               
ffc0c70c:	41 9e 00 e4 	beq-    cr7,ffc0c7f0 <pthread_setschedparam+0x184>
        (void) _Watchdog_Remove( &api->Sporadic_timer );              
                                                                      
      api->schedpolicy = policy;                                      
      api->schedparam  = *param;                                      
ffc0c710:	80 fe 00 04 	lwz     r7,4(r30)                              
      the_thread->budget_algorithm = budget_algorithm;                
      the_thread->budget_callout   = budget_callout;                  
                                                                      
      switch ( api->schedpolicy ) {                                   
ffc0c714:	2f 9d 00 00 	cmpwi   cr7,r29,0                              
                                                                      
      if ( api->schedpolicy == SCHED_SPORADIC )                       
        (void) _Watchdog_Remove( &api->Sporadic_timer );              
                                                                      
      api->schedpolicy = policy;                                      
      api->schedparam  = *param;                                      
ffc0c718:	81 1e 00 08 	lwz     r8,8(r30)                              
ffc0c71c:	81 5e 00 0c 	lwz     r10,12(r30)                            
ffc0c720:	81 3e 00 00 	lwz     r9,0(r30)                              
ffc0c724:	90 fc 00 8c 	stw     r7,140(r28)                            
ffc0c728:	91 3c 00 88 	stw     r9,136(r28)                            
ffc0c72c:	91 1c 00 90 	stw     r8,144(r28)                            
ffc0c730:	91 5c 00 94 	stw     r10,148(r28)                           
ffc0c734:	81 5e 00 18 	lwz     r10,24(r30)                            
ffc0c738:	80 fe 00 10 	lwz     r7,16(r30)                             
ffc0c73c:	81 1e 00 14 	lwz     r8,20(r30)                             
ffc0c740:	91 5c 00 a0 	stw     r10,160(r28)                           
      the_thread->budget_algorithm = budget_algorithm;                
ffc0c744:	81 41 00 10 	lwz     r10,16(r1)                             
      api = the_thread->API_Extensions[ THREAD_API_POSIX ];           
                                                                      
      if ( api->schedpolicy == SCHED_SPORADIC )                       
        (void) _Watchdog_Remove( &api->Sporadic_timer );              
                                                                      
      api->schedpolicy = policy;                                      
ffc0c748:	93 bc 00 84 	stw     r29,132(r28)                           
      api->schedparam  = *param;                                      
ffc0c74c:	90 fc 00 98 	stw     r7,152(r28)                            
ffc0c750:	91 1c 00 9c 	stw     r8,156(r28)                            
      the_thread->budget_algorithm = budget_algorithm;                
ffc0c754:	91 5b 00 78 	stw     r10,120(r27)                           
      the_thread->budget_callout   = budget_callout;                  
ffc0c758:	81 41 00 0c 	lwz     r10,12(r1)                             
ffc0c75c:	91 5b 00 7c 	stw     r10,124(r27)                           
                                                                      
      switch ( api->schedpolicy ) {                                   
ffc0c760:	41 9c 00 2c 	blt-    cr7,ffc0c78c <pthread_setschedparam+0x120><== NEVER TAKEN
ffc0c764:	2f 9d 00 02 	cmpwi   cr7,r29,2                              
ffc0c768:	40 9d 00 58 	ble-    cr7,ffc0c7c0 <pthread_setschedparam+0x154>
ffc0c76c:	2f 9d 00 04 	cmpwi   cr7,r29,4                              
ffc0c770:	40 be 00 1c 	bne+    cr7,ffc0c78c <pthread_setschedparam+0x120><== NEVER TAKEN
             true                                                     
          );                                                          
          break;                                                      
                                                                      
        case SCHED_SPORADIC:                                          
          api->ss_high_priority = api->schedparam.sched_priority;     
ffc0c774:	91 3c 00 a4 	stw     r9,164(r28)                            
          _Watchdog_Remove( &api->Sporadic_timer );                   
ffc0c778:	38 7c 00 a8 	addi    r3,r28,168                             
ffc0c77c:	48 00 4c e9 	bl      ffc11464 <_Watchdog_Remove>            
          _POSIX_Threads_Sporadic_budget_TSR( 0, the_thread );        
ffc0c780:	38 60 00 00 	li      r3,0                                   
ffc0c784:	7f 64 db 78 	mr      r4,r27                                 
ffc0c788:	4b ff fd 75 	bl      ffc0c4fc <_POSIX_Threads_Sporadic_budget_TSR>
          break;                                                      
      }                                                               
                                                                      
      _Thread_Enable_dispatch();                                      
ffc0c78c:	48 00 38 b1 	bl      ffc1003c <_Thread_Enable_dispatch>     
ffc0c790:	4b ff ff 2c 	b       ffc0c6bc <pthread_setschedparam+0x50>  
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return ESRCH;                                                       
}                                                                     
ffc0c794:	80 01 00 34 	lwz     r0,52(r1)                              
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return ESRCH;                                                       
ffc0c798:	3b e0 00 03 	li      r31,3                                  
}                                                                     
ffc0c79c:	7f e3 fb 78 	mr      r3,r31                                 
ffc0c7a0:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc0c7a4:	7c 08 03 a6 	mtlr    r0                                     
ffc0c7a8:	83 81 00 20 	lwz     r28,32(r1)                             
ffc0c7ac:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc0c7b0:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc0c7b4:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc0c7b8:	38 21 00 30 	addi    r1,r1,48                               
ffc0c7bc:	4e 80 00 20 	blr                                            
ffc0c7c0:	3d 40 00 00 	lis     r10,0                                  
ffc0c7c4:	88 8a 27 c4 	lbz     r4,10180(r10)                          
                                                                      
      switch ( api->schedpolicy ) {                                   
        case SCHED_OTHER:                                             
        case SCHED_FIFO:                                              
        case SCHED_RR:                                                
          the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;  
ffc0c7c8:	3d 40 00 00 	lis     r10,0                                  
ffc0c7cc:	81 4a 28 e0 	lwz     r10,10464(r10)                         
                                                                      
          the_thread->real_priority =                                 
            _POSIX_Priority_To_core( api->schedparam.sched_priority );
                                                                      
          _Thread_Change_priority(                                    
ffc0c7d0:	7f 63 db 78 	mr      r3,r27                                 
ffc0c7d4:	7c 89 20 50 	subf    r4,r9,r4                               
                                                                      
      switch ( api->schedpolicy ) {                                   
        case SCHED_OTHER:                                             
        case SCHED_FIFO:                                              
        case SCHED_RR:                                                
          the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;  
ffc0c7d8:	91 5b 00 74 	stw     r10,116(r27)                           
                                                                      
          the_thread->real_priority =                                 
            _POSIX_Priority_To_core( api->schedparam.sched_priority );
                                                                      
          _Thread_Change_priority(                                    
ffc0c7dc:	38 a0 00 01 	li      r5,1                                   
        case SCHED_OTHER:                                             
        case SCHED_FIFO:                                              
        case SCHED_RR:                                                
          the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;  
                                                                      
          the_thread->real_priority =                                 
ffc0c7e0:	90 9b 00 18 	stw     r4,24(r27)                             
            _POSIX_Priority_To_core( api->schedparam.sched_priority );
                                                                      
          _Thread_Change_priority(                                    
ffc0c7e4:	48 00 31 cd 	bl      ffc0f9b0 <_Thread_Change_priority>     
          _Watchdog_Remove( &api->Sporadic_timer );                   
          _POSIX_Threads_Sporadic_budget_TSR( 0, the_thread );        
          break;                                                      
      }                                                               
                                                                      
      _Thread_Enable_dispatch();                                      
ffc0c7e8:	48 00 38 55 	bl      ffc1003c <_Thread_Enable_dispatch>     
ffc0c7ec:	4b ff fe d0 	b       ffc0c6bc <pthread_setschedparam+0x50>  
                                                                      
    case OBJECTS_LOCAL:                                               
      api = the_thread->API_Extensions[ THREAD_API_POSIX ];           
                                                                      
      if ( api->schedpolicy == SCHED_SPORADIC )                       
        (void) _Watchdog_Remove( &api->Sporadic_timer );              
ffc0c7f0:	38 7c 00 a8 	addi    r3,r28,168                             
ffc0c7f4:	48 00 4c 71 	bl      ffc11464 <_Watchdog_Remove>            
ffc0c7f8:	4b ff ff 18 	b       ffc0c710 <pthread_setschedparam+0xa4>  
                                                                      

ffc09b20 <pthread_testcancel>: /* * 18.2.2 Setting Cancelability State, P1003.1c/Draft 10, p. 183 */ void pthread_testcancel( void ) {
ffc09b20:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc09b24:	7c 08 02 a6 	mflr    r0                                     
ffc09b28:	93 e1 00 0c 	stw     r31,12(r1)                             
   *  Don't even think about deleting a resource from an ISR.         
   *  Besides this request is supposed to be for _Thread_Executing    
   *  and the ISR context is not a thread.                            
   */                                                                 
                                                                      
  if ( _ISR_Is_in_progress() )                                        
ffc09b2c:	3f e0 00 00 	lis     r31,0                                  
ffc09b30:	3b ff 31 60 	addi    r31,r31,12640                          
/*                                                                    
 *  18.2.2 Setting Cancelability State, P1003.1c/Draft 10, p. 183     
 */                                                                   
                                                                      
void pthread_testcancel( void )                                       
{                                                                     
ffc09b34:	90 01 00 14 	stw     r0,20(r1)                              
   *  Don't even think about deleting a resource from an ISR.         
   *  Besides this request is supposed to be for _Thread_Executing    
   *  and the ISR context is not a thread.                            
   */                                                                 
                                                                      
  if ( _ISR_Is_in_progress() )                                        
ffc09b38:	81 3f 00 08 	lwz     r9,8(r31)                              
ffc09b3c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc09b40:	40 9e 00 68 	bne-    cr7,ffc09ba8 <pthread_testcancel+0x88> <== NEVER TAKEN
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc09b44:	3d 20 00 00 	lis     r9,0                                   
    return;                                                           
                                                                      
  thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
ffc09b48:	81 5f 00 10 	lwz     r10,16(r31)                            
ffc09b4c:	81 09 28 68 	lwz     r8,10344(r9)                           
ffc09b50:	81 4a 01 50 	lwz     r10,336(r10)                           
                                                                      
    ++level;                                                          
ffc09b54:	39 08 00 01 	addi    r8,r8,1                                
    _Thread_Dispatch_disable_level = level;                           
ffc09b58:	91 09 28 68 	stw     r8,10344(r9)                           
                                                                      
  _Thread_Disable_dispatch();                                         
    if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
ffc09b5c:	81 2a 00 d8 	lwz     r9,216(r10)                            
ffc09b60:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc09b64:	40 9e 00 30 	bne-    cr7,ffc09b94 <pthread_testcancel+0x74> <== NEVER TAKEN
ffc09b68:	81 2a 00 e0 	lwz     r9,224(r10)                            
ffc09b6c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc09b70:	41 9e 00 24 	beq-    cr7,ffc09b94 <pthread_testcancel+0x74> 
         thread_support->cancelation_requested )                      
      cancel = true;                                                  
  _Thread_Enable_dispatch();                                          
ffc09b74:	48 00 36 f5 	bl      ffc0d268 <_Thread_Enable_dispatch>     
                                                                      
  if ( cancel )                                                       
    _POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED );        
}                                                                     
ffc09b78:	80 01 00 14 	lwz     r0,20(r1)                              
         thread_support->cancelation_requested )                      
      cancel = true;                                                  
  _Thread_Enable_dispatch();                                          
                                                                      
  if ( cancel )                                                       
    _POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED );        
ffc09b7c:	80 7f 00 10 	lwz     r3,16(r31)                             
ffc09b80:	38 80 ff ff 	li      r4,-1                                  
}                                                                     
ffc09b84:	7c 08 03 a6 	mtlr    r0                                     
ffc09b88:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc09b8c:	38 21 00 10 	addi    r1,r1,16                               
         thread_support->cancelation_requested )                      
      cancel = true;                                                  
  _Thread_Enable_dispatch();                                          
                                                                      
  if ( cancel )                                                       
    _POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED );        
ffc09b90:	48 00 6c d0 	b       ffc10860 <_POSIX_Thread_Exit>          
}                                                                     
ffc09b94:	80 01 00 14 	lwz     r0,20(r1)                              
ffc09b98:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc09b9c:	7c 08 03 a6 	mtlr    r0                                     
ffc09ba0:	38 21 00 10 	addi    r1,r1,16                               
                                                                      
  _Thread_Disable_dispatch();                                         
    if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
         thread_support->cancelation_requested )                      
      cancel = true;                                                  
  _Thread_Enable_dispatch();                                          
ffc09ba4:	48 00 36 c4 	b       ffc0d268 <_Thread_Enable_dispatch>     
                                                                      
  if ( cancel )                                                       
    _POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED );        
}                                                                     
ffc09ba8:	80 01 00 14 	lwz     r0,20(r1)                              <== NOT EXECUTED
ffc09bac:	83 e1 00 0c 	lwz     r31,12(r1)                             <== NOT EXECUTED
ffc09bb0:	7c 08 03 a6 	mtlr    r0                                     <== NOT EXECUTED
ffc09bb4:	38 21 00 10 	addi    r1,r1,16                               <== NOT EXECUTED
ffc09bb8:	4e 80 00 20 	blr                                            <== NOT EXECUTED
                                                                      

ffc0a0a4 <rtems_aio_enqueue>: * errno - otherwise */ int rtems_aio_enqueue (rtems_aio_request *req) {
ffc0a0a4:	94 21 ff b0 	stwu    r1,-80(r1)                             
ffc0a0a8:	7c 08 02 a6 	mflr    r0                                     
ffc0a0ac:	93 c1 00 48 	stw     r30,72(r1)                             
  struct sched_param param;                                           
                                                                      
  /* The queue should be initialized */                               
  AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
                                                                      
  result = pthread_mutex_lock (&aio_request_queue.mutex);             
ffc0a0b0:	3f c0 00 00 	lis     r30,0                                  
ffc0a0b4:	3b de 2b b8 	addi    r30,r30,11192                          
 *         errno     - otherwise                                      
 */                                                                   
                                                                      
int                                                                   
rtems_aio_enqueue (rtems_aio_request *req)                            
{                                                                     
ffc0a0b8:	93 e1 00 4c 	stw     r31,76(r1)                             
ffc0a0bc:	7c 7f 1b 78 	mr      r31,r3                                 
  struct sched_param param;                                           
                                                                      
  /* The queue should be initialized */                               
  AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
                                                                      
  result = pthread_mutex_lock (&aio_request_queue.mutex);             
ffc0a0c0:	7f c3 f3 78 	mr      r3,r30                                 
 *         errno     - otherwise                                      
 */                                                                   
                                                                      
int                                                                   
rtems_aio_enqueue (rtems_aio_request *req)                            
{                                                                     
ffc0a0c4:	93 a1 00 44 	stw     r29,68(r1)                             
ffc0a0c8:	90 01 00 54 	stw     r0,84(r1)                              
ffc0a0cc:	93 61 00 3c 	stw     r27,60(r1)                             
ffc0a0d0:	93 81 00 40 	stw     r28,64(r1)                             
  struct sched_param param;                                           
                                                                      
  /* The queue should be initialized */                               
  AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
                                                                      
  result = pthread_mutex_lock (&aio_request_queue.mutex);             
ffc0a0d4:	48 00 0d 0d 	bl      ffc0ade0 <pthread_mutex_lock>          
  if (result != 0) {                                                  
ffc0a0d8:	7c 7d 1b 79 	mr.     r29,r3                                 
ffc0a0dc:	40 82 00 d4 	bne-    ffc0a1b0 <rtems_aio_enqueue+0x10c>     <== NEVER TAKEN
    return result;                                                    
  }                                                                   
                                                                      
  /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
     we can use aio_reqprio to lower the priority of the request */   
  pthread_getschedparam (pthread_self(), &policy, ¶m);            
ffc0a0e0:	48 00 18 25 	bl      ffc0b904 <pthread_self>                
ffc0a0e4:	38 81 00 24 	addi    r4,r1,36                               
ffc0a0e8:	38 a1 00 08 	addi    r5,r1,8                                
ffc0a0ec:	48 00 12 d9 	bl      ffc0b3c4 <pthread_getschedparam>       
                                                                      
  req->caller_thread = pthread_self ();                               
ffc0a0f0:	48 00 18 15 	bl      ffc0b904 <pthread_self>                
  req->priority = param.sched_priority - req->aiocbp->aio_reqprio;    
  req->policy = policy;                                               
  req->aiocbp->error_code = EINPROGRESS;                              
  req->aiocbp->return_value = 0;                                      
                                                                      
  if ((aio_request_queue.idle_threads == 0) &&                        
ffc0a0f4:	81 5e 00 68 	lwz     r10,104(r30)                           
  /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
     we can use aio_reqprio to lower the priority of the request */   
  pthread_getschedparam (pthread_self(), &policy, ¶m);            
                                                                      
  req->caller_thread = pthread_self ();                               
  req->priority = param.sched_priority - req->aiocbp->aio_reqprio;    
ffc0a0f8:	81 3f 00 14 	lwz     r9,20(r31)                             
  req->policy = policy;                                               
  req->aiocbp->error_code = EINPROGRESS;                              
  req->aiocbp->return_value = 0;                                      
                                                                      
  if ((aio_request_queue.idle_threads == 0) &&                        
ffc0a0fc:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
  /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
     we can use aio_reqprio to lower the priority of the request */   
  pthread_getschedparam (pthread_self(), &policy, ¶m);            
                                                                      
  req->caller_thread = pthread_self ();                               
  req->priority = param.sched_priority - req->aiocbp->aio_reqprio;    
ffc0a100:	81 01 00 08 	lwz     r8,8(r1)                               
ffc0a104:	81 49 00 18 	lwz     r10,24(r9)                             
                                                                      
  /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
     we can use aio_reqprio to lower the priority of the request */   
  pthread_getschedparam (pthread_self(), &policy, ¶m);            
                                                                      
  req->caller_thread = pthread_self ();                               
ffc0a108:	90 7f 00 10 	stw     r3,16(r31)                             
  req->priority = param.sched_priority - req->aiocbp->aio_reqprio;    
ffc0a10c:	7d 0a 40 50 	subf    r8,r10,r8                              
ffc0a110:	91 1f 00 0c 	stw     r8,12(r31)                             
  req->policy = policy;                                               
ffc0a114:	81 01 00 24 	lwz     r8,36(r1)                              
ffc0a118:	91 1f 00 08 	stw     r8,8(r31)                              
  req->aiocbp->error_code = EINPROGRESS;                              
ffc0a11c:	39 00 00 77 	li      r8,119                                 
ffc0a120:	91 09 00 34 	stw     r8,52(r9)                              
  req->aiocbp->return_value = 0;                                      
ffc0a124:	93 a9 00 38 	stw     r29,56(r9)                             
                                                                      
  if ((aio_request_queue.idle_threads == 0) &&                        
ffc0a128:	40 9e 00 10 	bne-    cr7,ffc0a138 <rtems_aio_enqueue+0x94>  <== NEVER TAKEN
ffc0a12c:	81 5e 00 64 	lwz     r10,100(r30)                           
ffc0a130:	2f 8a 00 04 	cmpwi   cr7,r10,4                              
ffc0a134:	40 9d 00 ac 	ble-    cr7,ffc0a1e0 <rtems_aio_enqueue+0x13c> 
  else                                                                
    {                                                                 
      /* the maximum number of threads has been already created       
	 even though some of them might be idle.                             
	 The request belongs to one of the active fd chain */                
      r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,     
ffc0a138:	3f 60 00 00 	lis     r27,0                                  
ffc0a13c:	80 89 00 00 	lwz     r4,0(r9)                               
ffc0a140:	3b 7b 2c 00 	addi    r27,r27,11264                          
ffc0a144:	7f 63 db 78 	mr      r3,r27                                 
ffc0a148:	38 a0 00 00 	li      r5,0                                   
ffc0a14c:	4b ff fc f9 	bl      ffc09e44 <rtems_aio_search_fd>         
				     req->aiocbp->aio_fildes, 0);                                 
      if (r_chain != NULL)                                            
ffc0a150:	7c 7c 1b 79 	mr.     r28,r3                                 
ffc0a154:	41 82 01 04 	beq-    ffc0a258 <rtems_aio_enqueue+0x1b4>     
	{                                                                    
	  pthread_mutex_lock (&r_chain->mutex);                              
ffc0a158:	3b 7c 00 1c 	addi    r27,r28,28                             
ffc0a15c:	7f 63 db 78 	mr      r3,r27                                 
ffc0a160:	48 00 0c 81 	bl      ffc0ade0 <pthread_mutex_lock>          
	  rtems_aio_insert_prio (&r_chain->perfd, req);                      
ffc0a164:	38 7c 00 08 	addi    r3,r28,8                               
ffc0a168:	7f e4 fb 78 	mr      r4,r31                                 
ffc0a16c:	4b ff fb 35 	bl      ffc09ca0 <rtems_aio_insert_prio>       
	  pthread_cond_signal (&r_chain->cond);                              
ffc0a170:	38 7c 00 20 	addi    r3,r28,32                              
ffc0a174:	48 00 06 39 	bl      ffc0a7ac <pthread_cond_signal>         
	  pthread_mutex_unlock (&r_chain->mutex);                            
ffc0a178:	7f 63 db 78 	mr      r3,r27                                 
ffc0a17c:	48 00 0d 15 	bl      ffc0ae90 <pthread_mutex_unlock>        
	if (aio_request_queue.idle_threads > 0)                              
	  pthread_cond_signal (&aio_request_queue.new_req);                  
      }                                                               
    }                                                                 
                                                                      
  pthread_mutex_unlock (&aio_request_queue.mutex);                    
ffc0a180:	7f c3 f3 78 	mr      r3,r30                                 
ffc0a184:	48 00 0d 0d 	bl      ffc0ae90 <pthread_mutex_unlock>        
  return 0;                                                           
}                                                                     
ffc0a188:	80 01 00 54 	lwz     r0,84(r1)                              
ffc0a18c:	7f a3 eb 78 	mr      r3,r29                                 
ffc0a190:	83 61 00 3c 	lwz     r27,60(r1)                             
ffc0a194:	7c 08 03 a6 	mtlr    r0                                     
ffc0a198:	83 81 00 40 	lwz     r28,64(r1)                             
ffc0a19c:	83 a1 00 44 	lwz     r29,68(r1)                             
ffc0a1a0:	83 c1 00 48 	lwz     r30,72(r1)                             
ffc0a1a4:	83 e1 00 4c 	lwz     r31,76(r1)                             
ffc0a1a8:	38 21 00 50 	addi    r1,r1,80                               
ffc0a1ac:	4e 80 00 20 	blr                                            
  /* The queue should be initialized */                               
  AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
                                                                      
  result = pthread_mutex_lock (&aio_request_queue.mutex);             
  if (result != 0) {                                                  
    free (req);                                                       
ffc0a1b0:	7f e3 fb 78 	mr      r3,r31                                 <== NOT EXECUTED
ffc0a1b4:	4b ff ac 91 	bl      ffc04e44 <free>                        <== NOT EXECUTED
      }                                                               
    }                                                                 
                                                                      
  pthread_mutex_unlock (&aio_request_queue.mutex);                    
  return 0;                                                           
}                                                                     
ffc0a1b8:	80 01 00 54 	lwz     r0,84(r1)                              <== NOT EXECUTED
ffc0a1bc:	7f a3 eb 78 	mr      r3,r29                                 <== NOT EXECUTED
ffc0a1c0:	83 61 00 3c 	lwz     r27,60(r1)                             <== NOT EXECUTED
ffc0a1c4:	7c 08 03 a6 	mtlr    r0                                     <== NOT EXECUTED
ffc0a1c8:	83 81 00 40 	lwz     r28,64(r1)                             <== NOT EXECUTED
ffc0a1cc:	83 a1 00 44 	lwz     r29,68(r1)                             <== NOT EXECUTED
ffc0a1d0:	83 c1 00 48 	lwz     r30,72(r1)                             <== NOT EXECUTED
ffc0a1d4:	83 e1 00 4c 	lwz     r31,76(r1)                             <== NOT EXECUTED
ffc0a1d8:	38 21 00 50 	addi    r1,r1,80                               <== NOT EXECUTED
ffc0a1dc:	4e 80 00 20 	blr                                            <== NOT EXECUTED
  if ((aio_request_queue.idle_threads == 0) &&                        
      aio_request_queue.active_threads < AIO_MAX_THREADS)             
    /* we still have empty places on the active_threads chain */      
    {                                                                 
      chain = &aio_request_queue.work_req;                            
      r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
ffc0a1e0:	80 89 00 00 	lwz     r4,0(r9)                               
ffc0a1e4:	38 7e 00 48 	addi    r3,r30,72                              
ffc0a1e8:	38 a0 00 01 	li      r5,1                                   
ffc0a1ec:	4b ff fc 59 	bl      ffc09e44 <rtems_aio_search_fd>         
                                                                      
      if (r_chain->new_fd == 1) {                                     
ffc0a1f0:	81 23 00 18 	lwz     r9,24(r3)                              
  if ((aio_request_queue.idle_threads == 0) &&                        
      aio_request_queue.active_threads < AIO_MAX_THREADS)             
    /* we still have empty places on the active_threads chain */      
    {                                                                 
      chain = &aio_request_queue.work_req;                            
      r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
ffc0a1f4:	7c 7c 1b 78 	mr      r28,r3                                 
                                                                      
      if (r_chain->new_fd == 1) {                                     
ffc0a1f8:	2f 89 00 01 	cmpwi   cr7,r9,1                               
ffc0a1fc:	40 9e ff 5c 	bne+    cr7,ffc0a158 <rtems_aio_enqueue+0xb4>  
RTEMS_INLINE_ROUTINE void _Chain_Prepend(                             
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  _Chain_Insert(_Chain_Head(the_chain), the_node);                    
ffc0a200:	7f e4 fb 78 	mr      r4,r31                                 
ffc0a204:	38 63 00 08 	addi    r3,r3,8                                
ffc0a208:	48 00 2d 85 	bl      ffc0cf8c <_Chain_Insert>               
	rtems_chain_prepend (&r_chain->perfd, &req->next_prio);              
	r_chain->new_fd = 0;                                                 
ffc0a20c:	93 bc 00 18 	stw     r29,24(r28)                            
	pthread_mutex_init (&r_chain->mutex, NULL);                          
ffc0a210:	38 80 00 00 	li      r4,0                                   
ffc0a214:	38 7c 00 1c 	addi    r3,r28,28                              
ffc0a218:	48 00 0a 39 	bl      ffc0ac50 <pthread_mutex_init>          
	pthread_cond_init (&r_chain->cond, NULL);                            
ffc0a21c:	38 80 00 00 	li      r4,0                                   
ffc0a220:	38 7c 00 20 	addi    r3,r28,32                              
ffc0a224:	48 00 04 99 	bl      ffc0a6bc <pthread_cond_init>           
	                                                                     
	AIO_printf ("New thread \n");                                        
	result = pthread_create (&thid, &aio_request_queue.attr,             
ffc0a228:	3c a0 ff c1 	lis     r5,-63                                 
ffc0a22c:	38 61 00 28 	addi    r3,r1,40                               
ffc0a230:	38 9e 00 08 	addi    r4,r30,8                               
ffc0a234:	38 a5 99 ac 	addi    r5,r5,-26196                           
ffc0a238:	7f 86 e3 78 	mr      r6,r28                                 
ffc0a23c:	48 00 0e 79 	bl      ffc0b0b4 <pthread_create>              
				 rtems_aio_handle, (void *) r_chain);                             
	if (result != 0) {                                                   
ffc0a240:	7c 7f 1b 79 	mr.     r31,r3                                 
ffc0a244:	40 82 00 80 	bne-    ffc0a2c4 <rtems_aio_enqueue+0x220>     <== NEVER TAKEN
	  pthread_mutex_unlock (&aio_request_queue.mutex);                   
	  return result;                                                     
	}                                                                    
	++aio_request_queue.active_threads;                                  
ffc0a248:	81 3e 00 64 	lwz     r9,100(r30)                            
ffc0a24c:	39 29 00 01 	addi    r9,r9,1                                
ffc0a250:	91 3e 00 64 	stw     r9,100(r30)                            
ffc0a254:	4b ff ff 2c 	b       ffc0a180 <rtems_aio_enqueue+0xdc>      
	                                                                     
	} else {                                                             
                                                                      
	/* or to the idle chain */                                           
	chain = &aio_request_queue.idle_req;                                 
	r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);   
ffc0a258:	81 3f 00 14 	lwz     r9,20(r31)                             
ffc0a25c:	38 7b 00 0c 	addi    r3,r27,12                              
ffc0a260:	38 a0 00 01 	li      r5,1                                   
ffc0a264:	80 89 00 00 	lwz     r4,0(r9)                               
ffc0a268:	4b ff fb dd 	bl      ffc09e44 <rtems_aio_search_fd>         
ffc0a26c:	7f e4 fb 78 	mr      r4,r31                                 
                                                                      
	if (r_chain->new_fd == 1) {                                          
ffc0a270:	81 23 00 18 	lwz     r9,24(r3)                              
	                                                                     
	} else {                                                             
                                                                      
	/* or to the idle chain */                                           
	chain = &aio_request_queue.idle_req;                                 
	r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);   
ffc0a274:	7c 7b 1b 78 	mr      r27,r3                                 
ffc0a278:	38 63 00 08 	addi    r3,r3,8                                
                                                                      
	if (r_chain->new_fd == 1) {                                          
ffc0a27c:	2f 89 00 01 	cmpwi   cr7,r9,1                               
ffc0a280:	41 9e 00 20 	beq-    cr7,ffc0a2a0 <rtems_aio_enqueue+0x1fc> 
	  r_chain->new_fd = 0;                                               
	  pthread_mutex_init (&r_chain->mutex, NULL);                        
	  pthread_cond_init (&r_chain->cond, NULL);                          
	} else                                                               
	  /* just insert the request in the existing fd chain */             
	  rtems_aio_insert_prio (&r_chain->perfd, req);                      
ffc0a284:	4b ff fa 1d 	bl      ffc09ca0 <rtems_aio_insert_prio>       
	if (aio_request_queue.idle_threads > 0)                              
ffc0a288:	81 3e 00 68 	lwz     r9,104(r30)                            
ffc0a28c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0a290:	40 bd fe f0 	ble-    cr7,ffc0a180 <rtems_aio_enqueue+0xdc>  <== ALWAYS TAKEN
	  pthread_cond_signal (&aio_request_queue.new_req);                  
ffc0a294:	38 7e 00 04 	addi    r3,r30,4                               <== NOT EXECUTED
ffc0a298:	48 00 05 15 	bl      ffc0a7ac <pthread_cond_signal>         <== NOT EXECUTED
ffc0a29c:	4b ff fe e4 	b       ffc0a180 <rtems_aio_enqueue+0xdc>      <== NOT EXECUTED
ffc0a2a0:	48 00 2c ed 	bl      ffc0cf8c <_Chain_Insert>               
	if (r_chain->new_fd == 1) {                                          
	  /* If this is a new fd chain we signal the idle threads that       
	     might be waiting for requests */                                
	  AIO_printf (" New chain on waiting queue \n ");                    
	  rtems_chain_prepend (&r_chain->perfd, &req->next_prio);            
	  r_chain->new_fd = 0;                                               
ffc0a2a4:	93 9b 00 18 	stw     r28,24(r27)                            
	  pthread_mutex_init (&r_chain->mutex, NULL);                        
ffc0a2a8:	38 7b 00 1c 	addi    r3,r27,28                              
ffc0a2ac:	38 80 00 00 	li      r4,0                                   
ffc0a2b0:	48 00 09 a1 	bl      ffc0ac50 <pthread_mutex_init>          
	  pthread_cond_init (&r_chain->cond, NULL);                          
ffc0a2b4:	38 7b 00 20 	addi    r3,r27,32                              
ffc0a2b8:	38 80 00 00 	li      r4,0                                   
ffc0a2bc:	48 00 04 01 	bl      ffc0a6bc <pthread_cond_init>           
ffc0a2c0:	4b ff ff c8 	b       ffc0a288 <rtems_aio_enqueue+0x1e4>     
	                                                                     
	AIO_printf ("New thread \n");                                        
	result = pthread_create (&thid, &aio_request_queue.attr,             
				 rtems_aio_handle, (void *) r_chain);                             
	if (result != 0) {                                                   
	  pthread_mutex_unlock (&aio_request_queue.mutex);                   
ffc0a2c4:	7f c3 f3 78 	mr      r3,r30                                 <== NOT EXECUTED
ffc0a2c8:	48 00 0b c9 	bl      ffc0ae90 <pthread_mutex_unlock>        <== NOT EXECUTED
ffc0a2cc:	7f fd fb 78 	mr      r29,r31                                <== NOT EXECUTED
ffc0a2d0:	4b ff fe b8 	b       ffc0a188 <rtems_aio_enqueue+0xe4>      <== NOT EXECUTED
                                                                      

ffc099ac <rtems_aio_handle>: * NULL - if error */ static void * rtems_aio_handle (void *arg) {
ffc099ac:	94 21 ff 98 	stwu    r1,-104(r1)                            
ffc099b0:	7c 08 02 a6 	mflr    r0                                     
ffc099b4:	93 21 00 4c 	stw     r25,76(r1)                             
      struct timespec timeout;                                        
                                                                      
      AIO_printf ("Chain is empty [WQ], wait for work\n");            
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
      pthread_mutex_lock (&aio_request_queue.mutex);                  
ffc099b8:	3f 20 00 00 	lis     r25,0                                  
ffc099bc:	3b 39 2b b8 	addi    r25,r25,11192                          
 *        NULL       - if error                                       
 */                                                                   
                                                                      
static void *                                                         
rtems_aio_handle (void *arg)                                          
{                                                                     
ffc099c0:	90 01 00 6c 	stw     r0,108(r1)                             
ffc099c4:	93 c1 00 60 	stw     r30,96(r1)                             
ffc099c8:	93 e1 00 64 	stw     r31,100(r1)                            
ffc099cc:	92 a1 00 3c 	stw     r21,60(r1)                             
	      --aio_request_queue.active_threads;                            
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
	      timeout.tv_sec += 3;                                           
	      timeout.tv_nsec = 0;                                           
                                                                      
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
ffc099d0:	3a b9 00 04 	addi    r21,r25,4                              
 *        NULL       - if error                                       
 */                                                                   
                                                                      
static void *                                                         
rtems_aio_handle (void *arg)                                          
{                                                                     
ffc099d4:	92 c1 00 40 	stw     r22,64(r1)                             
	    pthread_cond_destroy (&r_chain->cond);                           
	    free (r_chain);                                                  
	                                                                     
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
ffc099d8:	3a d9 00 58 	addi    r22,r25,88                             
 *        NULL       - if error                                       
 */                                                                   
                                                                      
static void *                                                         
rtems_aio_handle (void *arg)                                          
{                                                                     
ffc099dc:	92 e1 00 44 	stw     r23,68(r1)                             
  rtems_chain_node *node;                                             
                                                                      
  node = rtems_chain_first (&aio_request_queue.work_req);             
  temp = (rtems_aio_request_chain *) node;                            
                                                                      
  while (temp->fildes < r_chain->fildes &&                            
ffc099e0:	3a f9 00 4c 	addi    r23,r25,76                             
 *        NULL       - if error                                       
 */                                                                   
                                                                      
static void *                                                         
rtems_aio_handle (void *arg)                                          
{                                                                     
ffc099e4:	93 01 00 48 	stw     r24,72(r1)                             
                                                                      
      default:                                                        
        result = -1;                                                  
      }                                                               
      if (result == -1) {                                             
        req->aiocbp->return_value = -1;                               
ffc099e8:	3b 00 ff ff 	li      r24,-1                                 
 *        NULL       - if error                                       
 */                                                                   
                                                                      
static void *                                                         
rtems_aio_handle (void *arg)                                          
{                                                                     
ffc099ec:	93 41 00 50 	stw     r26,80(r1)                             
      struct timespec timeout;                                        
                                                                      
      AIO_printf ("Chain is empty [WQ], wait for work\n");            
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
      pthread_mutex_lock (&aio_request_queue.mutex);                  
ffc099f0:	7f 3a cb 78 	mr      r26,r25                                
 *        NULL       - if error                                       
 */                                                                   
                                                                      
static void *                                                         
rtems_aio_handle (void *arg)                                          
{                                                                     
ffc099f4:	93 61 00 54 	stw     r27,84(r1)                             
      if (result == -1) {                                             
        req->aiocbp->return_value = -1;                               
	req->aiocbp->error_code = errno;                                     
      } else {                                                        
        req->aiocbp->return_value = result;                           
        req->aiocbp->error_code = 0;                                  
ffc099f8:	3b 60 00 00 	li      r27,0                                  
 *        NULL       - if error                                       
 */                                                                   
                                                                      
static void *                                                         
rtems_aio_handle (void *arg)                                          
{                                                                     
ffc099fc:	93 81 00 58 	stw     r28,88(r1)                             
ffc09a00:	3b 83 00 1c 	addi    r28,r3,28                              
ffc09a04:	93 a1 00 5c 	stw     r29,92(r1)                             
ffc09a08:	7c 7d 1b 78 	mr      r29,r3                                 
    /* acquire the mutex of the current fd chain.                     
       we don't need to lock the queue mutex since we can             
       add requests to idle fd chains or even active ones             
       if the working request has been extracted from the             
       chain */                                                       
    result = pthread_mutex_lock (&r_chain->mutex);                    
ffc09a0c:	7f 83 e3 78 	mr      r3,r28                                 
ffc09a10:	48 00 13 d1 	bl      ffc0ade0 <pthread_mutex_lock>          
    if (result != 0)                                                  
ffc09a14:	7c 7e 1b 79 	mr.     r30,r3                                 
ffc09a18:	40 82 00 8c 	bne-    ffc09aa4 <rtems_aio_handle+0xf8>       <== NEVER TAKEN
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
ffc09a1c:	83 fd 00 08 	lwz     r31,8(r29)                             
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
ffc09a20:	39 3d 00 0c 	addi    r9,r29,12                              
                                                                      
    /* If the locked chain is not empty, take the first               
       request extract it, unlock the chain and process               
       the request, in this way the user can supply more              
       requests to this fd chain */                                   
    if (!rtems_chain_is_empty (chain)) {                              
ffc09a24:	7f 9f 48 00 	cmpw    cr7,r31,r9                             
ffc09a28:	41 9e 01 14 	beq-    cr7,ffc09b3c <rtems_aio_handle+0x190>  
      node = rtems_chain_first (chain);                               
      req = (rtems_aio_request *) node;                               
                                                                      
      /* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING      
	 discussion in rtems_aio_enqueue () */                               
      pthread_getschedparam (pthread_self(), &policy, ¶m);        
ffc09a2c:	48 00 1e d9 	bl      ffc0b904 <pthread_self>                
ffc09a30:	38 81 00 2c 	addi    r4,r1,44                               
ffc09a34:	38 a1 00 08 	addi    r5,r1,8                                
ffc09a38:	48 00 19 8d 	bl      ffc0b3c4 <pthread_getschedparam>       
      param.sched_priority = req->priority;                           
ffc09a3c:	81 3f 00 0c 	lwz     r9,12(r31)                             
ffc09a40:	91 21 00 08 	stw     r9,8(r1)                               
      pthread_setschedparam (pthread_self(), req->policy, ¶m);    
ffc09a44:	48 00 1e c1 	bl      ffc0b904 <pthread_self>                
ffc09a48:	38 a1 00 08 	addi    r5,r1,8                                
ffc09a4c:	80 9f 00 08 	lwz     r4,8(r31)                              
ffc09a50:	48 00 1e c5 	bl      ffc0b914 <pthread_setschedparam>       
ffc09a54:	7f e3 fb 78 	mr      r3,r31                                 
ffc09a58:	48 00 34 cd 	bl      ffc0cf24 <_Chain_Extract>              
                                                                      
      rtems_chain_extract (node);                                     
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
ffc09a5c:	7f 83 e3 78 	mr      r3,r28                                 
ffc09a60:	48 00 14 31 	bl      ffc0ae90 <pthread_mutex_unlock>        
                                                                      
      switch (req->aiocbp->aio_lio_opcode) {                          
ffc09a64:	83 df 00 14 	lwz     r30,20(r31)                            
ffc09a68:	81 3e 00 30 	lwz     r9,48(r30)                             
ffc09a6c:	2f 89 00 02 	cmpwi   cr7,r9,2                               
ffc09a70:	41 9e 00 b0 	beq-    cr7,ffc09b20 <rtems_aio_handle+0x174>  
ffc09a74:	2f 89 00 03 	cmpwi   cr7,r9,3                               
ffc09a78:	41 9e 00 9c 	beq-    cr7,ffc09b14 <rtems_aio_handle+0x168>  <== NEVER TAKEN
ffc09a7c:	2f 89 00 01 	cmpwi   cr7,r9,1                               
ffc09a80:	41 9e 00 64 	beq-    cr7,ffc09ae4 <rtems_aio_handle+0x138>  <== ALWAYS TAKEN
                                                                      
      default:                                                        
        result = -1;                                                  
      }                                                               
      if (result == -1) {                                             
        req->aiocbp->return_value = -1;                               
ffc09a84:	93 1e 00 38 	stw     r24,56(r30)                            <== NOT EXECUTED
	req->aiocbp->error_code = errno;                                     
ffc09a88:	48 00 be 29 	bl      ffc158b0 <__errno>                     <== NOT EXECUTED
ffc09a8c:	81 23 00 00 	lwz     r9,0(r3)                               <== NOT EXECUTED
    /* acquire the mutex of the current fd chain.                     
       we don't need to lock the queue mutex since we can             
       add requests to idle fd chains or even active ones             
       if the working request has been extracted from the             
       chain */                                                       
    result = pthread_mutex_lock (&r_chain->mutex);                    
ffc09a90:	7f 83 e3 78 	mr      r3,r28                                 <== NOT EXECUTED
      default:                                                        
        result = -1;                                                  
      }                                                               
      if (result == -1) {                                             
        req->aiocbp->return_value = -1;                               
	req->aiocbp->error_code = errno;                                     
ffc09a94:	91 3e 00 34 	stw     r9,52(r30)                             <== NOT EXECUTED
    /* acquire the mutex of the current fd chain.                     
       we don't need to lock the queue mutex since we can             
       add requests to idle fd chains or even active ones             
       if the working request has been extracted from the             
       chain */                                                       
    result = pthread_mutex_lock (&r_chain->mutex);                    
ffc09a98:	48 00 13 49 	bl      ffc0ade0 <pthread_mutex_lock>          <== NOT EXECUTED
    if (result != 0)                                                  
ffc09a9c:	7c 7e 1b 79 	mr.     r30,r3                                 <== NOT EXECUTED
ffc09aa0:	41 82 ff 7c 	beq+    ffc09a1c <rtems_aio_handle+0x70>       <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
ffc09aa4:	80 01 00 6c 	lwz     r0,108(r1)                             
ffc09aa8:	38 60 00 00 	li      r3,0                                   
ffc09aac:	82 a1 00 3c 	lwz     r21,60(r1)                             
ffc09ab0:	7c 08 03 a6 	mtlr    r0                                     
ffc09ab4:	82 c1 00 40 	lwz     r22,64(r1)                             
ffc09ab8:	82 e1 00 44 	lwz     r23,68(r1)                             
ffc09abc:	83 01 00 48 	lwz     r24,72(r1)                             
ffc09ac0:	83 21 00 4c 	lwz     r25,76(r1)                             
ffc09ac4:	83 41 00 50 	lwz     r26,80(r1)                             
ffc09ac8:	83 61 00 54 	lwz     r27,84(r1)                             
ffc09acc:	83 81 00 58 	lwz     r28,88(r1)                             
ffc09ad0:	83 a1 00 5c 	lwz     r29,92(r1)                             
ffc09ad4:	83 c1 00 60 	lwz     r30,96(r1)                             
ffc09ad8:	83 e1 00 64 	lwz     r31,100(r1)                            
ffc09adc:	38 21 00 68 	addi    r1,r1,104                              
ffc09ae0:	4e 80 00 20 	blr                                            
      pthread_mutex_unlock (&r_chain->mutex);                         
                                                                      
      switch (req->aiocbp->aio_lio_opcode) {                          
      case LIO_READ:                                                  
	AIO_printf ("read\n");                                               
        result = pread (req->aiocbp->aio_fildes,                      
ffc09ae4:	80 7e 00 00 	lwz     r3,0(r30)                              
ffc09ae8:	80 9e 00 10 	lwz     r4,16(r30)                             
ffc09aec:	80 be 00 14 	lwz     r5,20(r30)                             
ffc09af0:	80 fe 00 08 	lwz     r7,8(r30)                              
ffc09af4:	81 1e 00 0c 	lwz     r8,12(r30)                             
ffc09af8:	48 00 cc d5 	bl      ffc167cc <pread>                       
      	break;                                                         
                                                                      
      default:                                                        
        result = -1;                                                  
      }                                                               
      if (result == -1) {                                             
ffc09afc:	2f 83 ff ff 	cmpwi   cr7,r3,-1                              
ffc09b00:	41 9e 01 80 	beq-    cr7,ffc09c80 <rtems_aio_handle+0x2d4>  <== NEVER TAKEN
        req->aiocbp->return_value = -1;                               
	req->aiocbp->error_code = errno;                                     
      } else {                                                        
        req->aiocbp->return_value = result;                           
ffc09b04:	81 3f 00 14 	lwz     r9,20(r31)                             
ffc09b08:	90 69 00 38 	stw     r3,56(r9)                              
        req->aiocbp->error_code = 0;                                  
ffc09b0c:	93 69 00 34 	stw     r27,52(r9)                             
ffc09b10:	4b ff fe fc 	b       ffc09a0c <rtems_aio_handle+0x60>       
                         req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
        break;                                                        
                                                                      
      case LIO_SYNC:                                                  
	AIO_printf ("sync\n");                                               
      	result = fsync (req->aiocbp->aio_fildes);                      
ffc09b14:	80 7e 00 00 	lwz     r3,0(r30)                              <== NOT EXECUTED
ffc09b18:	48 00 7f 65 	bl      ffc11a7c <fsync>                       <== NOT EXECUTED
      	break;                                                         
ffc09b1c:	4b ff ff e0 	b       ffc09afc <rtems_aio_handle+0x150>      <== NOT EXECUTED
                        req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
        break;                                                        
                                                                      
      case LIO_WRITE:                                                 
	AIO_printf ("write\n");                                              
        result = pwrite (req->aiocbp->aio_fildes,                     
ffc09b20:	80 7e 00 00 	lwz     r3,0(r30)                              
ffc09b24:	80 9e 00 10 	lwz     r4,16(r30)                             
ffc09b28:	80 be 00 14 	lwz     r5,20(r30)                             
ffc09b2c:	80 fe 00 08 	lwz     r7,8(r30)                              
ffc09b30:	81 1e 00 0c 	lwz     r8,12(r30)                             
ffc09b34:	48 00 cd d5 	bl      ffc16908 <pwrite>                      
                         (void *) req->aiocbp->aio_buf,               
                         req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
        break;                                                        
ffc09b38:	4b ff ff c4 	b       ffc09afc <rtems_aio_handle+0x150>      
                                                                      
      struct timespec timeout;                                        
                                                                      
      AIO_printf ("Chain is empty [WQ], wait for work\n");            
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
ffc09b3c:	7f 83 e3 78 	mr      r3,r28                                 
ffc09b40:	48 00 13 51 	bl      ffc0ae90 <pthread_mutex_unlock>        
      pthread_mutex_lock (&aio_request_queue.mutex);                  
ffc09b44:	7f 43 d3 78 	mr      r3,r26                                 
ffc09b48:	48 00 12 99 	bl      ffc0ade0 <pthread_mutex_lock>          
                                                                      
      if (rtems_chain_is_empty (chain))                               
ffc09b4c:	81 3d 00 08 	lwz     r9,8(r29)                              
ffc09b50:	7f 9f 48 00 	cmpw    cr7,r31,r9                             
ffc09b54:	41 9e 00 10 	beq-    cr7,ffc09b64 <rtems_aio_handle+0x1b8>  <== ALWAYS TAKEN
	                                                                     
	  }                                                                  
	}                                                                    
      /* If there was a request added in the initial fd chain then release
	 the mutex and process it */                                         
      pthread_mutex_unlock (&aio_request_queue.mutex);                
ffc09b58:	7f 43 d3 78 	mr      r3,r26                                 
ffc09b5c:	48 00 13 35 	bl      ffc0ae90 <pthread_mutex_unlock>        
ffc09b60:	4b ff fe ac 	b       ffc09a0c <rtems_aio_handle+0x60>       
      pthread_mutex_unlock (&r_chain->mutex);                         
      pthread_mutex_lock (&aio_request_queue.mutex);                  
                                                                      
      if (rtems_chain_is_empty (chain))                               
	{                                                                    
	  clock_gettime (CLOCK_REALTIME, &timeout);                          
ffc09b64:	38 81 00 24 	addi    r4,r1,36                               
ffc09b68:	38 60 00 01 	li      r3,1                                   
ffc09b6c:	48 00 08 f9 	bl      ffc0a464 <clock_gettime>               
	  timeout.tv_sec += 3;                                               
ffc09b70:	81 21 00 24 	lwz     r9,36(r1)                              
	  timeout.tv_nsec = 0;                                               
	  result = pthread_cond_timedwait (&r_chain->cond,                   
ffc09b74:	3b fd 00 20 	addi    r31,r29,32                             
                                                                      
      if (rtems_chain_is_empty (chain))                               
	{                                                                    
	  clock_gettime (CLOCK_REALTIME, &timeout);                          
	  timeout.tv_sec += 3;                                               
	  timeout.tv_nsec = 0;                                               
ffc09b78:	93 c1 00 28 	stw     r30,40(r1)                             
      pthread_mutex_lock (&aio_request_queue.mutex);                  
                                                                      
      if (rtems_chain_is_empty (chain))                               
	{                                                                    
	  clock_gettime (CLOCK_REALTIME, &timeout);                          
	  timeout.tv_sec += 3;                                               
ffc09b7c:	39 29 00 03 	addi    r9,r9,3                                
	  timeout.tv_nsec = 0;                                               
	  result = pthread_cond_timedwait (&r_chain->cond,                   
ffc09b80:	7f e3 fb 78 	mr      r3,r31                                 
      pthread_mutex_lock (&aio_request_queue.mutex);                  
                                                                      
      if (rtems_chain_is_empty (chain))                               
	{                                                                    
	  clock_gettime (CLOCK_REALTIME, &timeout);                          
	  timeout.tv_sec += 3;                                               
ffc09b84:	91 21 00 24 	stw     r9,36(r1)                              
	  timeout.tv_nsec = 0;                                               
	  result = pthread_cond_timedwait (&r_chain->cond,                   
ffc09b88:	7f 44 d3 78 	mr      r4,r26                                 
ffc09b8c:	38 a1 00 24 	addi    r5,r1,36                               
ffc09b90:	48 00 0c d5 	bl      ffc0a864 <pthread_cond_timedwait>      
					   &aio_request_queue.mutex,                                     
					   &timeout);                                                    
                                                                      
	  /* If no requests were added to the chain we delete the fd chain from
	     the queue and start working with idle fd chains */              
	  if (result == ETIMEDOUT) {                                         
ffc09b94:	2f 83 00 74 	cmpwi   cr7,r3,116                             
ffc09b98:	40 9e ff c0 	bne+    cr7,ffc09b58 <rtems_aio_handle+0x1ac>  <== NEVER TAKEN
ffc09b9c:	7f a3 eb 78 	mr      r3,r29                                 
ffc09ba0:	48 00 33 85 	bl      ffc0cf24 <_Chain_Extract>              
	    rtems_chain_extract (&r_chain->next_fd);                         
	    pthread_mutex_destroy (&r_chain->mutex);                         
ffc09ba4:	7f 83 e3 78 	mr      r3,r28                                 
ffc09ba8:	48 00 0e 91 	bl      ffc0aa38 <pthread_mutex_destroy>       
	    pthread_cond_destroy (&r_chain->cond);                           
ffc09bac:	7f e3 fb 78 	mr      r3,r31                                 
ffc09bb0:	48 00 09 cd 	bl      ffc0a57c <pthread_cond_destroy>        
	    free (r_chain);                                                  
ffc09bb4:	7f a3 eb 78 	mr      r3,r29                                 
ffc09bb8:	4b ff b2 8d 	bl      ffc04e44 <free>                        
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
ffc09bbc:	83 ba 00 54 	lwz     r29,84(r26)                            
	                                                                     
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
ffc09bc0:	7f 9d b0 00 	cmpw    cr7,r29,r22                            
ffc09bc4:	41 9e 00 68 	beq-    cr7,ffc09c2c <rtems_aio_handle+0x280>  
	      }                                                              
	    }                                                                
	    /* Otherwise move this chain to the working chain and            
	       start the loop all over again */                              
	    AIO_printf ("Work on idle\n");                                   
	    --aio_request_queue.idle_threads;                                
ffc09bc8:	81 59 00 68 	lwz     r10,104(r25)                           
ffc09bcc:	7f a3 eb 78 	mr      r3,r29                                 
	    ++aio_request_queue.active_threads;                              
ffc09bd0:	81 39 00 64 	lwz     r9,100(r25)                            
	      }                                                              
	    }                                                                
	    /* Otherwise move this chain to the working chain and            
	       start the loop all over again */                              
	    AIO_printf ("Work on idle\n");                                   
	    --aio_request_queue.idle_threads;                                
ffc09bd4:	39 4a ff ff 	addi    r10,r10,-1                             
	    ++aio_request_queue.active_threads;                              
ffc09bd8:	39 29 00 01 	addi    r9,r9,1                                
	      }                                                              
	    }                                                                
	    /* Otherwise move this chain to the working chain and            
	       start the loop all over again */                              
	    AIO_printf ("Work on idle\n");                                   
	    --aio_request_queue.idle_threads;                                
ffc09bdc:	91 59 00 68 	stw     r10,104(r25)                           
	    ++aio_request_queue.active_threads;                              
ffc09be0:	91 39 00 64 	stw     r9,100(r25)                            
ffc09be4:	48 00 33 41 	bl      ffc0cf24 <_Chain_Extract>              
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
ffc09be8:	81 39 00 48 	lwz     r9,72(r25)                             
  rtems_chain_node *node;                                             
                                                                      
  node = rtems_chain_first (&aio_request_queue.work_req);             
  temp = (rtems_aio_request_chain *) node;                            
                                                                      
  while (temp->fildes < r_chain->fildes &&                            
ffc09bec:	81 1d 00 14 	lwz     r8,20(r29)                             
ffc09bf0:	81 49 00 14 	lwz     r10,20(r9)                             
ffc09bf4:	7f 88 50 00 	cmpw    cr7,r8,r10                             
ffc09bf8:	40 9d 00 20 	ble-    cr7,ffc09c18 <rtems_aio_handle+0x26c>  <== NEVER TAKEN
ffc09bfc:	7f 89 b8 00 	cmpw    cr7,r9,r23                             
ffc09c00:	41 9e 00 18 	beq-    cr7,ffc09c18 <rtems_aio_handle+0x26c>  <== NEVER TAKEN
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
ffc09c04:	81 29 00 00 	lwz     r9,0(r9)                               
  rtems_chain_node *node;                                             
                                                                      
  node = rtems_chain_first (&aio_request_queue.work_req);             
  temp = (rtems_aio_request_chain *) node;                            
                                                                      
  while (temp->fildes < r_chain->fildes &&                            
ffc09c08:	81 49 00 14 	lwz     r10,20(r9)                             
ffc09c0c:	7f 89 b8 00 	cmpw    cr7,r9,r23                             
ffc09c10:	7f 0a 40 00 	cmpw    cr6,r10,r8                             
ffc09c14:	41 98 ff ec 	blt+    cr6,ffc09c00 <rtems_aio_handle+0x254>  
RTEMS_INLINE_ROUTINE void rtems_chain_insert(                         
  rtems_chain_node *after_node,                                       
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Insert( after_node, the_node );                              
ffc09c18:	80 69 00 04 	lwz     r3,4(r9)                               
ffc09c1c:	7f a4 eb 78 	mr      r4,r29                                 
ffc09c20:	3b 9d 00 1c 	addi    r28,r29,28                             
ffc09c24:	48 00 33 69 	bl      ffc0cf8c <_Chain_Insert>               
ffc09c28:	4b ff ff 30 	b       ffc09b58 <rtems_aio_handle+0x1ac>      
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
	      AIO_printf ("Chain is empty [IQ], wait for work\n");	          
                                                                      
	      ++aio_request_queue.idle_threads;                              
ffc09c2c:	81 5a 00 68 	lwz     r10,104(r26)                           
	      --aio_request_queue.active_threads;                            
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
ffc09c30:	38 81 00 24 	addi    r4,r1,36                               
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
	      AIO_printf ("Chain is empty [IQ], wait for work\n");	          
                                                                      
	      ++aio_request_queue.idle_threads;                              
	      --aio_request_queue.active_threads;                            
ffc09c34:	81 3a 00 64 	lwz     r9,100(r26)                            
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
ffc09c38:	38 60 00 01 	li      r3,1                                   
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
	      AIO_printf ("Chain is empty [IQ], wait for work\n");	          
                                                                      
	      ++aio_request_queue.idle_threads;                              
ffc09c3c:	39 4a 00 01 	addi    r10,r10,1                              
	      --aio_request_queue.active_threads;                            
ffc09c40:	39 29 ff ff 	addi    r9,r9,-1                               
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
	      AIO_printf ("Chain is empty [IQ], wait for work\n");	          
                                                                      
	      ++aio_request_queue.idle_threads;                              
ffc09c44:	91 5a 00 68 	stw     r10,104(r26)                           
	      --aio_request_queue.active_threads;                            
ffc09c48:	91 3a 00 64 	stw     r9,100(r26)                            
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
ffc09c4c:	48 00 08 19 	bl      ffc0a464 <clock_gettime>               
	      timeout.tv_sec += 3;                                           
	      timeout.tv_nsec = 0;                                           
                                                                      
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
ffc09c50:	7e a3 ab 78 	mr      r3,r21                                 
	      AIO_printf ("Chain is empty [IQ], wait for work\n");	          
                                                                      
	      ++aio_request_queue.idle_threads;                              
	      --aio_request_queue.active_threads;                            
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
	      timeout.tv_sec += 3;                                           
ffc09c54:	81 21 00 24 	lwz     r9,36(r1)                              
	      timeout.tv_nsec = 0;                                           
                                                                      
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
ffc09c58:	7f 44 d3 78 	mr      r4,r26                                 
ffc09c5c:	38 a1 00 24 	addi    r5,r1,36                               
                                                                      
	      ++aio_request_queue.idle_threads;                              
	      --aio_request_queue.active_threads;                            
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
	      timeout.tv_sec += 3;                                           
	      timeout.tv_nsec = 0;                                           
ffc09c60:	93 c1 00 28 	stw     r30,40(r1)                             
	      AIO_printf ("Chain is empty [IQ], wait for work\n");	          
                                                                      
	      ++aio_request_queue.idle_threads;                              
	      --aio_request_queue.active_threads;                            
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
	      timeout.tv_sec += 3;                                           
ffc09c64:	39 29 00 03 	addi    r9,r9,3                                
ffc09c68:	91 21 00 24 	stw     r9,36(r1)                              
	      timeout.tv_nsec = 0;                                           
                                                                      
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
ffc09c6c:	48 00 0b f9 	bl      ffc0a864 <pthread_cond_timedwait>      
					       &aio_request_queue.mutex,                                 
					       &timeout);                                                
	                                                                     
	      /* If no new fd chain was added in the idle requests           
		 then this thread is finished */                                    
	      if (result == ETIMEDOUT) {                                     
ffc09c70:	2f 83 00 74 	cmpwi   cr7,r3,116                             
ffc09c74:	41 9e 00 14 	beq-    cr7,ffc09c88 <rtems_aio_handle+0x2dc>  <== ALWAYS TAKEN
ffc09c78:	83 ba 00 54 	lwz     r29,84(r26)                            <== NOT EXECUTED
ffc09c7c:	4b ff ff 4c 	b       ffc09bc8 <rtems_aio_handle+0x21c>      <== NOT EXECUTED
ffc09c80:	83 df 00 14 	lwz     r30,20(r31)                            <== NOT EXECUTED
ffc09c84:	4b ff fe 00 	b       ffc09a84 <rtems_aio_handle+0xd8>       <== NOT EXECUTED
		AIO_printf ("Etimeout\n");                                          
		--aio_request_queue.idle_threads;                                   
ffc09c88:	81 3a 00 68 	lwz     r9,104(r26)                            
		pthread_mutex_unlock (&aio_request_queue.mutex);                    
ffc09c8c:	7f 43 d3 78 	mr      r3,r26                                 
	                                                                     
	      /* If no new fd chain was added in the idle requests           
		 then this thread is finished */                                    
	      if (result == ETIMEDOUT) {                                     
		AIO_printf ("Etimeout\n");                                          
		--aio_request_queue.idle_threads;                                   
ffc09c90:	39 29 ff ff 	addi    r9,r9,-1                               
ffc09c94:	91 3a 00 68 	stw     r9,104(r26)                            
		pthread_mutex_unlock (&aio_request_queue.mutex);                    
ffc09c98:	48 00 11 f9 	bl      ffc0ae90 <pthread_mutex_unlock>        
ffc09c9c:	4b ff fe 08 	b       ffc09aa4 <rtems_aio_handle+0xf8>       
                                                                      

ffc09cf8 <rtems_aio_init>: * 0 - if initialization succeeded */ int rtems_aio_init (void) {
ffc09cf8:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc09cfc:	7c 08 02 a6 	mflr    r0                                     
ffc09d00:	93 c1 00 10 	stw     r30,16(r1)                             
  int result = 0;                                                     
                                                                      
  result = pthread_attr_init (&aio_request_queue.attr);               
ffc09d04:	3f c0 00 00 	lis     r30,0                                  
ffc09d08:	3b de 2b c0 	addi    r30,r30,11200                          
ffc09d0c:	7f c3 f3 78 	mr      r3,r30                                 
 *        0    -    if initialization succeeded                       
 */                                                                   
                                                                      
int                                                                   
rtems_aio_init (void)                                                 
{                                                                     
ffc09d10:	93 a1 00 0c 	stw     r29,12(r1)                             
ffc09d14:	90 01 00 1c 	stw     r0,28(r1)                              
ffc09d18:	93 e1 00 14 	stw     r31,20(r1)                             
  int result = 0;                                                     
                                                                      
  result = pthread_attr_init (&aio_request_queue.attr);               
ffc09d1c:	48 00 13 25 	bl      ffc0b040 <pthread_attr_init>           
  if (result != 0)                                                    
ffc09d20:	7c 7d 1b 79 	mr.     r29,r3                                 
ffc09d24:	41 82 00 24 	beq-    ffc09d48 <rtems_aio_init+0x50>         <== ALWAYS TAKEN
  aio_request_queue.active_threads = 0;                               
  aio_request_queue.idle_threads = 0;                                 
  aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;              
                                                                      
  return result;                                                      
}                                                                     
ffc09d28:	80 01 00 1c 	lwz     r0,28(r1)                              <== NOT EXECUTED
ffc09d2c:	7f a3 eb 78 	mr      r3,r29                                 <== NOT EXECUTED
ffc09d30:	83 c1 00 10 	lwz     r30,16(r1)                             <== NOT EXECUTED
ffc09d34:	7c 08 03 a6 	mtlr    r0                                     <== NOT EXECUTED
ffc09d38:	83 a1 00 0c 	lwz     r29,12(r1)                             <== NOT EXECUTED
ffc09d3c:	83 e1 00 14 	lwz     r31,20(r1)                             <== NOT EXECUTED
ffc09d40:	38 21 00 18 	addi    r1,r1,24                               <== NOT EXECUTED
ffc09d44:	4e 80 00 20 	blr                                            <== NOT EXECUTED
                                                                      
  result = pthread_attr_init (&aio_request_queue.attr);               
  if (result != 0)                                                    
    return result;                                                    
                                                                      
  result =                                                            
ffc09d48:	7f c3 f3 78 	mr      r3,r30                                 
ffc09d4c:	38 80 00 00 	li      r4,0                                   
ffc09d50:	48 00 13 31 	bl      ffc0b080 <pthread_attr_setdetachstate> 
    pthread_attr_setdetachstate (&aio_request_queue.attr,             
                                 PTHREAD_CREATE_DETACHED);            
  if (result != 0)                                                    
ffc09d54:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc09d58:	40 9e 00 94 	bne-    cr7,ffc09dec <rtems_aio_init+0xf4>     <== NEVER TAKEN
    pthread_attr_destroy (&aio_request_queue.attr);                   
                                                                      
                                                                      
  result = pthread_mutex_init (&aio_request_queue.mutex, NULL);       
ffc09d5c:	3f e0 00 00 	lis     r31,0                                  
ffc09d60:	3b ff 2b b8 	addi    r31,r31,11192                          
ffc09d64:	7f e3 fb 78 	mr      r3,r31                                 
ffc09d68:	38 80 00 00 	li      r4,0                                   
ffc09d6c:	48 00 0e e5 	bl      ffc0ac50 <pthread_mutex_init>          
  if (result != 0)                                                    
ffc09d70:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc09d74:	40 9e 00 9c 	bne-    cr7,ffc09e10 <rtems_aio_init+0x118>    <== NEVER TAKEN
    pthread_attr_destroy (&aio_request_queue.attr);                   
                                                                      
                                                                      
  result = pthread_cond_init (&aio_request_queue.new_req, NULL);      
ffc09d78:	3c 60 00 00 	lis     r3,0                                   
ffc09d7c:	38 63 2b bc 	addi    r3,r3,11196                            
ffc09d80:	38 80 00 00 	li      r4,0                                   
ffc09d84:	48 00 09 39 	bl      ffc0a6bc <pthread_cond_init>           
  if (result != 0) {                                                  
ffc09d88:	7c 7d 1b 79 	mr.     r29,r3                                 
ffc09d8c:	40 82 00 a4 	bne-    ffc09e30 <rtems_aio_init+0x138>        <== NEVER TAKEN
  aio_request_queue.active_threads = 0;                               
  aio_request_queue.idle_threads = 0;                                 
  aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;              
                                                                      
  return result;                                                      
}                                                                     
ffc09d90:	80 01 00 1c 	lwz     r0,28(r1)                              
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
ffc09d94:	39 20 00 00 	li      r9,0                                   
ffc09d98:	91 3f 00 4c 	stw     r9,76(r31)                             
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
ffc09d9c:	38 df 00 4c 	addi    r6,r31,76                              
ffc09da0:	7c 08 03 a6 	mtlr    r0                                     
  head->previous = NULL;                                              
  tail->previous = head;                                              
ffc09da4:	38 ff 00 48 	addi    r7,r31,72                              
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
ffc09da8:	91 3f 00 58 	stw     r9,88(r31)                             
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
ffc09dac:	39 1f 00 58 	addi    r8,r31,88                              
  head->previous = NULL;                                              
  tail->previous = head;                                              
ffc09db0:	39 5f 00 54 	addi    r10,r31,84                             
  }                                                                   
                                                                      
  rtems_chain_initialize_empty (&aio_request_queue.work_req);         
  rtems_chain_initialize_empty (&aio_request_queue.idle_req);         
                                                                      
  aio_request_queue.active_threads = 0;                               
ffc09db4:	91 3f 00 64 	stw     r9,100(r31)                            
  aio_request_queue.idle_threads = 0;                                 
  aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;              
                                                                      
  return result;                                                      
}                                                                     
ffc09db8:	7f a3 eb 78 	mr      r3,r29                                 
                                                                      
  rtems_chain_initialize_empty (&aio_request_queue.work_req);         
  rtems_chain_initialize_empty (&aio_request_queue.idle_req);         
                                                                      
  aio_request_queue.active_threads = 0;                               
  aio_request_queue.idle_threads = 0;                                 
ffc09dbc:	91 3f 00 68 	stw     r9,104(r31)                            
  aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;              
ffc09dc0:	61 29 b0 0b 	ori     r9,r9,45067                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
ffc09dc4:	90 df 00 48 	stw     r6,72(r31)                             
  head->previous = NULL;                                              
  tail->previous = head;                                              
ffc09dc8:	90 ff 00 50 	stw     r7,80(r31)                             
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
ffc09dcc:	91 1f 00 54 	stw     r8,84(r31)                             
  head->previous = NULL;                                              
  tail->previous = head;                                              
ffc09dd0:	91 5f 00 5c 	stw     r10,92(r31)                            
ffc09dd4:	91 3f 00 60 	stw     r9,96(r31)                             
                                                                      
  return result;                                                      
}                                                                     
ffc09dd8:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc09ddc:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc09de0:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc09de4:	38 21 00 18 	addi    r1,r1,24                               
ffc09de8:	4e 80 00 20 	blr                                            
                                 PTHREAD_CREATE_DETACHED);            
  if (result != 0)                                                    
    pthread_attr_destroy (&aio_request_queue.attr);                   
                                                                      
                                                                      
  result = pthread_mutex_init (&aio_request_queue.mutex, NULL);       
ffc09dec:	3f e0 00 00 	lis     r31,0                                  <== NOT EXECUTED
                                                                      
  result =                                                            
    pthread_attr_setdetachstate (&aio_request_queue.attr,             
                                 PTHREAD_CREATE_DETACHED);            
  if (result != 0)                                                    
    pthread_attr_destroy (&aio_request_queue.attr);                   
ffc09df0:	7f c3 f3 78 	mr      r3,r30                                 <== NOT EXECUTED
                                                                      
                                                                      
  result = pthread_mutex_init (&aio_request_queue.mutex, NULL);       
ffc09df4:	3b ff 2b b8 	addi    r31,r31,11192                          <== NOT EXECUTED
                                                                      
  result =                                                            
    pthread_attr_setdetachstate (&aio_request_queue.attr,             
                                 PTHREAD_CREATE_DETACHED);            
  if (result != 0)                                                    
    pthread_attr_destroy (&aio_request_queue.attr);                   
ffc09df8:	48 00 12 19 	bl      ffc0b010 <pthread_attr_destroy>        <== NOT EXECUTED
                                                                      
                                                                      
  result = pthread_mutex_init (&aio_request_queue.mutex, NULL);       
ffc09dfc:	7f e3 fb 78 	mr      r3,r31                                 <== NOT EXECUTED
ffc09e00:	38 80 00 00 	li      r4,0                                   <== NOT EXECUTED
ffc09e04:	48 00 0e 4d 	bl      ffc0ac50 <pthread_mutex_init>          <== NOT EXECUTED
  if (result != 0)                                                    
ffc09e08:	2f 83 00 00 	cmpwi   cr7,r3,0                               <== NOT EXECUTED
ffc09e0c:	41 9e ff 6c 	beq+    cr7,ffc09d78 <rtems_aio_init+0x80>     <== NOT EXECUTED
    pthread_attr_destroy (&aio_request_queue.attr);                   
ffc09e10:	7f c3 f3 78 	mr      r3,r30                                 <== NOT EXECUTED
ffc09e14:	48 00 11 fd 	bl      ffc0b010 <pthread_attr_destroy>        <== NOT EXECUTED
                                                                      
                                                                      
  result = pthread_cond_init (&aio_request_queue.new_req, NULL);      
ffc09e18:	3c 60 00 00 	lis     r3,0                                   <== NOT EXECUTED
ffc09e1c:	38 63 2b bc 	addi    r3,r3,11196                            <== NOT EXECUTED
ffc09e20:	38 80 00 00 	li      r4,0                                   <== NOT EXECUTED
ffc09e24:	48 00 08 99 	bl      ffc0a6bc <pthread_cond_init>           <== NOT EXECUTED
  if (result != 0) {                                                  
ffc09e28:	7c 7d 1b 79 	mr.     r29,r3                                 <== NOT EXECUTED
ffc09e2c:	41 82 ff 64 	beq+    ffc09d90 <rtems_aio_init+0x98>         <== NOT EXECUTED
    pthread_mutex_destroy (&aio_request_queue.mutex);                 
ffc09e30:	7f e3 fb 78 	mr      r3,r31                                 <== NOT EXECUTED
ffc09e34:	48 00 0c 05 	bl      ffc0aa38 <pthread_mutex_destroy>       <== NOT EXECUTED
    pthread_attr_destroy (&aio_request_queue.attr);                   
ffc09e38:	7f c3 f3 78 	mr      r3,r30                                 <== NOT EXECUTED
ffc09e3c:	48 00 11 d5 	bl      ffc0b010 <pthread_attr_destroy>        <== NOT EXECUTED
ffc09e40:	4b ff ff 50 	b       ffc09d90 <rtems_aio_init+0x98>         <== NOT EXECUTED
                                                                      

ffc09ca0 <rtems_aio_insert_prio>:
ffc09ca0:	81 23 00 00 	lwz     r9,0(r3)                               
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
ffc09ca4:	39 03 00 04 	addi    r8,r3,4                                
 *        NONE                                                        
 */                                                                   
                                                                      
static void                                                           
rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req)
{                                                                     
ffc09ca8:	7c 86 23 78 	mr      r6,r4                                  
  rtems_chain_node *node;                                             
                                                                      
  AIO_printf ("FD exists \n");                                        
  node = rtems_chain_first (chain);                                   
                                                                      
  if (rtems_chain_is_empty (chain)) {                                 
ffc09cac:	7f 89 40 00 	cmpw    cr7,r9,r8                              
ffc09cb0:	41 9e 00 44 	beq-    cr7,ffc09cf4 <rtems_aio_insert_prio+0x54><== NEVER TAKEN
    rtems_chain_prepend (chain, &req->next_prio);                     
  } else {                                                            
    AIO_printf ("Add by priority \n");                                
    int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;     
                                                                      
    while (req->aiocbp->aio_reqprio > prio &&                         
ffc09cb4:	80 e4 00 14 	lwz     r7,20(r4)                              
  if (rtems_chain_is_empty (chain)) {                                 
    AIO_printf ("First in chain \n");                                 
    rtems_chain_prepend (chain, &req->next_prio);                     
  } else {                                                            
    AIO_printf ("Add by priority \n");                                
    int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;     
ffc09cb8:	81 49 00 14 	lwz     r10,20(r9)                             
                                                                      
    while (req->aiocbp->aio_reqprio > prio &&                         
ffc09cbc:	80 e7 00 18 	lwz     r7,24(r7)                              
ffc09cc0:	81 4a 00 18 	lwz     r10,24(r10)                            
ffc09cc4:	7f 8a 38 00 	cmpw    cr7,r10,r7                             
ffc09cc8:	41 bc 00 0c 	blt+    cr7,ffc09cd4 <rtems_aio_insert_prio+0x34><== NEVER TAKEN
ffc09ccc:	48 00 00 20 	b       ffc09cec <rtems_aio_insert_prio+0x4c>  
ffc09cd0:	41 9e 00 1c 	beq-    cr7,ffc09cec <rtems_aio_insert_prio+0x4c><== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
ffc09cd4:	81 29 00 00 	lwz     r9,0(r9)                               <== NOT EXECUTED
    int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;     
                                                                      
    while (req->aiocbp->aio_reqprio > prio &&                         
           !rtems_chain_is_tail (chain, node)) {                      
      node = rtems_chain_next (node);                                 
      prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;       
ffc09cd8:	81 49 00 14 	lwz     r10,20(r9)                             <== NOT EXECUTED
    rtems_chain_prepend (chain, &req->next_prio);                     
  } else {                                                            
    AIO_printf ("Add by priority \n");                                
    int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;     
                                                                      
    while (req->aiocbp->aio_reqprio > prio &&                         
ffc09cdc:	7f 88 48 00 	cmpw    cr7,r8,r9                              <== NOT EXECUTED
ffc09ce0:	81 4a 00 18 	lwz     r10,24(r10)                            <== NOT EXECUTED
ffc09ce4:	7f 0a 38 00 	cmpw    cr6,r10,r7                             <== NOT EXECUTED
ffc09ce8:	41 98 ff e8 	blt+    cr6,ffc09cd0 <rtems_aio_insert_prio+0x30><== NOT EXECUTED
ffc09cec:	80 69 00 04 	lwz     r3,4(r9)                               
ffc09cf0:	7c c4 33 78 	mr      r4,r6                                  
ffc09cf4:	48 00 32 98 	b       ffc0cf8c <_Chain_Insert>               
                                                                      

ffc09f74 <rtems_aio_remove_fd>: * Output parameters: * NONE */ void rtems_aio_remove_fd (rtems_aio_request_chain *r_chain) {
ffc09f74:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc09f78:	7c 08 02 a6 	mflr    r0                                     
ffc09f7c:	90 01 00 24 	stw     r0,36(r1)                              
ffc09f80:	93 e1 00 1c 	stw     r31,28(r1)                             
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
ffc09f84:	83 e3 00 08 	lwz     r31,8(r3)                              
ffc09f88:	93 a1 00 14 	stw     r29,20(r1)                             
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  const Chain_Control *the_chain,                                     
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Immutable_tail( the_chain ));            
ffc09f8c:	3b a3 00 0c 	addi    r29,r3,12                              
  rtems_chain_control *chain;                                         
  rtems_chain_node *node;                                             
  chain = &r_chain->perfd;                                            
  node = rtems_chain_first (chain);                                   
                                                                      
  while (!rtems_chain_is_tail (chain, node))                          
ffc09f90:	7f 9f e8 00 	cmpw    cr7,r31,r29                            
 *  Output parameters:                                                
 *        NONE                                                        
 */                                                                   
                                                                      
void rtems_aio_remove_fd (rtems_aio_request_chain *r_chain)           
{                                                                     
ffc09f94:	93 61 00 0c 	stw     r27,12(r1)                             
  while (!rtems_chain_is_tail (chain, node))                          
    {                                                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      node = rtems_chain_next (node);                                 
      req->aiocbp->error_code = ECANCELED;                            
ffc09f98:	3b 60 00 8c 	li      r27,140                                
 *  Output parameters:                                                
 *        NONE                                                        
 */                                                                   
                                                                      
void rtems_aio_remove_fd (rtems_aio_request_chain *r_chain)           
{                                                                     
ffc09f9c:	93 81 00 10 	stw     r28,16(r1)                             
    {                                                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      node = rtems_chain_next (node);                                 
      req->aiocbp->error_code = ECANCELED;                            
      req->aiocbp->return_value = -1;                                 
ffc09fa0:	3b 80 ff ff 	li      r28,-1                                 
 *  Output parameters:                                                
 *        NONE                                                        
 */                                                                   
                                                                      
void rtems_aio_remove_fd (rtems_aio_request_chain *r_chain)           
{                                                                     
ffc09fa4:	93 c1 00 18 	stw     r30,24(r1)                             
  rtems_chain_control *chain;                                         
  rtems_chain_node *node;                                             
  chain = &r_chain->perfd;                                            
  node = rtems_chain_first (chain);                                   
                                                                      
  while (!rtems_chain_is_tail (chain, node))                          
ffc09fa8:	41 9e 00 30 	beq-    cr7,ffc09fd8 <rtems_aio_remove_fd+0x64><== NEVER TAKEN
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
ffc09fac:	7f e3 fb 78 	mr      r3,r31                                 
ffc09fb0:	48 00 2f 75 	bl      ffc0cf24 <_Chain_Extract>              
    {                                                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      node = rtems_chain_next (node);                                 
      req->aiocbp->error_code = ECANCELED;                            
ffc09fb4:	81 3f 00 14 	lwz     r9,20(r31)                             
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
ffc09fb8:	83 df 00 00 	lwz     r30,0(r31)                             
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      node = rtems_chain_next (node);                                 
      req->aiocbp->error_code = ECANCELED;                            
      req->aiocbp->return_value = -1;                                 
      free (req);                                                     
ffc09fbc:	7f e3 fb 78 	mr      r3,r31                                 
  while (!rtems_chain_is_tail (chain, node))                          
    {                                                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      node = rtems_chain_next (node);                                 
      req->aiocbp->error_code = ECANCELED;                            
ffc09fc0:	93 69 00 34 	stw     r27,52(r9)                             
                                                                      
  while (!rtems_chain_is_tail (chain, node))                          
    {                                                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      node = rtems_chain_next (node);                                 
ffc09fc4:	7f df f3 78 	mr      r31,r30                                
      req->aiocbp->error_code = ECANCELED;                            
      req->aiocbp->return_value = -1;                                 
ffc09fc8:	93 89 00 38 	stw     r28,56(r9)                             
      free (req);                                                     
ffc09fcc:	4b ff ae 79 	bl      ffc04e44 <free>                        
  rtems_chain_control *chain;                                         
  rtems_chain_node *node;                                             
  chain = &r_chain->perfd;                                            
  node = rtems_chain_first (chain);                                   
                                                                      
  while (!rtems_chain_is_tail (chain, node))                          
ffc09fd0:	7f 9e e8 00 	cmpw    cr7,r30,r29                            
ffc09fd4:	40 9e ff d8 	bne+    cr7,ffc09fac <rtems_aio_remove_fd+0x38>
      node = rtems_chain_next (node);                                 
      req->aiocbp->error_code = ECANCELED;                            
      req->aiocbp->return_value = -1;                                 
      free (req);                                                     
    }                                                                 
}                                                                     
ffc09fd8:	80 01 00 24 	lwz     r0,36(r1)                              
ffc09fdc:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc09fe0:	7c 08 03 a6 	mtlr    r0                                     
ffc09fe4:	83 81 00 10 	lwz     r28,16(r1)                             
ffc09fe8:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc09fec:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc09ff0:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc09ff4:	38 21 00 20 	addi    r1,r1,32                               
ffc09ff8:	4e 80 00 20 	blr                                            
                                                                      

ffc09ffc <rtems_aio_remove_req>: * AIO_NOTCANCELED - if request was not canceled * AIO_CANCELED - if request was canceled */ int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp) {
ffc09ffc:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0a000:	7c 08 02 a6 	mflr    r0                                     
ffc0a004:	90 01 00 14 	stw     r0,20(r1)                              
ffc0a008:	93 e1 00 0c 	stw     r31,12(r1)                             
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
ffc0a00c:	83 e3 00 00 	lwz     r31,0(r3)                              
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
ffc0a010:	38 63 00 04 	addi    r3,r3,4                                
  if (rtems_chain_is_empty (chain))                                   
ffc0a014:	7f 9f 18 00 	cmpw    cr7,r31,r3                             
ffc0a018:	40 be 00 14 	bne+    cr7,ffc0a02c <rtems_aio_remove_req+0x30>
ffc0a01c:	48 00 00 70 	b       ffc0a08c <rtems_aio_remove_req+0x90>   
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
ffc0a020:	83 ff 00 00 	lwz     r31,0(r31)                             <== NOT EXECUTED
  rtems_chain_node *node = rtems_chain_first (chain);                 
  rtems_aio_request *current;                                         
                                                                      
  current = (rtems_aio_request *) node;                               
                                                                      
  while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) {
ffc0a024:	7f 83 f8 00 	cmpw    cr7,r3,r31                             <== NOT EXECUTED
ffc0a028:	41 9e 00 4c 	beq-    cr7,ffc0a074 <rtems_aio_remove_req+0x78><== NOT EXECUTED
ffc0a02c:	81 3f 00 14 	lwz     r9,20(r31)                             
ffc0a030:	7f 89 20 00 	cmpw    cr7,r9,r4                              
ffc0a034:	40 9e ff ec 	bne+    cr7,ffc0a020 <rtems_aio_remove_req+0x24><== NEVER TAKEN
ffc0a038:	7f e3 fb 78 	mr      r3,r31                                 
ffc0a03c:	48 00 2e e9 	bl      ffc0cf24 <_Chain_Extract>              
  if (rtems_chain_is_tail (chain, node))                              
    return AIO_NOTCANCELED;                                           
  else                                                                
    {                                                                 
      rtems_chain_extract (node);                                     
      current->aiocbp->error_code = ECANCELED;                        
ffc0a040:	81 3f 00 14 	lwz     r9,20(r31)                             
ffc0a044:	39 40 00 8c 	li      r10,140                                
ffc0a048:	91 49 00 34 	stw     r10,52(r9)                             
      current->aiocbp->return_value = -1;                             
ffc0a04c:	39 40 ff ff 	li      r10,-1                                 
      free (current);                                                 
ffc0a050:	7f e3 fb 78 	mr      r3,r31                                 
    return AIO_NOTCANCELED;                                           
  else                                                                
    {                                                                 
      rtems_chain_extract (node);                                     
      current->aiocbp->error_code = ECANCELED;                        
      current->aiocbp->return_value = -1;                             
ffc0a054:	91 49 00 38 	stw     r10,56(r9)                             
      free (current);                                                 
ffc0a058:	4b ff ad ed 	bl      ffc04e44 <free>                        
    }                                                                 
                                                                      
  return AIO_CANCELED;                                                
}                                                                     
ffc0a05c:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0a060:	83 e1 00 0c 	lwz     r31,12(r1)                             
      current->aiocbp->error_code = ECANCELED;                        
      current->aiocbp->return_value = -1;                             
      free (current);                                                 
    }                                                                 
                                                                      
  return AIO_CANCELED;                                                
ffc0a064:	38 60 00 00 	li      r3,0                                   
}                                                                     
ffc0a068:	7c 08 03 a6 	mtlr    r0                                     
ffc0a06c:	38 21 00 10 	addi    r1,r1,16                               
ffc0a070:	4e 80 00 20 	blr                                            
ffc0a074:	80 01 00 14 	lwz     r0,20(r1)                              <== NOT EXECUTED
    node = rtems_chain_next (node);                                   
    current = (rtems_aio_request *) node;                             
  }                                                                   
                                                                      
  if (rtems_chain_is_tail (chain, node))                              
    return AIO_NOTCANCELED;                                           
ffc0a078:	38 60 00 01 	li      r3,1                                   <== NOT EXECUTED
      current->aiocbp->return_value = -1;                             
      free (current);                                                 
    }                                                                 
                                                                      
  return AIO_CANCELED;                                                
}                                                                     
ffc0a07c:	83 e1 00 0c 	lwz     r31,12(r1)                             <== NOT EXECUTED
ffc0a080:	7c 08 03 a6 	mtlr    r0                                     <== NOT EXECUTED
ffc0a084:	38 21 00 10 	addi    r1,r1,16                               <== NOT EXECUTED
ffc0a088:	4e 80 00 20 	blr                                            <== NOT EXECUTED
ffc0a08c:	80 01 00 14 	lwz     r0,20(r1)                              
 */                                                                   
                                                                      
int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp)
{                                                                     
  if (rtems_chain_is_empty (chain))                                   
    return AIO_ALLDONE;                                               
ffc0a090:	38 60 00 02 	li      r3,2                                   
      current->aiocbp->return_value = -1;                             
      free (current);                                                 
    }                                                                 
                                                                      
  return AIO_CANCELED;                                                
}                                                                     
ffc0a094:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0a098:	7c 08 03 a6 	mtlr    r0                                     
ffc0a09c:	38 21 00 10 	addi    r1,r1,16                               
ffc0a0a0:	4e 80 00 20 	blr                                            
                                                                      

ffc0a588 <rtems_chain_get_with_wait>: rtems_chain_control *chain, rtems_event_set events, rtems_interval timeout, rtems_chain_node **node_ptr ) {
ffc0a588:	94 21 ff d0 	stwu    r1,-48(r1)                             
ffc0a58c:	7c 08 02 a6 	mflr    r0                                     
ffc0a590:	93 e1 00 2c 	stw     r31,44(r1)                             
ffc0a594:	90 01 00 34 	stw     r0,52(r1)                              
ffc0a598:	93 61 00 1c 	stw     r27,28(r1)                             
ffc0a59c:	7c db 33 78 	mr      r27,r6                                 
ffc0a5a0:	93 81 00 20 	stw     r28,32(r1)                             
ffc0a5a4:	7c 7c 1b 78 	mr      r28,r3                                 
ffc0a5a8:	93 a1 00 24 	stw     r29,36(r1)                             
ffc0a5ac:	7c 9d 23 78 	mr      r29,r4                                 
ffc0a5b0:	93 c1 00 28 	stw     r30,40(r1)                             
ffc0a5b4:	7c be 2b 78 	mr      r30,r5                                 
 */                                                                   
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(               
  rtems_chain_control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Get( the_chain );                                     
ffc0a5b8:	7f 83 e3 78 	mr      r3,r28                                 
ffc0a5bc:	48 00 07 39 	bl      ffc0acf4 <_Chain_Get>                  
  while (                                                             
    sc == RTEMS_SUCCESSFUL                                            
      && (node = rtems_chain_get( chain )) == NULL                    
  ) {                                                                 
    rtems_event_set out;                                              
    sc = rtems_event_receive(                                         
ffc0a5c0:	38 80 00 00 	li      r4,0                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_chain_node *node = NULL;                                      
                                                                      
  while (                                                             
    sc == RTEMS_SUCCESSFUL                                            
      && (node = rtems_chain_get( chain )) == NULL                    
ffc0a5c4:	7c 7f 1b 79 	mr.     r31,r3                                 
  ) {                                                                 
    rtems_event_set out;                                              
    sc = rtems_event_receive(                                         
ffc0a5c8:	7f c5 f3 78 	mr      r5,r30                                 
ffc0a5cc:	38 c1 00 08 	addi    r6,r1,8                                
ffc0a5d0:	7f a3 eb 78 	mr      r3,r29                                 
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_chain_node *node = NULL;                                      
                                                                      
  while (                                                             
    sc == RTEMS_SUCCESSFUL                                            
      && (node = rtems_chain_get( chain )) == NULL                    
ffc0a5d4:	40 82 00 38 	bne-    ffc0a60c <rtems_chain_get_with_wait+0x84>
  ) {                                                                 
    rtems_event_set out;                                              
    sc = rtems_event_receive(                                         
ffc0a5d8:	4b ff f0 11 	bl      ffc095e8 <rtems_event_receive>         
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_chain_node *node = NULL;                                      
                                                                      
  while (                                                             
ffc0a5dc:	2c 03 00 00 	cmpwi   r3,0                                   
ffc0a5e0:	41 82 ff d8 	beq+    ffc0a5b8 <rtems_chain_get_with_wait+0x30><== NEVER TAKEN
  }                                                                   
                                                                      
  *node_ptr = node;                                                   
                                                                      
  return sc;                                                          
}                                                                     
ffc0a5e4:	80 01 00 34 	lwz     r0,52(r1)                              
      timeout,                                                        
      &out                                                            
    );                                                                
  }                                                                   
                                                                      
  *node_ptr = node;                                                   
ffc0a5e8:	93 fb 00 00 	stw     r31,0(r27)                             
                                                                      
  return sc;                                                          
}                                                                     
ffc0a5ec:	7c 08 03 a6 	mtlr    r0                                     
ffc0a5f0:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc0a5f4:	83 81 00 20 	lwz     r28,32(r1)                             
ffc0a5f8:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc0a5fc:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc0a600:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc0a604:	38 21 00 30 	addi    r1,r1,48                               
ffc0a608:	4e 80 00 20 	blr                                            
ffc0a60c:	80 01 00 34 	lwz     r0,52(r1)                              
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_chain_node *node = NULL;                                      
                                                                      
  while (                                                             
    sc == RTEMS_SUCCESSFUL                                            
      && (node = rtems_chain_get( chain )) == NULL                    
ffc0a610:	38 60 00 00 	li      r3,0                                   
      timeout,                                                        
      &out                                                            
    );                                                                
  }                                                                   
                                                                      
  *node_ptr = node;                                                   
ffc0a614:	93 fb 00 00 	stw     r31,0(r27)                             
                                                                      
  return sc;                                                          
}                                                                     
ffc0a618:	7c 08 03 a6 	mtlr    r0                                     
ffc0a61c:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc0a620:	83 81 00 20 	lwz     r28,32(r1)                             
ffc0a624:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc0a628:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc0a62c:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc0a630:	38 21 00 30 	addi    r1,r1,48                               
ffc0a634:	4e 80 00 20 	blr                                            
                                                                      

ffc15320 <rtems_event_system_receive>: rtems_event_set *event_out ) { rtems_status_code sc; if ( event_out != NULL ) {
ffc15320:	7c ca 33 79 	mr.     r10,r6                                 
ffc15324:	41 82 00 48 	beq-    ffc1536c <rtems_event_system_receive+0x4c><== NEVER TAKEN
    Thread_Control    *executing = _Thread_Executing;                 
    RTEMS_API_Control *api = executing->API_Extensions[ THREAD_API_RTEMS ];
    Event_Control     *event = &api->System_event;                    
                                                                      
    if ( !_Event_sets_Is_empty( event_in ) ) {                        
ffc15328:	2f 83 00 00 	cmpwi   cr7,r3,0                               
  rtems_event_set  event_in,                                          
  rtems_option     option_set,                                        
  rtems_interval   ticks,                                             
  rtems_event_set *event_out                                          
)                                                                     
{                                                                     
ffc1532c:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc15330:	7c 08 02 a6 	mflr    r0                                     
  rtems_status_code sc;                                               
                                                                      
  if ( event_out != NULL ) {                                          
    Thread_Control    *executing = _Thread_Executing;                 
ffc15334:	3d 00 00 00 	lis     r8,0                                   
  rtems_event_set  event_in,                                          
  rtems_option     option_set,                                        
  rtems_interval   ticks,                                             
  rtems_event_set *event_out                                          
)                                                                     
{                                                                     
ffc15338:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc1533c:	90 01 00 14 	stw     r0,20(r1)                              
  rtems_status_code sc;                                               
                                                                      
  if ( event_out != NULL ) {                                          
    Thread_Control    *executing = _Thread_Executing;                 
ffc15340:	83 e8 32 10 	lwz     r31,12816(r8)                          
    RTEMS_API_Control *api = executing->API_Extensions[ THREAD_API_RTEMS ];
ffc15344:	81 1f 01 4c 	lwz     r8,332(r31)                            
    Event_Control     *event = &api->System_event;                    
                                                                      
    if ( !_Event_sets_Is_empty( event_in ) ) {                        
ffc15348:	40 9e 00 2c 	bne-    cr7,ffc15374 <rtems_event_system_receive+0x54><== ALWAYS TAKEN
  } else {                                                            
    sc = RTEMS_INVALID_ADDRESS;                                       
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
ffc1534c:	80 01 00 14 	lwz     r0,20(r1)                              <== NOT EXECUTED
      _Thread_Enable_dispatch();                                      
                                                                      
      sc = executing->Wait.return_code;                               
    } else {                                                          
      *event_out = event->pending_events;                             
      sc = RTEMS_SUCCESSFUL;                                          
ffc15350:	38 60 00 00 	li      r3,0                                   <== NOT EXECUTED
      );                                                              
      _Thread_Enable_dispatch();                                      
                                                                      
      sc = executing->Wait.return_code;                               
    } else {                                                          
      *event_out = event->pending_events;                             
ffc15354:	81 28 00 04 	lwz     r9,4(r8)                               <== NOT EXECUTED
  } else {                                                            
    sc = RTEMS_INVALID_ADDRESS;                                       
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
ffc15358:	7c 08 03 a6 	mtlr    r0                                     <== NOT EXECUTED
ffc1535c:	83 e1 00 0c 	lwz     r31,12(r1)                             <== NOT EXECUTED
      );                                                              
      _Thread_Enable_dispatch();                                      
                                                                      
      sc = executing->Wait.return_code;                               
    } else {                                                          
      *event_out = event->pending_events;                             
ffc15360:	91 2a 00 00 	stw     r9,0(r10)                              <== NOT EXECUTED
  } else {                                                            
    sc = RTEMS_INVALID_ADDRESS;                                       
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
ffc15364:	38 21 00 10 	addi    r1,r1,16                               <== NOT EXECUTED
ffc15368:	4e 80 00 20 	blr                                            <== NOT EXECUTED
    } else {                                                          
      *event_out = event->pending_events;                             
      sc = RTEMS_SUCCESSFUL;                                          
    }                                                                 
  } else {                                                            
    sc = RTEMS_INVALID_ADDRESS;                                       
ffc1536c:	38 60 00 09 	li      r3,9                                   <== NOT EXECUTED
ffc15370:	4e 80 00 20 	blr                                            <== NOT EXECUTED
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc15374:	3d 20 00 00 	lis     r9,0                                   
ffc15378:	81 49 28 20 	lwz     r10,10272(r9)                          
                                                                      
    ++level;                                                          
ffc1537c:	39 4a 00 01 	addi    r10,r10,1                              
    _Thread_Dispatch_disable_level = level;                           
ffc15380:	91 49 28 20 	stw     r10,10272(r9)                          
    RTEMS_API_Control *api = executing->API_Extensions[ THREAD_API_RTEMS ];
    Event_Control     *event = &api->System_event;                    
                                                                      
    if ( !_Event_sets_Is_empty( event_in ) ) {                        
      _Thread_Disable_dispatch();                                     
      _Event_Seize(                                                   
ffc15384:	3d 20 00 00 	lis     r9,0                                   
ffc15388:	7f e7 fb 78 	mr      r7,r31                                 
ffc1538c:	39 08 00 04 	addi    r8,r8,4                                
ffc15390:	39 29 28 54 	addi    r9,r9,10324                            
ffc15394:	3d 40 00 04 	lis     r10,4                                  
ffc15398:	4b ff 54 d9 	bl      ffc0a870 <_Event_Seize>                
        executing,                                                    
        event,                                                        
        &_System_event_Sync_state,                                    
        STATES_WAITING_FOR_SYSTEM_EVENT                               
      );                                                              
      _Thread_Enable_dispatch();                                      
ffc1539c:	4b ff 8d 69 	bl      ffc0e104 <_Thread_Enable_dispatch>     
  } else {                                                            
    sc = RTEMS_INVALID_ADDRESS;                                       
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
ffc153a0:	80 01 00 14 	lwz     r0,20(r1)                              
        &_System_event_Sync_state,                                    
        STATES_WAITING_FOR_SYSTEM_EVENT                               
      );                                                              
      _Thread_Enable_dispatch();                                      
                                                                      
      sc = executing->Wait.return_code;                               
ffc153a4:	80 7f 00 34 	lwz     r3,52(r31)                             
  } else {                                                            
    sc = RTEMS_INVALID_ADDRESS;                                       
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
ffc153a8:	7c 08 03 a6 	mtlr    r0                                     
ffc153ac:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc153b0:	38 21 00 10 	addi    r1,r1,16                               
ffc153b4:	4e 80 00 20 	blr                                            
                                                                      

ffc09ca0 <rtems_event_system_send>: rtems_status_code rtems_event_system_send( rtems_id id, rtems_event_set event_in ) {
ffc09ca0:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc09ca4:	7c 08 02 a6 	mflr    r0                                     
ffc09ca8:	93 e1 00 1c 	stw     r31,28(r1)                             
ffc09cac:	7c 9f 23 78 	mr      r31,r4                                 
  rtems_status_code  sc;                                              
  Thread_Control    *thread;                                          
  Objects_Locations  location;                                        
  RTEMS_API_Control *api;                                             
                                                                      
  thread = _Thread_Get( id, &location );                              
ffc09cb0:	38 81 00 08 	addi    r4,r1,8                                
                                                                      
rtems_status_code rtems_event_system_send(                            
  rtems_id        id,                                                 
  rtems_event_set event_in                                            
)                                                                     
{                                                                     
ffc09cb4:	90 01 00 24 	stw     r0,36(r1)                              
  rtems_status_code  sc;                                              
  Thread_Control    *thread;                                          
  Objects_Locations  location;                                        
  RTEMS_API_Control *api;                                             
                                                                      
  thread = _Thread_Get( id, &location );                              
ffc09cb8:	48 00 2e 25 	bl      ffc0cadc <_Thread_Get>                 
  switch ( location ) {                                               
ffc09cbc:	81 21 00 08 	lwz     r9,8(r1)                               
ffc09cc0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc09cc4:	40 9e 00 3c 	bne-    cr7,ffc09d00 <rtems_event_system_send+0x60><== NEVER TAKEN
    case OBJECTS_LOCAL:                                               
      api = thread->API_Extensions[ THREAD_API_RTEMS ];               
      _Event_Surrender(                                               
ffc09cc8:	80 a3 01 4c 	lwz     r5,332(r3)                             
ffc09ccc:	3c c0 00 00 	lis     r6,0                                   
ffc09cd0:	7f e4 fb 78 	mr      r4,r31                                 
ffc09cd4:	38 a5 00 04 	addi    r5,r5,4                                
ffc09cd8:	38 c6 28 9c 	addi    r6,r6,10396                            
ffc09cdc:	3c e0 00 04 	lis     r7,4                                   
ffc09ce0:	4b ff f8 4d 	bl      ffc0952c <_Event_Surrender>            
        event_in,                                                     
        &api->System_event,                                           
        &_System_event_Sync_state,                                    
        STATES_WAITING_FOR_SYSTEM_EVENT                               
      );                                                              
      _Thread_Enable_dispatch();                                      
ffc09ce4:	48 00 2d dd 	bl      ffc0cac0 <_Thread_Enable_dispatch>     
      sc = RTEMS_INVALID_ID;                                          
      break;                                                          
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
ffc09ce8:	80 01 00 24 	lwz     r0,36(r1)                              
ffc09cec:	83 e1 00 1c 	lwz     r31,28(r1)                             
        &api->System_event,                                           
        &_System_event_Sync_state,                                    
        STATES_WAITING_FOR_SYSTEM_EVENT                               
      );                                                              
      _Thread_Enable_dispatch();                                      
      sc = RTEMS_SUCCESSFUL;                                          
ffc09cf0:	38 60 00 00 	li      r3,0                                   
      sc = RTEMS_INVALID_ID;                                          
      break;                                                          
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
ffc09cf4:	7c 08 03 a6 	mtlr    r0                                     
ffc09cf8:	38 21 00 20 	addi    r1,r1,32                               
ffc09cfc:	4e 80 00 20 	blr                                            
ffc09d00:	80 01 00 24 	lwz     r0,36(r1)                              <== NOT EXECUTED
    case OBJECTS_REMOTE:                                              
      sc = RTEMS_ILLEGAL_ON_REMOTE_OBJECT;                            
      break;                                                          
#endif                                                                
    default:                                                          
      sc = RTEMS_INVALID_ID;                                          
ffc09d04:	38 60 00 04 	li      r3,4                                   <== NOT EXECUTED
      break;                                                          
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
ffc09d08:	83 e1 00 1c 	lwz     r31,28(r1)                             <== NOT EXECUTED
ffc09d0c:	7c 08 03 a6 	mtlr    r0                                     <== NOT EXECUTED
ffc09d10:	38 21 00 20 	addi    r1,r1,32                               <== NOT EXECUTED
ffc09d14:	4e 80 00 20 	blr                                            <== NOT EXECUTED
                                                                      

ffc0b998 <rtems_io_register_driver>: rtems_device_major_number *registered_major ) { rtems_device_major_number major_limit = _IO_Number_of_drivers; if ( rtems_interrupt_is_in_progress() )
ffc0b998:	3d 20 00 00 	lis     r9,0                                   
ffc0b99c:	81 49 32 08 	lwz     r10,12808(r9)                          
  rtems_device_major_number         major,                            
  const rtems_driver_address_table *driver_table,                     
  rtems_device_major_number        *registered_major                  
)                                                                     
{                                                                     
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
ffc0b9a0:	3d 20 00 00 	lis     r9,0                                   
ffc0b9a4:	81 09 28 5c 	lwz     r8,10332(r9)                           
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
ffc0b9a8:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0b9ac:	41 9e 00 0c 	beq-    cr7,ffc0b9b8 <rtems_io_register_driver+0x20>
    return RTEMS_CALLED_FROM_ISR;                                     
ffc0b9b0:	38 60 00 12 	li      r3,18                                  
  _IO_Driver_address_table [major] = *driver_table;                   
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
}                                                                     
ffc0b9b4:	4e 80 00 20 	blr                                            
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( registered_major == NULL )                                     
ffc0b9b8:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc0b9bc:	41 9e 00 50 	beq-    cr7,ffc0ba0c <rtems_io_register_driver+0x74>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  /* Set it to an invalid value */                                    
  *registered_major = major_limit;                                    
                                                                      
  if ( driver_table == NULL )                                         
ffc0b9c0:	2f 84 00 00 	cmpwi   cr7,r4,0                               
                                                                      
  if ( registered_major == NULL )                                     
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  /* Set it to an invalid value */                                    
  *registered_major = major_limit;                                    
ffc0b9c4:	91 05 00 00 	stw     r8,0(r5)                               
                                                                      
  if ( driver_table == NULL )                                         
ffc0b9c8:	41 9e 00 44 	beq-    cr7,ffc0ba0c <rtems_io_register_driver+0x74>
rtems_status_code rtems_io_register_driver(                           
  rtems_device_major_number         major,                            
  const rtems_driver_address_table *driver_table,                     
  rtems_device_major_number        *registered_major                  
)                                                                     
{                                                                     
ffc0b9cc:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0b9d0:	7c 08 02 a6 	mflr    r0                                     
ffc0b9d4:	90 01 00 14 	stw     r0,20(r1)                              
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
ffc0b9d8:	81 44 00 00 	lwz     r10,0(r4)                              
rtems_status_code rtems_io_register_driver(                           
  rtems_device_major_number         major,                            
  const rtems_driver_address_table *driver_table,                     
  rtems_device_major_number        *registered_major                  
)                                                                     
{                                                                     
ffc0b9dc:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc0b9e0:	7c 7f 1b 78 	mr      r31,r3                                 
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
ffc0b9e4:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0b9e8:	41 9e 00 2c 	beq-    cr7,ffc0ba14 <rtems_io_register_driver+0x7c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( rtems_io_is_empty_table( driver_table ) )                      
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( major >= major_limit )                                         
ffc0b9ec:	7f 88 f8 40 	cmplw   cr7,r8,r31                             
    return RTEMS_INVALID_NUMBER;                                      
ffc0b9f0:	38 60 00 0a 	li      r3,10                                  
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( rtems_io_is_empty_table( driver_table ) )                      
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( major >= major_limit )                                         
ffc0b9f4:	41 9d 00 34 	bgt-    cr7,ffc0ba28 <rtems_io_register_driver+0x90>
  _IO_Driver_address_table [major] = *driver_table;                   
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
}                                                                     
ffc0b9f8:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0b9fc:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0ba00:	7c 08 03 a6 	mtlr    r0                                     
ffc0ba04:	38 21 00 10 	addi    r1,r1,16                               
ffc0ba08:	4e 80 00 20 	blr                                            
                                                                      
  /* Set it to an invalid value */                                    
  *registered_major = major_limit;                                    
                                                                      
  if ( driver_table == NULL )                                         
    return RTEMS_INVALID_ADDRESS;                                     
ffc0ba0c:	38 60 00 09 	li      r3,9                                   
ffc0ba10:	4e 80 00 20 	blr                                            
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
ffc0ba14:	81 44 00 04 	lwz     r10,4(r4)                              
ffc0ba18:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0ba1c:	40 9e ff d0 	bne+    cr7,ffc0b9ec <rtems_io_register_driver+0x54>
                                                                      
  if ( driver_table == NULL )                                         
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( rtems_io_is_empty_table( driver_table ) )                      
    return RTEMS_INVALID_ADDRESS;                                     
ffc0ba20:	38 60 00 09 	li      r3,9                                   
ffc0ba24:	4b ff ff d4 	b       ffc0b9f8 <rtems_io_register_driver+0x60>
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc0ba28:	3d 40 00 00 	lis     r10,0                                  
ffc0ba2c:	81 0a 28 20 	lwz     r8,10272(r10)                          
                                                                      
    ++level;                                                          
ffc0ba30:	39 08 00 01 	addi    r8,r8,1                                
    _Thread_Dispatch_disable_level = level;                           
ffc0ba34:	91 0a 28 20 	stw     r8,10272(r10)                          
  if ( major >= major_limit )                                         
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( major == 0 ) {                                                 
ffc0ba38:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
ffc0ba3c:	41 9e 00 2c 	beq-    cr7,ffc0ba68 <rtems_io_register_driver+0xd0>
      _Thread_Enable_dispatch();                                      
      return sc;                                                      
    }                                                                 
    major = *registered_major;                                        
  } else {                                                            
    rtems_driver_address_table *const table = _IO_Driver_address_table + major;
ffc0ba40:	3d 00 00 00 	lis     r8,0                                   
ffc0ba44:	1d 5f 00 18 	mulli   r10,r31,24                             
ffc0ba48:	81 28 28 60 	lwz     r9,10336(r8)                           
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
ffc0ba4c:	7c e9 50 2e 	lwzx    r7,r9,r10                              
      _Thread_Enable_dispatch();                                      
      return sc;                                                      
    }                                                                 
    major = *registered_major;                                        
  } else {                                                            
    rtems_driver_address_table *const table = _IO_Driver_address_table + major;
ffc0ba50:	7d 29 52 14 	add     r9,r9,r10                              
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
ffc0ba54:	2f 87 00 00 	cmpwi   cr7,r7,0                               
ffc0ba58:	41 9e 00 cc 	beq-    cr7,ffc0bb24 <rtems_io_register_driver+0x18c>
    major = *registered_major;                                        
  } else {                                                            
    rtems_driver_address_table *const table = _IO_Driver_address_table + major;
                                                                      
    if ( !rtems_io_is_empty_table( table ) ) {                        
      _Thread_Enable_dispatch();                                      
ffc0ba5c:	48 00 26 a9 	bl      ffc0e104 <_Thread_Enable_dispatch>     
      return RTEMS_RESOURCE_IN_USE;                                   
ffc0ba60:	38 60 00 0c 	li      r3,12                                  
ffc0ba64:	4b ff ff 94 	b       ffc0b9f8 <rtems_io_register_driver+0x60>
                                                                      
static rtems_status_code rtems_io_obtain_major_number(                
  rtems_device_major_number *major                                    
)                                                                     
{                                                                     
  rtems_device_major_number n = _IO_Number_of_drivers;                
ffc0ba68:	80 e9 28 5c 	lwz     r7,10332(r9)                           
  rtems_device_major_number m = 0;                                    
                                                                      
  /* major is error checked by caller */                              
                                                                      
  for ( m = 0; m < n; ++m ) {                                         
ffc0ba6c:	2f 87 00 00 	cmpwi   cr7,r7,0                               
ffc0ba70:	41 9e 00 a4 	beq-    cr7,ffc0bb14 <rtems_io_register_driver+0x17c><== NEVER TAKEN
ffc0ba74:	3d 00 00 00 	lis     r8,0                                   
ffc0ba78:	7c e9 03 a6 	mtctr   r7                                     
ffc0ba7c:	81 28 28 60 	lwz     r9,10336(r8)                           
ffc0ba80:	48 00 00 10 	b       ffc0ba90 <rtems_io_register_driver+0xf8>
ffc0ba84:	3b ff 00 01 	addi    r31,r31,1                              
ffc0ba88:	39 29 00 18 	addi    r9,r9,24                               
ffc0ba8c:	42 40 00 88 	bdz-    ffc0bb14 <rtems_io_register_driver+0x17c>
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
ffc0ba90:	81 49 00 00 	lwz     r10,0(r9)                              
ffc0ba94:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0ba98:	40 9e ff ec 	bne+    cr7,ffc0ba84 <rtems_io_register_driver+0xec>
ffc0ba9c:	81 49 00 04 	lwz     r10,4(r9)                              
ffc0baa0:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0baa4:	40 9e ff e0 	bne+    cr7,ffc0ba84 <rtems_io_register_driver+0xec>
  }                                                                   
                                                                      
  /* Assigns invalid value in case of failure */                      
  *major = m;                                                         
                                                                      
  if ( m != n )                                                       
ffc0baa8:	7f 87 f8 00 	cmpw    cr7,r7,r31                             
    if ( rtems_io_is_empty_table( table ) )                           
      break;                                                          
  }                                                                   
                                                                      
  /* Assigns invalid value in case of failure */                      
  *major = m;                                                         
ffc0baac:	93 e5 00 00 	stw     r31,0(r5)                              
ffc0bab0:	1d 5f 00 18 	mulli   r10,r31,24                             
                                                                      
  if ( m != n )                                                       
ffc0bab4:	41 9e 00 64 	beq-    cr7,ffc0bb18 <rtems_io_register_driver+0x180><== NEVER TAKEN
    }                                                                 
                                                                      
    *registered_major = major;                                        
  }                                                                   
                                                                      
  _IO_Driver_address_table [major] = *driver_table;                   
ffc0bab8:	81 08 28 60 	lwz     r8,10336(r8)                           
ffc0babc:	80 64 00 04 	lwz     r3,4(r4)                               
ffc0bac0:	80 a4 00 08 	lwz     r5,8(r4)                               
ffc0bac4:	7d 28 52 14 	add     r9,r8,r10                              
ffc0bac8:	80 e4 00 00 	lwz     r7,0(r4)                               
ffc0bacc:	80 c4 00 0c 	lwz     r6,12(r4)                              
ffc0bad0:	7c e8 51 2e 	stwx    r7,r8,r10                              
ffc0bad4:	90 69 00 04 	stw     r3,4(r9)                               
ffc0bad8:	90 a9 00 08 	stw     r5,8(r9)                               
ffc0badc:	90 c9 00 0c 	stw     r6,12(r9)                              
ffc0bae0:	81 04 00 10 	lwz     r8,16(r4)                              
ffc0bae4:	81 44 00 14 	lwz     r10,20(r4)                             
ffc0bae8:	91 09 00 10 	stw     r8,16(r9)                              
ffc0baec:	91 49 00 14 	stw     r10,20(r9)                             
                                                                      
  _Thread_Enable_dispatch();                                          
ffc0baf0:	48 00 26 15 	bl      ffc0e104 <_Thread_Enable_dispatch>     
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
}                                                                     
ffc0baf4:	80 01 00 14 	lwz     r0,20(r1)                              
                                                                      
  _IO_Driver_address_table [major] = *driver_table;                   
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
ffc0baf8:	7f e3 fb 78 	mr      r3,r31                                 
}                                                                     
ffc0bafc:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0bb00:	7c 08 03 a6 	mtlr    r0                                     
                                                                      
  _IO_Driver_address_table [major] = *driver_table;                   
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
ffc0bb04:	38 80 00 00 	li      r4,0                                   
ffc0bb08:	38 a0 00 00 	li      r5,0                                   
}                                                                     
ffc0bb0c:	38 21 00 10 	addi    r1,r1,16                               
                                                                      
  _IO_Driver_address_table [major] = *driver_table;                   
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
ffc0bb10:	48 00 9d 84 	b       ffc15894 <rtems_io_initialize>         
    if ( rtems_io_is_empty_table( table ) )                           
      break;                                                          
  }                                                                   
                                                                      
  /* Assigns invalid value in case of failure */                      
  *major = m;                                                         
ffc0bb14:	93 e5 00 00 	stw     r31,0(r5)                              
                                                                      
  if ( major == 0 ) {                                                 
    rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
                                                                      
    if ( sc != RTEMS_SUCCESSFUL ) {                                   
      _Thread_Enable_dispatch();                                      
ffc0bb18:	48 00 25 ed 	bl      ffc0e104 <_Thread_Enable_dispatch>     
  *major = m;                                                         
                                                                      
  if ( m != n )                                                       
    return RTEMS_SUCCESSFUL;                                          
                                                                      
  return RTEMS_TOO_MANY;                                              
ffc0bb1c:	38 60 00 05 	li      r3,5                                   
  if ( major == 0 ) {                                                 
    rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
                                                                      
    if ( sc != RTEMS_SUCCESSFUL ) {                                   
      _Thread_Enable_dispatch();                                      
      return sc;                                                      
ffc0bb20:	4b ff fe d8 	b       ffc0b9f8 <rtems_io_register_driver+0x60>
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
ffc0bb24:	81 29 00 04 	lwz     r9,4(r9)                               
ffc0bb28:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0bb2c:	40 9e ff 30 	bne+    cr7,ffc0ba5c <rtems_io_register_driver+0xc4>
    if ( !rtems_io_is_empty_table( table ) ) {                        
      _Thread_Enable_dispatch();                                      
      return RTEMS_RESOURCE_IN_USE;                                   
    }                                                                 
                                                                      
    *registered_major = major;                                        
ffc0bb30:	93 e5 00 00 	stw     r31,0(r5)                              
ffc0bb34:	4b ff ff 84 	b       ffc0bab8 <rtems_io_register_driver+0x120>
                                                                      

ffc0d020 <rtems_iterate_over_all_threads>: #include <rtems/system.h> #include <rtems/score/thread.h> void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) {
ffc0d020:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc0d024:	7c 08 02 a6 	mflr    r0                                     
ffc0d028:	93 a1 00 14 	stw     r29,20(r1)                             
  uint32_t             i;                                             
  uint32_t             api_index;                                     
  Thread_Control      *the_thread;                                    
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
ffc0d02c:	7c 7d 1b 79 	mr.     r29,r3                                 
                                                                      
#include <rtems/system.h>                                             
#include <rtems/score/thread.h>                                       
                                                                      
void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) 
{                                                                     
ffc0d030:	90 01 00 24 	stw     r0,36(r1)                              
ffc0d034:	93 61 00 0c 	stw     r27,12(r1)                             
ffc0d038:	93 81 00 10 	stw     r28,16(r1)                             
ffc0d03c:	93 c1 00 18 	stw     r30,24(r1)                             
ffc0d040:	93 e1 00 1c 	stw     r31,28(r1)                             
  uint32_t             i;                                             
  uint32_t             api_index;                                     
  Thread_Control      *the_thread;                                    
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
ffc0d044:	41 82 00 68 	beq-    ffc0d0ac <rtems_iterate_over_all_threads+0x8c><== NEVER TAKEN
ffc0d048:	3f 80 00 00 	lis     r28,0                                  
ffc0d04c:	3b 9c 30 78 	addi    r28,r28,12408                          
#endif                                                                
                                                                      
#include <rtems/system.h>                                             
#include <rtems/score/thread.h>                                       
                                                                      
void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) 
ffc0d050:	3b 7c 00 0c 	addi    r27,r28,12                             
    #if !defined(RTEMS_POSIX_API) || defined(RTEMS_DEBUG)             
      if ( !_Objects_Information_table[ api_index ] )                 
        continue;                                                     
    #endif                                                            
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
ffc0d054:	85 3c 00 04 	lwzu    r9,4(r28)                              
ffc0d058:	83 c9 00 04 	lwz     r30,4(r9)                              
    if ( !information )                                               
ffc0d05c:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
ffc0d060:	41 9e 00 44 	beq-    cr7,ffc0d0a4 <rtems_iterate_over_all_threads+0x84>
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
ffc0d064:	a1 1e 00 10 	lhz     r8,16(r30)                             
ffc0d068:	71 09 ff ff 	andi.   r9,r8,65535                            
ffc0d06c:	41 82 00 38 	beq-    ffc0d0a4 <rtems_iterate_over_all_threads+0x84>
ffc0d070:	3b e0 00 01 	li      r31,1                                  
      the_thread = (Thread_Control *)information->local_table[ i ];   
ffc0d074:	81 3e 00 1c 	lwz     r9,28(r30)                             
ffc0d078:	57 ea 10 3a 	rlwinm  r10,r31,2,0,29                         
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( !information )                                               
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
ffc0d07c:	3b ff 00 01 	addi    r31,r31,1                              
      the_thread = (Thread_Control *)information->local_table[ i ];   
ffc0d080:	7c 69 50 2e 	lwzx    r3,r9,r10                              
                                                                      
      if ( !the_thread )                                              
ffc0d084:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0d088:	41 9e 00 10 	beq-    cr7,ffc0d098 <rtems_iterate_over_all_threads+0x78>
	continue;                                                            
                                                                      
      (*routine)(the_thread);                                         
ffc0d08c:	7f a9 03 a6 	mtctr   r29                                    
ffc0d090:	4e 80 04 21 	bctrl                                          
ffc0d094:	a1 1e 00 10 	lhz     r8,16(r30)                             
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( !information )                                               
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
ffc0d098:	55 09 04 3e 	clrlwi  r9,r8,16                               
ffc0d09c:	7f 89 f8 40 	cmplw   cr7,r9,r31                             
ffc0d0a0:	40 9c ff d4 	bge+    cr7,ffc0d074 <rtems_iterate_over_all_threads+0x54>
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
    return;                                                           
                                                                      
  for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
ffc0d0a4:	7f 9c d8 00 	cmpw    cr7,r28,r27                            
ffc0d0a8:	40 9e ff ac 	bne+    cr7,ffc0d054 <rtems_iterate_over_all_threads+0x34>
                                                                      
      (*routine)(the_thread);                                         
    }                                                                 
  }                                                                   
                                                                      
}                                                                     
ffc0d0ac:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0d0b0:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0d0b4:	7c 08 03 a6 	mtlr    r0                                     
ffc0d0b8:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0d0bc:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0d0c0:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0d0c4:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0d0c8:	38 21 00 20 	addi    r1,r1,32                               
ffc0d0cc:	4e 80 00 20 	blr                                            
                                                                      

ffc0b7c8 <rtems_object_get_class_information>: rtems_status_code rtems_object_get_class_information( int the_api, int the_class, rtems_object_api_class_information *info ) {
ffc0b7c8:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0b7cc:	7c 08 02 a6 	mflr    r0                                     
ffc0b7d0:	93 e1 00 0c 	stw     r31,12(r1)                             
  int                  i;                                             
                                                                      
  /*                                                                  
   * Validate parameters and look up information structure.           
   */                                                                 
  if ( !info )                                                        
ffc0b7d4:	7c bf 2b 79 	mr.     r31,r5                                 
rtems_status_code rtems_object_get_class_information(                 
  int                                 the_api,                        
  int                                 the_class,                      
  rtems_object_api_class_information *info                            
)                                                                     
{                                                                     
ffc0b7d8:	90 01 00 14 	stw     r0,20(r1)                              
  int                  i;                                             
                                                                      
  /*                                                                  
   * Validate parameters and look up information structure.           
   */                                                                 
  if ( !info )                                                        
ffc0b7dc:	41 82 00 90 	beq-    ffc0b86c <rtems_object_get_class_information+0xa4>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  obj_info = _Objects_Get_information( the_api, the_class );          
ffc0b7e0:	54 84 04 3e 	clrlwi  r4,r4,16                               
ffc0b7e4:	48 00 23 f5 	bl      ffc0dbd8 <_Objects_Get_information>    
  if ( !obj_info )                                                    
ffc0b7e8:	7c 69 1b 79 	mr.     r9,r3                                  
    return RTEMS_INVALID_NUMBER;                                      
ffc0b7ec:	38 60 00 0a 	li      r3,10                                  
   */                                                                 
  if ( !info )                                                        
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  obj_info = _Objects_Get_information( the_api, the_class );          
  if ( !obj_info )                                                    
ffc0b7f0:	41 82 00 68 	beq-    ffc0b858 <rtems_object_get_class_information+0x90>
   * Return information about this object class to the user.          
   */                                                                 
  info->minimum_id  = obj_info->minimum_id;                           
  info->maximum_id  = obj_info->maximum_id;                           
  info->auto_extend = obj_info->auto_extend;                          
  info->maximum     = obj_info->maximum;                              
ffc0b7f4:	a0 c9 00 10 	lhz     r6,16(r9)                              
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  /*                                                                  
   * Return information about this object class to the user.          
   */                                                                 
  info->minimum_id  = obj_info->minimum_id;                           
ffc0b7f8:	80 e9 00 08 	lwz     r7,8(r9)                               
  info->maximum_id  = obj_info->maximum_id;                           
  info->auto_extend = obj_info->auto_extend;                          
  info->maximum     = obj_info->maximum;                              
                                                                      
  for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )               
ffc0b7fc:	2f 86 00 00 	cmpwi   cr7,r6,0                               
                                                                      
  /*                                                                  
   * Return information about this object class to the user.          
   */                                                                 
  info->minimum_id  = obj_info->minimum_id;                           
  info->maximum_id  = obj_info->maximum_id;                           
ffc0b800:	81 09 00 0c 	lwz     r8,12(r9)                              
  info->auto_extend = obj_info->auto_extend;                          
ffc0b804:	89 49 00 12 	lbz     r10,18(r9)                             
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  /*                                                                  
   * Return information about this object class to the user.          
   */                                                                 
  info->minimum_id  = obj_info->minimum_id;                           
ffc0b808:	90 ff 00 00 	stw     r7,0(r31)                              
  info->maximum_id  = obj_info->maximum_id;                           
ffc0b80c:	91 1f 00 04 	stw     r8,4(r31)                              
  info->auto_extend = obj_info->auto_extend;                          
ffc0b810:	99 5f 00 0c 	stb     r10,12(r31)                            
  info->maximum     = obj_info->maximum;                              
ffc0b814:	90 df 00 08 	stw     r6,8(r31)                              
                                                                      
  for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )               
ffc0b818:	41 9e 00 6c 	beq-    cr7,ffc0b884 <rtems_object_get_class_information+0xbc><== NEVER TAKEN
ffc0b81c:	80 89 00 1c 	lwz     r4,28(r9)                              
ffc0b820:	39 00 00 01 	li      r8,1                                   
ffc0b824:	39 20 00 01 	li      r9,1                                   
ffc0b828:	39 40 00 00 	li      r10,0                                  
ffc0b82c:	39 29 00 01 	addi    r9,r9,1                                
ffc0b830:	7f 86 48 40 	cmplw   cr7,r6,r9                              
    if ( !obj_info->local_table[i] )                                  
ffc0b834:	55 08 10 3a 	rlwinm  r8,r8,2,0,29                           
ffc0b838:	7c e4 40 2e 	lwzx    r7,r4,r8                               
  info->minimum_id  = obj_info->minimum_id;                           
  info->maximum_id  = obj_info->maximum_id;                           
  info->auto_extend = obj_info->auto_extend;                          
  info->maximum     = obj_info->maximum;                              
                                                                      
  for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )               
ffc0b83c:	7d 28 4b 78 	mr      r8,r9                                  
    if ( !obj_info->local_table[i] )                                  
      unallocated++;                                                  
ffc0b840:	20 a7 00 00 	subfic  r5,r7,0                                
ffc0b844:	7c aa 01 94 	addze   r5,r10                                 
ffc0b848:	7c aa 2b 78 	mr      r10,r5                                 
  info->minimum_id  = obj_info->minimum_id;                           
  info->maximum_id  = obj_info->maximum_id;                           
  info->auto_extend = obj_info->auto_extend;                          
  info->maximum     = obj_info->maximum;                              
                                                                      
  for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )               
ffc0b84c:	40 9c ff e0 	bge+    cr7,ffc0b82c <rtems_object_get_class_information+0x64>
    if ( !obj_info->local_table[i] )                                  
      unallocated++;                                                  
                                                                      
  info->unallocated = unallocated;                                    
ffc0b850:	91 5f 00 10 	stw     r10,16(r31)                            
                                                                      
  return RTEMS_SUCCESSFUL;                                            
ffc0b854:	38 60 00 00 	li      r3,0                                   
}                                                                     
ffc0b858:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0b85c:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0b860:	7c 08 03 a6 	mtlr    r0                                     
ffc0b864:	38 21 00 10 	addi    r1,r1,16                               
ffc0b868:	4e 80 00 20 	blr                                            
ffc0b86c:	80 01 00 14 	lwz     r0,20(r1)                              
                                                                      
  /*                                                                  
   * Validate parameters and look up information structure.           
   */                                                                 
  if ( !info )                                                        
    return RTEMS_INVALID_ADDRESS;                                     
ffc0b870:	38 60 00 09 	li      r3,9                                   
      unallocated++;                                                  
                                                                      
  info->unallocated = unallocated;                                    
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
ffc0b874:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0b878:	7c 08 03 a6 	mtlr    r0                                     
ffc0b87c:	38 21 00 10 	addi    r1,r1,16                               
ffc0b880:	4e 80 00 20 	blr                                            
  info->minimum_id  = obj_info->minimum_id;                           
  info->maximum_id  = obj_info->maximum_id;                           
  info->auto_extend = obj_info->auto_extend;                          
  info->maximum     = obj_info->maximum;                              
                                                                      
  for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )               
ffc0b884:	39 40 00 00 	li      r10,0                                  <== NOT EXECUTED
ffc0b888:	4b ff ff c8 	b       ffc0b850 <rtems_object_get_class_information+0x88><== NOT EXECUTED
                                                                      

ffc0b374 <rtems_partition_create>: uint32_t length, uint32_t buffer_size, rtems_attribute attribute_set, rtems_id *id ) {
ffc0b374:	94 21 ff d0 	stwu    r1,-48(r1)                             
ffc0b378:	7c 08 02 a6 	mflr    r0                                     
ffc0b37c:	93 c1 00 28 	stw     r30,40(r1)                             
  register Partition_Control *the_partition;                          
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
ffc0b380:	7c 7e 1b 79 	mr.     r30,r3                                 
  uint32_t         length,                                            
  uint32_t         buffer_size,                                       
  rtems_attribute  attribute_set,                                     
  rtems_id        *id                                                 
)                                                                     
{                                                                     
ffc0b384:	90 01 00 34 	stw     r0,52(r1)                              
ffc0b388:	93 61 00 1c 	stw     r27,28(r1)                             
ffc0b38c:	93 81 00 20 	stw     r28,32(r1)                             
ffc0b390:	93 a1 00 24 	stw     r29,36(r1)                             
ffc0b394:	93 e1 00 2c 	stw     r31,44(r1)                             
  register Partition_Control *the_partition;                          
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
ffc0b398:	40 82 00 2c 	bne-    ffc0b3c4 <rtems_partition_create+0x50> 
    return RTEMS_INVALID_NAME;                                        
ffc0b39c:	38 60 00 03 	li      r3,3                                   
    );                                                                
#endif                                                                
                                                                      
  _Thread_Enable_dispatch();                                          
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
ffc0b3a0:	80 01 00 34 	lwz     r0,52(r1)                              
ffc0b3a4:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc0b3a8:	7c 08 03 a6 	mtlr    r0                                     
ffc0b3ac:	83 81 00 20 	lwz     r28,32(r1)                             
ffc0b3b0:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc0b3b4:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc0b3b8:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc0b3bc:	38 21 00 30 	addi    r1,r1,48                               
ffc0b3c0:	4e 80 00 20 	blr                                            
  register Partition_Control *the_partition;                          
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
    return RTEMS_INVALID_NAME;                                        
                                                                      
  if ( !starting_address )                                            
ffc0b3c4:	2f 84 00 00 	cmpwi   cr7,r4,0                               
    return RTEMS_INVALID_ADDRESS;                                     
ffc0b3c8:	38 60 00 09 	li      r3,9                                   
  register Partition_Control *the_partition;                          
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
    return RTEMS_INVALID_NAME;                                        
                                                                      
  if ( !starting_address )                                            
ffc0b3cc:	41 be ff d4 	beq-    cr7,ffc0b3a0 <rtems_partition_create+0x2c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !id )                                                          
ffc0b3d0:	2f 88 00 00 	cmpwi   cr7,r8,0                               
ffc0b3d4:	41 be ff cc 	beq-    cr7,ffc0b3a0 <rtems_partition_create+0x2c><== NEVER TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( length == 0 || buffer_size == 0 || length < buffer_size ||     
ffc0b3d8:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc0b3dc:	7c bf 2b 78 	mr      r31,r5                                 
         !_Partition_Is_buffer_size_aligned( buffer_size ) )          
    return RTEMS_INVALID_SIZE;                                        
ffc0b3e0:	38 60 00 08 	li      r3,8                                   
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !id )                                                          
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( length == 0 || buffer_size == 0 || length < buffer_size ||     
ffc0b3e4:	41 9e ff bc 	beq+    cr7,ffc0b3a0 <rtems_partition_create+0x2c>
ffc0b3e8:	2f 86 00 00 	cmpwi   cr7,r6,0                               
ffc0b3ec:	41 9e ff b4 	beq+    cr7,ffc0b3a0 <rtems_partition_create+0x2c>
ffc0b3f0:	7f 85 30 40 	cmplw   cr7,r5,r6                              
ffc0b3f4:	41 9c ff ac 	blt+    cr7,ffc0b3a0 <rtems_partition_create+0x2c>
ffc0b3f8:	70 c9 00 07 	andi.   r9,r6,7                                
ffc0b3fc:	40 82 ff a4 	bne+    ffc0b3a0 <rtems_partition_create+0x2c> 
         !_Partition_Is_buffer_size_aligned( buffer_size ) )          
    return RTEMS_INVALID_SIZE;                                        
                                                                      
  if ( !_Addresses_Is_aligned( starting_address ) )                   
ffc0b400:	70 9b 00 07 	andi.   r27,r4,7                               
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
    return RTEMS_INVALID_NAME;                                        
                                                                      
  if ( !starting_address )                                            
    return RTEMS_INVALID_ADDRESS;                                     
ffc0b404:	38 60 00 09 	li      r3,9                                   
                                                                      
  if ( length == 0 || buffer_size == 0 || length < buffer_size ||     
         !_Partition_Is_buffer_size_aligned( buffer_size ) )          
    return RTEMS_INVALID_SIZE;                                        
                                                                      
  if ( !_Addresses_Is_aligned( starting_address ) )                   
ffc0b408:	40 82 ff 98 	bne+    ffc0b3a0 <rtems_partition_create+0x2c> 
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc0b40c:	3d 20 00 00 	lis     r9,0                                   
ffc0b410:	81 49 28 a8 	lwz     r10,10408(r9)                          
                                                                      
    ++level;                                                          
ffc0b414:	39 4a 00 01 	addi    r10,r10,1                              
    _Thread_Dispatch_disable_level = level;                           
ffc0b418:	91 49 28 a8 	stw     r10,10408(r9)                          
 *  This function allocates a partition control block from            
 *  the inactive chain of free partition control blocks.              
 */                                                                   
RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Allocate ( void )  
{                                                                     
  return (Partition_Control *) _Objects_Allocate( &_Partition_Information );
ffc0b41c:	3f 80 00 00 	lis     r28,0                                  
ffc0b420:	90 81 00 08 	stw     r4,8(r1)                               
ffc0b424:	3b 9c 54 e0 	addi    r28,r28,21728                          
ffc0b428:	7f 83 e3 78 	mr      r3,r28                                 
ffc0b42c:	90 c1 00 0c 	stw     r6,12(r1)                              
ffc0b430:	90 e1 00 10 	stw     r7,16(r1)                              
ffc0b434:	91 01 00 14 	stw     r8,20(r1)                              
ffc0b438:	48 00 23 71 	bl      ffc0d7a8 <_Objects_Allocate>           
                                                                      
  _Thread_Disable_dispatch();               /* prevents deletion */   
                                                                      
  the_partition = _Partition_Allocate();                              
                                                                      
  if ( !the_partition ) {                                             
ffc0b43c:	7c 7d 1b 79 	mr.     r29,r3                                 
ffc0b440:	80 81 00 08 	lwz     r4,8(r1)                               
ffc0b444:	80 c1 00 0c 	lwz     r6,12(r1)                              
ffc0b448:	80 e1 00 10 	lwz     r7,16(r1)                              
ffc0b44c:	81 01 00 14 	lwz     r8,20(r1)                              
ffc0b450:	41 82 00 50 	beq-    ffc0b4a0 <rtems_partition_create+0x12c>
  the_partition->length                = length;                      
  the_partition->buffer_size           = buffer_size;                 
  the_partition->attribute_set         = attribute_set;               
  the_partition->number_of_used_blocks = 0;                           
                                                                      
  _Chain_Initialize( &the_partition->Memory, starting_address,        
ffc0b454:	7c bf 33 96 	divwu   r5,r31,r6                              
    _Thread_Enable_dispatch();                                        
    return RTEMS_TOO_MANY;                                            
  }                                                                   
#endif                                                                
                                                                      
  the_partition->starting_address      = starting_address;            
ffc0b458:	90 9d 00 10 	stw     r4,16(r29)                             
  the_partition->length                = length;                      
  the_partition->buffer_size           = buffer_size;                 
ffc0b45c:	90 dd 00 18 	stw     r6,24(r29)                             
  the_partition->attribute_set         = attribute_set;               
ffc0b460:	90 fd 00 1c 	stw     r7,28(r29)                             
    return RTEMS_TOO_MANY;                                            
  }                                                                   
#endif                                                                
                                                                      
  the_partition->starting_address      = starting_address;            
  the_partition->length                = length;                      
ffc0b464:	93 fd 00 14 	stw     r31,20(r29)                            
  the_partition->buffer_size           = buffer_size;                 
  the_partition->attribute_set         = attribute_set;               
  the_partition->number_of_used_blocks = 0;                           
ffc0b468:	93 7d 00 20 	stw     r27,32(r29)                            
                                                                      
  _Chain_Initialize( &the_partition->Memory, starting_address,        
ffc0b46c:	91 01 00 14 	stw     r8,20(r1)                              
ffc0b470:	38 7d 00 24 	addi    r3,r29,36                              
ffc0b474:	48 00 17 19 	bl      ffc0cb8c <_Chain_Initialize>           
  Objects_Name         name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
ffc0b478:	81 3d 00 08 	lwz     r9,8(r29)                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
ffc0b47c:	80 fc 00 1c 	lwz     r7,28(r28)                             
ffc0b480:	55 2a 13 ba 	rlwinm  r10,r9,2,14,29                         
ffc0b484:	7f a7 51 2e 	stwx    r29,r7,r10                             
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  the_object->name = name;                                            
ffc0b488:	93 dd 00 0c 	stw     r30,12(r29)                            
    &_Partition_Information,                                          
    &the_partition->Object,                                           
    (Objects_Name) name                                               
  );                                                                  
                                                                      
  *id = the_partition->Object.id;                                     
ffc0b48c:	81 01 00 14 	lwz     r8,20(r1)                              
ffc0b490:	91 28 00 00 	stw     r9,0(r8)                               
      name,                                                           
      0                  /* Not used */                               
    );                                                                
#endif                                                                
                                                                      
  _Thread_Enable_dispatch();                                          
ffc0b494:	48 00 3a f9 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
  return RTEMS_SUCCESSFUL;                                            
ffc0b498:	38 60 00 00 	li      r3,0                                   
ffc0b49c:	4b ff ff 04 	b       ffc0b3a0 <rtems_partition_create+0x2c> 
  _Thread_Disable_dispatch();               /* prevents deletion */   
                                                                      
  the_partition = _Partition_Allocate();                              
                                                                      
  if ( !the_partition ) {                                             
    _Thread_Enable_dispatch();                                        
ffc0b4a0:	48 00 3a ed 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
    return RTEMS_TOO_MANY;                                            
ffc0b4a4:	38 60 00 05 	li      r3,5                                   
ffc0b4a8:	4b ff fe f8 	b       ffc0b3a0 <rtems_partition_create+0x2c> 
                                                                      

ffc1a1a0 <rtems_partition_return_buffer>: rtems_status_code rtems_partition_return_buffer( rtems_id id, void *buffer ) {
ffc1a1a0:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc1a1a4:	7c 69 1b 78 	mr      r9,r3                                  
ffc1a1a8:	7c 08 02 a6 	mflr    r0                                     
RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Get (              
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (Partition_Control *)                                        
ffc1a1ac:	3c 60 00 00 	lis     r3,0                                   
ffc1a1b0:	93 c1 00 18 	stw     r30,24(r1)                             
ffc1a1b4:	38 63 6f 30 	addi    r3,r3,28464                            
ffc1a1b8:	7c 9e 23 78 	mr      r30,r4                                 
ffc1a1bc:	38 a1 00 08 	addi    r5,r1,8                                
ffc1a1c0:	90 01 00 24 	stw     r0,36(r1)                              
ffc1a1c4:	7d 24 4b 78 	mr      r4,r9                                  
ffc1a1c8:	93 e1 00 1c 	stw     r31,28(r1)                             
ffc1a1cc:	48 00 67 dd 	bl      ffc209a8 <_Objects_Get>                
  register Partition_Control *the_partition;                          
  Objects_Locations           location;                               
                                                                      
  the_partition = _Partition_Get( id, &location );                    
  switch ( location ) {                                               
ffc1a1d0:	81 21 00 08 	lwz     r9,8(r1)                               
ffc1a1d4:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc1a1d8:	40 9e 00 60 	bne-    cr7,ffc1a238 <rtems_partition_return_buffer+0x98>
)                                                                     
{                                                                     
  void *starting;                                                     
  void *ending;                                                       
                                                                      
  starting = the_partition->starting_address;                         
ffc1a1dc:	81 23 00 10 	lwz     r9,16(r3)                              
ffc1a1e0:	7c 7f 1b 78 	mr      r31,r3                                 
  ending   = _Addresses_Add_offset( starting, the_partition->length );
ffc1a1e4:	81 43 00 14 	lwz     r10,20(r3)                             
  const void *address,                                                
  const void *base,                                                   
  const void *limit                                                   
)                                                                     
{                                                                     
  return (address >= base && address <= limit);                       
ffc1a1e8:	7f 9e 48 40 	cmplw   cr7,r30,r9                             
ffc1a1ec:	41 9c 00 68 	blt-    cr7,ffc1a254 <rtems_partition_return_buffer+0xb4>
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (                    
  const void *base,                                                   
  uintptr_t   offset                                                  
)                                                                     
{                                                                     
  return (void *)((uintptr_t)base + offset);                          
ffc1a1f0:	7d 49 52 14 	add     r10,r9,r10                             
  const void *address,                                                
  const void *base,                                                   
  const void *limit                                                   
)                                                                     
{                                                                     
  return (address >= base && address <= limit);                       
ffc1a1f4:	7f 9e 50 40 	cmplw   cr7,r30,r10                            
ffc1a1f8:	41 9d 00 5c 	bgt-    cr7,ffc1a254 <rtems_partition_return_buffer+0xb4><== NEVER TAKEN
  offset = (uint32_t) _Addresses_Subtract(                            
    the_buffer,                                                       
    the_partition->starting_address                                   
  );                                                                  
                                                                      
  return ((offset % the_partition->buffer_size) == 0);                
ffc1a1fc:	81 43 00 18 	lwz     r10,24(r3)                             
RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract (                    
  const void *left,                                                   
  const void *right                                                   
)                                                                     
{                                                                     
  return (int32_t) ((const char *) left - (const char *) right);      
ffc1a200:	7d 29 f0 50 	subf    r9,r9,r30                              
ffc1a204:	7d 09 53 96 	divwu   r8,r9,r10                              
ffc1a208:	7d 48 51 d6 	mullw   r10,r8,r10                             
                                                                      
  starting = the_partition->starting_address;                         
  ending   = _Addresses_Add_offset( starting, the_partition->length );
                                                                      
  return (                                                            
    _Addresses_Is_in_range( the_buffer, starting, ending ) &&         
ffc1a20c:	7f 89 50 00 	cmpw    cr7,r9,r10                             
ffc1a210:	40 9e 00 44 	bne-    cr7,ffc1a254 <rtems_partition_return_buffer+0xb4>
RTEMS_INLINE_ROUTINE void _Partition_Free_buffer (                    
  Partition_Control *the_partition,                                   
  Chain_Node        *the_buffer                                       
)                                                                     
{                                                                     
  _Chain_Append( &the_partition->Memory, the_buffer );                
ffc1a214:	38 63 00 24 	addi    r3,r3,36                               
ffc1a218:	7f c4 f3 78 	mr      r4,r30                                 
ffc1a21c:	48 00 42 61 	bl      ffc1e47c <_Chain_Append>               
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( _Partition_Is_buffer_valid( buffer, the_partition ) ) {    
        _Partition_Free_buffer( the_partition, buffer );              
        the_partition->number_of_used_blocks -= 1;                    
ffc1a220:	81 3f 00 20 	lwz     r9,32(r31)                             
ffc1a224:	39 29 ff ff 	addi    r9,r9,-1                               
ffc1a228:	91 3f 00 20 	stw     r9,32(r31)                             
        _Thread_Enable_dispatch();                                    
ffc1a22c:	48 00 78 65 	bl      ffc21a90 <_Thread_Enable_dispatch>     
        return RTEMS_SUCCESSFUL;                                      
ffc1a230:	38 60 00 00 	li      r3,0                                   
ffc1a234:	48 00 00 08 	b       ffc1a23c <rtems_partition_return_buffer+0x9c>
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
ffc1a238:	38 60 00 04 	li      r3,4                                   
}                                                                     
ffc1a23c:	80 01 00 24 	lwz     r0,36(r1)                              
ffc1a240:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc1a244:	7c 08 03 a6 	mtlr    r0                                     
ffc1a248:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc1a24c:	38 21 00 20 	addi    r1,r1,32                               
ffc1a250:	4e 80 00 20 	blr                                            
        _Partition_Free_buffer( the_partition, buffer );              
        the_partition->number_of_used_blocks -= 1;                    
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
      _Thread_Enable_dispatch();                                      
ffc1a254:	48 00 78 3d 	bl      ffc21a90 <_Thread_Enable_dispatch>     
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc1a258:	80 01 00 24 	lwz     r0,36(r1)                              
ffc1a25c:	83 c1 00 18 	lwz     r30,24(r1)                             
        the_partition->number_of_used_blocks -= 1;                    
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
      _Thread_Enable_dispatch();                                      
      return RTEMS_INVALID_ADDRESS;                                   
ffc1a260:	38 60 00 09 	li      r3,9                                   
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc1a264:	7c 08 03 a6 	mtlr    r0                                     
ffc1a268:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc1a26c:	38 21 00 20 	addi    r1,r1,32                               
ffc1a270:	4e 80 00 20 	blr                                            
                                                                      

ffc3f3f0 <rtems_rate_monotonic_period>: rtems_status_code rtems_rate_monotonic_period( rtems_id id, rtems_interval length ) {
ffc3f3f0:	94 21 ff d0 	stwu    r1,-48(r1)                             
ffc3f3f4:	7c 08 02 a6 	mflr    r0                                     
ffc3f3f8:	93 e1 00 2c 	stw     r31,44(r1)                             
ffc3f3fc:	7c 7f 1b 78 	mr      r31,r3                                 
ffc3f400:	3c 60 00 00 	lis     r3,0                                   
ffc3f404:	93 a1 00 24 	stw     r29,36(r1)                             
ffc3f408:	38 63 6f 3c 	addi    r3,r3,28476                            
ffc3f40c:	7c 9d 23 78 	mr      r29,r4                                 
ffc3f410:	38 a1 00 08 	addi    r5,r1,8                                
ffc3f414:	90 01 00 34 	stw     r0,52(r1)                              
ffc3f418:	7f e4 fb 78 	mr      r4,r31                                 
ffc3f41c:	93 61 00 1c 	stw     r27,28(r1)                             
ffc3f420:	93 81 00 20 	stw     r28,32(r1)                             
ffc3f424:	93 c1 00 28 	stw     r30,40(r1)                             
ffc3f428:	4b fc be 6d 	bl      ffc0b294 <_Objects_Get>                
  rtems_rate_monotonic_period_states   local_state;                   
  ISR_Level                            level;                         
                                                                      
  the_period = _Rate_monotonic_Get( id, &location );                  
                                                                      
  switch ( location ) {                                               
ffc3f42c:	81 21 00 08 	lwz     r9,8(r1)                               
ffc3f430:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc3f434:	40 9e 00 50 	bne-    cr7,ffc3f484 <rtems_rate_monotonic_period+0x94>
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (                      
  const Thread_Control *the_thread                                    
)                                                                     
{                                                                     
  return ( the_thread == _Thread_Executing );                         
ffc3f438:	3f 80 00 00 	lis     r28,0                                  
    case OBJECTS_LOCAL:                                               
      if ( !_Thread_Is_executing( the_period->owner ) ) {             
ffc3f43c:	81 43 00 40 	lwz     r10,64(r3)                             
ffc3f440:	3b 9c 69 20 	addi    r28,r28,26912                          
ffc3f444:	81 3c 00 10 	lwz     r9,16(r28)                             
ffc3f448:	7c 7e 1b 78 	mr      r30,r3                                 
ffc3f44c:	7f 8a 48 00 	cmpw    cr7,r10,r9                             
ffc3f450:	41 9e 00 60 	beq-    cr7,ffc3f4b0 <rtems_rate_monotonic_period+0xc0>
        _Thread_Enable_dispatch();                                    
ffc3f454:	4b fc ce 91 	bl      ffc0c2e4 <_Thread_Enable_dispatch>     
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc3f458:	80 01 00 34 	lwz     r0,52(r1)                              
                                                                      
  switch ( location ) {                                               
    case OBJECTS_LOCAL:                                               
      if ( !_Thread_Is_executing( the_period->owner ) ) {             
        _Thread_Enable_dispatch();                                    
        return RTEMS_NOT_OWNER_OF_RESOURCE;                           
ffc3f45c:	3b e0 00 17 	li      r31,23                                 
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc3f460:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc3f464:	7c 08 03 a6 	mtlr    r0                                     
ffc3f468:	7f e3 fb 78 	mr      r3,r31                                 
ffc3f46c:	83 81 00 20 	lwz     r28,32(r1)                             
ffc3f470:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc3f474:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc3f478:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc3f47c:	38 21 00 30 	addi    r1,r1,48                               
ffc3f480:	4e 80 00 20 	blr                                            
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
ffc3f484:	3b e0 00 04 	li      r31,4                                  
}                                                                     
ffc3f488:	80 01 00 34 	lwz     r0,52(r1)                              
ffc3f48c:	7f e3 fb 78 	mr      r3,r31                                 
ffc3f490:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc3f494:	7c 08 03 a6 	mtlr    r0                                     
ffc3f498:	83 81 00 20 	lwz     r28,32(r1)                             
ffc3f49c:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc3f4a0:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc3f4a4:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc3f4a8:	38 21 00 30 	addi    r1,r1,48                               
ffc3f4ac:	4e 80 00 20 	blr                                            
      if ( !_Thread_Is_executing( the_period->owner ) ) {             
        _Thread_Enable_dispatch();                                    
        return RTEMS_NOT_OWNER_OF_RESOURCE;                           
      }                                                               
                                                                      
      if ( length == RTEMS_PERIOD_STATUS ) {                          
ffc3f4b0:	2f 9d 00 00 	cmpwi   cr7,r29,0                              
ffc3f4b4:	41 9e 00 80 	beq-    cr7,ffc3f534 <rtems_rate_monotonic_period+0x144>
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc3f4b8:	7f 60 00 a6 	mfmsr   r27                                    
ffc3f4bc:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc3f4c0:	7f 69 48 78 	andc    r9,r27,r9                              
ffc3f4c4:	7d 20 01 24 	mtmsr   r9                                     
        _Thread_Enable_dispatch();                                    
        return( return_value );                                       
      }                                                               
                                                                      
      _ISR_Disable( level );                                          
      if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {           
ffc3f4c8:	81 23 00 38 	lwz     r9,56(r3)                              
ffc3f4cc:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc3f4d0:	41 9e 00 8c 	beq-    cr7,ffc3f55c <rtems_rate_monotonic_period+0x16c>
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
                                                                      
      if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {             
ffc3f4d4:	2f 89 00 02 	cmpwi   cr7,r9,2                               
ffc3f4d8:	41 9e 00 d4 	beq-    cr7,ffc3f5ac <rtems_rate_monotonic_period+0x1bc>
                                                                      
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
                                                                      
      if ( the_period->state == RATE_MONOTONIC_EXPIRED ) {            
ffc3f4dc:	2f 89 00 04 	cmpwi   cr7,r9,4                               
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
ffc3f4e0:	3b e0 00 04 	li      r31,4                                  
                                                                      
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
                                                                      
      if ( the_period->state == RATE_MONOTONIC_EXPIRED ) {            
ffc3f4e4:	40 9e ff a4 	bne+    cr7,ffc3f488 <rtems_rate_monotonic_period+0x98><== NEVER TAKEN
        /*                                                            
         *  Update statistics from the concluding period              
         */                                                           
        _Rate_monotonic_Update_statistics( the_period );              
ffc3f4e8:	4b ff fc d9 	bl      ffc3f1c0 <_Rate_monotonic_Update_statistics>
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc3f4ec:	7f 60 01 24 	mtmsr   r27                                    
                                                                      
        _ISR_Enable( level );                                         
                                                                      
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
ffc3f4f0:	39 20 00 02 	li      r9,2                                   
        the_period->next_length = length;                             
ffc3f4f4:	93 be 00 3c 	stw     r29,60(r30)                            
ffc3f4f8:	3c 60 00 00 	lis     r3,0                                   
         */                                                           
        _Rate_monotonic_Update_statistics( the_period );              
                                                                      
        _ISR_Enable( level );                                         
                                                                      
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
ffc3f4fc:	91 3e 00 38 	stw     r9,56(r30)                             
ffc3f500:	38 63 65 28 	addi    r3,r3,25896                            
ffc3f504:	38 9e 00 10 	addi    r4,r30,16                              
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
ffc3f508:	93 be 00 1c 	stw     r29,28(r30)                            
        the_period->next_length = length;                             
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Scheduler_Release_job(the_period->owner, the_period->next_length);
        _Thread_Enable_dispatch();                                    
        return RTEMS_TIMEOUT;                                         
ffc3f50c:	3b e0 00 06 	li      r31,6                                  
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
ffc3f510:	4b fc dd 79 	bl      ffc0d288 <_Watchdog_Insert>            
ffc3f514:	3d 20 00 00 	lis     r9,0                                   
ffc3f518:	81 29 20 c0 	lwz     r9,8384(r9)                            
ffc3f51c:	80 7e 00 40 	lwz     r3,64(r30)                             
ffc3f520:	80 9e 00 3c 	lwz     r4,60(r30)                             
ffc3f524:	7d 29 03 a6 	mtctr   r9                                     
ffc3f528:	4e 80 04 21 	bctrl                                          
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
        the_period->next_length = length;                             
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Scheduler_Release_job(the_period->owner, the_period->next_length);
        _Thread_Enable_dispatch();                                    
ffc3f52c:	4b fc cd b9 	bl      ffc0c2e4 <_Thread_Enable_dispatch>     
ffc3f530:	4b ff ff 58 	b       ffc3f488 <rtems_rate_monotonic_period+0x98>
        _Thread_Enable_dispatch();                                    
        return RTEMS_NOT_OWNER_OF_RESOURCE;                           
      }                                                               
                                                                      
      if ( length == RTEMS_PERIOD_STATUS ) {                          
        switch ( the_period->state ) {                                
ffc3f534:	81 23 00 38 	lwz     r9,56(r3)                              
ffc3f538:	3b e0 00 00 	li      r31,0                                  
ffc3f53c:	2b 89 00 04 	cmplwi  cr7,r9,4                               
ffc3f540:	41 9d 00 14 	bgt-    cr7,ffc3f554 <rtems_rate_monotonic_period+0x164><== NEVER TAKEN
ffc3f544:	3d 40 ff c7 	lis     r10,-57                                
ffc3f548:	55 29 10 3a 	rlwinm  r9,r9,2,0,29                           
ffc3f54c:	39 4a b1 50 	addi    r10,r10,-20144                         
ffc3f550:	7f ea 48 2e 	lwzx    r31,r10,r9                             
          case RATE_MONOTONIC_ACTIVE:                                 
          default:              /* unreached -- only to remove warnings */
            return_value = RTEMS_SUCCESSFUL;                          
            break;                                                    
        }                                                             
        _Thread_Enable_dispatch();                                    
ffc3f554:	4b fc cd 91 	bl      ffc0c2e4 <_Thread_Enable_dispatch>     
ffc3f558:	4b ff ff 30 	b       ffc3f488 <rtems_rate_monotonic_period+0x98>
ffc3f55c:	7f 60 01 24 	mtmsr   r27                                    
                                                                      
      _ISR_Disable( level );                                          
      if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {           
        _ISR_Enable( level );                                         
                                                                      
        the_period->next_length = length;                             
ffc3f560:	93 a3 00 3c 	stw     r29,60(r3)                             
                                                                      
        /*                                                            
         *  Baseline statistics information for the beginning of a period.
         */                                                           
        _Rate_monotonic_Initiate_statistics( the_period );            
ffc3f564:	4b ff fd ad 	bl      ffc3f310 <_Rate_monotonic_Initiate_statistics>
                                                                      
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
ffc3f568:	39 40 00 02 	li      r10,2                                  
ffc3f56c:	91 5e 00 38 	stw     r10,56(r30)                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
ffc3f570:	3d 40 ff c4 	lis     r10,-60                                
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
ffc3f574:	39 20 00 00 	li      r9,0                                   
  the_watchdog->routine   = routine;                                  
ffc3f578:	39 4a f6 1c 	addi    r10,r10,-2532                          
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
ffc3f57c:	91 3e 00 18 	stw     r9,24(r30)                             
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
ffc3f580:	3c 60 00 00 	lis     r3,0                                   
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
ffc3f584:	91 5e 00 2c 	stw     r10,44(r30)                            
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
ffc3f588:	38 63 65 28 	addi    r3,r3,25896                            
ffc3f58c:	38 9e 00 10 	addi    r4,r30,16                              
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
  the_watchdog->id        = id;                                       
ffc3f590:	93 fe 00 30 	stw     r31,48(r30)                            
          NULL                                                        
        );                                                            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
ffc3f594:	3b e0 00 00 	li      r31,0                                  
  the_watchdog->user_data = user_data;                                
ffc3f598:	91 3e 00 34 	stw     r9,52(r30)                             
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
ffc3f59c:	93 be 00 1c 	stw     r29,28(r30)                            
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
ffc3f5a0:	4b fc dc e9 	bl      ffc0d288 <_Watchdog_Insert>            
          id,                                                         
          NULL                                                        
        );                                                            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
ffc3f5a4:	4b fc cd 41 	bl      ffc0c2e4 <_Thread_Enable_dispatch>     
ffc3f5a8:	4b ff fe e0 	b       ffc3f488 <rtems_rate_monotonic_period+0x98>
                                                                      
      if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {             
        /*                                                            
         *  Update statistics from the concluding period.             
         */                                                           
        _Rate_monotonic_Update_statistics( the_period );              
ffc3f5ac:	4b ff fc 15 	bl      ffc3f1c0 <_Rate_monotonic_Update_statistics>
        /*                                                            
         *  This tells the _Rate_monotonic_Timeout that this task is  
         *  in the process of blocking on the period and that we      
         *  may be changing the length of the next period.            
         */                                                           
        the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING;         
ffc3f5b0:	39 20 00 01 	li      r9,1                                   
ffc3f5b4:	91 3e 00 38 	stw     r9,56(r30)                             
        the_period->next_length = length;                             
ffc3f5b8:	93 be 00 3c 	stw     r29,60(r30)                            
ffc3f5bc:	7f 60 01 24 	mtmsr   r27                                    
                                                                      
        _ISR_Enable( level );                                         
                                                                      
        _Thread_Executing->Wait.id = the_period->Object.id;           
ffc3f5c0:	81 3c 00 10 	lwz     r9,16(r28)                             
        _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
ffc3f5c4:	38 80 40 00 	li      r4,16384                               
        the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING;         
        the_period->next_length = length;                             
                                                                      
        _ISR_Enable( level );                                         
                                                                      
        _Thread_Executing->Wait.id = the_period->Object.id;           
ffc3f5c8:	81 5e 00 08 	lwz     r10,8(r30)                             
        _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
ffc3f5cc:	7d 23 4b 78 	mr      r3,r9                                  
        the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING;         
        the_period->next_length = length;                             
                                                                      
        _ISR_Enable( level );                                         
                                                                      
        _Thread_Executing->Wait.id = the_period->Object.id;           
ffc3f5d0:	91 49 00 20 	stw     r10,32(r9)                             
        _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
ffc3f5d4:	4b fc d7 f9 	bl      ffc0cdcc <_Thread_Set_state>           
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc3f5d8:	7d 40 00 a6 	mfmsr   r10                                    
ffc3f5dc:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc3f5e0:	7d 49 48 78 	andc    r9,r10,r9                              
ffc3f5e4:	7d 20 01 24 	mtmsr   r9                                     
         *  Did the watchdog timer expire while we were actually blocking
         *  on it?                                                    
         */                                                           
        _ISR_Disable( level );                                        
          local_state = the_period->state;                            
          the_period->state = RATE_MONOTONIC_ACTIVE;                  
ffc3f5e8:	39 00 00 02 	li      r8,2                                   
        /*                                                            
         *  Did the watchdog timer expire while we were actually blocking
         *  on it?                                                    
         */                                                           
        _ISR_Disable( level );                                        
          local_state = the_period->state;                            
ffc3f5ec:	81 3e 00 38 	lwz     r9,56(r30)                             
          the_period->state = RATE_MONOTONIC_ACTIVE;                  
ffc3f5f0:	91 1e 00 38 	stw     r8,56(r30)                             
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc3f5f4:	7d 40 01 24 	mtmsr   r10                                    
                                                                      
        /*                                                            
         *  If it did, then we want to unblock ourself and continue as
         *  if nothing happen.  The period was reset in the timeout routine.
         */                                                           
        if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING )   
ffc3f5f8:	2f 89 00 03 	cmpwi   cr7,r9,3                               
ffc3f5fc:	41 9e 00 10 	beq-    cr7,ffc3f60c <rtems_rate_monotonic_period+0x21c><== NEVER TAKEN
          _Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
                                                                      
        _Thread_Enable_dispatch();                                    
ffc3f600:	4b fc cc e5 	bl      ffc0c2e4 <_Thread_Enable_dispatch>     
        return RTEMS_SUCCESSFUL;                                      
ffc3f604:	3b e0 00 00 	li      r31,0                                  
ffc3f608:	4b ff fe 80 	b       ffc3f488 <rtems_rate_monotonic_period+0x98>
        /*                                                            
         *  If it did, then we want to unblock ourself and continue as
         *  if nothing happen.  The period was reset in the timeout routine.
         */                                                           
        if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING )   
          _Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
ffc3f60c:	80 7c 00 10 	lwz     r3,16(r28)                             <== NOT EXECUTED
ffc3f610:	38 80 40 00 	li      r4,16384                               <== NOT EXECUTED
ffc3f614:	4b fc c7 d1 	bl      ffc0bde4 <_Thread_Clear_state>         <== NOT EXECUTED
ffc3f618:	4b ff ff e8 	b       ffc3f600 <rtems_rate_monotonic_period+0x210><== NOT EXECUTED
                                                                      

ffc2f6d4 <rtems_rate_monotonic_report_statistics_with_plugin>: void rtems_rate_monotonic_report_statistics_with_plugin( void *context, rtems_printk_plugin_t print ) {
ffc2f6d4:	94 21 ff 70 	stwu    r1,-144(r1)                            
ffc2f6d8:	7c 08 02 a6 	mflr    r0                                     
ffc2f6dc:	93 c1 00 88 	stw     r30,136(r1)                            
  rtems_id                               id;                          
  rtems_rate_monotonic_period_statistics the_stats;                   
  rtems_rate_monotonic_period_status     the_status;                  
  char                                   name[5];                     
                                                                      
  if ( !print )                                                       
ffc2f6e0:	7c 9e 23 79 	mr.     r30,r4                                 
                                                                      
void rtems_rate_monotonic_report_statistics_with_plugin(              
  void                  *context,                                     
  rtems_printk_plugin_t  print                                        
)                                                                     
{                                                                     
ffc2f6e4:	90 01 00 94 	stw     r0,148(r1)                             
ffc2f6e8:	92 e1 00 6c 	stw     r23,108(r1)                            
ffc2f6ec:	93 01 00 70 	stw     r24,112(r1)                            
ffc2f6f0:	93 21 00 74 	stw     r25,116(r1)                            
ffc2f6f4:	93 41 00 78 	stw     r26,120(r1)                            
ffc2f6f8:	93 61 00 7c 	stw     r27,124(r1)                            
ffc2f6fc:	93 81 00 80 	stw     r28,128(r1)                            
ffc2f700:	93 a1 00 84 	stw     r29,132(r1)                            
ffc2f704:	93 e1 00 8c 	stw     r31,140(r1)                            
  rtems_id                               id;                          
  rtems_rate_monotonic_period_statistics the_stats;                   
  rtems_rate_monotonic_period_status     the_status;                  
  char                                   name[5];                     
                                                                      
  if ( !print )                                                       
ffc2f708:	41 82 01 5c 	beq-    ffc2f864 <rtems_rate_monotonic_report_statistics_with_plugin+0x190><== NEVER TAKEN
    return;                                                           
                                                                      
  (*print)( context, "Period information by period\n" );              
ffc2f70c:	3c 80 ff c7 	lis     r4,-57                                 
ffc2f710:	7f c9 03 a6 	mtctr   r30                                    
ffc2f714:	38 84 81 6c 	addi    r4,r4,-32404                           
ffc2f718:	7c 7c 1b 78 	mr      r28,r3                                 
                                                                      
  /*                                                                  
   * Cycle through all possible ids and try to report on each one.  If it
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
ffc2f71c:	3f a0 00 00 	lis     r29,0                                  
ffc2f720:	3b bd 6f 3c 	addi    r29,r29,28476                          
  char                                   name[5];                     
                                                                      
  if ( !print )                                                       
    return;                                                           
                                                                      
  (*print)( context, "Period information by period\n" );              
ffc2f724:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc2f728:	4e 80 04 21 	bctrl                                          
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    (*print)( context, "--- CPU times are in seconds ---\n" );        
ffc2f72c:	3c 80 ff c7 	lis     r4,-57                                 
ffc2f730:	38 84 81 8c 	addi    r4,r4,-32372                           
ffc2f734:	7f c9 03 a6 	mtctr   r30                                    
ffc2f738:	7f 83 e3 78 	mr      r3,r28                                 
ffc2f73c:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc2f740:	4e 80 04 21 	bctrl                                          
    (*print)( context, "--- Wall times are in seconds ---\n" );       
ffc2f744:	3c 80 ff c7 	lis     r4,-57                                 
ffc2f748:	38 84 81 b0 	addi    r4,r4,-32336                           
ffc2f74c:	7f c9 03 a6 	mtctr   r30                                    
ffc2f750:	7f 83 e3 78 	mr      r3,r28                                 
ffc2f754:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc2f758:	4e 80 04 21 	bctrl                                          
  Be sure to test the various cases.                                  
  (*print)( context,"\                                                
1234567890123456789012345678901234567890123456789012345678901234567890123456789\
\n");                                                                 
*/                                                                    
  (*print)( context, "   ID     OWNER COUNT MISSED     "              
ffc2f75c:	3c 80 ff c7 	lis     r4,-57                                 
ffc2f760:	38 84 81 d4 	addi    r4,r4,-32300                           
ffc2f764:	7f c9 03 a6 	mtctr   r30                                    
ffc2f768:	7f 83 e3 78 	mr      r3,r28                                 
ffc2f76c:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc2f770:	4e 80 04 21 	bctrl                                          
       #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                     
          "          "                                                
       #endif                                                         
          "   WALL TIME\n"                                            
  );                                                                  
  (*print)( context, "                               "                
ffc2f774:	3c 80 ff c7 	lis     r4,-57                                 
ffc2f778:	7f 83 e3 78 	mr      r3,r28                                 
ffc2f77c:	7f c9 03 a6 	mtctr   r30                                    
ffc2f780:	38 84 82 20 	addi    r4,r4,-32224                           
ffc2f784:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc2f788:	4e 80 04 21 	bctrl                                          
                                                                      
  /*                                                                  
   * Cycle through all possible ids and try to report on each one.  If it
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
ffc2f78c:	83 fd 00 08 	lwz     r31,8(r29)                             
ffc2f790:	81 3d 00 0c 	lwz     r9,12(r29)                             
ffc2f794:	7f 9f 48 40 	cmplw   cr7,r31,r9                             
ffc2f798:	41 9d 00 cc 	bgt-    cr7,ffc2f864 <rtems_rate_monotonic_report_statistics_with_plugin+0x190><== NEVER TAKEN
    rtems_object_get_name( the_status.owner, sizeof(name), name );    
                                                                      
    /*                                                                
     *  Print part of report line that is not dependent on granularity
     */                                                               
    (*print)( context,                                                
ffc2f79c:	3f 20 ff c7 	lis     r25,-57                                
      struct timespec *min_cpu = &the_stats.min_cpu_time;             
      struct timespec *max_cpu = &the_stats.max_cpu_time;             
      struct timespec *total_cpu = &the_stats.total_cpu_time;         
                                                                      
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
      (*print)( context,                                              
ffc2f7a0:	3e e0 ff c7 	lis     r23,-57                                
ffc2f7a4:	3f 60 10 62 	lis     r27,4194                               
      struct timespec *min_wall = &the_stats.min_wall_time;           
      struct timespec *max_wall = &the_stats.max_wall_time;           
      struct timespec *total_wall = &the_stats.total_wall_time;       
                                                                      
      _Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average);
      (*print)( context,                                              
ffc2f7a8:	3f 00 ff c7 	lis     r24,-57                                
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
      (*print)( context, "\n" );                                      
ffc2f7ac:	3f 40 ff c7 	lis     r26,-57                                
    rtems_object_get_name( the_status.owner, sizeof(name), name );    
                                                                      
    /*                                                                
     *  Print part of report line that is not dependent on granularity
     */                                                               
    (*print)( context,                                                
ffc2f7b0:	3b 39 82 6c 	addi    r25,r25,-32148                         
      struct timespec *min_cpu = &the_stats.min_cpu_time;             
      struct timespec *max_cpu = &the_stats.max_cpu_time;             
      struct timespec *total_cpu = &the_stats.total_cpu_time;         
                                                                      
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
      (*print)( context,                                              
ffc2f7b4:	3a f7 82 84 	addi    r23,r23,-32124                         
ffc2f7b8:	63 7b 4d d3 	ori     r27,r27,19923                          
      struct timespec *min_wall = &the_stats.min_wall_time;           
      struct timespec *max_wall = &the_stats.max_wall_time;           
      struct timespec *total_wall = &the_stats.total_wall_time;       
                                                                      
      _Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average);
      (*print)( context,                                              
ffc2f7bc:	3b 18 82 a4 	addi    r24,r24,-32092                         
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
      (*print)( context, "\n" );                                      
ffc2f7c0:	3b 5a 9a 34 	addi    r26,r26,-26060                         
ffc2f7c4:	48 00 00 14 	b       ffc2f7d8 <rtems_rate_monotonic_report_statistics_with_plugin+0x104>
                                                                      
  /*                                                                  
   * Cycle through all possible ids and try to report on each one.  If it
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
ffc2f7c8:	81 3d 00 0c 	lwz     r9,12(r29)                             
        id <= _Rate_monotonic_Information.maximum_id ;                
        id++ ) {                                                      
ffc2f7cc:	3b ff 00 01 	addi    r31,r31,1                              
                                                                      
  /*                                                                  
   * Cycle through all possible ids and try to report on each one.  If it
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
ffc2f7d0:	7f 89 f8 40 	cmplw   cr7,r9,r31                             
ffc2f7d4:	41 9c 00 90 	blt-    cr7,ffc2f864 <rtems_rate_monotonic_report_statistics_with_plugin+0x190>
        id <= _Rate_monotonic_Information.maximum_id ;                
        id++ ) {                                                      
    status = rtems_rate_monotonic_get_statistics( id, &the_stats );   
ffc2f7d8:	7f e3 fb 78 	mr      r3,r31                                 
ffc2f7dc:	38 81 00 08 	addi    r4,r1,8                                
ffc2f7e0:	48 00 f5 39 	bl      ffc3ed18 <rtems_rate_monotonic_get_statistics>
    if ( status != RTEMS_SUCCESSFUL )                                 
ffc2f7e4:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc2f7e8:	40 9e ff e0 	bne+    cr7,ffc2f7c8 <rtems_rate_monotonic_report_statistics_with_plugin+0xf4>
    #if defined(RTEMS_DEBUG)                                          
      status = rtems_rate_monotonic_get_status( id, &the_status );    
      if ( status != RTEMS_SUCCESSFUL )                               
        continue;                                                     
    #else                                                             
      (void) rtems_rate_monotonic_get_status( id, &the_status );      
ffc2f7ec:	38 81 00 40 	addi    r4,r1,64                               
ffc2f7f0:	7f e3 fb 78 	mr      r3,r31                                 
ffc2f7f4:	48 00 f7 4d 	bl      ffc3ef40 <rtems_rate_monotonic_get_status>
    #endif                                                            
                                                                      
    rtems_object_get_name( the_status.owner, sizeof(name), name );    
ffc2f7f8:	80 61 00 40 	lwz     r3,64(r1)                              
ffc2f7fc:	38 a1 00 60 	addi    r5,r1,96                               
ffc2f800:	38 80 00 05 	li      r4,5                                   
ffc2f804:	4b fe 35 a1 	bl      ffc12da4 <rtems_object_get_name>       
                                                                      
    /*                                                                
     *  Print part of report line that is not dependent on granularity
     */                                                               
    (*print)( context,                                                
ffc2f808:	7f 24 cb 78 	mr      r4,r25                                 
ffc2f80c:	7f e5 fb 78 	mr      r5,r31                                 
ffc2f810:	80 e1 00 08 	lwz     r7,8(r1)                               
ffc2f814:	7f 83 e3 78 	mr      r3,r28                                 
ffc2f818:	81 01 00 0c 	lwz     r8,12(r1)                              
ffc2f81c:	38 c1 00 60 	addi    r6,r1,96                               
ffc2f820:	7f c9 03 a6 	mtctr   r30                                    
ffc2f824:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc2f828:	4e 80 04 21 	bctrl                                          
    );                                                                
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
ffc2f82c:	81 21 00 08 	lwz     r9,8(r1)                               
      struct timespec  cpu_average;                                   
      struct timespec *min_cpu = &the_stats.min_cpu_time;             
      struct timespec *max_cpu = &the_stats.max_cpu_time;             
      struct timespec *total_cpu = &the_stats.total_cpu_time;         
                                                                      
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
ffc2f830:	38 61 00 20 	addi    r3,r1,32                               
    );                                                                
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
ffc2f834:	2f 89 00 00 	cmpwi   cr7,r9,0                               
      struct timespec  cpu_average;                                   
      struct timespec *min_cpu = &the_stats.min_cpu_time;             
      struct timespec *max_cpu = &the_stats.max_cpu_time;             
      struct timespec *total_cpu = &the_stats.total_cpu_time;         
                                                                      
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
ffc2f838:	38 a1 00 58 	addi    r5,r1,88                               
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
      (*print)( context, "\n" );                                      
ffc2f83c:	7f 44 d3 78 	mr      r4,r26                                 
    );                                                                
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
ffc2f840:	40 9e 00 58 	bne-    cr7,ffc2f898 <rtems_rate_monotonic_report_statistics_with_plugin+0x1c4>
      (*print)( context, "\n" );                                      
ffc2f844:	7f 83 e3 78 	mr      r3,r28                                 
ffc2f848:	7f c9 03 a6 	mtctr   r30                                    
   * Cycle through all possible ids and try to report on each one.  If it
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
        id <= _Rate_monotonic_Information.maximum_id ;                
        id++ ) {                                                      
ffc2f84c:	3b ff 00 01 	addi    r31,r31,1                              
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
      (*print)( context, "\n" );                                      
ffc2f850:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc2f854:	4e 80 04 21 	bctrl                                          
                                                                      
  /*                                                                  
   * Cycle through all possible ids and try to report on each one.  If it
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
ffc2f858:	81 3d 00 0c 	lwz     r9,12(r29)                             
ffc2f85c:	7f 89 f8 40 	cmplw   cr7,r9,r31                             
ffc2f860:	40 9c ff 78 	bge+    cr7,ffc2f7d8 <rtems_rate_monotonic_report_statistics_with_plugin+0x104><== ALWAYS TAKEN
        the_stats.min_wall_time, the_stats.max_wall_time, ival_wall, fval_wall
      );                                                              
    #endif                                                            
    }                                                                 
  }                                                                   
}                                                                     
ffc2f864:	80 01 00 94 	lwz     r0,148(r1)                             
ffc2f868:	82 e1 00 6c 	lwz     r23,108(r1)                            
ffc2f86c:	7c 08 03 a6 	mtlr    r0                                     
ffc2f870:	83 01 00 70 	lwz     r24,112(r1)                            
ffc2f874:	83 21 00 74 	lwz     r25,116(r1)                            
ffc2f878:	83 41 00 78 	lwz     r26,120(r1)                            
ffc2f87c:	83 61 00 7c 	lwz     r27,124(r1)                            
ffc2f880:	83 81 00 80 	lwz     r28,128(r1)                            
ffc2f884:	83 a1 00 84 	lwz     r29,132(r1)                            
ffc2f888:	83 c1 00 88 	lwz     r30,136(r1)                            
ffc2f88c:	83 e1 00 8c 	lwz     r31,140(r1)                            
ffc2f890:	38 21 00 90 	addi    r1,r1,144                              
ffc2f894:	4e 80 00 20 	blr                                            
      struct timespec  cpu_average;                                   
      struct timespec *min_cpu = &the_stats.min_cpu_time;             
      struct timespec *max_cpu = &the_stats.max_cpu_time;             
      struct timespec *total_cpu = &the_stats.total_cpu_time;         
                                                                      
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
ffc2f898:	7d 24 4b 78 	mr      r4,r9                                  
ffc2f89c:	48 00 0f 15 	bl      ffc307b0 <_Timespec_Divide_by_integer> 
      (*print)( context,                                              
ffc2f8a0:	81 01 00 14 	lwz     r8,20(r1)                              
ffc2f8a4:	81 41 00 1c 	lwz     r10,28(r1)                             
ffc2f8a8:	7f c9 03 a6 	mtctr   r30                                    
ffc2f8ac:	80 61 00 5c 	lwz     r3,92(r1)                              
ffc2f8b0:	7d 68 d8 96 	mulhw   r11,r8,r27                             
ffc2f8b4:	80 e1 00 18 	lwz     r7,24(r1)                              
ffc2f8b8:	7c 03 d8 96 	mulhw   r0,r3,r27                              
ffc2f8bc:	81 21 00 58 	lwz     r9,88(r1)                              
ffc2f8c0:	80 a1 00 10 	lwz     r5,16(r1)                              
ffc2f8c4:	7c 8a d8 96 	mulhw   r4,r10,r27                             
ffc2f8c8:	7d 6b 36 70 	srawi   r11,r11,6                              
ffc2f8cc:	7d 06 fe 70 	srawi   r6,r8,31                               
ffc2f8d0:	7c 63 fe 70 	srawi   r3,r3,31                               
ffc2f8d4:	7c 88 36 70 	srawi   r8,r4,6                                
ffc2f8d8:	7d 44 fe 70 	srawi   r4,r10,31                              
ffc2f8dc:	7c 0a 36 70 	srawi   r10,r0,6                               
ffc2f8e0:	7c c6 58 50 	subf    r6,r6,r11                              
ffc2f8e4:	7d 04 40 50 	subf    r8,r4,r8                               
ffc2f8e8:	7d 43 50 50 	subf    r10,r3,r10                             
ffc2f8ec:	7e e4 bb 78 	mr      r4,r23                                 
ffc2f8f0:	7f 83 e3 78 	mr      r3,r28                                 
ffc2f8f4:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc2f8f8:	4e 80 04 21 	bctrl                                          
      struct timespec  wall_average;                                  
      struct timespec *min_wall = &the_stats.min_wall_time;           
      struct timespec *max_wall = &the_stats.max_wall_time;           
      struct timespec *total_wall = &the_stats.total_wall_time;       
                                                                      
      _Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average);
ffc2f8fc:	80 81 00 08 	lwz     r4,8(r1)                               
ffc2f900:	38 61 00 38 	addi    r3,r1,56                               
ffc2f904:	38 a1 00 58 	addi    r5,r1,88                               
ffc2f908:	48 00 0e a9 	bl      ffc307b0 <_Timespec_Divide_by_integer> 
      (*print)( context,                                              
ffc2f90c:	81 01 00 2c 	lwz     r8,44(r1)                              
ffc2f910:	81 41 00 34 	lwz     r10,52(r1)                             
ffc2f914:	7f c9 03 a6 	mtctr   r30                                    
ffc2f918:	80 61 00 5c 	lwz     r3,92(r1)                              
ffc2f91c:	7d 88 d8 96 	mulhw   r12,r8,r27                             
ffc2f920:	80 a1 00 28 	lwz     r5,40(r1)                              
ffc2f924:	7d 6a d8 96 	mulhw   r11,r10,r27                            
ffc2f928:	80 e1 00 30 	lwz     r7,48(r1)                              
ffc2f92c:	81 21 00 58 	lwz     r9,88(r1)                              
ffc2f930:	7c 83 d8 96 	mulhw   r4,r3,r27                              
ffc2f934:	7d 40 fe 70 	srawi   r0,r10,31                              
ffc2f938:	7d 8c 36 70 	srawi   r12,r12,6                              
ffc2f93c:	7d 06 fe 70 	srawi   r6,r8,31                               
ffc2f940:	7c 8a 36 70 	srawi   r10,r4,6                               
ffc2f944:	7d 68 36 70 	srawi   r8,r11,6                               
ffc2f948:	7c 6b fe 70 	srawi   r11,r3,31                              
ffc2f94c:	7f 04 c3 78 	mr      r4,r24                                 
ffc2f950:	7f 83 e3 78 	mr      r3,r28                                 
ffc2f954:	7c c6 60 50 	subf    r6,r6,r12                              
ffc2f958:	7d 00 40 50 	subf    r8,r0,r8                               
ffc2f95c:	7d 4b 50 50 	subf    r10,r11,r10                            
ffc2f960:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc2f964:	4e 80 04 21 	bctrl                                          
ffc2f968:	4b ff fe 60 	b       ffc2f7c8 <rtems_rate_monotonic_report_statistics_with_plugin+0xf4>
                                                                      

ffc2f97c <rtems_rate_monotonic_reset_all_statistics>: * * This rountine increments the thread dispatch level */ RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void) { uint32_t level = _Thread_Dispatch_disable_level;
ffc2f97c:	3d 20 00 00 	lis     r9,0                                   
                                                                      
/*                                                                    
 *  rtems_rate_monotonic_reset_all_statistics                         
 */                                                                   
void rtems_rate_monotonic_reset_all_statistics( void )                
{                                                                     
ffc2f980:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc2f984:	7c 08 02 a6 	mflr    r0                                     
ffc2f988:	81 49 34 e4 	lwz     r10,13540(r9)                          
ffc2f98c:	90 01 00 14 	stw     r0,20(r1)                              
                                                                      
    ++level;                                                          
ffc2f990:	39 4a 00 01 	addi    r10,r10,1                              
ffc2f994:	93 c1 00 08 	stw     r30,8(r1)                              
ffc2f998:	93 e1 00 0c 	stw     r31,12(r1)                             
    _Thread_Dispatch_disable_level = level;                           
ffc2f99c:	91 49 34 e4 	stw     r10,13540(r9)                          
                                                                      
    /*                                                                
     * Cycle through all possible ids and try to reset each one.  If it
     * is a period that is inactive, we just get an error back.  No big deal.
     */                                                               
    for ( id=_Rate_monotonic_Information.minimum_id ;                 
ffc2f9a0:	3f c0 00 00 	lis     r30,0                                  
ffc2f9a4:	3b de 6f 3c 	addi    r30,r30,28476                          
ffc2f9a8:	83 fe 00 08 	lwz     r31,8(r30)                             
ffc2f9ac:	81 3e 00 0c 	lwz     r9,12(r30)                             
ffc2f9b0:	7f 9f 48 40 	cmplw   cr7,r31,r9                             
ffc2f9b4:	41 9d 00 1c 	bgt-    cr7,ffc2f9d0 <rtems_rate_monotonic_reset_all_statistics+0x54><== NEVER TAKEN
          id <= _Rate_monotonic_Information.maximum_id ;              
          id++ ) {                                                    
      (void) rtems_rate_monotonic_reset_statistics( id );             
ffc2f9b8:	7f e3 fb 78 	mr      r3,r31                                 
ffc2f9bc:	48 00 00 2d 	bl      ffc2f9e8 <rtems_rate_monotonic_reset_statistics>
                                                                      
    /*                                                                
     * Cycle through all possible ids and try to reset each one.  If it
     * is a period that is inactive, we just get an error back.  No big deal.
     */                                                               
    for ( id=_Rate_monotonic_Information.minimum_id ;                 
ffc2f9c0:	81 3e 00 0c 	lwz     r9,12(r30)                             
          id <= _Rate_monotonic_Information.maximum_id ;              
          id++ ) {                                                    
ffc2f9c4:	3b ff 00 01 	addi    r31,r31,1                              
                                                                      
    /*                                                                
     * Cycle through all possible ids and try to reset each one.  If it
     * is a period that is inactive, we just get an error back.  No big deal.
     */                                                               
    for ( id=_Rate_monotonic_Information.minimum_id ;                 
ffc2f9c8:	7f 89 f8 40 	cmplw   cr7,r9,r31                             
ffc2f9cc:	40 9c ff ec 	bge+    cr7,ffc2f9b8 <rtems_rate_monotonic_reset_all_statistics+0x3c>
                                                                      
  /*                                                                  
   *  Done so exit thread dispatching disabled critical section.      
   */                                                                 
  _Thread_Enable_dispatch();                                          
}                                                                     
ffc2f9d0:	80 01 00 14 	lwz     r0,20(r1)                              
ffc2f9d4:	83 c1 00 08 	lwz     r30,8(r1)                              
ffc2f9d8:	7c 08 03 a6 	mtlr    r0                                     
ffc2f9dc:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc2f9e0:	38 21 00 10 	addi    r1,r1,16                               
    }                                                                 
                                                                      
  /*                                                                  
   *  Done so exit thread dispatching disabled critical section.      
   */                                                                 
  _Thread_Enable_dispatch();                                          
ffc2f9e4:	4b fd c9 00 	b       ffc0c2e4 <_Thread_Enable_dispatch>     
                                                                      

ffc0ab28 <rtems_rbheap_allocate>: return big_enough; } void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size) {
ffc0ab28:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc0ab2c:	7c 08 02 a6 	mflr    r0                                     
ffc0ab30:	90 01 00 24 	stw     r0,36(r1)                              
  void *ptr = NULL;                                                   
  rtems_chain_control *free_chain = &control->free_chunk_chain;       
  rtems_rbtree_control *chunk_tree = &control->chunk_tree;            
  uintptr_t alignment = control->alignment;                           
ffc0ab34:	81 23 00 30 	lwz     r9,48(r3)                              
                                                                      
  return big_enough;                                                  
}                                                                     
                                                                      
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{                                                                     
ffc0ab38:	93 c1 00 18 	stw     r30,24(r1)                             
                                                                      
#include <stdlib.h>                                                   
                                                                      
static uintptr_t align_up(uintptr_t alignment, uintptr_t value)       
{                                                                     
  uintptr_t excess = value % alignment;                               
ffc0ab3c:	7f c4 4b 96 	divwu   r30,r4,r9                              
                                                                      
  return big_enough;                                                  
}                                                                     
                                                                      
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{                                                                     
ffc0ab40:	93 81 00 10 	stw     r28,16(r1)                             
ffc0ab44:	93 61 00 0c 	stw     r27,12(r1)                             
ffc0ab48:	93 a1 00 14 	stw     r29,20(r1)                             
ffc0ab4c:	93 e1 00 1c 	stw     r31,28(r1)                             
                                                                      
#include <stdlib.h>                                                   
                                                                      
static uintptr_t align_up(uintptr_t alignment, uintptr_t value)       
{                                                                     
  uintptr_t excess = value % alignment;                               
ffc0ab50:	7f de 49 d6 	mullw   r30,r30,r9                             
                                                                      
  return big_enough;                                                  
}                                                                     
                                                                      
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{                                                                     
ffc0ab54:	7c 7c 1b 78 	mr      r28,r3                                 
                                                                      
static uintptr_t align_up(uintptr_t alignment, uintptr_t value)       
{                                                                     
  uintptr_t excess = value % alignment;                               
                                                                      
  if (excess > 0) {                                                   
ffc0ab58:	7d 5e 20 51 	subf.   r10,r30,r4                             
ffc0ab5c:	40 82 00 ac 	bne-    ffc0ac08 <rtems_rbheap_allocate+0xe0>  <== NEVER TAKEN
  rtems_chain_control *free_chain = &control->free_chunk_chain;       
  rtems_rbtree_control *chunk_tree = &control->chunk_tree;            
  uintptr_t alignment = control->alignment;                           
  uintptr_t aligned_size = align_up(alignment, size);                 
                                                                      
  if (size > 0 && size <= aligned_size) {                             
ffc0ab60:	2f 84 00 00 	cmpwi   cr7,r4,0                               
ffc0ab64:	7c 9e 23 78 	mr      r30,r4                                 
ffc0ab68:	41 9e 00 2c 	beq-    cr7,ffc0ab94 <rtems_rbheap_allocate+0x6c>
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
ffc0ab6c:	83 bc 00 00 	lwz     r29,0(r28)                             
  rtems_chain_control *free_chain,                                    
  size_t size                                                         
)                                                                     
{                                                                     
  rtems_chain_node *current = rtems_chain_first(free_chain);          
  const rtems_chain_node *tail = rtems_chain_tail(free_chain);        
ffc0ab70:	39 3c 00 04 	addi    r9,r28,4                               
  rtems_rbheap_chunk *big_enough = NULL;                              
                                                                      
  while (current != tail && big_enough == NULL) {                     
ffc0ab74:	7f 9d 48 00 	cmpw    cr7,r29,r9                             
ffc0ab78:	41 9e 00 1c 	beq-    cr7,ffc0ab94 <rtems_rbheap_allocate+0x6c>
    rtems_rbheap_chunk *free_chunk = (rtems_rbheap_chunk *) current;  
                                                                      
    if (free_chunk->size >= size) {                                   
ffc0ab7c:	83 fd 00 1c 	lwz     r31,28(r29)                            
ffc0ab80:	7f 9f f0 40 	cmplw   cr7,r31,r30                            
ffc0ab84:	40 9c 00 38 	bge-    cr7,ffc0abbc <rtems_rbheap_allocate+0x94>
  rtems_rbheap_chunk *chunk = malloc(sizeof(*chunk));                 
                                                                      
  if (chunk != NULL) {                                                
    rtems_rbheap_add_to_spare_descriptor_chain(control, chunk);       
  }                                                                   
}                                                                     
ffc0ab88:	83 bd 00 00 	lwz     r29,0(r29)                             
{                                                                     
  rtems_chain_node *current = rtems_chain_first(free_chain);          
  const rtems_chain_node *tail = rtems_chain_tail(free_chain);        
  rtems_rbheap_chunk *big_enough = NULL;                              
                                                                      
  while (current != tail && big_enough == NULL) {                     
ffc0ab8c:	7f 89 e8 00 	cmpw    cr7,r9,r29                             
ffc0ab90:	40 9e ff ec 	bne+    cr7,ffc0ab7c <rtems_rbheap_allocate+0x54><== NEVER TAKEN
  return big_enough;                                                  
}                                                                     
                                                                      
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{                                                                     
  void *ptr = NULL;                                                   
ffc0ab94:	38 60 00 00 	li      r3,0                                   
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  return ptr;                                                         
}                                                                     
ffc0ab98:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0ab9c:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0aba0:	7c 08 03 a6 	mtlr    r0                                     
ffc0aba4:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0aba8:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0abac:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0abb0:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0abb4:	38 21 00 20 	addi    r1,r1,32                               
ffc0abb8:	4e 80 00 20 	blr                                            
    rtems_rbheap_chunk *free_chunk = search_free_chunk(free_chain, aligned_size);
                                                                      
    if (free_chunk != NULL) {                                         
      uintptr_t free_size = free_chunk->size;                         
                                                                      
      if (free_size > aligned_size) {                                 
ffc0abbc:	7f 9e f8 40 	cmplw   cr7,r30,r31                            
ffc0abc0:	41 9c 00 68 	blt-    cr7,ffc0ac28 <rtems_rbheap_allocate+0x100>
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  return ptr;                                                         
}                                                                     
ffc0abc4:	80 01 00 24 	lwz     r0,36(r1)                              
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
ffc0abc8:	39 40 00 00 	li      r10,0                                  
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
ffc0abcc:	81 3d 00 00 	lwz     r9,0(r29)                              
ffc0abd0:	7c 08 03 a6 	mtlr    r0                                     
  previous       = the_node->previous;                                
ffc0abd4:	81 1d 00 04 	lwz     r8,4(r29)                              
          ptr = (void *) new_chunk->begin;                            
        }                                                             
      } else {                                                        
        rtems_chain_extract_unprotected(&free_chunk->chain_node);     
        rtems_chain_set_off_chain(&free_chunk->chain_node);           
        ptr = (void *) free_chunk->begin;                             
ffc0abd8:	80 7d 00 18 	lwz     r3,24(r29)                             
  next->previous = previous;                                          
ffc0abdc:	91 09 00 04 	stw     r8,4(r9)                               
  previous->next = next;                                              
ffc0abe0:	91 28 00 00 	stw     r9,0(r8)                               
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
ffc0abe4:	91 5d 00 04 	stw     r10,4(r29)                             
ffc0abe8:	91 5d 00 00 	stw     r10,0(r29)                             
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  return ptr;                                                         
}                                                                     
ffc0abec:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0abf0:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0abf4:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0abf8:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0abfc:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0ac00:	38 21 00 20 	addi    r1,r1,32                               
ffc0ac04:	4e 80 00 20 	blr                                            
  rtems_chain_control *free_chain = &control->free_chunk_chain;       
  rtems_rbtree_control *chunk_tree = &control->chunk_tree;            
  uintptr_t alignment = control->alignment;                           
  uintptr_t aligned_size = align_up(alignment, size);                 
                                                                      
  if (size > 0 && size <= aligned_size) {                             
ffc0ac08:	2f 84 00 00 	cmpwi   cr7,r4,0                               <== NOT EXECUTED
static uintptr_t align_up(uintptr_t alignment, uintptr_t value)       
{                                                                     
  uintptr_t excess = value % alignment;                               
                                                                      
  if (excess > 0) {                                                   
    value += alignment - excess;                                      
ffc0ac0c:	7d 24 4a 14 	add     r9,r4,r9                               <== NOT EXECUTED
ffc0ac10:	7f ca 48 50 	subf    r30,r10,r9                             <== NOT EXECUTED
  rtems_chain_control *free_chain = &control->free_chunk_chain;       
  rtems_rbtree_control *chunk_tree = &control->chunk_tree;            
  uintptr_t alignment = control->alignment;                           
  uintptr_t aligned_size = align_up(alignment, size);                 
                                                                      
  if (size > 0 && size <= aligned_size) {                             
ffc0ac14:	41 be ff 80 	beq-    cr7,ffc0ab94 <rtems_rbheap_allocate+0x6c><== NOT EXECUTED
ffc0ac18:	7f 84 f0 40 	cmplw   cr7,r4,r30                             <== NOT EXECUTED
ffc0ac1c:	40 9d ff 50 	ble+    cr7,ffc0ab6c <rtems_rbheap_allocate+0x44><== NOT EXECUTED
  return big_enough;                                                  
}                                                                     
                                                                      
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{                                                                     
  void *ptr = NULL;                                                   
ffc0ac20:	38 60 00 00 	li      r3,0                                   <== NOT EXECUTED
ffc0ac24:	4b ff ff 74 	b       ffc0ab98 <rtems_rbheap_allocate+0x70>  <== NOT EXECUTED
                                                                      
    if (free_chunk != NULL) {                                         
      uintptr_t free_size = free_chunk->size;                         
                                                                      
      if (free_size > aligned_size) {                                 
        rtems_rbheap_chunk *new_chunk = get_chunk(control);           
ffc0ac28:	7f 83 e3 78 	mr      r3,r28                                 
ffc0ac2c:	4b ff fc 9d 	bl      ffc0a8c8 <get_chunk>                   
                                                                      
        if (new_chunk != NULL) {                                      
ffc0ac30:	7c 7b 1b 79 	mr.     r27,r3                                 
ffc0ac34:	41 a2 ff 60 	beq-    ffc0ab94 <rtems_rbheap_allocate+0x6c>  <== NEVER TAKEN
          uintptr_t new_free_size = free_size - aligned_size;         
                                                                      
          free_chunk->size = new_free_size;                           
          new_chunk->begin = free_chunk->begin + new_free_size;       
ffc0ac38:	81 5d 00 18 	lwz     r10,24(r29)                            
                                                                      
      if (free_size > aligned_size) {                                 
        rtems_rbheap_chunk *new_chunk = get_chunk(control);           
                                                                      
        if (new_chunk != NULL) {                                      
          uintptr_t new_free_size = free_size - aligned_size;         
ffc0ac3c:	7f fe f8 50 	subf    r31,r30,r31                            
ffc0ac40:	39 20 00 00 	li      r9,0                                   
                                                                      
          free_chunk->size = new_free_size;                           
ffc0ac44:	93 fd 00 1c 	stw     r31,28(r29)                            
          new_chunk->begin = free_chunk->begin + new_free_size;       
ffc0ac48:	7d 5f 52 14 	add     r10,r31,r10                            
          new_chunk->size = aligned_size;                             
ffc0ac4c:	93 db 00 1c 	stw     r30,28(r27)                            
static void insert_into_tree(                                         
  rtems_rbtree_control *tree,                                         
  rtems_rbheap_chunk *chunk                                           
)                                                                     
{                                                                     
  _RBTree_Insert_unprotected(tree, &chunk->tree_node);                
ffc0ac50:	38 7c 00 18 	addi    r3,r28,24                              
ffc0ac54:	38 9b 00 08 	addi    r4,r27,8                               
                                                                      
        if (new_chunk != NULL) {                                      
          uintptr_t new_free_size = free_size - aligned_size;         
                                                                      
          free_chunk->size = new_free_size;                           
          new_chunk->begin = free_chunk->begin + new_free_size;       
ffc0ac58:	91 5b 00 18 	stw     r10,24(r27)                            
ffc0ac5c:	91 3b 00 04 	stw     r9,4(r27)                              
ffc0ac60:	91 3b 00 00 	stw     r9,0(r27)                              
static void insert_into_tree(                                         
  rtems_rbtree_control *tree,                                         
  rtems_rbheap_chunk *chunk                                           
)                                                                     
{                                                                     
  _RBTree_Insert_unprotected(tree, &chunk->tree_node);                
ffc0ac64:	48 00 1f 1d 	bl      ffc0cb80 <_RBTree_Insert_unprotected>  
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  return ptr;                                                         
}                                                                     
ffc0ac68:	80 01 00 24 	lwz     r0,36(r1)                              
          free_chunk->size = new_free_size;                           
          new_chunk->begin = free_chunk->begin + new_free_size;       
          new_chunk->size = aligned_size;                             
          rtems_chain_set_off_chain(&new_chunk->chain_node);          
          insert_into_tree(chunk_tree, new_chunk);                    
          ptr = (void *) new_chunk->begin;                            
ffc0ac6c:	80 7b 00 18 	lwz     r3,24(r27)                             
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  return ptr;                                                         
}                                                                     
ffc0ac70:	7c 08 03 a6 	mtlr    r0                                     
ffc0ac74:	83 61 00 0c 	lwz     r27,12(r1)                             
ffc0ac78:	83 81 00 10 	lwz     r28,16(r1)                             
ffc0ac7c:	83 a1 00 14 	lwz     r29,20(r1)                             
ffc0ac80:	83 c1 00 18 	lwz     r30,24(r1)                             
ffc0ac84:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0ac88:	38 21 00 20 	addi    r1,r1,32                               
ffc0ac8c:	4e 80 00 20 	blr                                            
                                                                      

ffc0ae08 <rtems_rbheap_extend_descriptors_with_malloc>: /* Do nothing */ } void rtems_rbheap_extend_descriptors_with_malloc(rtems_rbheap_control *control) {
ffc0ae08:	94 21 ff f0 	stwu    r1,-16(r1)                             <== NOT EXECUTED
ffc0ae0c:	7c 08 02 a6 	mflr    r0                                     <== NOT EXECUTED
ffc0ae10:	93 e1 00 0c 	stw     r31,12(r1)                             <== NOT EXECUTED
ffc0ae14:	7c 7f 1b 78 	mr      r31,r3                                 <== NOT EXECUTED
  rtems_rbheap_chunk *chunk = malloc(sizeof(*chunk));                 
ffc0ae18:	38 60 00 20 	li      r3,32                                  <== NOT EXECUTED
{                                                                     
  /* Do nothing */                                                    
}                                                                     
                                                                      
void rtems_rbheap_extend_descriptors_with_malloc(rtems_rbheap_control *control)
{                                                                     
ffc0ae1c:	90 01 00 14 	stw     r0,20(r1)                              <== NOT EXECUTED
  rtems_rbheap_chunk *chunk = malloc(sizeof(*chunk));                 
ffc0ae20:	4b ff a6 05 	bl      ffc05424 <malloc>                      <== NOT EXECUTED
                                                                      
  if (chunk != NULL) {                                                
ffc0ae24:	2c 03 00 00 	cmpwi   r3,0                                   <== NOT EXECUTED
ffc0ae28:	41 82 00 1c 	beq-    ffc0ae44 <rtems_rbheap_extend_descriptors_with_malloc+0x3c><== NOT EXECUTED
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
ffc0ae2c:	81 5f 00 0c 	lwz     r10,12(r31)                            <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected(                 
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  _Chain_Insert_unprotected(_Chain_Head(the_chain), the_node);        
ffc0ae30:	39 1f 00 0c 	addi    r8,r31,12                              <== NOT EXECUTED
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
ffc0ae34:	91 03 00 04 	stw     r8,4(r3)                               <== NOT EXECUTED
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
ffc0ae38:	90 7f 00 0c 	stw     r3,12(r31)                             <== NOT EXECUTED
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
ffc0ae3c:	90 6a 00 04 	stw     r3,4(r10)                              <== NOT EXECUTED
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
ffc0ae40:	91 43 00 00 	stw     r10,0(r3)                              <== NOT EXECUTED
    rtems_rbheap_add_to_spare_descriptor_chain(control, chunk);       
  }                                                                   
}                                                                     
ffc0ae44:	80 01 00 14 	lwz     r0,20(r1)                              <== NOT EXECUTED
ffc0ae48:	83 e1 00 0c 	lwz     r31,12(r1)                             <== NOT EXECUTED
ffc0ae4c:	7c 08 03 a6 	mtlr    r0                                     <== NOT EXECUTED
ffc0ae50:	38 21 00 10 	addi    r1,r1,16                               <== NOT EXECUTED
ffc0ae54:	4e 80 00 20 	blr                                            <== NOT EXECUTED
                                                                      

ffc0ac90 <rtems_rbheap_free>: rtems_status_code rtems_rbheap_free(rtems_rbheap_control *control, void *ptr) { rtems_status_code sc = RTEMS_SUCCESSFUL; if (ptr != NULL) {
ffc0ac90:	2c 04 00 00 	cmpwi   r4,0                                   
ffc0ac94:	41 82 00 f4 	beq-    ffc0ad88 <rtems_rbheap_free+0xf8>      
    _RBTree_Extract_unprotected(chunk_tree, &b->tree_node);           
  }                                                                   
}                                                                     
                                                                      
rtems_status_code rtems_rbheap_free(rtems_rbheap_control *control, void *ptr)
{                                                                     
ffc0ac98:	94 21 ff c0 	stwu    r1,-64(r1)                             
ffc0ac9c:	7c 08 02 a6 	mflr    r0                                     
                                                                      
#define NULL_PAGE rtems_rbheap_chunk_of_node(NULL)                    
                                                                      
static rtems_rbheap_chunk *find(rtems_rbtree_control *chunk_tree, uintptr_t key)
{                                                                     
  rtems_rbheap_chunk chunk = { .begin = key };                        
ffc0aca0:	39 20 00 00 	li      r9,0                                   
    _RBTree_Extract_unprotected(chunk_tree, &b->tree_node);           
  }                                                                   
}                                                                     
                                                                      
rtems_status_code rtems_rbheap_free(rtems_rbheap_control *control, void *ptr)
{                                                                     
ffc0aca4:	90 01 00 44 	stw     r0,68(r1)                              
ffc0aca8:	93 e1 00 3c 	stw     r31,60(r1)                             
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Find_unprotected(           
    RBTree_Control *the_rbtree,                                       
    RBTree_Node *the_node                                             
    )                                                                 
{                                                                     
  RBTree_Node* iter_node = the_rbtree->root;                          
ffc0acac:	83 e3 00 1c 	lwz     r31,28(r3)                             
ffc0acb0:	93 81 00 30 	stw     r28,48(r1)                             
ffc0acb4:	7c 7c 1b 78 	mr      r28,r3                                 
  RBTree_Node* found = NULL;                                          
  int compare_result;                                                 
  while (iter_node) {                                                 
ffc0acb8:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
ffc0acbc:	93 c1 00 38 	stw     r30,56(r1)                             
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (ptr != NULL) {                                                  
    rtems_chain_control *free_chain = &control->free_chunk_chain;     
    rtems_rbtree_control *chunk_tree = &control->chunk_tree;          
ffc0acc0:	3b c3 00 18 	addi    r30,r3,24                              
    _RBTree_Extract_unprotected(chunk_tree, &b->tree_node);           
  }                                                                   
}                                                                     
                                                                      
rtems_status_code rtems_rbheap_free(rtems_rbheap_control *control, void *ptr)
{                                                                     
ffc0acc4:	93 61 00 2c 	stw     r27,44(r1)                             
ffc0acc8:	93 a1 00 34 	stw     r29,52(r1)                             
                                                                      
#define NULL_PAGE rtems_rbheap_chunk_of_node(NULL)                    
                                                                      
static rtems_rbheap_chunk *find(rtems_rbtree_control *chunk_tree, uintptr_t key)
{                                                                     
  rtems_rbheap_chunk chunk = { .begin = key };                        
ffc0accc:	91 21 00 08 	stw     r9,8(r1)                               
ffc0acd0:	91 21 00 0c 	stw     r9,12(r1)                              
ffc0acd4:	91 21 00 10 	stw     r9,16(r1)                              
ffc0acd8:	91 21 00 14 	stw     r9,20(r1)                              
ffc0acdc:	91 21 00 18 	stw     r9,24(r1)                              
ffc0ace0:	91 21 00 1c 	stw     r9,28(r1)                              
ffc0ace4:	91 21 00 24 	stw     r9,36(r1)                              
ffc0ace8:	90 81 00 20 	stw     r4,32(r1)                              
ffc0acec:	41 9e 01 10 	beq-    cr7,ffc0adfc <rtems_rbheap_free+0x16c> <== NEVER TAKEN
ffc0acf0:	3b a0 00 00 	li      r29,0                                  
    compare_result = the_rbtree->compare_function(the_node, iter_node);
ffc0acf4:	81 3e 00 10 	lwz     r9,16(r30)                             
ffc0acf8:	7f e4 fb 78 	mr      r4,r31                                 
ffc0acfc:	38 61 00 10 	addi    r3,r1,16                               
ffc0ad00:	7d 29 03 a6 	mtctr   r9                                     
ffc0ad04:	4e 80 04 21 	bctrl                                          
    if ( _RBTree_Is_equal( compare_result ) ) {                       
ffc0ad08:	2c 03 00 00 	cmpwi   r3,0                                   
                                                                      
RTEMS_INLINE_ROUTINE bool _RBTree_Is_greater(                         
  int compare_result                                                  
)                                                                     
{                                                                     
  return compare_result > 0;                                          
ffc0ad0c:	7c 6a fe 70 	srawi   r10,r3,31                              
ffc0ad10:	7d 23 50 50 	subf    r9,r3,r10                              
        break;                                                        
    }                                                                 
                                                                      
    RBTree_Direction dir =                                            
      (RBTree_Direction) _RBTree_Is_greater( compare_result );        
    iter_node = iter_node->child[dir];                                
ffc0ad14:	55 29 1f 7a 	rlwinm  r9,r9,3,29,29                          
ffc0ad18:	7d 3f 4a 14 	add     r9,r31,r9                              
  RBTree_Node* iter_node = the_rbtree->root;                          
  RBTree_Node* found = NULL;                                          
  int compare_result;                                                 
  while (iter_node) {                                                 
    compare_result = the_rbtree->compare_function(the_node, iter_node);
    if ( _RBTree_Is_equal( compare_result ) ) {                       
ffc0ad1c:	40 82 00 14 	bne-    ffc0ad30 <rtems_rbheap_free+0xa0>      
      found = iter_node;                                              
      if ( the_rbtree->is_unique )                                    
ffc0ad20:	89 5e 00 14 	lbz     r10,20(r30)                            
ffc0ad24:	7f fd fb 78 	mr      r29,r31                                
ffc0ad28:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0ad2c:	40 9e 00 54 	bne-    cr7,ffc0ad80 <rtems_rbheap_free+0xf0>  <== ALWAYS TAKEN
        break;                                                        
    }                                                                 
                                                                      
    RBTree_Direction dir =                                            
      (RBTree_Direction) _RBTree_Is_greater( compare_result );        
    iter_node = iter_node->child[dir];                                
ffc0ad30:	83 e9 00 04 	lwz     r31,4(r9)                              
    )                                                                 
{                                                                     
  RBTree_Node* iter_node = the_rbtree->root;                          
  RBTree_Node* found = NULL;                                          
  int compare_result;                                                 
  while (iter_node) {                                                 
ffc0ad34:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
ffc0ad38:	40 9e ff bc 	bne+    cr7,ffc0acf4 <rtems_rbheap_free+0x64>  
  if (ptr != NULL) {                                                  
    rtems_chain_control *free_chain = &control->free_chunk_chain;     
    rtems_rbtree_control *chunk_tree = &control->chunk_tree;          
    rtems_rbheap_chunk *chunk = find(chunk_tree, (uintptr_t) ptr);    
                                                                      
    if (chunk != NULL_PAGE) {                                         
ffc0ad3c:	2f 9d 00 00 	cmpwi   cr7,r29,0                              
        check_and_merge(free_chain, chunk_tree, chunk, pred);         
      } else {                                                        
        sc = RTEMS_INCORRECT_STATE;                                   
      }                                                               
    } else {                                                          
      sc = RTEMS_INVALID_ID;                                          
ffc0ad40:	38 60 00 04 	li      r3,4                                   
  if (ptr != NULL) {                                                  
    rtems_chain_control *free_chain = &control->free_chunk_chain;     
    rtems_rbtree_control *chunk_tree = &control->chunk_tree;          
    rtems_rbheap_chunk *chunk = find(chunk_tree, (uintptr_t) ptr);    
                                                                      
    if (chunk != NULL_PAGE) {                                         
ffc0ad44:	3b fd ff f8 	addi    r31,r29,-8                             
ffc0ad48:	41 9e 00 14 	beq-    cr7,ffc0ad5c <rtems_rbheap_free+0xcc>  
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(                   
  const Chain_Node *node                                              
)                                                                     
{                                                                     
  return (node->next == NULL) && (node->previous == NULL);            
ffc0ad4c:	81 3d ff f8 	lwz     r9,-8(r29)                             
                                                                      
        check_and_merge(free_chain, chunk_tree, chunk, succ);         
        add_to_chain(free_chain, chunk);                              
        check_and_merge(free_chain, chunk_tree, chunk, pred);         
      } else {                                                        
        sc = RTEMS_INCORRECT_STATE;                                   
ffc0ad50:	38 60 00 0e 	li      r3,14                                  
ffc0ad54:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0ad58:	41 9e 00 38 	beq-    cr7,ffc0ad90 <rtems_rbheap_free+0x100> 
      sc = RTEMS_INVALID_ID;                                          
    }                                                                 
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
ffc0ad5c:	80 01 00 44 	lwz     r0,68(r1)                              
ffc0ad60:	83 61 00 2c 	lwz     r27,44(r1)                             
ffc0ad64:	7c 08 03 a6 	mtlr    r0                                     
ffc0ad68:	83 81 00 30 	lwz     r28,48(r1)                             
ffc0ad6c:	83 a1 00 34 	lwz     r29,52(r1)                             
ffc0ad70:	83 c1 00 38 	lwz     r30,56(r1)                             
ffc0ad74:	83 e1 00 3c 	lwz     r31,60(r1)                             
ffc0ad78:	38 21 00 40 	addi    r1,r1,64                               
ffc0ad7c:	4e 80 00 20 	blr                                            
    compare_result = the_rbtree->compare_function(the_node, iter_node);
    if ( _RBTree_Is_equal( compare_result ) ) {                       
      found = iter_node;                                              
      if ( the_rbtree->is_unique )                                    
ffc0ad80:	7f fd fb 78 	mr      r29,r31                                
ffc0ad84:	4b ff ff b8 	b       ffc0ad3c <rtems_rbheap_free+0xac>      
  }                                                                   
}                                                                     
                                                                      
rtems_status_code rtems_rbheap_free(rtems_rbheap_control *control, void *ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
ffc0ad88:	38 60 00 00 	li      r3,0                                   
      sc = RTEMS_INVALID_ID;                                          
    }                                                                 
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
ffc0ad8c:	4e 80 00 20 	blr                                            
ffc0ad90:	81 3f 00 04 	lwz     r9,4(r31)                              
ffc0ad94:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0ad98:	40 9e ff c4 	bne+    cr7,ffc0ad5c <rtems_rbheap_free+0xcc>  <== NEVER TAKEN
static rtems_rbheap_chunk *get_next(                                  
  const rtems_rbheap_chunk *chunk,                                    
  RBTree_Direction dir                                                
)                                                                     
{                                                                     
  return rtems_rbheap_chunk_of_node(                                  
ffc0ad9c:	38 80 00 00 	li      r4,0                                   
ffc0ada0:	7f a3 eb 78 	mr      r3,r29                                 
ffc0ada4:	48 00 21 f5 	bl      ffc0cf98 <_RBTree_Next_unprotected>    
ffc0ada8:	38 80 00 01 	li      r4,1                                   
ffc0adac:	7c 7b 1b 78 	mr      r27,r3                                 
ffc0adb0:	7f a3 eb 78 	mr      r3,r29                                 
ffc0adb4:	48 00 21 e5 	bl      ffc0cf98 <_RBTree_Next_unprotected>    
    if (chunk != NULL_PAGE) {                                         
      if (!rtems_rbheap_is_chunk_free(chunk)) {                       
        rtems_rbheap_chunk *pred = get_next(chunk, RBT_LEFT);         
        rtems_rbheap_chunk *succ = get_next(chunk, RBT_RIGHT);        
                                                                      
        check_and_merge(free_chain, chunk_tree, chunk, succ);         
ffc0adb8:	7f c4 f3 78 	mr      r4,r30                                 
static rtems_rbheap_chunk *get_next(                                  
  const rtems_rbheap_chunk *chunk,                                    
  RBTree_Direction dir                                                
)                                                                     
{                                                                     
  return rtems_rbheap_chunk_of_node(                                  
ffc0adbc:	38 c3 ff f8 	addi    r6,r3,-8                               
    if (chunk != NULL_PAGE) {                                         
      if (!rtems_rbheap_is_chunk_free(chunk)) {                       
        rtems_rbheap_chunk *pred = get_next(chunk, RBT_LEFT);         
        rtems_rbheap_chunk *succ = get_next(chunk, RBT_RIGHT);        
                                                                      
        check_and_merge(free_chain, chunk_tree, chunk, succ);         
ffc0adc0:	7f e5 fb 78 	mr      r5,r31                                 
ffc0adc4:	7f 83 e3 78 	mr      r3,r28                                 
ffc0adc8:	4b ff fb 91 	bl      ffc0a958 <check_and_merge>             
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
ffc0adcc:	81 3c 00 00 	lwz     r9,0(r28)                              
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
ffc0add0:	93 9f 00 04 	stw     r28,4(r31)                             
        add_to_chain(free_chain, chunk);                              
        check_and_merge(free_chain, chunk_tree, chunk, pred);         
ffc0add4:	7f 83 e3 78 	mr      r3,r28                                 
ffc0add8:	7f c4 f3 78 	mr      r4,r30                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
ffc0addc:	93 fc 00 00 	stw     r31,0(r28)                             
ffc0ade0:	7f e5 fb 78 	mr      r5,r31                                 
ffc0ade4:	38 db ff f8 	addi    r6,r27,-8                              
  the_node->next        = before_node;                                
ffc0ade8:	91 3f 00 00 	stw     r9,0(r31)                              
  before_node->previous = the_node;                                   
ffc0adec:	93 e9 00 04 	stw     r31,4(r9)                              
ffc0adf0:	4b ff fb 69 	bl      ffc0a958 <check_and_merge>             
  }                                                                   
}                                                                     
                                                                      
rtems_status_code rtems_rbheap_free(rtems_rbheap_control *control, void *ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
ffc0adf4:	38 60 00 00 	li      r3,0                                   
ffc0adf8:	4b ff ff 64 	b       ffc0ad5c <rtems_rbheap_free+0xcc>      
        check_and_merge(free_chain, chunk_tree, chunk, pred);         
      } else {                                                        
        sc = RTEMS_INCORRECT_STATE;                                   
      }                                                               
    } else {                                                          
      sc = RTEMS_INVALID_ID;                                          
ffc0adfc:	38 60 00 04 	li      r3,4                                   <== NOT EXECUTED
ffc0ae00:	4b ff ff 5c 	b       ffc0ad5c <rtems_rbheap_free+0xcc>      <== NOT EXECUTED
                                                                      

ffc0a9dc <rtems_rbheap_initialize>: void *handler_arg ) { rtems_status_code sc = RTEMS_SUCCESSFUL; if (alignment > 0) {
ffc0a9dc:	2c 06 00 00 	cmpwi   r6,0                                   
ffc0a9e0:	40 82 00 0c 	bne-    ffc0a9ec <rtems_rbheap_initialize+0x10>
      }                                                               
    } else {                                                          
      sc = RTEMS_INVALID_ADDRESS;                                     
    }                                                                 
  } else {                                                            
    sc = RTEMS_INVALID_NUMBER;                                        
ffc0a9e4:	38 60 00 0a 	li      r3,10                                  
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
ffc0a9e8:	4e 80 00 20 	blr                                            
                                                                      
#include <stdlib.h>                                                   
                                                                      
static uintptr_t align_up(uintptr_t alignment, uintptr_t value)       
{                                                                     
  uintptr_t excess = value % alignment;                               
ffc0a9ec:	7d 24 33 96 	divwu   r9,r4,r6                               
  uintptr_t area_size,                                                
  uintptr_t alignment,                                                
  rtems_rbheap_extend_descriptors extend_descriptors,                 
  void *handler_arg                                                   
)                                                                     
{                                                                     
ffc0a9f0:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0a9f4:	7c 08 02 a6 	mflr    r0                                     
ffc0a9f8:	93 e1 00 14 	stw     r31,20(r1)                             
ffc0a9fc:	90 01 00 1c 	stw     r0,28(r1)                              
ffc0aa00:	93 a1 00 0c 	stw     r29,12(r1)                             
ffc0aa04:	93 c1 00 10 	stw     r30,16(r1)                             
                                                                      
#include <stdlib.h>                                                   
                                                                      
static uintptr_t align_up(uintptr_t alignment, uintptr_t value)       
{                                                                     
  uintptr_t excess = value % alignment;                               
ffc0aa08:	7d 29 31 d6 	mullw   r9,r9,r6                               
ffc0aa0c:	7c 7f 1b 78 	mr      r31,r3                                 
                                                                      
  if (excess > 0) {                                                   
ffc0aa10:	7d 49 20 51 	subf.   r10,r9,r4                              
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (alignment > 0) {                                                
    uintptr_t begin = (uintptr_t) area_begin;                         
    uintptr_t end = begin + area_size;                                
ffc0aa14:	7c a5 22 14 	add     r5,r5,r4                               
                                                                      
static uintptr_t align_up(uintptr_t alignment, uintptr_t value)       
{                                                                     
  uintptr_t excess = value % alignment;                               
                                                                      
  if (excess > 0) {                                                   
ffc0aa18:	41 82 00 f0 	beq-    ffc0ab08 <rtems_rbheap_initialize+0x12c>
    uintptr_t begin = (uintptr_t) area_begin;                         
    uintptr_t end = begin + area_size;                                
    uintptr_t aligned_begin = align_up(alignment, begin);             
    uintptr_t aligned_end = align_down(alignment, end);               
                                                                      
    if (begin < end && begin <= aligned_begin && aligned_begin < aligned_end) {
ffc0aa1c:	7f 84 28 40 	cmplw   cr7,r4,r5                              
        insert_into_tree(chunk_tree, first);                          
      } else {                                                        
        sc = RTEMS_NO_MEMORY;                                         
      }                                                               
    } else {                                                          
      sc = RTEMS_INVALID_ADDRESS;                                     
ffc0aa20:	38 60 00 09 	li      r3,9                                   
    uintptr_t begin = (uintptr_t) area_begin;                         
    uintptr_t end = begin + area_size;                                
    uintptr_t aligned_begin = align_up(alignment, begin);             
    uintptr_t aligned_end = align_down(alignment, end);               
                                                                      
    if (begin < end && begin <= aligned_begin && aligned_begin < aligned_end) {
ffc0aa24:	41 9c 00 20 	blt-    cr7,ffc0aa44 <rtems_rbheap_initialize+0x68>
  } else {                                                            
    sc = RTEMS_INVALID_NUMBER;                                        
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
ffc0aa28:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0aa2c:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0aa30:	7c 08 03 a6 	mtlr    r0                                     
ffc0aa34:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0aa38:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0aa3c:	38 21 00 18 	addi    r1,r1,24                               
ffc0aa40:	4e 80 00 20 	blr                                            
static uintptr_t align_up(uintptr_t alignment, uintptr_t value)       
{                                                                     
  uintptr_t excess = value % alignment;                               
                                                                      
  if (excess > 0) {                                                   
    value += alignment - excess;                                      
ffc0aa44:	7f c6 22 14 	add     r30,r6,r4                              
ffc0aa48:	7f ca f0 50 	subf    r30,r10,r30                            
    uintptr_t begin = (uintptr_t) area_begin;                         
    uintptr_t end = begin + area_size;                                
    uintptr_t aligned_begin = align_up(alignment, begin);             
    uintptr_t aligned_end = align_down(alignment, end);               
                                                                      
    if (begin < end && begin <= aligned_begin && aligned_begin < aligned_end) {
ffc0aa4c:	7f 84 f0 40 	cmplw   cr7,r4,r30                             
ffc0aa50:	41 9d ff d8 	bgt+    cr7,ffc0aa28 <rtems_rbheap_initialize+0x4c><== NEVER TAKEN
  return value;                                                       
}                                                                     
                                                                      
static uintptr_t align_down(uintptr_t alignment, uintptr_t value)     
{                                                                     
  uintptr_t excess = value % alignment;                               
ffc0aa54:	7c a5 33 96 	divwu   r5,r5,r6                               
                                                                      
  return value - excess;                                              
ffc0aa58:	7f a5 31 d6 	mullw   r29,r5,r6                              
    uintptr_t begin = (uintptr_t) area_begin;                         
    uintptr_t end = begin + area_size;                                
    uintptr_t aligned_begin = align_up(alignment, begin);             
    uintptr_t aligned_end = align_down(alignment, end);               
                                                                      
    if (begin < end && begin <= aligned_begin && aligned_begin < aligned_end) {
ffc0aa5c:	7f 9d f0 40 	cmplw   cr7,r29,r30                            
        insert_into_tree(chunk_tree, first);                          
      } else {                                                        
        sc = RTEMS_NO_MEMORY;                                         
      }                                                               
    } else {                                                          
      sc = RTEMS_INVALID_ADDRESS;                                     
ffc0aa60:	38 60 00 09 	li      r3,9                                   
    uintptr_t begin = (uintptr_t) area_begin;                         
    uintptr_t end = begin + area_size;                                
    uintptr_t aligned_begin = align_up(alignment, begin);             
    uintptr_t aligned_end = align_down(alignment, end);               
                                                                      
    if (begin < end && begin <= aligned_begin && aligned_begin < aligned_end) {
ffc0aa64:	40 9d ff c4 	ble+    cr7,ffc0aa28 <rtems_rbheap_initialize+0x4c>
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
ffc0aa68:	39 20 00 00 	li      r9,0                                   
  tail->previous = head;                                              
ffc0aa6c:	93 ff 00 08 	stw     r31,8(r31)                             
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
ffc0aa70:	38 9f 00 04 	addi    r4,r31,4                               
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
ffc0aa74:	91 3f 00 04 	stw     r9,4(r31)                              
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
ffc0aa78:	39 5f 00 0c 	addi    r10,r31,12                             
ffc0aa7c:	38 bf 00 10 	addi    r5,r31,16                              
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
ffc0aa80:	91 3f 00 10 	stw     r9,16(r31)                             
      rtems_rbtree_initialize_empty(chunk_tree, chunk_compare, true); 
      control->alignment = alignment;                                 
      control->handler_arg = handler_arg;                             
      control->extend_descriptors = extend_descriptors;               
                                                                      
      first = get_chunk(control);                                     
ffc0aa84:	7f e3 fb 78 	mr      r3,r31                                 
    RBTree_Control          *the_rbtree,                              
    RBTree_Compare_function  compare_function,                        
    bool                     is_unique                                
    )                                                                 
{                                                                     
  the_rbtree->permanent_null   = NULL;                                
ffc0aa88:	91 3f 00 18 	stw     r9,24(r31)                             
  the_rbtree->root             = NULL;                                
ffc0aa8c:	91 3f 00 1c 	stw     r9,28(r31)                             
  the_rbtree->first[0]         = NULL;                                
ffc0aa90:	91 3f 00 20 	stw     r9,32(r31)                             
  the_rbtree->first[1]         = NULL;                                
ffc0aa94:	91 3f 00 24 	stw     r9,36(r31)                             
  the_rbtree->compare_function = compare_function;                    
ffc0aa98:	3d 20 ff c1 	lis     r9,-63                                 
ffc0aa9c:	39 29 a8 b8 	addi    r9,r9,-22344                           
ffc0aaa0:	91 3f 00 28 	stw     r9,40(r31)                             
  the_rbtree->is_unique        = is_unique;                           
ffc0aaa4:	39 20 00 01 	li      r9,1                                   
ffc0aaa8:	99 3f 00 2c 	stb     r9,44(r31)                             
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
ffc0aaac:	90 9f 00 00 	stw     r4,0(r31)                              
ffc0aab0:	90 bf 00 0c 	stw     r5,12(r31)                             
  head->previous = NULL;                                              
  tail->previous = head;                                              
ffc0aab4:	91 5f 00 14 	stw     r10,20(r31)                            
      rtems_rbheap_chunk *first = NULL;                               
                                                                      
      rtems_chain_initialize_empty(free_chain);                       
      rtems_chain_initialize_empty(&control->spare_descriptor_chain); 
      rtems_rbtree_initialize_empty(chunk_tree, chunk_compare, true); 
      control->alignment = alignment;                                 
ffc0aab8:	90 df 00 30 	stw     r6,48(r31)                             
      control->handler_arg = handler_arg;                             
ffc0aabc:	91 1f 00 38 	stw     r8,56(r31)                             
      control->extend_descriptors = extend_descriptors;               
ffc0aac0:	90 ff 00 34 	stw     r7,52(r31)                             
                                                                      
      first = get_chunk(control);                                     
ffc0aac4:	4b ff fe 05 	bl      ffc0a8c8 <get_chunk>                   
      if (first != NULL) {                                            
ffc0aac8:	7c 69 1b 79 	mr.     r9,r3                                  
        first->begin = aligned_begin;                                 
        first->size = aligned_end - aligned_begin;                    
        add_to_chain(free_chain, first);                              
        insert_into_tree(chunk_tree, first);                          
      } else {                                                        
        sc = RTEMS_NO_MEMORY;                                         
ffc0aacc:	38 60 00 1a 	li      r3,26                                  
      control->alignment = alignment;                                 
      control->handler_arg = handler_arg;                             
      control->extend_descriptors = extend_descriptors;               
                                                                      
      first = get_chunk(control);                                     
      if (first != NULL) {                                            
ffc0aad0:	41 a2 ff 58 	beq-    ffc0aa28 <rtems_rbheap_initialize+0x4c>
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
ffc0aad4:	81 5f 00 00 	lwz     r10,0(r31)                             
        first->begin = aligned_begin;                                 
        first->size = aligned_end - aligned_begin;                    
ffc0aad8:	7f be e8 50 	subf    r29,r30,r29                            
      control->handler_arg = handler_arg;                             
      control->extend_descriptors = extend_descriptors;               
                                                                      
      first = get_chunk(control);                                     
      if (first != NULL) {                                            
        first->begin = aligned_begin;                                 
ffc0aadc:	93 c9 00 18 	stw     r30,24(r9)                             
static void insert_into_tree(                                         
  rtems_rbtree_control *tree,                                         
  rtems_rbheap_chunk *chunk                                           
)                                                                     
{                                                                     
  _RBTree_Insert_unprotected(tree, &chunk->tree_node);                
ffc0aae0:	38 7f 00 18 	addi    r3,r31,24                              
ffc0aae4:	38 89 00 08 	addi    r4,r9,8                                
      control->extend_descriptors = extend_descriptors;               
                                                                      
      first = get_chunk(control);                                     
      if (first != NULL) {                                            
        first->begin = aligned_begin;                                 
        first->size = aligned_end - aligned_begin;                    
ffc0aae8:	93 a9 00 1c 	stw     r29,28(r9)                             
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
ffc0aaec:	93 e9 00 04 	stw     r31,4(r9)                              
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
ffc0aaf0:	91 3f 00 00 	stw     r9,0(r31)                              
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
ffc0aaf4:	91 2a 00 04 	stw     r9,4(r10)                              
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
ffc0aaf8:	91 49 00 00 	stw     r10,0(r9)                              
static void insert_into_tree(                                         
  rtems_rbtree_control *tree,                                         
  rtems_rbheap_chunk *chunk                                           
)                                                                     
{                                                                     
  _RBTree_Insert_unprotected(tree, &chunk->tree_node);                
ffc0aafc:	48 00 20 85 	bl      ffc0cb80 <_RBTree_Insert_unprotected>  
  uintptr_t alignment,                                                
  rtems_rbheap_extend_descriptors extend_descriptors,                 
  void *handler_arg                                                   
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
ffc0ab00:	38 60 00 00 	li      r3,0                                   
ffc0ab04:	4b ff ff 24 	b       ffc0aa28 <rtems_rbheap_initialize+0x4c>
  return value;                                                       
}                                                                     
                                                                      
static uintptr_t align_down(uintptr_t alignment, uintptr_t value)     
{                                                                     
  uintptr_t excess = value % alignment;                               
ffc0ab08:	7f a5 33 96 	divwu   r29,r5,r6                              
    uintptr_t begin = (uintptr_t) area_begin;                         
    uintptr_t end = begin + area_size;                                
    uintptr_t aligned_begin = align_up(alignment, begin);             
    uintptr_t aligned_end = align_down(alignment, end);               
                                                                      
    if (begin < end && begin <= aligned_begin && aligned_begin < aligned_end) {
ffc0ab0c:	7f 84 28 40 	cmplw   cr7,r4,r5                              
                                                                      
static uintptr_t align_down(uintptr_t alignment, uintptr_t value)     
{                                                                     
  uintptr_t excess = value % alignment;                               
                                                                      
  return value - excess;                                              
ffc0ab10:	7f bd 31 d6 	mullw   r29,r29,r6                             
    uintptr_t begin = (uintptr_t) area_begin;                         
    uintptr_t end = begin + area_size;                                
    uintptr_t aligned_begin = align_up(alignment, begin);             
    uintptr_t aligned_end = align_down(alignment, end);               
                                                                      
    if (begin < end && begin <= aligned_begin && aligned_begin < aligned_end) {
ffc0ab14:	41 9c 00 0c 	blt-    cr7,ffc0ab20 <rtems_rbheap_initialize+0x144>
        insert_into_tree(chunk_tree, first);                          
      } else {                                                        
        sc = RTEMS_NO_MEMORY;                                         
      }                                                               
    } else {                                                          
      sc = RTEMS_INVALID_ADDRESS;                                     
ffc0ab18:	38 60 00 09 	li      r3,9                                   
ffc0ab1c:	4b ff ff 0c 	b       ffc0aa28 <rtems_rbheap_initialize+0x4c>
    uintptr_t begin = (uintptr_t) area_begin;                         
    uintptr_t end = begin + area_size;                                
    uintptr_t aligned_begin = align_up(alignment, begin);             
    uintptr_t aligned_end = align_down(alignment, end);               
                                                                      
    if (begin < end && begin <= aligned_begin && aligned_begin < aligned_end) {
ffc0ab20:	7c 9e 23 78 	mr      r30,r4                                 
ffc0ab24:	4b ff ff 38 	b       ffc0aa5c <rtems_rbheap_initialize+0x80>
                                                                      

ffc1be94 <rtems_signal_send>: rtems_status_code rtems_signal_send( rtems_id id, rtems_signal_set signal_set ) {
ffc1be94:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc1be98:	7c 08 02 a6 	mflr    r0                                     
ffc1be9c:	93 e1 00 1c 	stw     r31,28(r1)                             
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
  RTEMS_API_Control       *api;                                       
  ASR_Information         *asr;                                       
                                                                      
  if ( !signal_set )                                                  
ffc1bea0:	7c 9f 23 79 	mr.     r31,r4                                 
                                                                      
rtems_status_code rtems_signal_send(                                  
  rtems_id          id,                                               
  rtems_signal_set  signal_set                                        
)                                                                     
{                                                                     
ffc1bea4:	90 01 00 24 	stw     r0,36(r1)                              
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
  RTEMS_API_Control       *api;                                       
  ASR_Information         *asr;                                       
                                                                      
  if ( !signal_set )                                                  
ffc1bea8:	40 82 00 1c 	bne-    ffc1bec4 <rtems_signal_send+0x30>      
    return RTEMS_INVALID_NUMBER;                                      
ffc1beac:	38 60 00 0a 	li      r3,10                                  
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc1beb0:	80 01 00 24 	lwz     r0,36(r1)                              
ffc1beb4:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc1beb8:	7c 08 03 a6 	mtlr    r0                                     
ffc1bebc:	38 21 00 20 	addi    r1,r1,32                               
ffc1bec0:	4e 80 00 20 	blr                                            
  ASR_Information         *asr;                                       
                                                                      
  if ( !signal_set )                                                  
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  the_thread = _Thread_Get( id, &location );                          
ffc1bec4:	38 81 00 08 	addi    r4,r1,8                                
ffc1bec8:	48 00 5b e5 	bl      ffc21aac <_Thread_Get>                 
  switch ( location ) {                                               
ffc1becc:	81 21 00 08 	lwz     r9,8(r1)                               
ffc1bed0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc1bed4:	40 9e 00 6c 	bne-    cr7,ffc1bf40 <rtems_signal_send+0xac>  
                                                                      
    case OBJECTS_LOCAL:                                               
      api = the_thread->API_Extensions[ THREAD_API_RTEMS ];           
ffc1bed8:	81 23 01 4c 	lwz     r9,332(r3)                             
      asr = &api->Signal;                                             
                                                                      
      if ( ! _ASR_Is_null_handler( asr->handler ) ) {                 
ffc1bedc:	81 49 00 0c 	lwz     r10,12(r9)                             
ffc1bee0:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc1bee4:	41 9e 00 74 	beq-    cr7,ffc1bf58 <rtems_signal_send+0xc4>  
        if ( asr->is_enabled ) {                                      
ffc1bee8:	89 49 00 08 	lbz     r10,8(r9)                              
ffc1beec:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc1bef0:	7d 00 00 a6 	mfmsr   r8                                     
ffc1bef4:	7d 50 42 a6 	mfsprg  r10,0                                  
ffc1bef8:	7d 0a 50 78 	andc    r10,r8,r10                             
ffc1befc:	7d 40 01 24 	mtmsr   r10                                    
ffc1bf00:	41 9e 00 64 	beq-    cr7,ffc1bf64 <rtems_signal_send+0xd0>  
)                                                                     
{                                                                     
  ISR_Level              _level;                                      
                                                                      
  _ISR_Disable( _level );                                             
    *signal_set |= signals;                                           
ffc1bf04:	81 49 00 14 	lwz     r10,20(r9)                             
ffc1bf08:	7d 4a fb 78 	or      r10,r10,r31                            
ffc1bf0c:	91 49 00 14 	stw     r10,20(r9)                             
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc1bf10:	7d 00 01 24 	mtmsr   r8                                     
          _ASR_Post_signals( signal_set, &asr->signals_posted );      
                                                                      
          if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
ffc1bf14:	3d 20 00 00 	lis     r9,0                                   
ffc1bf18:	39 29 75 c0 	addi    r9,r9,30144                            
ffc1bf1c:	81 49 00 08 	lwz     r10,8(r9)                              
ffc1bf20:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc1bf24:	41 9e 00 10 	beq-    cr7,ffc1bf34 <rtems_signal_send+0xa0>  
ffc1bf28:	81 49 00 10 	lwz     r10,16(r9)                             
ffc1bf2c:	7f 83 50 00 	cmpw    cr7,r3,r10                             
ffc1bf30:	41 9e 00 48 	beq-    cr7,ffc1bf78 <rtems_signal_send+0xe4>  <== ALWAYS TAKEN
            _Thread_Dispatch_necessary = true;                        
        } else {                                                      
          _ASR_Post_signals( signal_set, &asr->signals_pending );     
        }                                                             
        _Thread_Enable_dispatch();                                    
ffc1bf34:	48 00 5b 5d 	bl      ffc21a90 <_Thread_Enable_dispatch>     
        return RTEMS_SUCCESSFUL;                                      
ffc1bf38:	38 60 00 00 	li      r3,0                                   
ffc1bf3c:	4b ff ff 74 	b       ffc1beb0 <rtems_signal_send+0x1c>      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc1bf40:	80 01 00 24 	lwz     r0,36(r1)                              
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
ffc1bf44:	38 60 00 04 	li      r3,4                                   
}                                                                     
ffc1bf48:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc1bf4c:	7c 08 03 a6 	mtlr    r0                                     
ffc1bf50:	38 21 00 20 	addi    r1,r1,32                               
ffc1bf54:	4e 80 00 20 	blr                                            
          _ASR_Post_signals( signal_set, &asr->signals_pending );     
        }                                                             
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
      _Thread_Enable_dispatch();                                      
ffc1bf58:	48 00 5b 39 	bl      ffc21a90 <_Thread_Enable_dispatch>     
      return RTEMS_NOT_DEFINED;                                       
ffc1bf5c:	38 60 00 0b 	li      r3,11                                  
ffc1bf60:	4b ff ff 50 	b       ffc1beb0 <rtems_signal_send+0x1c>      
ffc1bf64:	81 49 00 18 	lwz     r10,24(r9)                             
ffc1bf68:	7d 4a fb 78 	or      r10,r10,r31                            
ffc1bf6c:	91 49 00 18 	stw     r10,24(r9)                             
ffc1bf70:	7d 00 01 24 	mtmsr   r8                                     
ffc1bf74:	4b ff ff c0 	b       ffc1bf34 <rtems_signal_send+0xa0>      
      if ( ! _ASR_Is_null_handler( asr->handler ) ) {                 
        if ( asr->is_enabled ) {                                      
          _ASR_Post_signals( signal_set, &asr->signals_posted );      
                                                                      
          if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
            _Thread_Dispatch_necessary = true;                        
ffc1bf78:	39 40 00 01 	li      r10,1                                  
ffc1bf7c:	99 49 00 0c 	stb     r10,12(r9)                             
ffc1bf80:	4b ff ff b4 	b       ffc1bf34 <rtems_signal_send+0xa0>      
                                                                      

ffc153b8 <rtems_task_mode>: ASR_Information *asr; bool is_asr_enabled = false; bool needs_asr_dispatching = false; rtems_mode old_mode; if ( !previous_mode_set )
ffc153b8:	2c 05 00 00 	cmpwi   r5,0                                   
rtems_status_code rtems_task_mode(                                    
  rtems_mode  mode_set,                                               
  rtems_mode  mask,                                                   
  rtems_mode *previous_mode_set                                       
)                                                                     
{                                                                     
ffc153bc:	94 21 ff f8 	stwu    r1,-8(r1)                              
ffc153c0:	7c 08 02 a6 	mflr    r0                                     
ffc153c4:	90 01 00 0c 	stw     r0,12(r1)                              
  ASR_Information    *asr;                                            
  bool                is_asr_enabled = false;                         
  bool                needs_asr_dispatching = false;                  
  rtems_mode          old_mode;                                       
                                                                      
  if ( !previous_mode_set )                                           
ffc153c8:	41 82 01 b4 	beq-    ffc1557c <rtems_task_mode+0x1c4>       
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  executing     = _Thread_Executing;                                  
ffc153cc:	3d 60 00 00 	lis     r11,0                                  
ffc153d0:	39 6b 32 00 	addi    r11,r11,12800                          
ffc153d4:	81 2b 00 10 	lwz     r9,16(r11)                             
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
  asr = &api->Signal;                                                 
                                                                      
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
                                                                      
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
ffc153d8:	81 49 00 78 	lwz     r10,120(r9)                            
                                                                      
  executing     = _Thread_Executing;                                  
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
  asr = &api->Signal;                                                 
                                                                      
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
ffc153dc:	88 e9 00 70 	lbz     r7,112(r9)                             
                                                                      
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
ffc153e0:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
                                                                      
  if ( !previous_mode_set )                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  executing     = _Thread_Executing;                                  
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
ffc153e4:	81 49 01 4c 	lwz     r10,332(r9)                            
  asr = &api->Signal;                                                 
                                                                      
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
ffc153e8:	7c e7 00 34 	cntlzw  r7,r7                                  
ffc153ec:	54 e7 d9 7e 	rlwinm  r7,r7,27,5,31                          
ffc153f0:	54 e6 40 2e 	rlwinm  r6,r7,8,0,23                           
                                                                      
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
ffc153f4:	40 9e 01 08 	bne-    cr7,ffc154fc <rtems_task_mode+0x144>   
    old_mode |= RTEMS_NO_TIMESLICE;                                   
  else                                                                
    old_mode |= RTEMS_TIMESLICE;                                      
                                                                      
  old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;           
ffc153f8:	88 ea 00 08 	lbz     r7,8(r10)                              
#ifndef ASM                                                           
                                                                      
static inline uint32_t   _CPU_ISR_Get_level( void )                   
{                                                                     
  register unsigned int msr;                                          
  _CPU_MSR_GET(msr);                                                  
ffc153fc:	39 00 00 00 	li      r8,0                                   
ffc15400:	7c e7 00 34 	cntlzw  r7,r7                                  
ffc15404:	54 e7 d9 7e 	rlwinm  r7,r7,27,5,31                          
ffc15408:	54 e7 50 2a 	rlwinm  r7,r7,10,0,21                          
ffc1540c:	7c e6 33 78 	or      r6,r7,r6                               
ffc15410:	7d 00 00 a6 	mfmsr   r8                                     
  *previous_mode_set = old_mode;                                      
                                                                      
  /*                                                                  
   *  These are generic thread scheduling characteristics.            
   */                                                                 
  if ( mask & RTEMS_PREEMPT_MASK )                                    
ffc15414:	70 87 01 00 	andi.   r7,r4,256                              
  if (msr & MSR_EE) return 0;                                         
ffc15418:	69 08 80 00 	xori    r8,r8,32768                            
ffc1541c:	55 08 8f fe 	rlwinm  r8,r8,17,31,31                         
    old_mode |= RTEMS_NO_TIMESLICE;                                   
  else                                                                
    old_mode |= RTEMS_TIMESLICE;                                      
                                                                      
  old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;           
  old_mode |= _ISR_Get_level();                                       
ffc15420:	7c c6 43 78 	or      r6,r6,r8                               
                                                                      
  *previous_mode_set = old_mode;                                      
ffc15424:	90 c5 00 00 	stw     r6,0(r5)                               
                                                                      
  /*                                                                  
   *  These are generic thread scheduling characteristics.            
   */                                                                 
  if ( mask & RTEMS_PREEMPT_MASK )                                    
ffc15428:	41 82 00 10 	beq-    ffc15438 <rtems_task_mode+0x80>        
ffc1542c:	68 68 01 00 	xori    r8,r3,256                              
ffc15430:	55 08 c7 fe 	rlwinm  r8,r8,24,31,31                         
    executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
ffc15434:	99 09 00 70 	stb     r8,112(r9)                             
                                                                      
  if ( mask & RTEMS_TIMESLICE_MASK ) {                                
ffc15438:	70 88 02 00 	andi.   r8,r4,512                              
ffc1543c:	41 82 00 20 	beq-    ffc1545c <rtems_task_mode+0xa4>        
    if ( _Modes_Is_timeslice(mode_set) ) {                            
ffc15440:	70 68 02 00 	andi.   r8,r3,512                              
ffc15444:	41 82 01 4c 	beq-    ffc15590 <rtems_task_mode+0x1d8>       
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
      executing->cpu_time_budget  = _Thread_Ticks_per_timeslice;      
ffc15448:	3d 00 00 00 	lis     r8,0                                   
ffc1544c:	81 08 28 1c 	lwz     r8,10268(r8)                           
  if ( mask & RTEMS_PREEMPT_MASK )                                    
    executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
                                                                      
  if ( mask & RTEMS_TIMESLICE_MASK ) {                                
    if ( _Modes_Is_timeslice(mode_set) ) {                            
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
ffc15450:	38 e0 00 01 	li      r7,1                                   
ffc15454:	90 e9 00 78 	stw     r7,120(r9)                             
      executing->cpu_time_budget  = _Thread_Ticks_per_timeslice;      
ffc15458:	91 09 00 74 	stw     r8,116(r9)                             
  }                                                                   
                                                                      
  /*                                                                  
   *  Set the new interrupt level                                     
   */                                                                 
  if ( mask & RTEMS_INTERRUPT_MASK )                                  
ffc1545c:	70 89 00 01 	andi.   r9,r4,1                                
ffc15460:	41 82 00 20 	beq-    ffc15480 <rtems_task_mode+0xc8>        
}                                                                     
                                                                      
static inline void _CPU_ISR_Set_level( uint32_t   level )             
{                                                                     
  register unsigned int msr;                                          
  _CPU_MSR_GET(msr);                                                  
ffc15464:	39 20 00 00 	li      r9,0                                   
ffc15468:	7d 20 00 a6 	mfmsr   r9                                     
                                                                      
static inline uint32_t ppc_interrupt_get_disable_mask( void )         
{                                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc1546c:	7d 10 42 a6 	mfsprg  r8,0                                   
  if (!(level & CPU_MODES_INTERRUPT_MASK)) {                          
ffc15470:	70 67 00 01 	andi.   r7,r3,1                                
ffc15474:	40 82 01 2c 	bne-    ffc155a0 <rtems_task_mode+0x1e8>       
    msr |= ppc_interrupt_get_disable_mask();                          
ffc15478:	7d 09 4b 78 	or      r9,r8,r9                               
  }                                                                   
  else {                                                              
    msr &= ~ppc_interrupt_get_disable_mask();                         
  }                                                                   
  _CPU_MSR_SET(msr);                                                  
ffc1547c:	7d 20 01 24 	mtmsr   r9                                     
   *  This is specific to the RTEMS API                               
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
ffc15480:	70 88 04 00 	andi.   r8,r4,1024                             
                                                                      
  /*                                                                  
   *  This is specific to the RTEMS API                               
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
ffc15484:	39 00 00 00 	li      r8,0                                   
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
ffc15488:	41 82 00 50 	beq-    ffc154d8 <rtems_task_mode+0x120>       
    is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
ffc1548c:	68 63 04 00 	xori    r3,r3,1024                             
    if ( is_asr_enabled != asr->is_enabled ) {                        
ffc15490:	89 2a 00 08 	lbz     r9,8(r10)                              
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
    is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
ffc15494:	54 63 b7 fe 	rlwinm  r3,r3,22,31,31                         
    if ( is_asr_enabled != asr->is_enabled ) {                        
ffc15498:	7f 89 18 00 	cmpw    cr7,r9,r3                              
ffc1549c:	41 9e 00 3c 	beq-    cr7,ffc154d8 <rtems_task_mode+0x120>   
      asr->is_enabled = is_asr_enabled;                               
ffc154a0:	98 6a 00 08 	stb     r3,8(r10)                              
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc154a4:	7d 00 00 a6 	mfmsr   r8                                     
ffc154a8:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc154ac:	7d 09 48 78 	andc    r9,r8,r9                               
ffc154b0:	7d 20 01 24 	mtmsr   r9                                     
{                                                                     
  rtems_signal_set _signals;                                          
  ISR_Level        _level;                                            
                                                                      
  _ISR_Disable( _level );                                             
    _signals                     = information->signals_pending;      
ffc154b4:	81 2a 00 18 	lwz     r9,24(r10)                             
    information->signals_pending = information->signals_posted;       
ffc154b8:	80 ea 00 14 	lwz     r7,20(r10)                             
    information->signals_posted  = _signals;                          
ffc154bc:	91 2a 00 14 	stw     r9,20(r10)                             
  rtems_signal_set _signals;                                          
  ISR_Level        _level;                                            
                                                                      
  _ISR_Disable( _level );                                             
    _signals                     = information->signals_pending;      
    information->signals_pending = information->signals_posted;       
ffc154c0:	90 ea 00 18 	stw     r7,24(r10)                             
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc154c4:	7d 00 01 24 	mtmsr   r8                                     
      _ASR_Swap_signals( asr );                                       
      if ( _ASR_Are_signals_pending( asr ) ) {                        
ffc154c8:	81 0a 00 14 	lwz     r8,20(r10)                             
ffc154cc:	7d 08 00 34 	cntlzw  r8,r8                                  
ffc154d0:	55 08 d9 7e 	rlwinm  r8,r8,27,5,31                          
ffc154d4:	69 08 00 01 	xori    r8,r8,1                                
        needs_asr_dispatching = true;                                 
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
ffc154d8:	3d 20 00 00 	lis     r9,0                                   
ffc154dc:	81 29 28 48 	lwz     r9,10312(r9)                           
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
ffc154e0:	38 60 00 00 	li      r3,0                                   
        needs_asr_dispatching = true;                                 
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
ffc154e4:	2f 89 00 03 	cmpwi   cr7,r9,3                               
ffc154e8:	41 9e 00 50 	beq-    cr7,ffc15538 <rtems_task_mode+0x180>   
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
ffc154ec:	80 01 00 0c 	lwz     r0,12(r1)                              
ffc154f0:	38 21 00 08 	addi    r1,r1,8                                
ffc154f4:	7c 08 03 a6 	mtlr    r0                                     
ffc154f8:	4e 80 00 20 	blr                                            
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
    old_mode |= RTEMS_NO_TIMESLICE;                                   
  else                                                                
    old_mode |= RTEMS_TIMESLICE;                                      
                                                                      
  old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;           
ffc154fc:	88 ea 00 08 	lbz     r7,8(r10)                              
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
                                                                      
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
    old_mode |= RTEMS_NO_TIMESLICE;                                   
  else                                                                
    old_mode |= RTEMS_TIMESLICE;                                      
ffc15500:	60 c6 02 00 	ori     r6,r6,512                              
#ifndef ASM                                                           
                                                                      
static inline uint32_t   _CPU_ISR_Get_level( void )                   
{                                                                     
  register unsigned int msr;                                          
  _CPU_MSR_GET(msr);                                                  
ffc15504:	39 00 00 00 	li      r8,0                                   
                                                                      
  old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;           
ffc15508:	7c e7 00 34 	cntlzw  r7,r7                                  
ffc1550c:	54 e7 d9 7e 	rlwinm  r7,r7,27,5,31                          
ffc15510:	54 e7 50 2a 	rlwinm  r7,r7,10,0,21                          
ffc15514:	7c e6 33 78 	or      r6,r7,r6                               
ffc15518:	7d 00 00 a6 	mfmsr   r8                                     
  *previous_mode_set = old_mode;                                      
                                                                      
  /*                                                                  
   *  These are generic thread scheduling characteristics.            
   */                                                                 
  if ( mask & RTEMS_PREEMPT_MASK )                                    
ffc1551c:	70 87 01 00 	andi.   r7,r4,256                              
  if (msr & MSR_EE) return 0;                                         
ffc15520:	69 08 80 00 	xori    r8,r8,32768                            
ffc15524:	55 08 8f fe 	rlwinm  r8,r8,17,31,31                         
    old_mode |= RTEMS_NO_TIMESLICE;                                   
  else                                                                
    old_mode |= RTEMS_TIMESLICE;                                      
                                                                      
  old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;           
  old_mode |= _ISR_Get_level();                                       
ffc15528:	7c c6 43 78 	or      r6,r6,r8                               
                                                                      
  *previous_mode_set = old_mode;                                      
ffc1552c:	90 c5 00 00 	stw     r6,0(r5)                               
                                                                      
  /*                                                                  
   *  These are generic thread scheduling characteristics.            
   */                                                                 
  if ( mask & RTEMS_PREEMPT_MASK )                                    
ffc15530:	41 a2 ff 08 	beq-    ffc15438 <rtems_task_mode+0x80>        
ffc15534:	4b ff fe f8 	b       ffc1542c <rtems_task_mode+0x74>        
{                                                                     
  Thread_Control     *executing;                                      
                                                                      
  executing = _Thread_Executing;                                      
                                                                      
  if ( are_signals_pending ||                                         
ffc15538:	2f 88 00 00 	cmpwi   cr7,r8,0                               
  bool are_signals_pending                                            
)                                                                     
{                                                                     
  Thread_Control     *executing;                                      
                                                                      
  executing = _Thread_Executing;                                      
ffc1553c:	81 2b 00 10 	lwz     r9,16(r11)                             
                                                                      
  if ( are_signals_pending ||                                         
ffc15540:	40 9e 00 1c 	bne-    cr7,ffc1555c <rtems_task_mode+0x1a4>   
ffc15544:	81 4b 00 14 	lwz     r10,20(r11)                            
ffc15548:	7f 89 50 00 	cmpw    cr7,r9,r10                             
ffc1554c:	41 be ff a0 	beq-    cr7,ffc154ec <rtems_task_mode+0x134>   
       (!_Thread_Is_heir( executing ) && executing->is_preemptible) ) {
ffc15550:	89 29 00 70 	lbz     r9,112(r9)                             
ffc15554:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc15558:	41 be ff 94 	beq-    cr7,ffc154ec <rtems_task_mode+0x134>   <== NEVER TAKEN
    _Thread_Dispatch_necessary = true;                                
ffc1555c:	39 20 00 01 	li      r9,1                                   
ffc15560:	99 2b 00 0c 	stb     r9,12(r11)                             
    }                                                                 
  }                                                                   
                                                                      
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
ffc15564:	4b ff 89 59 	bl      ffc0debc <_Thread_Dispatch>            
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
ffc15568:	38 60 00 00 	li      r3,0                                   
}                                                                     
ffc1556c:	80 01 00 0c 	lwz     r0,12(r1)                              
ffc15570:	38 21 00 08 	addi    r1,r1,8                                
ffc15574:	7c 08 03 a6 	mtlr    r0                                     
ffc15578:	4e 80 00 20 	blr                                            
ffc1557c:	80 01 00 0c 	lwz     r0,12(r1)                              
  bool                is_asr_enabled = false;                         
  bool                needs_asr_dispatching = false;                  
  rtems_mode          old_mode;                                       
                                                                      
  if ( !previous_mode_set )                                           
    return RTEMS_INVALID_ADDRESS;                                     
ffc15580:	38 60 00 09 	li      r3,9                                   
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
ffc15584:	7c 08 03 a6 	mtlr    r0                                     
ffc15588:	38 21 00 08 	addi    r1,r1,8                                
ffc1558c:	4e 80 00 20 	blr                                            
  if ( mask & RTEMS_TIMESLICE_MASK ) {                                
    if ( _Modes_Is_timeslice(mode_set) ) {                            
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
      executing->cpu_time_budget  = _Thread_Ticks_per_timeslice;      
    } else                                                            
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; 
ffc15590:	91 09 00 78 	stw     r8,120(r9)                             
  }                                                                   
                                                                      
  /*                                                                  
   *  Set the new interrupt level                                     
   */                                                                 
  if ( mask & RTEMS_INTERRUPT_MASK )                                  
ffc15594:	70 89 00 01 	andi.   r9,r4,1                                
ffc15598:	41 a2 fe e8 	beq-    ffc15480 <rtems_task_mode+0xc8>        
ffc1559c:	4b ff fe c8 	b       ffc15464 <rtems_task_mode+0xac>        
  _CPU_MSR_GET(msr);                                                  
  if (!(level & CPU_MODES_INTERRUPT_MASK)) {                          
    msr |= ppc_interrupt_get_disable_mask();                          
  }                                                                   
  else {                                                              
    msr &= ~ppc_interrupt_get_disable_mask();                         
ffc155a0:	7d 29 40 78 	andc    r9,r9,r8                               
  }                                                                   
  _CPU_MSR_SET(msr);                                                  
ffc155a4:	7d 20 01 24 	mtmsr   r9                                     
 */                                                                   
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (                
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
  _ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );           
ffc155a8:	4b ff fe d8 	b       ffc15480 <rtems_task_mode+0xc8>        
                                                                      

ffc0f188 <rtems_task_set_priority>: rtems_status_code rtems_task_set_priority( rtems_id id, rtems_task_priority new_priority, rtems_task_priority *old_priority ) {
ffc0f188:	7d 80 00 26 	mfcr    r12                                    
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
                                                                      
  if ( new_priority != RTEMS_CURRENT_PRIORITY &&                      
ffc0f18c:	2e 04 00 00 	cmpwi   cr4,r4,0                               
rtems_status_code rtems_task_set_priority(                            
  rtems_id             id,                                            
  rtems_task_priority  new_priority,                                  
  rtems_task_priority *old_priority                                   
)                                                                     
{                                                                     
ffc0f190:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc0f194:	7c 08 02 a6 	mflr    r0                                     
ffc0f198:	93 e1 00 24 	stw     r31,36(r1)                             
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
                                                                      
  if ( new_priority != RTEMS_CURRENT_PRIORITY &&                      
ffc0f19c:	7c 9f 23 78 	mr      r31,r4                                 
rtems_status_code rtems_task_set_priority(                            
  rtems_id             id,                                            
  rtems_task_priority  new_priority,                                  
  rtems_task_priority *old_priority                                   
)                                                                     
{                                                                     
ffc0f1a0:	90 01 00 2c 	stw     r0,44(r1)                              
ffc0f1a4:	91 81 00 20 	stw     r12,32(r1)                             
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
                                                                      
  if ( new_priority != RTEMS_CURRENT_PRIORITY &&                      
ffc0f1a8:	41 92 00 18 	beq-    cr4,ffc0f1c0 <rtems_task_set_priority+0x38>
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (            
  rtems_task_priority the_priority                                    
)                                                                     
{                                                                     
  return (  ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&             
            ( the_priority <= RTEMS_MAXIMUM_PRIORITY ) );             
ffc0f1ac:	3d 20 00 00 	lis     r9,0                                   
ffc0f1b0:	89 49 27 64 	lbz     r10,10084(r9)                          
       !_RTEMS_tasks_Priority_is_valid( new_priority ) )              
    return RTEMS_INVALID_PRIORITY;                                    
ffc0f1b4:	39 20 00 13 	li      r9,19                                  
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (            
  rtems_task_priority the_priority                                    
)                                                                     
{                                                                     
  return (  ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&             
ffc0f1b8:	7f 84 50 40 	cmplw   cr7,r4,r10                             
ffc0f1bc:	41 9d 00 68 	bgt-    cr7,ffc0f224 <rtems_task_set_priority+0x9c>
                                                                      
  if ( !old_priority )                                                
ffc0f1c0:	2f 85 00 00 	cmpwi   cr7,r5,0                               
    return RTEMS_INVALID_ADDRESS;                                     
ffc0f1c4:	39 20 00 09 	li      r9,9                                   
                                                                      
  if ( new_priority != RTEMS_CURRENT_PRIORITY &&                      
       !_RTEMS_tasks_Priority_is_valid( new_priority ) )              
    return RTEMS_INVALID_PRIORITY;                                    
                                                                      
  if ( !old_priority )                                                
ffc0f1c8:	41 9e 00 5c 	beq-    cr7,ffc0f224 <rtems_task_set_priority+0x9c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
ffc0f1cc:	38 81 00 08 	addi    r4,r1,8                                
ffc0f1d0:	90 a1 00 18 	stw     r5,24(r1)                              
ffc0f1d4:	48 00 2c f1 	bl      ffc11ec4 <_Thread_Get>                 
  switch ( location ) {                                               
ffc0f1d8:	81 21 00 08 	lwz     r9,8(r1)                               
ffc0f1dc:	80 a1 00 18 	lwz     r5,24(r1)                              
ffc0f1e0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0f1e4:	40 9e 00 60 	bne-    cr7,ffc0f244 <rtems_task_set_priority+0xbc>
                                                                      
    case OBJECTS_LOCAL:                                               
      /* XXX need helper to "convert" from core priority */           
      *old_priority = the_thread->current_priority;                   
ffc0f1e8:	81 23 00 14 	lwz     r9,20(r3)                              
ffc0f1ec:	91 25 00 00 	stw     r9,0(r5)                               
      if ( new_priority != RTEMS_CURRENT_PRIORITY ) {                 
ffc0f1f0:	41 92 00 2c 	beq-    cr4,ffc0f21c <rtems_task_set_priority+0x94>
        the_thread->real_priority = new_priority;                     
        if ( the_thread->resource_count == 0 ||                       
ffc0f1f4:	81 23 00 1c 	lwz     r9,28(r3)                              
                                                                      
    case OBJECTS_LOCAL:                                               
      /* XXX need helper to "convert" from core priority */           
      *old_priority = the_thread->current_priority;                   
      if ( new_priority != RTEMS_CURRENT_PRIORITY ) {                 
        the_thread->real_priority = new_priority;                     
ffc0f1f8:	93 e3 00 18 	stw     r31,24(r3)                             
        if ( the_thread->resource_count == 0 ||                       
ffc0f1fc:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0f200:	41 9e 00 10 	beq-    cr7,ffc0f210 <rtems_task_set_priority+0x88>
ffc0f204:	81 23 00 14 	lwz     r9,20(r3)                              
ffc0f208:	7f 9f 48 40 	cmplw   cr7,r31,r9                             
ffc0f20c:	40 9c 00 10 	bge-    cr7,ffc0f21c <rtems_task_set_priority+0x94><== ALWAYS TAKEN
             the_thread->current_priority > new_priority )            
          _Thread_Change_priority( the_thread, new_priority, false ); 
ffc0f210:	7f e4 fb 78 	mr      r4,r31                                 
ffc0f214:	38 a0 00 00 	li      r5,0                                   
ffc0f218:	48 00 26 05 	bl      ffc1181c <_Thread_Change_priority>     
      }                                                               
      _Thread_Enable_dispatch();                                      
ffc0f21c:	48 00 2c 8d 	bl      ffc11ea8 <_Thread_Enable_dispatch>     
      return RTEMS_SUCCESSFUL;                                        
ffc0f220:	39 20 00 00 	li      r9,0                                   
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc0f224:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc0f228:	7d 23 4b 78 	mr      r3,r9                                  
ffc0f22c:	81 81 00 20 	lwz     r12,32(r1)                             
ffc0f230:	7c 08 03 a6 	mtlr    r0                                     
ffc0f234:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc0f238:	7d 80 81 20 	mtcrf   8,r12                                  
ffc0f23c:	38 21 00 28 	addi    r1,r1,40                               
ffc0f240:	4e 80 00 20 	blr                                            
ffc0f244:	80 01 00 2c 	lwz     r0,44(r1)                              
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
ffc0f248:	39 20 00 04 	li      r9,4                                   
}                                                                     
ffc0f24c:	81 81 00 20 	lwz     r12,32(r1)                             
ffc0f250:	7d 23 4b 78 	mr      r3,r9                                  
ffc0f254:	7c 08 03 a6 	mtlr    r0                                     
ffc0f258:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc0f25c:	7d 80 81 20 	mtcrf   8,r12                                  
ffc0f260:	38 21 00 28 	addi    r1,r1,40                               
ffc0f264:	4e 80 00 20 	blr                                            
                                                                      

ffc0874c <rtems_task_variable_delete>: rtems_status_code rtems_task_variable_delete( rtems_id tid, void **ptr ) {
ffc0874c:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc08750:	7c 08 02 a6 	mflr    r0                                     
ffc08754:	93 e1 00 1c 	stw     r31,28(r1)                             
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp, *prev;                                  
                                                                      
  if ( !ptr )                                                         
ffc08758:	7c 9f 23 79 	mr.     r31,r4                                 
                                                                      
rtems_status_code rtems_task_variable_delete(                         
  rtems_id  tid,                                                      
  void    **ptr                                                       
)                                                                     
{                                                                     
ffc0875c:	90 01 00 24 	stw     r0,36(r1)                              
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp, *prev;                                  
                                                                      
  if ( !ptr )                                                         
ffc08760:	41 82 00 74 	beq-    ffc087d4 <rtems_task_variable_delete+0x88>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  prev = NULL;                                                        
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
ffc08764:	38 81 00 08 	addi    r4,r1,8                                
ffc08768:	48 00 25 b9 	bl      ffc0ad20 <_Thread_Get>                 
  switch (location) {                                                 
ffc0876c:	81 21 00 08 	lwz     r9,8(r1)                               
ffc08770:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc08774:	40 9e 00 48 	bne-    cr7,ffc087bc <rtems_task_variable_delete+0x70>
                                                                      
    case OBJECTS_LOCAL:                                               
      tvp = the_thread->task_variables;                               
ffc08778:	81 23 01 58 	lwz     r9,344(r3)                             
      while (tvp) {                                                   
ffc0877c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc08780:	41 9e 00 30 	beq-    cr7,ffc087b0 <rtems_task_variable_delete+0x64>
        if (tvp->ptr == ptr) {                                        
ffc08784:	81 49 00 04 	lwz     r10,4(r9)                              
ffc08788:	7f 8a f8 00 	cmpw    cr7,r10,r31                            
ffc0878c:	40 be 00 18 	bne+    cr7,ffc087a4 <rtems_task_variable_delete+0x58>
ffc08790:	48 00 00 74 	b       ffc08804 <rtems_task_variable_delete+0xb8>
ffc08794:	81 44 00 04 	lwz     r10,4(r4)                              
ffc08798:	7f 8a f8 00 	cmpw    cr7,r10,r31                            
ffc0879c:	41 9e 00 50 	beq-    cr7,ffc087ec <rtems_task_variable_delete+0xa0>
ffc087a0:	7c 89 23 78 	mr      r9,r4                                  
          _RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );  
          _Thread_Enable_dispatch();                                  
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        prev = tvp;                                                   
        tvp = (rtems_task_variable_t *)tvp->next;                     
ffc087a4:	80 89 00 00 	lwz     r4,0(r9)                               
  the_thread = _Thread_Get (tid, &location);                          
  switch (location) {                                                 
                                                                      
    case OBJECTS_LOCAL:                                               
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
ffc087a8:	2f 84 00 00 	cmpwi   cr7,r4,0                               
ffc087ac:	40 9e ff e8 	bne+    cr7,ffc08794 <rtems_task_variable_delete+0x48><== ALWAYS TAKEN
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        prev = tvp;                                                   
        tvp = (rtems_task_variable_t *)tvp->next;                     
      }                                                               
      _Thread_Enable_dispatch();                                      
ffc087b0:	48 00 25 55 	bl      ffc0ad04 <_Thread_Enable_dispatch>     
      return RTEMS_INVALID_ADDRESS;                                   
ffc087b4:	38 60 00 09 	li      r3,9                                   
ffc087b8:	48 00 00 08 	b       ffc087c0 <rtems_task_variable_delete+0x74>
                                                                      
    case OBJECTS_ERROR:                                               
        break;                                                        
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
ffc087bc:	38 60 00 04 	li      r3,4                                   
}                                                                     
ffc087c0:	80 01 00 24 	lwz     r0,36(r1)                              
ffc087c4:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc087c8:	7c 08 03 a6 	mtlr    r0                                     
ffc087cc:	38 21 00 20 	addi    r1,r1,32                               
ffc087d0:	4e 80 00 20 	blr                                            
ffc087d4:	80 01 00 24 	lwz     r0,36(r1)                              
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp, *prev;                                  
                                                                      
  if ( !ptr )                                                         
    return RTEMS_INVALID_ADDRESS;                                     
ffc087d8:	38 60 00 09 	li      r3,9                                   
    case OBJECTS_ERROR:                                               
        break;                                                        
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc087dc:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc087e0:	7c 08 03 a6 	mtlr    r0                                     
ffc087e4:	38 21 00 20 	addi    r1,r1,32                               
ffc087e8:	4e 80 00 20 	blr                                            
    case OBJECTS_LOCAL:                                               
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
        if (tvp->ptr == ptr) {                                        
          if (prev)                                                   
            prev->next = tvp->next;                                   
ffc087ec:	81 44 00 00 	lwz     r10,0(r4)                              
ffc087f0:	91 49 00 00 	stw     r10,0(r9)                              
          else                                                        
            the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
                                                                      
          _RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );  
ffc087f4:	48 00 00 dd 	bl      ffc088d0 <_RTEMS_Tasks_Invoke_task_variable_dtor>
          _Thread_Enable_dispatch();                                  
ffc087f8:	48 00 25 0d 	bl      ffc0ad04 <_Thread_Enable_dispatch>     
          return RTEMS_SUCCESSFUL;                                    
ffc087fc:	38 60 00 00 	li      r3,0                                   
ffc08800:	4b ff ff c0 	b       ffc087c0 <rtems_task_variable_delete+0x74>
      while (tvp) {                                                   
        if (tvp->ptr == ptr) {                                        
          if (prev)                                                   
            prev->next = tvp->next;                                   
          else                                                        
            the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
ffc08804:	81 49 00 00 	lwz     r10,0(r9)                              
ffc08808:	7d 24 4b 78 	mr      r4,r9                                  
ffc0880c:	91 43 01 58 	stw     r10,344(r3)                            
ffc08810:	4b ff ff e4 	b       ffc087f4 <rtems_task_variable_delete+0xa8>
                                                                      

ffc08814 <rtems_task_variable_get>: rtems_status_code rtems_task_variable_get( rtems_id tid, void **ptr, void **result ) {
ffc08814:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc08818:	7c 08 02 a6 	mflr    r0                                     
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp;                                         
                                                                      
  if ( !ptr )                                                         
    return RTEMS_INVALID_ADDRESS;                                     
ffc0881c:	39 20 00 09 	li      r9,9                                   
rtems_status_code rtems_task_variable_get(                            
  rtems_id tid,                                                       
  void **ptr,                                                         
  void **result                                                       
)                                                                     
{                                                                     
ffc08820:	93 e1 00 24 	stw     r31,36(r1)                             
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp;                                         
                                                                      
  if ( !ptr )                                                         
ffc08824:	7c 9f 23 79 	mr.     r31,r4                                 
rtems_status_code rtems_task_variable_get(                            
  rtems_id tid,                                                       
  void **ptr,                                                         
  void **result                                                       
)                                                                     
{                                                                     
ffc08828:	90 01 00 2c 	stw     r0,44(r1)                              
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp;                                         
                                                                      
  if ( !ptr )                                                         
ffc0882c:	41 82 00 64 	beq-    ffc08890 <rtems_task_variable_get+0x7c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !result )                                                      
ffc08830:	2f 85 00 00 	cmpwi   cr7,r5,0                               
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp;                                         
                                                                      
  if ( !ptr )                                                         
    return RTEMS_INVALID_ADDRESS;                                     
ffc08834:	39 20 00 09 	li      r9,9                                   
                                                                      
  if ( !result )                                                      
ffc08838:	41 9e 00 58 	beq-    cr7,ffc08890 <rtems_task_variable_get+0x7c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
ffc0883c:	38 81 00 08 	addi    r4,r1,8                                
ffc08840:	90 a1 00 18 	stw     r5,24(r1)                              
ffc08844:	48 00 24 dd 	bl      ffc0ad20 <_Thread_Get>                 
  switch (location) {                                                 
ffc08848:	81 21 00 08 	lwz     r9,8(r1)                               
ffc0884c:	80 a1 00 18 	lwz     r5,24(r1)                              
ffc08850:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc08854:	40 9e 00 54 	bne-    cr7,ffc088a8 <rtems_task_variable_get+0x94>
                                                                      
    case OBJECTS_LOCAL:                                               
      /*                                                              
       *  Figure out if the variable is in this task's list.          
       */                                                             
      tvp = the_thread->task_variables;                               
ffc08858:	81 23 01 58 	lwz     r9,344(r3)                             
      while (tvp) {                                                   
ffc0885c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc08860:	40 be 00 14 	bne+    cr7,ffc08874 <rtems_task_variable_get+0x60>
ffc08864:	48 00 00 60 	b       ffc088c4 <rtems_task_variable_get+0xb0>
	   */                                                                
          *result = tvp->tval;                                        
          _Thread_Enable_dispatch();                                  
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        tvp = (rtems_task_variable_t *)tvp->next;                     
ffc08868:	81 29 00 00 	lwz     r9,0(r9)                               
    case OBJECTS_LOCAL:                                               
      /*                                                              
       *  Figure out if the variable is in this task's list.          
       */                                                             
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
ffc0886c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc08870:	41 9e 00 54 	beq-    cr7,ffc088c4 <rtems_task_variable_get+0xb0><== NEVER TAKEN
        if (tvp->ptr == ptr) {                                        
ffc08874:	81 49 00 04 	lwz     r10,4(r9)                              
ffc08878:	7f 8a f8 00 	cmpw    cr7,r10,r31                            
ffc0887c:	40 9e ff ec 	bne+    cr7,ffc08868 <rtems_task_variable_get+0x54>
	  /*                                                                 
	   * Should this return the current (i.e not the                     
	   * saved) value if `tid' is the current task?                      
	   */                                                                
          *result = tvp->tval;                                        
ffc08880:	81 29 00 0c 	lwz     r9,12(r9)                              
ffc08884:	91 25 00 00 	stw     r9,0(r5)                               
          _Thread_Enable_dispatch();                                  
ffc08888:	48 00 24 7d 	bl      ffc0ad04 <_Thread_Enable_dispatch>     
          return RTEMS_SUCCESSFUL;                                    
ffc0888c:	39 20 00 00 	li      r9,0                                   
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc08890:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc08894:	7d 23 4b 78 	mr      r3,r9                                  
ffc08898:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc0889c:	7c 08 03 a6 	mtlr    r0                                     
ffc088a0:	38 21 00 28 	addi    r1,r1,40                               
ffc088a4:	4e 80 00 20 	blr                                            
ffc088a8:	80 01 00 2c 	lwz     r0,44(r1)                              
#endif                                                                
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
ffc088ac:	39 20 00 04 	li      r9,4                                   
}                                                                     
ffc088b0:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc088b4:	7d 23 4b 78 	mr      r3,r9                                  
ffc088b8:	7c 08 03 a6 	mtlr    r0                                     
ffc088bc:	38 21 00 28 	addi    r1,r1,40                               
ffc088c0:	4e 80 00 20 	blr                                            
          _Thread_Enable_dispatch();                                  
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        tvp = (rtems_task_variable_t *)tvp->next;                     
      }                                                               
      _Thread_Enable_dispatch();                                      
ffc088c4:	48 00 24 41 	bl      ffc0ad04 <_Thread_Enable_dispatch>     
      return RTEMS_INVALID_ADDRESS;                                   
ffc088c8:	39 20 00 09 	li      r9,9                                   
ffc088cc:	4b ff ff c4 	b       ffc08890 <rtems_task_variable_get+0x7c>
                                                                      

ffc1cc7c <rtems_timer_cancel>: */ rtems_status_code rtems_timer_cancel( rtems_id id ) {
ffc1cc7c:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc1cc80:	7c 08 02 a6 	mflr    r0                                     
ffc1cc84:	7c 64 1b 78 	mr      r4,r3                                  
RTEMS_INLINE_ROUTINE Timer_Control *_Timer_Get (                      
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (Timer_Control *)                                            
ffc1cc88:	3c 60 00 00 	lis     r3,0                                   
ffc1cc8c:	90 01 00 1c 	stw     r0,28(r1)                              
ffc1cc90:	38 63 7a 1c 	addi    r3,r3,31260                            
ffc1cc94:	38 a1 00 08 	addi    r5,r1,8                                
ffc1cc98:	48 00 3d 11 	bl      ffc209a8 <_Objects_Get>                
  Timer_Control   *the_timer;                                         
  Objects_Locations       location;                                   
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
ffc1cc9c:	81 21 00 08 	lwz     r9,8(r1)                               
ffc1cca0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc1cca4:	40 9e 00 30 	bne-    cr7,ffc1ccd4 <rtems_timer_cancel+0x58> 
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( !_Timer_Is_dormant_class( the_timer->the_class ) )         
ffc1cca8:	81 23 00 38 	lwz     r9,56(r3)                              
ffc1ccac:	2f 89 00 04 	cmpwi   cr7,r9,4                               
ffc1ccb0:	41 9e 00 0c 	beq-    cr7,ffc1ccbc <rtems_timer_cancel+0x40> <== NEVER TAKEN
        (void) _Watchdog_Remove( &the_timer->Ticker );                
ffc1ccb4:	38 63 00 10 	addi    r3,r3,16                               
ffc1ccb8:	48 00 61 b1 	bl      ffc22e68 <_Watchdog_Remove>            
      _Thread_Enable_dispatch();                                      
ffc1ccbc:	48 00 4d d5 	bl      ffc21a90 <_Thread_Enable_dispatch>     
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc1ccc0:	80 01 00 1c 	lwz     r0,28(r1)                              
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( !_Timer_Is_dormant_class( the_timer->the_class ) )         
        (void) _Watchdog_Remove( &the_timer->Ticker );                
      _Thread_Enable_dispatch();                                      
      return RTEMS_SUCCESSFUL;                                        
ffc1ccc4:	38 60 00 00 	li      r3,0                                   
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc1ccc8:	7c 08 03 a6 	mtlr    r0                                     
ffc1cccc:	38 21 00 18 	addi    r1,r1,24                               
ffc1ccd0:	4e 80 00 20 	blr                                            
ffc1ccd4:	80 01 00 1c 	lwz     r0,28(r1)                              
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
ffc1ccd8:	38 60 00 04 	li      r3,4                                   
}                                                                     
ffc1ccdc:	7c 08 03 a6 	mtlr    r0                                     
ffc1cce0:	38 21 00 18 	addi    r1,r1,24                               
ffc1cce4:	4e 80 00 20 	blr                                            
                                                                      

ffc1d3e8 <rtems_timer_server_fire_when>: rtems_id id, rtems_time_of_day *wall_time, rtems_timer_service_routine_entry routine, void *user_data ) {
ffc1d3e8:	94 21 ff c0 	stwu    r1,-64(r1)                             
  Timer_Control        *the_timer;                                    
  Objects_Locations     location;                                     
  rtems_interval        seconds;                                      
  Timer_server_Control *timer_server = _Timer_server;                 
ffc1d3ec:	3d 20 00 00 	lis     r9,0                                   
  rtems_id                           id,                              
  rtems_time_of_day                  *wall_time,                      
  rtems_timer_service_routine_entry  routine,                         
  void                              *user_data                        
)                                                                     
{                                                                     
ffc1d3f0:	7c 08 02 a6 	mflr    r0                                     
ffc1d3f4:	93 e1 00 3c 	stw     r31,60(r1)                             
  Timer_Control        *the_timer;                                    
  Objects_Locations     location;                                     
  rtems_interval        seconds;                                      
  Timer_server_Control *timer_server = _Timer_server;                 
ffc1d3f8:	83 e9 29 80 	lwz     r31,10624(r9)                          
  rtems_id                           id,                              
  rtems_time_of_day                  *wall_time,                      
  rtems_timer_service_routine_entry  routine,                         
  void                              *user_data                        
)                                                                     
{                                                                     
ffc1d3fc:	90 01 00 44 	stw     r0,68(r1)                              
  Timer_Control        *the_timer;                                    
  Objects_Locations     location;                                     
  rtems_interval        seconds;                                      
  Timer_server_Control *timer_server = _Timer_server;                 
                                                                      
  if ( !timer_server )                                                
ffc1d400:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
  rtems_id                           id,                              
  rtems_time_of_day                  *wall_time,                      
  rtems_timer_service_routine_entry  routine,                         
  void                              *user_data                        
)                                                                     
{                                                                     
ffc1d404:	93 01 00 20 	stw     r24,32(r1)                             
ffc1d408:	93 21 00 24 	stw     r25,36(r1)                             
ffc1d40c:	93 41 00 28 	stw     r26,40(r1)                             
ffc1d410:	93 61 00 2c 	stw     r27,44(r1)                             
ffc1d414:	93 81 00 30 	stw     r28,48(r1)                             
ffc1d418:	93 a1 00 34 	stw     r29,52(r1)                             
ffc1d41c:	93 c1 00 38 	stw     r30,56(r1)                             
  Timer_Control        *the_timer;                                    
  Objects_Locations     location;                                     
  rtems_interval        seconds;                                      
  Timer_server_Control *timer_server = _Timer_server;                 
                                                                      
  if ( !timer_server )                                                
ffc1d420:	41 9e 00 b0 	beq-    cr7,ffc1d4d0 <rtems_timer_server_fire_when+0xe8>
    return RTEMS_INCORRECT_STATE;                                     
                                                                      
  if ( !_TOD.is_set )                                                 
ffc1d424:	3f c0 00 00 	lis     r30,0                                  
ffc1d428:	3b de 70 80 	addi    r30,r30,28800                          
ffc1d42c:	89 5e 00 14 	lbz     r10,20(r30)                            
ffc1d430:	7c 7c 1b 78 	mr      r28,r3                                 
    return RTEMS_NOT_DEFINED;                                         
ffc1d434:	38 60 00 0b 	li      r3,11                                  
  Timer_server_Control *timer_server = _Timer_server;                 
                                                                      
  if ( !timer_server )                                                
    return RTEMS_INCORRECT_STATE;                                     
                                                                      
  if ( !_TOD.is_set )                                                 
ffc1d438:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc1d43c:	40 9e 00 34 	bne-    cr7,ffc1d470 <rtems_timer_server_fire_when+0x88><== ALWAYS TAKEN
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc1d440:	80 01 00 44 	lwz     r0,68(r1)                              
ffc1d444:	83 01 00 20 	lwz     r24,32(r1)                             
ffc1d448:	7c 08 03 a6 	mtlr    r0                                     
ffc1d44c:	83 21 00 24 	lwz     r25,36(r1)                             
ffc1d450:	83 41 00 28 	lwz     r26,40(r1)                             
ffc1d454:	83 61 00 2c 	lwz     r27,44(r1)                             
ffc1d458:	83 81 00 30 	lwz     r28,48(r1)                             
ffc1d45c:	83 a1 00 34 	lwz     r29,52(r1)                             
ffc1d460:	83 c1 00 38 	lwz     r30,56(r1)                             
ffc1d464:	83 e1 00 3c 	lwz     r31,60(r1)                             
ffc1d468:	38 21 00 40 	addi    r1,r1,64                               
ffc1d46c:	4e 80 00 20 	blr                                            
    return RTEMS_INCORRECT_STATE;                                     
                                                                      
  if ( !_TOD.is_set )                                                 
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !routine )                                                     
ffc1d470:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc1d474:	7c bd 2b 78 	mr      r29,r5                                 
    return RTEMS_INVALID_ADDRESS;                                     
ffc1d478:	38 60 00 09 	li      r3,9                                   
    return RTEMS_INCORRECT_STATE;                                     
                                                                      
  if ( !_TOD.is_set )                                                 
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !routine )                                                     
ffc1d47c:	41 be ff c4 	beq-    cr7,ffc1d440 <rtems_timer_server_fire_when+0x58>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
ffc1d480:	7c 83 23 78 	mr      r3,r4                                  
ffc1d484:	90 81 00 18 	stw     r4,24(r1)                              
ffc1d488:	7c db 33 78 	mr      r27,r6                                 
ffc1d48c:	4b ff bb 45 	bl      ffc18fd0 <_TOD_Validate>               
ffc1d490:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc1d494:	80 81 00 18 	lwz     r4,24(r1)                              
ffc1d498:	40 9e 00 6c 	bne-    cr7,ffc1d504 <rtems_timer_server_fire_when+0x11c>
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc1d49c:	80 01 00 44 	lwz     r0,68(r1)                              
                                                                      
  if ( !routine )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
    return RTEMS_INVALID_CLOCK;                                       
ffc1d4a0:	38 60 00 14 	li      r3,20                                  
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc1d4a4:	83 01 00 20 	lwz     r24,32(r1)                             
ffc1d4a8:	7c 08 03 a6 	mtlr    r0                                     
ffc1d4ac:	83 21 00 24 	lwz     r25,36(r1)                             
ffc1d4b0:	83 41 00 28 	lwz     r26,40(r1)                             
ffc1d4b4:	83 61 00 2c 	lwz     r27,44(r1)                             
ffc1d4b8:	83 81 00 30 	lwz     r28,48(r1)                             
ffc1d4bc:	83 a1 00 34 	lwz     r29,52(r1)                             
ffc1d4c0:	83 c1 00 38 	lwz     r30,56(r1)                             
ffc1d4c4:	83 e1 00 3c 	lwz     r31,60(r1)                             
ffc1d4c8:	38 21 00 40 	addi    r1,r1,64                               
ffc1d4cc:	4e 80 00 20 	blr                                            
ffc1d4d0:	80 01 00 44 	lwz     r0,68(r1)                              
  Objects_Locations     location;                                     
  rtems_interval        seconds;                                      
  Timer_server_Control *timer_server = _Timer_server;                 
                                                                      
  if ( !timer_server )                                                
    return RTEMS_INCORRECT_STATE;                                     
ffc1d4d4:	38 60 00 0e 	li      r3,14                                  
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc1d4d8:	83 01 00 20 	lwz     r24,32(r1)                             
ffc1d4dc:	7c 08 03 a6 	mtlr    r0                                     
ffc1d4e0:	83 21 00 24 	lwz     r25,36(r1)                             
ffc1d4e4:	83 41 00 28 	lwz     r26,40(r1)                             
ffc1d4e8:	83 61 00 2c 	lwz     r27,44(r1)                             
ffc1d4ec:	83 81 00 30 	lwz     r28,48(r1)                             
ffc1d4f0:	83 a1 00 34 	lwz     r29,52(r1)                             
ffc1d4f4:	83 c1 00 38 	lwz     r30,56(r1)                             
ffc1d4f8:	83 e1 00 3c 	lwz     r31,60(r1)                             
ffc1d4fc:	38 21 00 40 	addi    r1,r1,64                               
ffc1d500:	4e 80 00 20 	blr                                            
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  seconds = _TOD_To_seconds( wall_time );                             
ffc1d504:	7c 83 23 78 	mr      r3,r4                                  
ffc1d508:	4b ff ba 15 	bl      ffc18f1c <_TOD_To_seconds>             
ffc1d50c:	80 9e 00 04 	lwz     r4,4(r30)                              
ffc1d510:	7c 7a 1b 78 	mr      r26,r3                                 
ffc1d514:	80 7e 00 00 	lwz     r3,0(r30)                              
ffc1d518:	3c c0 3b 9a 	lis     r6,15258                               
ffc1d51c:	38 a0 00 00 	li      r5,0                                   
ffc1d520:	60 c6 ca 00 	ori     r6,r6,51712                            
ffc1d524:	48 01 64 a1 	bl      ffc339c4 <__divdi3>                    
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
ffc1d528:	7f 9a 20 40 	cmplw   cr7,r26,r4                             
ffc1d52c:	40 9d ff 70 	ble+    cr7,ffc1d49c <rtems_timer_server_fire_when+0xb4>
ffc1d530:	3c 60 00 00 	lis     r3,0                                   
ffc1d534:	38 63 7a 1c 	addi    r3,r3,31260                            
ffc1d538:	7f 84 e3 78 	mr      r4,r28                                 
ffc1d53c:	38 a1 00 08 	addi    r5,r1,8                                
ffc1d540:	48 00 34 69 	bl      ffc209a8 <_Objects_Get>                
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
ffc1d544:	83 01 00 08 	lwz     r24,8(r1)                              
ffc1d548:	7c 79 1b 78 	mr      r25,r3                                 
ffc1d54c:	2f 98 00 00 	cmpwi   cr7,r24,0                              
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
ffc1d550:	38 60 00 04 	li      r3,4                                   
  seconds = _TOD_To_seconds( wall_time );                             
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
ffc1d554:	40 be fe ec 	bne-    cr7,ffc1d440 <rtems_timer_server_fire_when+0x58>
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
ffc1d558:	38 79 00 10 	addi    r3,r25,16                              
ffc1d55c:	48 00 59 0d 	bl      ffc22e68 <_Watchdog_Remove>            
      the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;               
ffc1d560:	39 20 00 03 	li      r9,3                                   
ffc1d564:	80 7e 00 00 	lwz     r3,0(r30)                              
ffc1d568:	3c c0 3b 9a 	lis     r6,15258                               
ffc1d56c:	80 9e 00 04 	lwz     r4,4(r30)                              
ffc1d570:	38 a0 00 00 	li      r5,0                                   
ffc1d574:	91 39 00 38 	stw     r9,56(r25)                             
ffc1d578:	60 c6 ca 00 	ori     r6,r6,51712                            
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
ffc1d57c:	93 19 00 18 	stw     r24,24(r25)                            
  the_watchdog->routine   = routine;                                  
ffc1d580:	93 b9 00 2c 	stw     r29,44(r25)                            
  the_watchdog->id        = id;                                       
ffc1d584:	93 99 00 30 	stw     r28,48(r25)                            
  the_watchdog->user_data = user_data;                                
ffc1d588:	93 79 00 34 	stw     r27,52(r25)                            
ffc1d58c:	48 01 64 39 	bl      ffc339c4 <__divdi3>                    
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
                                                                      
      (*timer_server->schedule_operation)( timer_server, the_timer ); 
ffc1d590:	81 3f 00 04 	lwz     r9,4(r31)                              
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
      the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;               
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
ffc1d594:	7f 44 d0 50 	subf    r26,r4,r26                             
                                                                      
      (*timer_server->schedule_operation)( timer_server, the_timer ); 
ffc1d598:	7f e3 fb 78 	mr      r3,r31                                 
ffc1d59c:	7d 29 03 a6 	mtctr   r9                                     
ffc1d5a0:	7f 24 cb 78 	mr      r4,r25                                 
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
      the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;               
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
ffc1d5a4:	93 59 00 1c 	stw     r26,28(r25)                            
                                                                      
      (*timer_server->schedule_operation)( timer_server, the_timer ); 
ffc1d5a8:	4e 80 04 21 	bctrl                                          
                                                                      
      _Thread_Enable_dispatch();                                      
ffc1d5ac:	48 00 44 e5 	bl      ffc21a90 <_Thread_Enable_dispatch>     
      return RTEMS_SUCCESSFUL;                                        
ffc1d5b0:	38 60 00 00 	li      r3,0                                   
ffc1d5b4:	4b ff fe 8c 	b       ffc1d440 <rtems_timer_server_fire_when+0x58>
                                                                      

ffc09ed8 <sched_get_priority_max>: int sched_get_priority_max( int policy ) { switch ( policy ) {
ffc09ed8:	2b 83 00 04 	cmplwi  cr7,r3,4                               
#include <rtems/posix/priority.h>                                     
                                                                      
int sched_get_priority_max(                                           
  int  policy                                                         
)                                                                     
{                                                                     
ffc09edc:	94 21 ff f8 	stwu    r1,-8(r1)                              
ffc09ee0:	7c 08 02 a6 	mflr    r0                                     
ffc09ee4:	90 01 00 0c 	stw     r0,12(r1)                              
  switch ( policy ) {                                                 
ffc09ee8:	40 9d 00 24 	ble-    cr7,ffc09f0c <sched_get_priority_max+0x34>
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      break;                                                          
                                                                      
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
ffc09eec:	48 00 9c 21 	bl      ffc13b0c <__errno>                     
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MAXIMUM_PRIORITY;                            
}                                                                     
ffc09ef0:	80 01 00 0c 	lwz     r0,12(r1)                              
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      break;                                                          
                                                                      
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
ffc09ef4:	39 20 00 16 	li      r9,22                                  
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MAXIMUM_PRIORITY;                            
}                                                                     
ffc09ef8:	7c 08 03 a6 	mtlr    r0                                     
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      break;                                                          
                                                                      
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
ffc09efc:	91 23 00 00 	stw     r9,0(r3)                               
ffc09f00:	38 60 ff ff 	li      r3,-1                                  
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MAXIMUM_PRIORITY;                            
}                                                                     
ffc09f04:	38 21 00 08 	addi    r1,r1,8                                
ffc09f08:	4e 80 00 20 	blr                                            
                                                                      
int sched_get_priority_max(                                           
  int  policy                                                         
)                                                                     
{                                                                     
  switch ( policy ) {                                                 
ffc09f0c:	39 20 00 01 	li      r9,1                                   
ffc09f10:	7d 23 18 30 	slw     r3,r9,r3                               
ffc09f14:	70 69 00 17 	andi.   r9,r3,23                               
ffc09f18:	41 a2 ff d4 	beq-    ffc09eec <sched_get_priority_max+0x14> <== NEVER TAKEN
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MAXIMUM_PRIORITY;                            
}                                                                     
ffc09f1c:	80 01 00 0c 	lwz     r0,12(r1)                              
                                                                      
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MAXIMUM_PRIORITY;                            
ffc09f20:	3d 20 00 00 	lis     r9,0                                   
ffc09f24:	88 69 27 84 	lbz     r3,10116(r9)                           
}                                                                     
ffc09f28:	7c 08 03 a6 	mtlr    r0                                     
ffc09f2c:	38 21 00 08 	addi    r1,r1,8                                
                                                                      
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MAXIMUM_PRIORITY;                            
ffc09f30:	38 63 ff ff 	addi    r3,r3,-1                               
}                                                                     
ffc09f34:	4e 80 00 20 	blr                                            
                                                                      

ffc09f38 <sched_get_priority_min>: */ int sched_get_priority_min( int policy ) { switch ( policy ) {
ffc09f38:	2b 83 00 04 	cmplwi  cr7,r3,4                               
 *  13.3.6 Get Scheduling Parameter Limits, P1003.1b-1993, p. 258     
 */                                                                   
int sched_get_priority_min(                                           
  int  policy                                                         
)                                                                     
{                                                                     
ffc09f3c:	94 21 ff f8 	stwu    r1,-8(r1)                              
ffc09f40:	7c 08 02 a6 	mflr    r0                                     
ffc09f44:	90 01 00 0c 	stw     r0,12(r1)                              
  switch ( policy ) {                                                 
ffc09f48:	40 9d 00 28 	ble-    cr7,ffc09f70 <sched_get_priority_min+0x38>
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      break;                                                          
                                                                      
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
ffc09f4c:	48 00 9b c1 	bl      ffc13b0c <__errno>                     
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MINIMUM_PRIORITY;                            
}                                                                     
ffc09f50:	80 01 00 0c 	lwz     r0,12(r1)                              
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      break;                                                          
                                                                      
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
ffc09f54:	39 20 00 16 	li      r9,22                                  
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MINIMUM_PRIORITY;                            
}                                                                     
ffc09f58:	7c 08 03 a6 	mtlr    r0                                     
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      break;                                                          
                                                                      
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
ffc09f5c:	91 23 00 00 	stw     r9,0(r3)                               
ffc09f60:	39 20 ff ff 	li      r9,-1                                  
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MINIMUM_PRIORITY;                            
}                                                                     
ffc09f64:	7d 23 4b 78 	mr      r3,r9                                  
ffc09f68:	38 21 00 08 	addi    r1,r1,8                                
ffc09f6c:	4e 80 00 20 	blr                                            
 */                                                                   
int sched_get_priority_min(                                           
  int  policy                                                         
)                                                                     
{                                                                     
  switch ( policy ) {                                                 
ffc09f70:	39 20 00 01 	li      r9,1                                   
ffc09f74:	7d 23 18 30 	slw     r3,r9,r3                               
ffc09f78:	70 69 00 17 	andi.   r9,r3,23                               
                                                                      
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MINIMUM_PRIORITY;                            
ffc09f7c:	39 20 00 01 	li      r9,1                                   
 */                                                                   
int sched_get_priority_min(                                           
  int  policy                                                         
)                                                                     
{                                                                     
  switch ( policy ) {                                                 
ffc09f80:	41 a2 ff cc 	beq-    ffc09f4c <sched_get_priority_min+0x14> <== NEVER TAKEN
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MINIMUM_PRIORITY;                            
}                                                                     
ffc09f84:	80 01 00 0c 	lwz     r0,12(r1)                              
ffc09f88:	7d 23 4b 78 	mr      r3,r9                                  
ffc09f8c:	7c 08 03 a6 	mtlr    r0                                     
ffc09f90:	38 21 00 08 	addi    r1,r1,8                                
ffc09f94:	4e 80 00 20 	blr                                            
                                                                      

ffc09f98 <sched_rr_get_interval>: int sched_rr_get_interval( pid_t pid, struct timespec *interval ) {
ffc09f98:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc09f9c:	7c 08 02 a6 	mflr    r0                                     
ffc09fa0:	93 e1 00 14 	stw     r31,20(r1)                             
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
                                                                      
  if ( pid && pid != getpid() )                                       
ffc09fa4:	7c 7f 1b 79 	mr.     r31,r3                                 
                                                                      
int sched_rr_get_interval(                                            
  pid_t             pid,                                              
  struct timespec  *interval                                          
)                                                                     
{                                                                     
ffc09fa8:	90 01 00 1c 	stw     r0,28(r1)                              
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
                                                                      
  if ( pid && pid != getpid() )                                       
ffc09fac:	40 82 00 30 	bne-    ffc09fdc <sched_rr_get_interval+0x44>  <== ALWAYS TAKEN
    rtems_set_errno_and_return_minus_one( ESRCH );                    
                                                                      
  if ( !interval )                                                    
ffc09fb0:	2f 84 00 00 	cmpwi   cr7,r4,0                               
ffc09fb4:	41 9e 00 50 	beq-    cr7,ffc0a004 <sched_rr_get_interval+0x6c>
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  _Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval );      
ffc09fb8:	3d 20 00 00 	lis     r9,0                                   
ffc09fbc:	80 69 28 68 	lwz     r3,10344(r9)                           
ffc09fc0:	48 00 46 91 	bl      ffc0e650 <_Timespec_From_ticks>        
  return 0;                                                           
ffc09fc4:	38 60 00 00 	li      r3,0                                   
}                                                                     
ffc09fc8:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc09fcc:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc09fd0:	7c 08 03 a6 	mtlr    r0                                     
ffc09fd4:	38 21 00 18 	addi    r1,r1,24                               
ffc09fd8:	4e 80 00 20 	blr                                            
{                                                                     
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
                                                                      
  if ( pid && pid != getpid() )                                       
ffc09fdc:	90 81 00 08 	stw     r4,8(r1)                               
ffc09fe0:	4b ff af 81 	bl      ffc04f60 <getpid>                      
ffc09fe4:	7f 83 f8 00 	cmpw    cr7,r3,r31                             
ffc09fe8:	80 81 00 08 	lwz     r4,8(r1)                               
ffc09fec:	41 9e ff c4 	beq+    cr7,ffc09fb0 <sched_rr_get_interval+0x18>
    rtems_set_errno_and_return_minus_one( ESRCH );                    
ffc09ff0:	48 00 9b 1d 	bl      ffc13b0c <__errno>                     
ffc09ff4:	39 20 00 03 	li      r9,3                                   
ffc09ff8:	91 23 00 00 	stw     r9,0(r3)                               
ffc09ffc:	38 60 ff ff 	li      r3,-1                                  
ffc0a000:	4b ff ff c8 	b       ffc09fc8 <sched_rr_get_interval+0x30>  
                                                                      
  if ( !interval )                                                    
    rtems_set_errno_and_return_minus_one( EINVAL );                   
ffc0a004:	48 00 9b 09 	bl      ffc13b0c <__errno>                     
ffc0a008:	39 20 00 16 	li      r9,22                                  
ffc0a00c:	91 23 00 00 	stw     r9,0(r3)                               
ffc0a010:	38 60 ff ff 	li      r3,-1                                  
ffc0a014:	4b ff ff b4 	b       ffc09fc8 <sched_rr_get_interval+0x30>  
                                                                      

ffc0ab64 <sem_open>: * * This rountine increments the thread dispatch level */ RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void) { uint32_t level = _Thread_Dispatch_disable_level;
ffc0ab64:	3d 20 00 00 	lis     r9,0                                   
  int         oflag,                                                  
  ...                                                                 
  /* mode_t mode, */                                                  
  /* unsigned int value */                                            
)                                                                     
{                                                                     
ffc0ab68:	94 21 ff b8 	stwu    r1,-72(r1)                             
ffc0ab6c:	7c 08 02 a6 	mflr    r0                                     
ffc0ab70:	81 49 28 a8 	lwz     r10,10408(r9)                          
ffc0ab74:	7d 80 00 26 	mfcr    r12                                    
ffc0ab78:	93 a1 00 3c 	stw     r29,60(r1)                             
ffc0ab7c:	7c 7d 1b 78 	mr      r29,r3                                 
                                                                      
    ++level;                                                          
ffc0ab80:	39 4a 00 01 	addi    r10,r10,1                              
ffc0ab84:	93 e1 00 44 	stw     r31,68(r1)                             
ffc0ab88:	7c 9f 23 78 	mr      r31,r4                                 
ffc0ab8c:	90 01 00 4c 	stw     r0,76(r1)                              
ffc0ab90:	93 61 00 34 	stw     r27,52(r1)                             
ffc0ab94:	93 81 00 38 	stw     r28,56(r1)                             
ffc0ab98:	93 c1 00 40 	stw     r30,64(r1)                             
ffc0ab9c:	91 81 00 30 	stw     r12,48(r1)                             
ffc0aba0:	90 a1 00 28 	stw     r5,40(r1)                              
ffc0aba4:	90 c1 00 2c 	stw     r6,44(r1)                              
    _Thread_Dispatch_disable_level = level;                           
ffc0aba8:	91 49 28 a8 	stw     r10,10408(r9)                          
  Objects_Locations          location;                                
  size_t                     name_len;                                
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
ffc0abac:	54 89 bf fe 	rlwinm  r9,r4,23,31,31                         
ffc0abb0:	2e 09 00 00 	cmpwi   cr4,r9,0                               
  /* unsigned int value */                                            
)                                                                     
{                                                                     
  va_list                    arg;                                     
  mode_t                     mode;                                    
  unsigned int               value = 0;                               
ffc0abb4:	3b 60 00 00 	li      r27,0                                  
  Objects_Locations          location;                                
  size_t                     name_len;                                
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
ffc0abb8:	40 92 00 d8 	bne-    cr4,ffc0ac90 <sem_open+0x12c>          
  const char *name,                                                   
  Objects_Id *id,                                                     
  size_t     *len                                                     
)                                                                     
{                                                                     
  return _POSIX_Name_to_id( &_POSIX_Semaphore_Information, name, id, len );
ffc0abbc:	3f c0 00 00 	lis     r30,0                                  
ffc0abc0:	3b de 59 00 	addi    r30,r30,22784                          
ffc0abc4:	7f c3 f3 78 	mr      r3,r30                                 
ffc0abc8:	7f a4 eb 78 	mr      r4,r29                                 
ffc0abcc:	38 a1 00 20 	addi    r5,r1,32                               
ffc0abd0:	38 c1 00 14 	addi    r6,r1,20                               
ffc0abd4:	4b ff f7 a9 	bl      ffc0a37c <_POSIX_Name_to_id>           
   *  and we can just return a pointer to the id.  Otherwise we may   
   *  need to check to see if this is a "semaphore does not exist"    
   *  or some other miscellaneous error on the name.                  
   */                                                                 
                                                                      
  if ( status ) {                                                     
ffc0abd8:	7c 7c 1b 79 	mr.     r28,r3                                 
ffc0abdc:	41 82 00 4c 	beq-    ffc0ac28 <sem_open+0xc4>               
    /*                                                                
     * Unless provided a valid name that did not already exist        
     * and we are willing to create then it is an error.              
     */                                                               
                                                                      
    if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {               
ffc0abe0:	2f 9c 00 02 	cmpwi   cr7,r28,2                              
ffc0abe4:	40 9e 00 08 	bne-    cr7,ffc0abec <sem_open+0x88>           
ffc0abe8:	40 92 00 c8 	bne-    cr4,ffc0acb0 <sem_open+0x14c>          
      _Thread_Enable_dispatch();                                      
ffc0abec:	48 00 43 a1 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
      rtems_set_errno_and_return_minus_one_cast( status, sem_t * );   
ffc0abf0:	48 00 ac 8d 	bl      ffc1587c <__errno>                     
    the_semaphore->Semaphore_id = the_semaphore->Object.id;           
    return &the_semaphore->Semaphore_id;                              
  #else                                                               
    return (sem_t *)&the_semaphore->Object.id;                        
  #endif                                                              
}                                                                     
ffc0abf4:	80 01 00 4c 	lwz     r0,76(r1)                              
ffc0abf8:	81 81 00 30 	lwz     r12,48(r1)                             
ffc0abfc:	7c 08 03 a6 	mtlr    r0                                     
     * and we are willing to create then it is an error.              
     */                                                               
                                                                      
    if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {               
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one_cast( status, sem_t * );   
ffc0ac00:	93 83 00 00 	stw     r28,0(r3)                              
    the_semaphore->Semaphore_id = the_semaphore->Object.id;           
    return &the_semaphore->Semaphore_id;                              
  #else                                                               
    return (sem_t *)&the_semaphore->Object.id;                        
  #endif                                                              
}                                                                     
ffc0ac04:	7d 80 81 20 	mtcrf   8,r12                                  
     * and we are willing to create then it is an error.              
     */                                                               
                                                                      
    if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {               
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one_cast( status, sem_t * );   
ffc0ac08:	38 60 ff ff 	li      r3,-1                                  
    the_semaphore->Semaphore_id = the_semaphore->Object.id;           
    return &the_semaphore->Semaphore_id;                              
  #else                                                               
    return (sem_t *)&the_semaphore->Object.id;                        
  #endif                                                              
}                                                                     
ffc0ac0c:	83 61 00 34 	lwz     r27,52(r1)                             
ffc0ac10:	83 81 00 38 	lwz     r28,56(r1)                             
ffc0ac14:	83 a1 00 3c 	lwz     r29,60(r1)                             
ffc0ac18:	83 c1 00 40 	lwz     r30,64(r1)                             
ffc0ac1c:	83 e1 00 44 	lwz     r31,68(r1)                             
ffc0ac20:	38 21 00 48 	addi    r1,r1,72                               
ffc0ac24:	4e 80 00 20 	blr                                            
                                                                      
    /*                                                                
     * Check for existence with creation.                             
     */                                                               
                                                                      
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
ffc0ac28:	73 ff 0a 00 	andi.   r31,r31,2560                           
ffc0ac2c:	2f 9f 0a 00 	cmpwi   cr7,r31,2560                           
ffc0ac30:	41 9e 00 b0 	beq-    cr7,ffc0ace0 <sem_open+0x17c>          
RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control *_POSIX_Semaphore_Get (  
  sem_t             *id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (POSIX_Semaphore_Control *)                                  
ffc0ac34:	80 81 00 20 	lwz     r4,32(r1)                              
ffc0ac38:	38 a1 00 18 	addi    r5,r1,24                               
ffc0ac3c:	7f c3 f3 78 	mr      r3,r30                                 
ffc0ac40:	48 00 31 51 	bl      ffc0dd90 <_Objects_Get>                
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );   
    }                                                                 
                                                                      
    the_semaphore = _POSIX_Semaphore_Get( (sem_t *) &the_semaphore_id, &location );
    the_semaphore->open_count += 1;                                   
ffc0ac44:	81 23 00 18 	lwz     r9,24(r3)                              
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );   
    }                                                                 
                                                                      
    the_semaphore = _POSIX_Semaphore_Get( (sem_t *) &the_semaphore_id, &location );
ffc0ac48:	90 61 00 1c 	stw     r3,28(r1)                              
    the_semaphore->open_count += 1;                                   
ffc0ac4c:	39 29 00 01 	addi    r9,r9,1                                
ffc0ac50:	91 23 00 18 	stw     r9,24(r3)                              
    _Thread_Enable_dispatch();                                        
ffc0ac54:	48 00 43 39 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
    _Thread_Enable_dispatch();                                        
ffc0ac58:	48 00 43 35 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
return_id:                                                            
  #if defined(RTEMS_USE_16_BIT_OBJECT)                                
    the_semaphore->Semaphore_id = the_semaphore->Object.id;           
    return &the_semaphore->Semaphore_id;                              
  #else                                                               
    return (sem_t *)&the_semaphore->Object.id;                        
ffc0ac5c:	80 61 00 1c 	lwz     r3,28(r1)                              
ffc0ac60:	38 63 00 08 	addi    r3,r3,8                                
  #endif                                                              
}                                                                     
ffc0ac64:	80 01 00 4c 	lwz     r0,76(r1)                              
ffc0ac68:	81 81 00 30 	lwz     r12,48(r1)                             
ffc0ac6c:	7c 08 03 a6 	mtlr    r0                                     
ffc0ac70:	83 61 00 34 	lwz     r27,52(r1)                             
ffc0ac74:	83 81 00 38 	lwz     r28,56(r1)                             
ffc0ac78:	7d 80 81 20 	mtcrf   8,r12                                  
ffc0ac7c:	83 a1 00 3c 	lwz     r29,60(r1)                             
ffc0ac80:	83 c1 00 40 	lwz     r30,64(r1)                             
ffc0ac84:	83 e1 00 44 	lwz     r31,68(r1)                             
ffc0ac88:	38 21 00 48 	addi    r1,r1,72                               
ffc0ac8c:	4e 80 00 20 	blr                                            
  size_t                     name_len;                                
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
    va_start(arg, oflag);                                             
ffc0ac90:	39 21 00 50 	addi    r9,r1,80                               
    mode = va_arg( arg, mode_t );                                     
    value = va_arg( arg, unsigned int );                              
ffc0ac94:	83 61 00 2c 	lwz     r27,44(r1)                             
  size_t                     name_len;                                
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
    va_start(arg, oflag);                                             
ffc0ac98:	91 21 00 0c 	stw     r9,12(r1)                              
ffc0ac9c:	39 21 00 20 	addi    r9,r1,32                               
ffc0aca0:	91 21 00 10 	stw     r9,16(r1)                              
    mode = va_arg( arg, mode_t );                                     
ffc0aca4:	39 20 00 03 	li      r9,3                                   
ffc0aca8:	99 21 00 08 	stb     r9,8(r1)                               
ffc0acac:	4b ff ff 10 	b       ffc0abbc <sem_open+0x58>               
  /*                                                                  
   *  At this point, the semaphore does not exist and everything has been
   *  checked. We should go ahead and create a semaphore.             
   */                                                                 
                                                                      
  status =_POSIX_Semaphore_Create_support(                            
ffc0acb0:	80 81 00 14 	lwz     r4,20(r1)                              
ffc0acb4:	38 a0 00 00 	li      r5,0                                   
ffc0acb8:	7f 66 db 78 	mr      r6,r27                                 
ffc0acbc:	38 e1 00 1c 	addi    r7,r1,28                               
ffc0acc0:	7f a3 eb 78 	mr      r3,r29                                 
ffc0acc4:	48 00 7b cd 	bl      ffc12890 <_POSIX_Semaphore_Create_support>
ffc0acc8:	7c 7f 1b 78 	mr      r31,r3                                 
                                                                      
  /*                                                                  
   * errno was set by Create_support, so don't set it again.          
   */                                                                 
                                                                      
  _Thread_Enable_dispatch();                                          
ffc0accc:	48 00 42 c1 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
                                                                      
  if ( status == -1 )                                                 
ffc0acd0:	2f 9f ff ff 	cmpwi   cr7,r31,-1                             
ffc0acd4:	40 9e ff 88 	bne+    cr7,ffc0ac5c <sem_open+0xf8>           <== ALWAYS TAKEN
    return SEM_FAILED;                                                
ffc0acd8:	38 60 ff ff 	li      r3,-1                                  <== NOT EXECUTED
ffc0acdc:	4b ff ff 88 	b       ffc0ac64 <sem_open+0x100>              <== NOT EXECUTED
    /*                                                                
     * Check for existence with creation.                             
     */                                                               
                                                                      
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
      _Thread_Enable_dispatch();                                      
ffc0ace0:	48 00 42 ad 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
      rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );   
ffc0ace4:	48 00 ab 99 	bl      ffc1587c <__errno>                     
ffc0ace8:	39 20 00 11 	li      r9,17                                  
ffc0acec:	91 23 00 00 	stw     r9,0(r3)                               
ffc0acf0:	38 60 ff ff 	li      r3,-1                                  
ffc0acf4:	4b ff ff 70 	b       ffc0ac64 <sem_open+0x100>              
                                                                      

ffc0cc08 <sem_timedwait>: int sem_timedwait( sem_t *sem, const struct timespec *abstime ) {
ffc0cc08:	94 21 ff e0 	stwu    r1,-32(r1)                             
ffc0cc0c:	7c 08 02 a6 	mflr    r0                                     
ffc0cc10:	93 e1 00 1c 	stw     r31,28(r1)                             
ffc0cc14:	7c 7f 1b 78 	mr      r31,r3                                 
   *                                                                  
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
ffc0cc18:	7c 83 23 78 	mr      r3,r4                                  
ffc0cc1c:	38 81 00 08 	addi    r4,r1,8                                
                                                                      
int sem_timedwait(                                                    
  sem_t                 *sem,                                         
  const struct timespec *abstime                                      
)                                                                     
{                                                                     
ffc0cc20:	90 01 00 24 	stw     r0,36(r1)                              
   *                                                                  
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
ffc0cc24:	48 00 66 39 	bl      ffc1325c <_POSIX_Absolute_timeout_to_ticks>
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
ffc0cc28:	2f 83 00 03 	cmpwi   cr7,r3,3                               
    do_wait = false;                                                  
                                                                      
  lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks ); 
ffc0cc2c:	80 a1 00 08 	lwz     r5,8(r1)                               
ffc0cc30:	7f e3 fb 78 	mr      r3,r31                                 
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
ffc0cc34:	41 9e 00 20 	beq-    cr7,ffc0cc54 <sem_timedwait+0x4c>      <== ALWAYS TAKEN
    do_wait = false;                                                  
                                                                      
  lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks ); 
ffc0cc38:	38 80 00 00 	li      r4,0                                   <== NOT EXECUTED
ffc0cc3c:	48 00 74 69 	bl      ffc140a4 <_POSIX_Semaphore_Wait_support><== NOT EXECUTED
         lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )               
      rtems_set_errno_and_return_minus_one( ETIMEDOUT );              
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
ffc0cc40:	80 01 00 24 	lwz     r0,36(r1)                              <== NOT EXECUTED
ffc0cc44:	83 e1 00 1c 	lwz     r31,28(r1)                             <== NOT EXECUTED
ffc0cc48:	7c 08 03 a6 	mtlr    r0                                     <== NOT EXECUTED
ffc0cc4c:	38 21 00 20 	addi    r1,r1,32                               <== NOT EXECUTED
ffc0cc50:	4e 80 00 20 	blr                                            <== NOT EXECUTED
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
    do_wait = false;                                                  
                                                                      
  lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks ); 
ffc0cc54:	38 80 00 01 	li      r4,1                                   
ffc0cc58:	48 00 74 4d 	bl      ffc140a4 <_POSIX_Semaphore_Wait_support>
         lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )               
      rtems_set_errno_and_return_minus_one( ETIMEDOUT );              
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
ffc0cc5c:	80 01 00 24 	lwz     r0,36(r1)                              
ffc0cc60:	83 e1 00 1c 	lwz     r31,28(r1)                             
ffc0cc64:	7c 08 03 a6 	mtlr    r0                                     
ffc0cc68:	38 21 00 20 	addi    r1,r1,32                               
ffc0cc6c:	4e 80 00 20 	blr                                            
                                                                      

ffc09e44 <sigaction>: struct sigaction *oact ) { ISR_Level level; if ( oact )
ffc09e44:	2c 05 00 00 	cmpwi   r5,0                                   
int sigaction(                                                        
  int                     sig,                                        
  const struct sigaction *act,                                        
  struct sigaction       *oact                                        
)                                                                     
{                                                                     
ffc09e48:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc09e4c:	7c 08 02 a6 	mflr    r0                                     
ffc09e50:	93 c1 00 10 	stw     r30,16(r1)                             
ffc09e54:	7c 9e 23 78 	mr      r30,r4                                 
ffc09e58:	93 e1 00 14 	stw     r31,20(r1)                             
ffc09e5c:	7c 7f 1b 78 	mr      r31,r3                                 
ffc09e60:	90 01 00 1c 	stw     r0,28(r1)                              
ffc09e64:	93 a1 00 0c 	stw     r29,12(r1)                             
  ISR_Level     level;                                                
                                                                      
  if ( oact )                                                         
ffc09e68:	41 82 00 2c 	beq-    ffc09e94 <sigaction+0x50>              
    *oact = _POSIX_signals_Vectors[ sig ];                            
ffc09e6c:	1d 03 00 0c 	mulli   r8,r3,12                               
ffc09e70:	3c e0 00 00 	lis     r7,0                                   
ffc09e74:	38 e7 32 60 	addi    r7,r7,12896                            
ffc09e78:	7d 47 42 14 	add     r10,r7,r8                              
ffc09e7c:	7c e7 40 2e 	lwzx    r7,r7,r8                               
ffc09e80:	81 0a 00 04 	lwz     r8,4(r10)                              
ffc09e84:	81 4a 00 08 	lwz     r10,8(r10)                             
ffc09e88:	90 e5 00 00 	stw     r7,0(r5)                               
ffc09e8c:	91 05 00 04 	stw     r8,4(r5)                               
ffc09e90:	91 45 00 08 	stw     r10,8(r5)                              
                                                                      
  if ( !sig )                                                         
ffc09e94:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
ffc09e98:	41 9e 00 d0 	beq-    cr7,ffc09f68 <sigaction+0x124>         
                                                                      
static inline bool is_valid_signo(                                    
  int signo                                                           
)                                                                     
{                                                                     
  return ((signo) >= 1 && (signo) <= 32 );                            
ffc09e9c:	39 3f ff ff 	addi    r9,r31,-1                              
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
ffc09ea0:	2b 89 00 1f 	cmplwi  cr7,r9,31                              
ffc09ea4:	41 9d 00 c4 	bgt-    cr7,ffc09f68 <sigaction+0x124>         
   *                                                                  
   *  NOTE: Solaris documentation claims to "silently enforce" this which
   *        contradicts the POSIX specification.                      
   */                                                                 
                                                                      
  if ( sig == SIGKILL )                                               
ffc09ea8:	2f 9f 00 09 	cmpwi   cr7,r31,9                              
ffc09eac:	41 9e 00 bc 	beq-    cr7,ffc09f68 <sigaction+0x124>         
  /*                                                                  
   *  Evaluate the new action structure and set the global signal vector
   *  appropriately.                                                  
   */                                                                 
                                                                      
  if ( act ) {                                                        
ffc09eb0:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
ffc09eb4:	41 9e 00 ac 	beq-    cr7,ffc09f60 <sigaction+0x11c>         <== NEVER TAKEN
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc09eb8:	7f a0 00 a6 	mfmsr   r29                                    
ffc09ebc:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc09ec0:	7f a9 48 78 	andc    r9,r29,r9                              
ffc09ec4:	7d 20 01 24 	mtmsr   r9                                     
     *  Unless the user is installing the default signal actions, then
     *  we can just copy the provided sigaction structure into the vectors.
     */                                                               
                                                                      
    _ISR_Disable( level );                                            
      if ( act->sa_handler == SIG_DFL ) {                             
ffc09ec8:	81 3e 00 08 	lwz     r9,8(r30)                              
ffc09ecc:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc09ed0:	41 9e 00 58 	beq-    cr7,ffc09f28 <sigaction+0xe4>          
        _POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ];
      } else {                                                        
         _POSIX_signals_Clear_process_signals( sig );                 
ffc09ed4:	7f e3 fb 78 	mr      r3,r31                                 
ffc09ed8:	48 00 6c b5 	bl      ffc10b8c <_POSIX_signals_Clear_process_signals>
         _POSIX_signals_Vectors[ sig ] = *act;                        
ffc09edc:	1f ff 00 0c 	mulli   r31,r31,12                             
ffc09ee0:	80 de 00 00 	lwz     r6,0(r30)                              
ffc09ee4:	3d 40 00 00 	lis     r10,0                                  
ffc09ee8:	80 fe 00 04 	lwz     r7,4(r30)                              
ffc09eec:	81 1e 00 08 	lwz     r8,8(r30)                              
ffc09ef0:	39 4a 32 60 	addi    r10,r10,12896                          
ffc09ef4:	7d 2a fa 14 	add     r9,r10,r31                             
ffc09ef8:	7c ca f9 2e 	stwx    r6,r10,r31                             
ffc09efc:	90 e9 00 04 	stw     r7,4(r9)                               
ffc09f00:	91 09 00 08 	stw     r8,8(r9)                               
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc09f04:	7f a0 01 24 	mtmsr   r29                                    
   *      now (signals not posted when SIG_IGN).                      
   *    + If we are now ignoring a signal that was previously pending,
   *      we clear the pending signal indicator.                      
   */                                                                 
                                                                      
  return 0;                                                           
ffc09f08:	38 60 00 00 	li      r3,0                                   
}                                                                     
ffc09f0c:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc09f10:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc09f14:	7c 08 03 a6 	mtlr    r0                                     
ffc09f18:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc09f1c:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc09f20:	38 21 00 18 	addi    r1,r1,24                               
ffc09f24:	4e 80 00 20 	blr                                            
     *  we can just copy the provided sigaction structure into the vectors.
     */                                                               
                                                                      
    _ISR_Disable( level );                                            
      if ( act->sa_handler == SIG_DFL ) {                             
        _POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ];
ffc09f28:	1f ff 00 0c 	mulli   r31,r31,12                             
ffc09f2c:	3d 00 ff c2 	lis     r8,-62                                 
ffc09f30:	39 08 d9 4c 	addi    r8,r8,-9908                            
ffc09f34:	7d 28 fa 14 	add     r9,r8,r31                              
ffc09f38:	7d 08 f8 2e 	lwzx    r8,r8,r31                              
ffc09f3c:	3d 40 00 00 	lis     r10,0                                  
ffc09f40:	80 c9 00 04 	lwz     r6,4(r9)                               
ffc09f44:	39 4a 32 60 	addi    r10,r10,12896                          
ffc09f48:	80 e9 00 08 	lwz     r7,8(r9)                               
ffc09f4c:	7d 2a fa 14 	add     r9,r10,r31                             
ffc09f50:	7d 0a f9 2e 	stwx    r8,r10,r31                             
ffc09f54:	90 c9 00 04 	stw     r6,4(r9)                               
ffc09f58:	90 e9 00 08 	stw     r7,8(r9)                               
ffc09f5c:	4b ff ff a8 	b       ffc09f04 <sigaction+0xc0>              
   *      now (signals not posted when SIG_IGN).                      
   *    + If we are now ignoring a signal that was previously pending,
   *      we clear the pending signal indicator.                      
   */                                                                 
                                                                      
  return 0;                                                           
ffc09f60:	38 60 00 00 	li      r3,0                                   <== NOT EXECUTED
ffc09f64:	4b ff ff a8 	b       ffc09f0c <sigaction+0xc8>              <== NOT EXECUTED
   *  NOTE: Solaris documentation claims to "silently enforce" this which
   *        contradicts the POSIX specification.                      
   */                                                                 
                                                                      
  if ( sig == SIGKILL )                                               
    rtems_set_errno_and_return_minus_one( EINVAL );                   
ffc09f68:	48 00 a0 45 	bl      ffc13fac <__errno>                     
ffc09f6c:	39 20 00 16 	li      r9,22                                  
ffc09f70:	91 23 00 00 	stw     r9,0(r3)                               
ffc09f74:	38 60 ff ff 	li      r3,-1                                  
ffc09f78:	4b ff ff 94 	b       ffc09f0c <sigaction+0xc8>              
                                                                      

ffc0a454 <sigtimedwait>: int sigtimedwait( const sigset_t *set, siginfo_t *info, const struct timespec *timeout ) {
ffc0a454:	94 21 ff d0 	stwu    r1,-48(r1)                             
ffc0a458:	7c 08 02 a6 	mflr    r0                                     
ffc0a45c:	93 81 00 20 	stw     r28,32(r1)                             
  ISR_Level          level;                                           
                                                                      
  /*                                                                  
   *  Error check parameters before disabling interrupts.             
   */                                                                 
  if ( !set )                                                         
ffc0a460:	7c 7c 1b 79 	mr.     r28,r3                                 
int sigtimedwait(                                                     
  const sigset_t         *set,                                        
  siginfo_t              *info,                                       
  const struct timespec  *timeout                                     
)                                                                     
{                                                                     
ffc0a464:	90 01 00 34 	stw     r0,52(r1)                              
ffc0a468:	93 41 00 18 	stw     r26,24(r1)                             
ffc0a46c:	93 61 00 1c 	stw     r27,28(r1)                             
ffc0a470:	93 a1 00 24 	stw     r29,36(r1)                             
ffc0a474:	93 c1 00 28 	stw     r30,40(r1)                             
ffc0a478:	93 e1 00 2c 	stw     r31,44(r1)                             
  ISR_Level          level;                                           
                                                                      
  /*                                                                  
   *  Error check parameters before disabling interrupts.             
   */                                                                 
  if ( !set )                                                         
ffc0a47c:	41 82 02 50 	beq-    ffc0a6cc <sigtimedwait+0x278>          
  /*  NOTE: This is very specifically a RELATIVE not ABSOLUTE time    
   *        in the Open Group specification.                          
   */                                                                 
                                                                      
  interval = 0;                                                       
  if ( timeout ) {                                                    
ffc0a480:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc0a484:	7c 9f 23 78 	mr      r31,r4                                 
ffc0a488:	7c be 2b 78 	mr      r30,r5                                 
ffc0a48c:	41 9e 01 9c 	beq-    cr7,ffc0a628 <sigtimedwait+0x1d4>      
                                                                      
    if ( !_Timespec_Is_valid( timeout ) )                             
ffc0a490:	7c a3 2b 78 	mr      r3,r5                                  
ffc0a494:	48 00 48 21 	bl      ffc0ecb4 <_Timespec_Is_valid>          
ffc0a498:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0a49c:	41 9e 02 30 	beq-    cr7,ffc0a6cc <sigtimedwait+0x278>      
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    interval = _Timespec_To_ticks( timeout );                         
ffc0a4a0:	7f c3 f3 78 	mr      r3,r30                                 
ffc0a4a4:	48 00 48 51 	bl      ffc0ecf4 <_Timespec_To_ticks>          
                                                                      
    if ( !interval )                                                  
ffc0a4a8:	7c 64 1b 79 	mr.     r4,r3                                  
ffc0a4ac:	41 82 02 20 	beq-    ffc0a6cc <sigtimedwait+0x278>          <== NEVER TAKEN
                                                                      
  /*                                                                  
   *  Initialize local variables.                                     
   */                                                                 
                                                                      
  the_info = ( info ) ? info : &signal_information;                   
ffc0a4b0:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
ffc0a4b4:	41 9e 01 80 	beq-    cr7,ffc0a634 <sigtimedwait+0x1e0>      <== NEVER TAKEN
                                                                      
  the_thread = _Thread_Executing;                                     
ffc0a4b8:	3f 60 00 00 	lis     r27,0                                  
ffc0a4bc:	3b 7b 31 e0 	addi    r27,r27,12768                          
ffc0a4c0:	81 3b 00 10 	lwz     r9,16(r27)                             
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
ffc0a4c4:	83 a9 01 50 	lwz     r29,336(r9)                            
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0a4c8:	7f 40 00 a6 	mfmsr   r26                                    
ffc0a4cc:	7d 50 42 a6 	mfsprg  r10,0                                  
ffc0a4d0:	7f 4a 50 78 	andc    r10,r26,r10                            
ffc0a4d4:	7d 40 01 24 	mtmsr   r10                                    
   */                                                                 
                                                                      
  /* API signals pending? */                                          
                                                                      
  _ISR_Disable( level );                                              
  if ( *set & api->signals_pending ) {                                
ffc0a4d8:	81 5c 00 00 	lwz     r10,0(r28)                             
ffc0a4dc:	80 7d 00 d4 	lwz     r3,212(r29)                            
ffc0a4e0:	7d 48 18 39 	and.    r8,r10,r3                              
ffc0a4e4:	40 82 01 84 	bne-    ffc0a668 <sigtimedwait+0x214>          
    return the_info->si_signo;                                        
  }                                                                   
                                                                      
  /* Process pending signals? */                                      
                                                                      
  if ( *set & _POSIX_signals_Pending ) {                              
ffc0a4e8:	3d 00 00 00 	lis     r8,0                                   
ffc0a4ec:	80 68 29 04 	lwz     r3,10500(r8)                           
ffc0a4f0:	7d 48 18 39 	and.    r8,r10,r3                              
ffc0a4f4:	40 82 00 d0 	bne-    ffc0a5c4 <sigtimedwait+0x170>          
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc0a4f8:	3d 40 00 00 	lis     r10,0                                  
ffc0a4fc:	81 0a 28 d4 	lwz     r8,10452(r10)                          
    the_info->si_code = SI_USER;                                      
    the_info->si_value.sival_int = 0;                                 
    return signo;                                                     
  }                                                                   
                                                                      
  the_info->si_signo = -1;                                            
ffc0a500:	38 e0 ff ff 	li      r7,-1                                  
ffc0a504:	90 ff 00 00 	stw     r7,0(r31)                              
                                                                      
    ++level;                                                          
ffc0a508:	39 08 00 01 	addi    r8,r8,1                                
    _Thread_Dispatch_disable_level = level;                           
ffc0a50c:	91 0a 28 d4 	stw     r8,10452(r10)                          
                                                                      
  _Thread_Disable_dispatch();                                         
    the_thread->Wait.queue           = &_POSIX_signals_Wait_queue;    
    the_thread->Wait.return_code     = EINTR;                         
ffc0a510:	39 40 00 04 	li      r10,4                                  
ffc0a514:	91 49 00 34 	stw     r10,52(r9)                             
  }                                                                   
                                                                      
  the_info->si_signo = -1;                                            
                                                                      
  _Thread_Disable_dispatch();                                         
    the_thread->Wait.queue           = &_POSIX_signals_Wait_queue;    
ffc0a518:	3d 40 00 00 	lis     r10,0                                  
ffc0a51c:	39 4a 33 ec 	addi    r10,r10,13292                          
    the_thread->Wait.return_code     = EINTR;                         
    the_thread->Wait.option          = *set;                          
ffc0a520:	81 1c 00 00 	lwz     r8,0(r28)                              
    the_thread->Wait.return_argument = the_info;                      
ffc0a524:	93 e9 00 28 	stw     r31,40(r9)                             
  the_info->si_signo = -1;                                            
                                                                      
  _Thread_Disable_dispatch();                                         
    the_thread->Wait.queue           = &_POSIX_signals_Wait_queue;    
    the_thread->Wait.return_code     = EINTR;                         
    the_thread->Wait.option          = *set;                          
ffc0a528:	91 09 00 30 	stw     r8,48(r9)                              
  }                                                                   
                                                                      
  the_info->si_signo = -1;                                            
                                                                      
  _Thread_Disable_dispatch();                                         
    the_thread->Wait.queue           = &_POSIX_signals_Wait_queue;    
ffc0a52c:	91 49 00 44 	stw     r10,68(r9)                             
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (      
  Thread_queue_Control *the_thread_queue                              
)                                                                     
{                                                                     
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
ffc0a530:	39 20 00 01 	li      r9,1                                   
ffc0a534:	91 2a 00 30 	stw     r9,48(r10)                             
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0a538:	7f 40 01 24 	mtmsr   r26                                    
    the_thread->Wait.return_code     = EINTR;                         
    the_thread->Wait.option          = *set;                          
    the_thread->Wait.return_argument = the_info;                      
    _Thread_queue_Enter_critical_section( &_POSIX_signals_Wait_queue );
    _ISR_Enable( level );                                             
    _Thread_queue_Enqueue( &_POSIX_signals_Wait_queue, interval );    
ffc0a53c:	3c a0 ff c1 	lis     r5,-63                                 
ffc0a540:	3c 60 00 00 	lis     r3,0                                   
ffc0a544:	38 a5 e9 f0 	addi    r5,r5,-5648                            
ffc0a548:	38 63 33 ec 	addi    r3,r3,13292                            
ffc0a54c:	48 00 40 1d 	bl      ffc0e568 <_Thread_queue_Enqueue_with_handler>
  _Thread_Enable_dispatch();                                          
ffc0a550:	48 00 3a 11 	bl      ffc0df60 <_Thread_Enable_dispatch>     
  /*                                                                  
   * When the thread is set free by a signal, it is need to eliminate 
   * the signal.                                                      
   */                                                                 
                                                                      
  _POSIX_signals_Clear_signals( api, the_info->si_signo, the_info, false, false );
ffc0a554:	80 9f 00 00 	lwz     r4,0(r31)                              
ffc0a558:	7f a3 eb 78 	mr      r3,r29                                 
ffc0a55c:	7f e5 fb 78 	mr      r5,r31                                 
ffc0a560:	38 c0 00 00 	li      r6,0                                   
ffc0a564:	38 e0 00 00 	li      r7,0                                   
ffc0a568:	48 00 6f e1 	bl      ffc11548 <_POSIX_signals_Clear_signals>
  /* Set errno only if return code is not EINTR or                    
   * if EINTR was caused by a signal being caught, which              
   * was not in our set.                                              
   */                                                                 
                                                                      
  if ( (_Thread_Executing->Wait.return_code != EINTR)                 
ffc0a56c:	81 3b 00 10 	lwz     r9,16(r27)                             
ffc0a570:	81 29 00 34 	lwz     r9,52(r9)                              
ffc0a574:	2f 89 00 04 	cmpwi   cr7,r9,4                               
ffc0a578:	40 9e 01 68 	bne-    cr7,ffc0a6e0 <sigtimedwait+0x28c>      
       || !(*set & signo_to_mask( the_info->si_signo )) ) {           
ffc0a57c:	83 df 00 00 	lwz     r30,0(r31)                             
ffc0a580:	39 00 00 01 	li      r8,1                                   
ffc0a584:	81 3c 00 00 	lwz     r9,0(r28)                              
ffc0a588:	39 5e ff ff 	addi    r10,r30,-1                             
ffc0a58c:	7d 0a 50 30 	slw     r10,r8,r10                             
ffc0a590:	7d 48 48 39 	and.    r8,r10,r9                              
ffc0a594:	41 82 01 4c 	beq-    ffc0a6e0 <sigtimedwait+0x28c>          
    errno = _Thread_Executing->Wait.return_code;                      
    return -1;                                                        
  }                                                                   
                                                                      
  return the_info->si_signo;                                          
}                                                                     
ffc0a598:	80 01 00 34 	lwz     r0,52(r1)                              
ffc0a59c:	7f c3 f3 78 	mr      r3,r30                                 
ffc0a5a0:	83 41 00 18 	lwz     r26,24(r1)                             
ffc0a5a4:	7c 08 03 a6 	mtlr    r0                                     
ffc0a5a8:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc0a5ac:	83 81 00 20 	lwz     r28,32(r1)                             
ffc0a5b0:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc0a5b4:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc0a5b8:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc0a5bc:	38 21 00 30 	addi    r1,r1,48                               
ffc0a5c0:	4e 80 00 20 	blr                                            
  }                                                                   
                                                                      
  /* Process pending signals? */                                      
                                                                      
  if ( *set & _POSIX_signals_Pending ) {                              
    signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending );      
ffc0a5c4:	4b ff fe 35 	bl      ffc0a3f8 <_POSIX_signals_Get_lowest>   
    _POSIX_signals_Clear_signals( api, signo, the_info, true, false );
ffc0a5c8:	7f e5 fb 78 	mr      r5,r31                                 
  }                                                                   
                                                                      
  /* Process pending signals? */                                      
                                                                      
  if ( *set & _POSIX_signals_Pending ) {                              
    signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending );      
ffc0a5cc:	7c 7e 1b 78 	mr      r30,r3                                 
    _POSIX_signals_Clear_signals( api, signo, the_info, true, false );
ffc0a5d0:	7f c4 f3 78 	mr      r4,r30                                 
ffc0a5d4:	7f a3 eb 78 	mr      r3,r29                                 
ffc0a5d8:	38 c0 00 01 	li      r6,1                                   
ffc0a5dc:	38 e0 00 00 	li      r7,0                                   
ffc0a5e0:	48 00 6f 69 	bl      ffc11548 <_POSIX_signals_Clear_signals>
ffc0a5e4:	7f 40 01 24 	mtmsr   r26                                    
    _ISR_Enable( level );                                             
                                                                      
    the_info->si_signo = signo;                                       
    the_info->si_code = SI_USER;                                      
ffc0a5e8:	39 20 00 01 	li      r9,1                                   
  if ( *set & _POSIX_signals_Pending ) {                              
    signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending );      
    _POSIX_signals_Clear_signals( api, signo, the_info, true, false );
    _ISR_Enable( level );                                             
                                                                      
    the_info->si_signo = signo;                                       
ffc0a5ec:	93 df 00 00 	stw     r30,0(r31)                             
    errno = _Thread_Executing->Wait.return_code;                      
    return -1;                                                        
  }                                                                   
                                                                      
  return the_info->si_signo;                                          
}                                                                     
ffc0a5f0:	7f c3 f3 78 	mr      r3,r30                                 
    signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending );      
    _POSIX_signals_Clear_signals( api, signo, the_info, true, false );
    _ISR_Enable( level );                                             
                                                                      
    the_info->si_signo = signo;                                       
    the_info->si_code = SI_USER;                                      
ffc0a5f4:	91 3f 00 04 	stw     r9,4(r31)                              
    the_info->si_value.sival_int = 0;                                 
ffc0a5f8:	39 20 00 00 	li      r9,0                                   
ffc0a5fc:	91 3f 00 08 	stw     r9,8(r31)                              
    errno = _Thread_Executing->Wait.return_code;                      
    return -1;                                                        
  }                                                                   
                                                                      
  return the_info->si_signo;                                          
}                                                                     
ffc0a600:	80 01 00 34 	lwz     r0,52(r1)                              
ffc0a604:	83 41 00 18 	lwz     r26,24(r1)                             
ffc0a608:	7c 08 03 a6 	mtlr    r0                                     
ffc0a60c:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc0a610:	83 81 00 20 	lwz     r28,32(r1)                             
ffc0a614:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc0a618:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc0a61c:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc0a620:	38 21 00 30 	addi    r1,r1,48                               
ffc0a624:	4e 80 00 20 	blr                                            
                                                                      
  /*                                                                  
   *  Initialize local variables.                                     
   */                                                                 
                                                                      
  the_info = ( info ) ? info : &signal_information;                   
ffc0a628:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
                                                                      
  /*  NOTE: This is very specifically a RELATIVE not ABSOLUTE time    
   *        in the Open Group specification.                          
   */                                                                 
                                                                      
  interval = 0;                                                       
ffc0a62c:	38 80 00 00 	li      r4,0                                   
                                                                      
  /*                                                                  
   *  Initialize local variables.                                     
   */                                                                 
                                                                      
  the_info = ( info ) ? info : &signal_information;                   
ffc0a630:	40 9e fe 88 	bne+    cr7,ffc0a4b8 <sigtimedwait+0x64>       
                                                                      
  the_thread = _Thread_Executing;                                     
ffc0a634:	3f 60 00 00 	lis     r27,0                                  
ffc0a638:	3b 7b 31 e0 	addi    r27,r27,12768                          
ffc0a63c:	81 3b 00 10 	lwz     r9,16(r27)                             
                                                                      
  /*                                                                  
   *  Initialize local variables.                                     
   */                                                                 
                                                                      
  the_info = ( info ) ? info : &signal_information;                   
ffc0a640:	3b e1 00 08 	addi    r31,r1,8                               
                                                                      
  the_thread = _Thread_Executing;                                     
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
ffc0a644:	83 a9 01 50 	lwz     r29,336(r9)                            
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  __asm__ volatile (                                                  
ffc0a648:	7f 40 00 a6 	mfmsr   r26                                    
ffc0a64c:	7d 50 42 a6 	mfsprg  r10,0                                  
ffc0a650:	7f 4a 50 78 	andc    r10,r26,r10                            
ffc0a654:	7d 40 01 24 	mtmsr   r10                                    
   */                                                                 
                                                                      
  /* API signals pending? */                                          
                                                                      
  _ISR_Disable( level );                                              
  if ( *set & api->signals_pending ) {                                
ffc0a658:	81 5c 00 00 	lwz     r10,0(r28)                             
ffc0a65c:	80 7d 00 d4 	lwz     r3,212(r29)                            
ffc0a660:	7d 48 18 39 	and.    r8,r10,r3                              
ffc0a664:	41 82 fe 84 	beq+    ffc0a4e8 <sigtimedwait+0x94>           
    /* XXX real info later */                                         
    the_info->si_signo = _POSIX_signals_Get_lowest( api->signals_pending );
ffc0a668:	4b ff fd 91 	bl      ffc0a3f8 <_POSIX_signals_Get_lowest>   
    _POSIX_signals_Clear_signals(                                     
ffc0a66c:	7f e5 fb 78 	mr      r5,r31                                 
  /* API signals pending? */                                          
                                                                      
  _ISR_Disable( level );                                              
  if ( *set & api->signals_pending ) {                                
    /* XXX real info later */                                         
    the_info->si_signo = _POSIX_signals_Get_lowest( api->signals_pending );
ffc0a670:	90 7f 00 00 	stw     r3,0(r31)                              
ffc0a674:	7c 64 1b 78 	mr      r4,r3                                  
    _POSIX_signals_Clear_signals(                                     
ffc0a678:	38 c0 00 00 	li      r6,0                                   
ffc0a67c:	7f a3 eb 78 	mr      r3,r29                                 
ffc0a680:	38 e0 00 00 	li      r7,0                                   
ffc0a684:	48 00 6e c5 	bl      ffc11548 <_POSIX_signals_Clear_signals>
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  __asm__ volatile (                                                  
ffc0a688:	7f 40 01 24 	mtmsr   r26                                    
      false,                                                          
      false                                                           
    );                                                                
    _ISR_Enable( level );                                             
                                                                      
    the_info->si_code = SI_USER;                                      
ffc0a68c:	39 20 00 01 	li      r9,1                                   
    the_info->si_value.sival_int = 0;                                 
    return the_info->si_signo;                                        
ffc0a690:	83 df 00 00 	lwz     r30,0(r31)                             
      false,                                                          
      false                                                           
    );                                                                
    _ISR_Enable( level );                                             
                                                                      
    the_info->si_code = SI_USER;                                      
ffc0a694:	91 3f 00 04 	stw     r9,4(r31)                              
    the_info->si_value.sival_int = 0;                                 
ffc0a698:	39 20 00 00 	li      r9,0                                   
    errno = _Thread_Executing->Wait.return_code;                      
    return -1;                                                        
  }                                                                   
                                                                      
  return the_info->si_signo;                                          
}                                                                     
ffc0a69c:	7f c3 f3 78 	mr      r3,r30                                 
      false                                                           
    );                                                                
    _ISR_Enable( level );                                             
                                                                      
    the_info->si_code = SI_USER;                                      
    the_info->si_value.sival_int = 0;                                 
ffc0a6a0:	91 3f 00 08 	stw     r9,8(r31)                              
    errno = _Thread_Executing->Wait.return_code;                      
    return -1;                                                        
  }                                                                   
                                                                      
  return the_info->si_signo;                                          
}                                                                     
ffc0a6a4:	80 01 00 34 	lwz     r0,52(r1)                              
ffc0a6a8:	83 41 00 18 	lwz     r26,24(r1)                             
ffc0a6ac:	7c 08 03 a6 	mtlr    r0                                     
ffc0a6b0:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc0a6b4:	83 81 00 20 	lwz     r28,32(r1)                             
ffc0a6b8:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc0a6bc:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc0a6c0:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc0a6c4:	38 21 00 30 	addi    r1,r1,48                               
ffc0a6c8:	4e 80 00 20 	blr                                            
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    interval = _Timespec_To_ticks( timeout );                         
                                                                      
    if ( !interval )                                                  
      rtems_set_errno_and_return_minus_one( EINVAL );                 
ffc0a6cc:	48 00 a1 31 	bl      ffc147fc <__errno>                     
ffc0a6d0:	39 20 00 16 	li      r9,22                                  
ffc0a6d4:	91 23 00 00 	stw     r9,0(r3)                               
ffc0a6d8:	3b c0 ff ff 	li      r30,-1                                 
ffc0a6dc:	4b ff fe bc 	b       ffc0a598 <sigtimedwait+0x144>          
   * was not in our set.                                              
   */                                                                 
                                                                      
  if ( (_Thread_Executing->Wait.return_code != EINTR)                 
       || !(*set & signo_to_mask( the_info->si_signo )) ) {           
    errno = _Thread_Executing->Wait.return_code;                      
ffc0a6e0:	48 00 a1 1d 	bl      ffc147fc <__errno>                     
ffc0a6e4:	81 3b 00 10 	lwz     r9,16(r27)                             
    return -1;                                                        
ffc0a6e8:	3b c0 ff ff 	li      r30,-1                                 
   * was not in our set.                                              
   */                                                                 
                                                                      
  if ( (_Thread_Executing->Wait.return_code != EINTR)                 
       || !(*set & signo_to_mask( the_info->si_signo )) ) {           
    errno = _Thread_Executing->Wait.return_code;                      
ffc0a6ec:	81 29 00 34 	lwz     r9,52(r9)                              
ffc0a6f0:	91 23 00 00 	stw     r9,0(r3)                               
ffc0a6f4:	4b ff fe a4 	b       ffc0a598 <sigtimedwait+0x144>          
                                                                      

ffc0c694 <sigwait>: int sigwait( const sigset_t *set, int *sig ) {
ffc0c694:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0c698:	7c 08 02 a6 	mflr    r0                                     
  int status;                                                         
                                                                      
  status = sigtimedwait( set, NULL, NULL );                           
ffc0c69c:	38 a0 00 00 	li      r5,0                                   
                                                                      
int sigwait(                                                          
  const sigset_t  *set,                                               
  int             *sig                                                
)                                                                     
{                                                                     
ffc0c6a0:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc0c6a4:	7c 9f 23 78 	mr      r31,r4                                 
  int status;                                                         
                                                                      
  status = sigtimedwait( set, NULL, NULL );                           
ffc0c6a8:	38 80 00 00 	li      r4,0                                   
                                                                      
int sigwait(                                                          
  const sigset_t  *set,                                               
  int             *sig                                                
)                                                                     
{                                                                     
ffc0c6ac:	90 01 00 14 	stw     r0,20(r1)                              
  int status;                                                         
                                                                      
  status = sigtimedwait( set, NULL, NULL );                           
ffc0c6b0:	4b ff fd 39 	bl      ffc0c3e8 <sigtimedwait>                
                                                                      
  if ( status != -1 ) {                                               
ffc0c6b4:	2f 83 ff ff 	cmpwi   cr7,r3,-1                              
ffc0c6b8:	41 9e 00 28 	beq-    cr7,ffc0c6e0 <sigwait+0x4c>            
    if ( sig )                                                        
ffc0c6bc:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
ffc0c6c0:	41 9e 00 3c 	beq-    cr7,ffc0c6fc <sigwait+0x68>            <== NEVER TAKEN
      *sig = status;                                                  
    return 0;                                                         
  }                                                                   
                                                                      
  return errno;                                                       
}                                                                     
ffc0c6c4:	80 01 00 14 	lwz     r0,20(r1)                              
                                                                      
  status = sigtimedwait( set, NULL, NULL );                           
                                                                      
  if ( status != -1 ) {                                               
    if ( sig )                                                        
      *sig = status;                                                  
ffc0c6c8:	90 7f 00 00 	stw     r3,0(r31)                              
    return 0;                                                         
ffc0c6cc:	38 60 00 00 	li      r3,0                                   
  }                                                                   
                                                                      
  return errno;                                                       
}                                                                     
ffc0c6d0:	7c 08 03 a6 	mtlr    r0                                     
ffc0c6d4:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0c6d8:	38 21 00 10 	addi    r1,r1,16                               
ffc0c6dc:	4e 80 00 20 	blr                                            
    if ( sig )                                                        
      *sig = status;                                                  
    return 0;                                                         
  }                                                                   
                                                                      
  return errno;                                                       
ffc0c6e0:	48 00 9d 39 	bl      ffc16418 <__errno>                     
}                                                                     
ffc0c6e4:	80 01 00 14 	lwz     r0,20(r1)                              
    if ( sig )                                                        
      *sig = status;                                                  
    return 0;                                                         
  }                                                                   
                                                                      
  return errno;                                                       
ffc0c6e8:	80 63 00 00 	lwz     r3,0(r3)                               
}                                                                     
ffc0c6ec:	7c 08 03 a6 	mtlr    r0                                     
ffc0c6f0:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0c6f4:	38 21 00 10 	addi    r1,r1,16                               
ffc0c6f8:	4e 80 00 20 	blr                                            
ffc0c6fc:	80 01 00 14 	lwz     r0,20(r1)                              <== NOT EXECUTED
  status = sigtimedwait( set, NULL, NULL );                           
                                                                      
  if ( status != -1 ) {                                               
    if ( sig )                                                        
      *sig = status;                                                  
    return 0;                                                         
ffc0c700:	38 60 00 00 	li      r3,0                                   <== NOT EXECUTED
  }                                                                   
                                                                      
  return errno;                                                       
}                                                                     
ffc0c704:	83 e1 00 0c 	lwz     r31,12(r1)                             <== NOT EXECUTED
ffc0c708:	7c 08 03 a6 	mtlr    r0                                     <== NOT EXECUTED
ffc0c70c:	38 21 00 10 	addi    r1,r1,16                               <== NOT EXECUTED
ffc0c710:	4e 80 00 20 	blr                                            <== NOT EXECUTED
                                                                      

ffc0acf8 <timer_create>: int timer_create( clockid_t clock_id, struct sigevent *evp, timer_t *timerid ) {
ffc0acf8:	7d 80 00 26 	mfcr    r12                                    
  POSIX_Timer_Control *ptimer;                                        
                                                                      
  if ( clock_id != CLOCK_REALTIME )                                   
ffc0acfc:	2f 83 00 01 	cmpwi   cr7,r3,1                               
int timer_create(                                                     
  clockid_t        clock_id,                                          
  struct sigevent *evp,                                               
  timer_t         *timerid                                            
)                                                                     
{                                                                     
ffc0ad00:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0ad04:	7c 08 02 a6 	mflr    r0                                     
ffc0ad08:	93 a1 00 0c 	stw     r29,12(r1)                             
ffc0ad0c:	90 01 00 1c 	stw     r0,28(r1)                              
ffc0ad10:	93 c1 00 10 	stw     r30,16(r1)                             
ffc0ad14:	93 e1 00 14 	stw     r31,20(r1)                             
ffc0ad18:	91 81 00 08 	stw     r12,8(r1)                              
  POSIX_Timer_Control *ptimer;                                        
                                                                      
  if ( clock_id != CLOCK_REALTIME )                                   
ffc0ad1c:	40 9e 01 0c 	bne-    cr7,ffc0ae28 <timer_create+0x130>      
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !timerid )                                                     
ffc0ad20:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc0ad24:	7c be 2b 78 	mr      r30,r5                                 
ffc0ad28:	41 9e 01 00 	beq-    cr7,ffc0ae28 <timer_create+0x130>      
 /*                                                                   
  *  The data of the structure evp are checked in order to verify if they
  *  are coherent.                                                    
  */                                                                  
                                                                      
  if (evp != NULL) {                                                  
ffc0ad2c:	2e 04 00 00 	cmpwi   cr4,r4,0                               
ffc0ad30:	7c 9f 23 78 	mr      r31,r4                                 
ffc0ad34:	41 92 00 2c 	beq-    cr4,ffc0ad60 <timer_create+0x68>       
    /* The structure has data */                                      
    if ( ( evp->sigev_notify != SIGEV_NONE ) &&                       
ffc0ad38:	81 24 00 00 	lwz     r9,0(r4)                               
ffc0ad3c:	39 29 ff ff 	addi    r9,r9,-1                               
ffc0ad40:	2b 89 00 01 	cmplwi  cr7,r9,1                               
ffc0ad44:	41 9d 00 e4 	bgt-    cr7,ffc0ae28 <timer_create+0x130>      <== NEVER TAKEN
         ( evp->sigev_notify != SIGEV_SIGNAL ) ) {                    
       /* The value of the field sigev_notify is not valid */         
       rtems_set_errno_and_return_minus_one( EINVAL );                
     }                                                                
                                                                      
     if ( !evp->sigev_signo )                                         
ffc0ad48:	81 24 00 04 	lwz     r9,4(r4)                               
ffc0ad4c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0ad50:	41 9e 00 d8 	beq-    cr7,ffc0ae28 <timer_create+0x130>      <== NEVER TAKEN
                                                                      
static inline bool is_valid_signo(                                    
  int signo                                                           
)                                                                     
{                                                                     
  return ((signo) >= 1 && (signo) <= 32 );                            
ffc0ad54:	39 29 ff ff 	addi    r9,r9,-1                               
       rtems_set_errno_and_return_minus_one( EINVAL );                
                                                                      
     if ( !is_valid_signo(evp->sigev_signo) )                         
ffc0ad58:	2b 89 00 1f 	cmplwi  cr7,r9,31                              
ffc0ad5c:	41 9d 00 cc 	bgt-    cr7,ffc0ae28 <timer_create+0x130>      <== NEVER TAKEN
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
ffc0ad60:	3d 20 00 00 	lis     r9,0                                   
ffc0ad64:	81 49 28 a8 	lwz     r10,10408(r9)                          
                                                                      
    ++level;                                                          
ffc0ad68:	39 4a 00 01 	addi    r10,r10,1                              
    _Thread_Dispatch_disable_level = level;                           
ffc0ad6c:	91 49 28 a8 	stw     r10,10408(r9)                          
 *  the inactive chain of free timer control blocks.                  
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Timer_Control *_POSIX_Timer_Allocate( void )
{                                                                     
  return (POSIX_Timer_Control *) _Objects_Allocate( &_POSIX_Timer_Information );
ffc0ad70:	3f a0 00 00 	lis     r29,0                                  
ffc0ad74:	3b bd 59 40 	addi    r29,r29,22848                          
ffc0ad78:	7f a3 eb 78 	mr      r3,r29                                 
ffc0ad7c:	48 00 2a 2d 	bl      ffc0d7a8 <_Objects_Allocate>           
                                                                      
  /*                                                                  
   *  Allocate a timer                                                
   */                                                                 
  ptimer = _POSIX_Timer_Allocate();                                   
  if ( !ptimer ) {                                                    
ffc0ad80:	2c 03 00 00 	cmpwi   r3,0                                   
ffc0ad84:	41 82 00 d8 	beq-    ffc0ae5c <timer_create+0x164>          
    rtems_set_errno_and_return_minus_one( EAGAIN );                   
  }                                                                   
                                                                      
  /* The data of the created timer are stored to use them later */    
                                                                      
  ptimer->state     = POSIX_TIMER_STATE_CREATE_NEW;                   
ffc0ad88:	39 40 00 02 	li      r10,2                                  
ffc0ad8c:	99 43 00 3c 	stb     r10,60(r3)                             
  ptimer->thread_id = _Thread_Executing->Object.id;                   
ffc0ad90:	3d 40 00 00 	lis     r10,0                                  
ffc0ad94:	81 4a 5b b0 	lwz     r10,23472(r10)                         
ffc0ad98:	81 4a 00 08 	lwz     r10,8(r10)                             
ffc0ad9c:	91 43 00 38 	stw     r10,56(r3)                             
                                                                      
  if ( evp != NULL ) {                                                
ffc0ada0:	41 92 00 1c 	beq-    cr4,ffc0adbc <timer_create+0xc4>       
    ptimer->inf.sigev_notify = evp->sigev_notify;                     
ffc0ada4:	80 ff 00 00 	lwz     r7,0(r31)                              
    ptimer->inf.sigev_signo  = evp->sigev_signo;                      
ffc0ada8:	81 1f 00 04 	lwz     r8,4(r31)                              
    ptimer->inf.sigev_value  = evp->sigev_value;                      
ffc0adac:	81 5f 00 08 	lwz     r10,8(r31)                             
                                                                      
  ptimer->state     = POSIX_TIMER_STATE_CREATE_NEW;                   
  ptimer->thread_id = _Thread_Executing->Object.id;                   
                                                                      
  if ( evp != NULL ) {                                                
    ptimer->inf.sigev_notify = evp->sigev_notify;                     
ffc0adb0:	90 e3 00 40 	stw     r7,64(r3)                              
    ptimer->inf.sigev_signo  = evp->sigev_signo;                      
ffc0adb4:	91 03 00 44 	stw     r8,68(r3)                              
    ptimer->inf.sigev_value  = evp->sigev_value;                      
ffc0adb8:	91 43 00 48 	stw     r10,72(r3)                             
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
ffc0adbc:	81 03 00 08 	lwz     r8,8(r3)                               
  }                                                                   
                                                                      
  ptimer->overrun  = 0;                                               
ffc0adc0:	39 40 00 00 	li      r10,0                                  
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
ffc0adc4:	80 dd 00 1c 	lwz     r6,28(r29)                             
ffc0adc8:	55 07 13 ba 	rlwinm  r7,r8,2,14,29                          
ffc0adcc:	91 43 00 68 	stw     r10,104(r3)                            
  ptimer->timer_data.it_value.tv_sec     = 0;                         
ffc0add0:	91 43 00 5c 	stw     r10,92(r3)                             
  ptimer->timer_data.it_value.tv_nsec    = 0;                         
ffc0add4:	91 43 00 60 	stw     r10,96(r3)                             
  ptimer->timer_data.it_interval.tv_sec  = 0;                         
ffc0add8:	91 43 00 54 	stw     r10,84(r3)                             
  ptimer->timer_data.it_interval.tv_nsec = 0;                         
ffc0addc:	91 43 00 58 	stw     r10,88(r3)                             
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
ffc0ade0:	91 43 00 18 	stw     r10,24(r3)                             
  the_watchdog->routine   = routine;                                  
ffc0ade4:	91 43 00 2c 	stw     r10,44(r3)                             
  the_watchdog->id        = id;                                       
ffc0ade8:	91 43 00 30 	stw     r10,48(r3)                             
  the_watchdog->user_data = user_data;                                
ffc0adec:	91 43 00 34 	stw     r10,52(r3)                             
ffc0adf0:	7c 66 39 2e 	stwx    r3,r6,r7                               
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
ffc0adf4:	91 43 00 0c 	stw     r10,12(r3)                             
                                                                      
  _Watchdog_Initialize( &ptimer->Timer, NULL, 0, NULL );              
  _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);   
                                                                      
  *timerid  = ptimer->Object.id;                                      
ffc0adf8:	91 1e 00 00 	stw     r8,0(r30)                              
  _Thread_Enable_dispatch();                                          
ffc0adfc:	48 00 41 91 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
  return 0;                                                           
ffc0ae00:	38 60 00 00 	li      r3,0                                   
}                                                                     
ffc0ae04:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0ae08:	81 81 00 08 	lwz     r12,8(r1)                              
ffc0ae0c:	7c 08 03 a6 	mtlr    r0                                     
ffc0ae10:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0ae14:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0ae18:	7d 80 81 20 	mtcrf   8,r12                                  
ffc0ae1c:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0ae20:	38 21 00 18 	addi    r1,r1,24                               
ffc0ae24:	4e 80 00 20 	blr                                            
                                                                      
     if ( !evp->sigev_signo )                                         
       rtems_set_errno_and_return_minus_one( EINVAL );                
                                                                      
     if ( !is_valid_signo(evp->sigev_signo) )                         
       rtems_set_errno_and_return_minus_one( EINVAL );                
ffc0ae28:	48 00 aa 55 	bl      ffc1587c <__errno>                     
  _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);   
                                                                      
  *timerid  = ptimer->Object.id;                                      
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
ffc0ae2c:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0ae30:	81 81 00 08 	lwz     r12,8(r1)                              
                                                                      
     if ( !evp->sigev_signo )                                         
       rtems_set_errno_and_return_minus_one( EINVAL );                
                                                                      
     if ( !is_valid_signo(evp->sigev_signo) )                         
       rtems_set_errno_and_return_minus_one( EINVAL );                
ffc0ae34:	39 20 00 16 	li      r9,22                                  
  _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);   
                                                                      
  *timerid  = ptimer->Object.id;                                      
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
ffc0ae38:	7c 08 03 a6 	mtlr    r0                                     
                                                                      
     if ( !evp->sigev_signo )                                         
       rtems_set_errno_and_return_minus_one( EINVAL );                
                                                                      
     if ( !is_valid_signo(evp->sigev_signo) )                         
       rtems_set_errno_and_return_minus_one( EINVAL );                
ffc0ae3c:	91 23 00 00 	stw     r9,0(r3)                               
  _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);   
                                                                      
  *timerid  = ptimer->Object.id;                                      
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
ffc0ae40:	7d 80 81 20 	mtcrf   8,r12                                  
                                                                      
     if ( !evp->sigev_signo )                                         
       rtems_set_errno_and_return_minus_one( EINVAL );                
                                                                      
     if ( !is_valid_signo(evp->sigev_signo) )                         
       rtems_set_errno_and_return_minus_one( EINVAL );                
ffc0ae44:	38 60 ff ff 	li      r3,-1                                  
  _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);   
                                                                      
  *timerid  = ptimer->Object.id;                                      
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
ffc0ae48:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc0ae4c:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc0ae50:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0ae54:	38 21 00 18 	addi    r1,r1,24                               
ffc0ae58:	4e 80 00 20 	blr                                            
  /*                                                                  
   *  Allocate a timer                                                
   */                                                                 
  ptimer = _POSIX_Timer_Allocate();                                   
  if ( !ptimer ) {                                                    
    _Thread_Enable_dispatch();                                        
ffc0ae5c:	48 00 41 31 	bl      ffc0ef8c <_Thread_Enable_dispatch>     
    rtems_set_errno_and_return_minus_one( EAGAIN );                   
ffc0ae60:	48 00 aa 1d 	bl      ffc1587c <__errno>                     
ffc0ae64:	39 20 00 0b 	li      r9,11                                  
ffc0ae68:	91 23 00 00 	stw     r9,0(r3)                               
ffc0ae6c:	38 60 ff ff 	li      r3,-1                                  
ffc0ae70:	4b ff ff 94 	b       ffc0ae04 <timer_create+0x10c>          
                                                                      

ffc0949c <timer_settime>: timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue ) {
ffc0949c:	94 21 ff b0 	stwu    r1,-80(r1)                             
ffc094a0:	7c 08 02 a6 	mflr    r0                                     
ffc094a4:	93 81 00 40 	stw     r28,64(r1)                             
  Objects_Locations    location;                                      
  bool                 activated;                                     
  uint32_t             initial_period;                                
  struct itimerspec    normalize;                                     
                                                                      
  if ( !value )                                                       
ffc094a8:	7c bc 2b 79 	mr.     r28,r5                                 
  timer_t                  timerid,                                   
  int                      flags,                                     
  const struct itimerspec *value,                                     
  struct itimerspec       *ovalue                                     
)                                                                     
{                                                                     
ffc094ac:	90 01 00 54 	stw     r0,84(r1)                              
ffc094b0:	93 61 00 3c 	stw     r27,60(r1)                             
ffc094b4:	93 a1 00 44 	stw     r29,68(r1)                             
ffc094b8:	93 c1 00 48 	stw     r30,72(r1)                             
ffc094bc:	93 e1 00 4c 	stw     r31,76(r1)                             
  Objects_Locations    location;                                      
  bool                 activated;                                     
  uint32_t             initial_period;                                
  struct itimerspec    normalize;                                     
                                                                      
  if ( !value )                                                       
ffc094c0:	41 82 02 58 	beq-    ffc09718 <timer_settime+0x27c>         <== NEVER TAKEN
ffc094c4:	7c 7d 1b 78 	mr      r29,r3                                 
                                                                      
  /*                                                                  
   * First, it verifies if the structure "value" is correct           
   * if the number of nanoseconds is not correct return EINVAL        
   */                                                                 
  if ( !_Timespec_Is_valid( &(value->it_value) ) ) {                  
ffc094c8:	38 7c 00 08 	addi    r3,r28,8                               
ffc094cc:	7c 9f 23 78 	mr      r31,r4                                 
ffc094d0:	7c db 33 78 	mr      r27,r6                                 
ffc094d4:	48 00 4a b9 	bl      ffc0df8c <_Timespec_Is_valid>          
ffc094d8:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc094dc:	41 9e 02 3c 	beq-    cr7,ffc09718 <timer_settime+0x27c>     
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
  if ( !_Timespec_Is_valid( &(value->it_interval) ) ) {               
ffc094e0:	7f 83 e3 78 	mr      r3,r28                                 
ffc094e4:	48 00 4a a9 	bl      ffc0df8c <_Timespec_Is_valid>          
ffc094e8:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc094ec:	41 9e 02 2c 	beq-    cr7,ffc09718 <timer_settime+0x27c>     <== NEVER TAKEN
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
                                                                      
  if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) {    
ffc094f0:	2f 9f 00 04 	cmpwi   cr7,r31,4                              
ffc094f4:	41 9e 01 6c 	beq-    cr7,ffc09660 <timer_settime+0x1c4>     
ffc094f8:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
ffc094fc:	40 9e 02 1c 	bne-    cr7,ffc09718 <timer_settime+0x27c>     
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
                                                                      
  normalize = *value;                                                 
ffc09500:	81 3c 00 0c 	lwz     r9,12(r28)                             
RTEMS_INLINE_ROUTINE POSIX_Timer_Control *_POSIX_Timer_Get (          
  timer_t            id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (POSIX_Timer_Control *)                                      
ffc09504:	3c 60 00 00 	lis     r3,0                                   
ffc09508:	80 fc 00 00 	lwz     r7,0(r28)                              
ffc0950c:	7f a4 eb 78 	mr      r4,r29                                 
ffc09510:	81 1c 00 04 	lwz     r8,4(r28)                              
ffc09514:	38 63 2f 80 	addi    r3,r3,12160                            
ffc09518:	81 5c 00 08 	lwz     r10,8(r28)                             
ffc0951c:	38 a1 00 28 	addi    r5,r1,40                               
ffc09520:	91 21 00 14 	stw     r9,20(r1)                              
ffc09524:	90 e1 00 08 	stw     r7,8(r1)                               
ffc09528:	91 01 00 0c 	stw     r8,12(r1)                              
ffc0952c:	91 41 00 10 	stw     r10,16(r1)                             
ffc09530:	48 00 2c b9 	bl      ffc0c1e8 <_Objects_Get>                
ffc09534:	7c 7d 1b 78 	mr      r29,r3                                 
   * something with the structure of times of the timer: to stop, start
   * or start it again                                                
   */                                                                 
                                                                      
  ptimer = _POSIX_Timer_Get( timerid, &location );                    
  switch ( location ) {                                               
ffc09538:	81 21 00 28 	lwz     r9,40(r1)                              
ffc0953c:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc09540:	40 9e 01 d8 	bne-    cr7,ffc09718 <timer_settime+0x27c>     <== NEVER TAKEN
                                                                      
    case OBJECTS_LOCAL:                                               
      /* First, it verifies if the timer must be stopped */           
      if ( normalize.it_value.tv_sec == 0 && normalize.it_value.tv_nsec == 0 ) {
ffc09544:	81 21 00 10 	lwz     r9,16(r1)                              
ffc09548:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0954c:	40 9e 00 10 	bne-    cr7,ffc0955c <timer_settime+0xc0>      
ffc09550:	81 21 00 14 	lwz     r9,20(r1)                              
ffc09554:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc09558:	41 9e 01 d4 	beq-    cr7,ffc0972c <timer_settime+0x290>     
        _Thread_Enable_dispatch();                                    
        return 0;                                                     
       }                                                              
                                                                      
       /* Convert from seconds and nanoseconds to ticks */            
       ptimer->ticks  = _Timespec_To_ticks( &value->it_interval );    
ffc0955c:	7f 83 e3 78 	mr      r3,r28                                 
ffc09560:	48 00 4a f5 	bl      ffc0e054 <_Timespec_To_ticks>          
ffc09564:	90 7d 00 64 	stw     r3,100(r29)                            
       initial_period = _Timespec_To_ticks( &normalize.it_value );    
ffc09568:	38 61 00 10 	addi    r3,r1,16                               
ffc0956c:	48 00 4a e9 	bl      ffc0e054 <_Timespec_To_ticks>          
                                                                      
                                                                      
       activated = _POSIX_Timer_Insert_helper(                        
ffc09570:	80 bd 00 08 	lwz     r5,8(r29)                              
ffc09574:	3c c0 ff c1 	lis     r6,-63                                 
        return 0;                                                     
       }                                                              
                                                                      
       /* Convert from seconds and nanoseconds to ticks */            
       ptimer->ticks  = _Timespec_To_ticks( &value->it_interval );    
       initial_period = _Timespec_To_ticks( &normalize.it_value );    
ffc09578:	7c 64 1b 78 	mr      r4,r3                                  
                                                                      
                                                                      
       activated = _POSIX_Timer_Insert_helper(                        
ffc0957c:	38 c6 97 b0 	addi    r6,r6,-26704                           
ffc09580:	38 7d 00 10 	addi    r3,r29,16                              
ffc09584:	7f a7 eb 78 	mr      r7,r29                                 
ffc09588:	48 00 75 95 	bl      ffc10b1c <_POSIX_Timer_Insert_helper>  
         initial_period,                                              
         ptimer->Object.id,                                           
         _POSIX_Timer_TSR,                                            
         ptimer                                                       
       );                                                             
       if ( !activated ) {                                            
ffc0958c:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc09590:	41 9e 00 a4 	beq-    cr7,ffc09634 <timer_settime+0x198>     
                                                                      
       /*                                                             
        * The timer has been started and is running.  So we return the
        * old ones in "ovalue"                                        
        */                                                            
       if ( ovalue )                                                  
ffc09594:	2f 9b 00 00 	cmpwi   cr7,r27,0                              
ffc09598:	41 9e 00 24 	beq-    cr7,ffc095bc <timer_settime+0x120>     
         *ovalue = ptimer->timer_data;                                
ffc0959c:	81 3d 00 54 	lwz     r9,84(r29)                             
ffc095a0:	80 fd 00 58 	lwz     r7,88(r29)                             
ffc095a4:	81 1d 00 5c 	lwz     r8,92(r29)                             
ffc095a8:	81 5d 00 60 	lwz     r10,96(r29)                            
ffc095ac:	91 3b 00 00 	stw     r9,0(r27)                              
ffc095b0:	90 fb 00 04 	stw     r7,4(r27)                              
ffc095b4:	91 1b 00 08 	stw     r8,8(r27)                              
ffc095b8:	91 5b 00 0c 	stw     r10,12(r27)                            
       ptimer->timer_data = normalize;                                
ffc095bc:	81 21 00 08 	lwz     r9,8(r1)                               
)                                                                     
{                                                                     
  Timestamp_Control  tod_as_timestamp;                                
  Timestamp_Control *tod_as_timestamp_ptr;                            
                                                                      
  tod_as_timestamp_ptr =                                              
ffc095c0:	3c 80 00 00 	lis     r4,0                                   
ffc095c4:	38 84 2c a0 	addi    r4,r4,11424                            
ffc095c8:	91 3d 00 54 	stw     r9,84(r29)                             
ffc095cc:	38 61 00 20 	addi    r3,r1,32                               
ffc095d0:	81 21 00 0c 	lwz     r9,12(r1)                              
ffc095d4:	91 3d 00 58 	stw     r9,88(r29)                             
ffc095d8:	81 21 00 10 	lwz     r9,16(r1)                              
ffc095dc:	91 3d 00 5c 	stw     r9,92(r29)                             
ffc095e0:	81 21 00 14 	lwz     r9,20(r1)                              
ffc095e4:	91 3d 00 60 	stw     r9,96(r29)                             
                                                                      
       /* Indicate that the time is running */                        
       ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;                  
ffc095e8:	39 20 00 03 	li      r9,3                                   
ffc095ec:	99 3d 00 3c 	stb     r9,60(r29)                             
ffc095f0:	48 00 1f b5 	bl      ffc0b5a4 <_TOD_Get_with_nanoseconds>   
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
ffc095f4:	3c c0 3b 9a 	lis     r6,15258                               
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
}                                                                     
ffc095f8:	83 e3 00 04 	lwz     r31,4(r3)                              
ffc095fc:	38 a0 00 00 	li      r5,0                                   
ffc09600:	83 c3 00 00 	lwz     r30,0(r3)                              
ffc09604:	60 c6 ca 00 	ori     r6,r6,51712                            
ffc09608:	7f e4 fb 78 	mr      r4,r31                                 
ffc0960c:	7f c3 f3 78 	mr      r3,r30                                 
ffc09610:	48 01 42 11 	bl      ffc1d820 <__divdi3>                    
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
ffc09614:	3c c0 3b 9a 	lis     r6,15258                               
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
ffc09618:	90 9d 00 6c 	stw     r4,108(r29)                            
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
ffc0961c:	38 a0 00 00 	li      r5,0                                   
ffc09620:	60 c6 ca 00 	ori     r6,r6,51712                            
ffc09624:	7f c3 f3 78 	mr      r3,r30                                 
ffc09628:	7f e4 fb 78 	mr      r4,r31                                 
ffc0962c:	48 01 46 19 	bl      ffc1dc44 <__moddi3>                    
ffc09630:	90 9d 00 70 	stw     r4,112(r29)                            
       ptimer->timer_data = normalize;                                
                                                                      
       /* Indicate that the time is running */                        
       ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;                  
       _TOD_Get( &ptimer->time );                                     
       _Thread_Enable_dispatch();                                     
ffc09634:	48 00 3c 05 	bl      ffc0d238 <_Thread_Enable_dispatch>     
       return 0;                                                      
ffc09638:	38 60 00 00 	li      r3,0                                   
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
}                                                                     
ffc0963c:	80 01 00 54 	lwz     r0,84(r1)                              
ffc09640:	83 61 00 3c 	lwz     r27,60(r1)                             
ffc09644:	7c 08 03 a6 	mtlr    r0                                     
ffc09648:	83 81 00 40 	lwz     r28,64(r1)                             
ffc0964c:	83 a1 00 44 	lwz     r29,68(r1)                             
ffc09650:	83 c1 00 48 	lwz     r30,72(r1)                             
ffc09654:	83 e1 00 4c 	lwz     r31,76(r1)                             
ffc09658:	38 21 00 50 	addi    r1,r1,80                               
ffc0965c:	4e 80 00 20 	blr                                            
                                                                      
  if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) {    
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
                                                                      
  normalize = *value;                                                 
ffc09660:	80 fc 00 00 	lwz     r7,0(r28)                              
ffc09664:	3c 80 00 00 	lis     r4,0                                   
ffc09668:	81 1c 00 04 	lwz     r8,4(r28)                              
ffc0966c:	38 84 2c a0 	addi    r4,r4,11424                            
ffc09670:	81 5c 00 08 	lwz     r10,8(r28)                             
ffc09674:	38 61 00 20 	addi    r3,r1,32                               
ffc09678:	81 3c 00 0c 	lwz     r9,12(r28)                             
ffc0967c:	90 e1 00 08 	stw     r7,8(r1)                               
ffc09680:	91 01 00 0c 	stw     r8,12(r1)                              
ffc09684:	91 41 00 10 	stw     r10,16(r1)                             
ffc09688:	91 21 00 14 	stw     r9,20(r1)                              
ffc0968c:	48 00 1f 19 	bl      ffc0b5a4 <_TOD_Get_with_nanoseconds>   
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
ffc09690:	3c c0 3b 9a 	lis     r6,15258                               
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
}                                                                     
ffc09694:	83 c3 00 00 	lwz     r30,0(r3)                              
ffc09698:	38 a0 00 00 	li      r5,0                                   
ffc0969c:	83 e3 00 04 	lwz     r31,4(r3)                              
ffc096a0:	60 c6 ca 00 	ori     r6,r6,51712                            
ffc096a4:	7f c3 f3 78 	mr      r3,r30                                 
ffc096a8:	7f e4 fb 78 	mr      r4,r31                                 
ffc096ac:	48 01 41 75 	bl      ffc1d820 <__divdi3>                    
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
ffc096b0:	3c c0 3b 9a 	lis     r6,15258                               
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
ffc096b4:	90 81 00 18 	stw     r4,24(r1)                              
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
ffc096b8:	38 a0 00 00 	li      r5,0                                   
ffc096bc:	60 c6 ca 00 	ori     r6,r6,51712                            
ffc096c0:	7f c3 f3 78 	mr      r3,r30                                 
ffc096c4:	7f e4 fb 78 	mr      r4,r31                                 
ffc096c8:	48 01 45 7d 	bl      ffc1dc44 <__moddi3>                    
  /* Convert absolute to relative time */                             
  if (flags == TIMER_ABSTIME) {                                       
    struct timespec now;                                              
    _TOD_Get( &now );                                                 
    /* Check for seconds in the past */                               
    if ( _Timespec_Greater_than( &now, &normalize.it_value ) )        
ffc096cc:	38 61 00 10 	addi    r3,r1,16                               
ffc096d0:	90 81 00 1c 	stw     r4,28(r1)                              
ffc096d4:	38 81 00 18 	addi    r4,r1,24                               
ffc096d8:	48 00 48 f5 	bl      ffc0dfcc <_Timespec_Less_than>         
ffc096dc:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc096e0:	40 9e 00 38 	bne-    cr7,ffc09718 <timer_settime+0x27c>     
      rtems_set_errno_and_return_minus_one( EINVAL );                 
    _Timespec_Subtract( &now, &normalize.it_value, &normalize.it_value );
ffc096e4:	38 81 00 10 	addi    r4,r1,16                               
ffc096e8:	7c 85 23 78 	mr      r5,r4                                  
ffc096ec:	38 61 00 18 	addi    r3,r1,24                               
ffc096f0:	48 00 49 19 	bl      ffc0e008 <_Timespec_Subtract>          
ffc096f4:	3c 60 00 00 	lis     r3,0                                   
ffc096f8:	7f a4 eb 78 	mr      r4,r29                                 
ffc096fc:	38 63 2f 80 	addi    r3,r3,12160                            
ffc09700:	38 a1 00 28 	addi    r5,r1,40                               
ffc09704:	48 00 2a e5 	bl      ffc0c1e8 <_Objects_Get>                
   * something with the structure of times of the timer: to stop, start
   * or start it again                                                
   */                                                                 
                                                                      
  ptimer = _POSIX_Timer_Get( timerid, &location );                    
  switch ( location ) {                                               
ffc09708:	81 21 00 28 	lwz     r9,40(r1)                              
ffc0970c:	7c 7d 1b 78 	mr      r29,r3                                 
ffc09710:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc09714:	41 be fe 30 	beq-    cr7,ffc09544 <timer_settime+0xa8>      
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
ffc09718:	48 00 a4 e9 	bl      ffc13c00 <__errno>                     
ffc0971c:	39 20 00 16 	li      r9,22                                  
ffc09720:	91 23 00 00 	stw     r9,0(r3)                               
ffc09724:	38 60 ff ff 	li      r3,-1                                  
ffc09728:	4b ff ff 14 	b       ffc0963c <timer_settime+0x1a0>         
                                                                      
    case OBJECTS_LOCAL:                                               
      /* First, it verifies if the timer must be stopped */           
      if ( normalize.it_value.tv_sec == 0 && normalize.it_value.tv_nsec == 0 ) {
         /* Stop the timer */                                         
         (void) _Watchdog_Remove( &ptimer->Timer );                   
ffc0972c:	38 63 00 10 	addi    r3,r3,16                               
ffc09730:	48 00 4d b5 	bl      ffc0e4e4 <_Watchdog_Remove>            
         /* The old data of the timer are returned */                 
         if ( ovalue )                                                
ffc09734:	2f 9b 00 00 	cmpwi   cr7,r27,0                              
ffc09738:	41 9e 00 24 	beq-    cr7,ffc0975c <timer_settime+0x2c0>     
           *ovalue = ptimer->timer_data;                              
ffc0973c:	81 3d 00 54 	lwz     r9,84(r29)                             
ffc09740:	80 fd 00 58 	lwz     r7,88(r29)                             
ffc09744:	81 1d 00 5c 	lwz     r8,92(r29)                             
ffc09748:	81 5d 00 60 	lwz     r10,96(r29)                            
ffc0974c:	91 3b 00 00 	stw     r9,0(r27)                              
ffc09750:	90 fb 00 04 	stw     r7,4(r27)                              
ffc09754:	91 1b 00 08 	stw     r8,8(r27)                              
ffc09758:	91 5b 00 0c 	stw     r10,12(r27)                            
         /* The new data are set */                                   
         ptimer->timer_data = normalize;                              
ffc0975c:	81 21 00 08 	lwz     r9,8(r1)                               
ffc09760:	91 3d 00 54 	stw     r9,84(r29)                             
ffc09764:	81 21 00 0c 	lwz     r9,12(r1)                              
ffc09768:	91 3d 00 58 	stw     r9,88(r29)                             
ffc0976c:	81 21 00 10 	lwz     r9,16(r1)                              
ffc09770:	91 3d 00 5c 	stw     r9,92(r29)                             
ffc09774:	81 21 00 14 	lwz     r9,20(r1)                              
ffc09778:	91 3d 00 60 	stw     r9,96(r29)                             
         /* Indicates that the timer is created and stopped */        
         ptimer->state = POSIX_TIMER_STATE_CREATE_STOP;               
ffc0977c:	39 20 00 04 	li      r9,4                                   
ffc09780:	99 3d 00 3c 	stb     r9,60(r29)                             
         /* Returns with success */                                   
        _Thread_Enable_dispatch();                                    
ffc09784:	48 00 3a b5 	bl      ffc0d238 <_Thread_Enable_dispatch>     
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
}                                                                     
ffc09788:	80 01 00 54 	lwz     r0,84(r1)                              
ffc0978c:	83 61 00 3c 	lwz     r27,60(r1)                             
         ptimer->timer_data = normalize;                              
         /* Indicates that the timer is created and stopped */        
         ptimer->state = POSIX_TIMER_STATE_CREATE_STOP;               
         /* Returns with success */                                   
        _Thread_Enable_dispatch();                                    
        return 0;                                                     
ffc09790:	38 60 00 00 	li      r3,0                                   
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
}                                                                     
ffc09794:	7c 08 03 a6 	mtlr    r0                                     
ffc09798:	83 81 00 40 	lwz     r28,64(r1)                             
ffc0979c:	83 a1 00 44 	lwz     r29,68(r1)                             
ffc097a0:	83 c1 00 48 	lwz     r30,72(r1)                             
ffc097a4:	83 e1 00 4c 	lwz     r31,76(r1)                             
ffc097a8:	38 21 00 50 	addi    r1,r1,80                               
ffc097ac:	4e 80 00 20 	blr                                            
                                                                      

ffc0928c <ualarm>: useconds_t ualarm( useconds_t useconds, useconds_t interval ) {
ffc0928c:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc09290:	7c 08 02 a6 	mflr    r0                                     
ffc09294:	93 e1 00 24 	stw     r31,36(r1)                             
                                                                      
  /*                                                                  
   *  Initialize the timer used to implement alarm().                 
   */                                                                 
                                                                      
  if ( !the_timer->routine ) {                                        
ffc09298:	3f e0 00 00 	lis     r31,0                                  
ffc0929c:	3b ff 35 f4 	addi    r31,r31,13812                          
                                                                      
useconds_t ualarm(                                                    
  useconds_t useconds,                                                
  useconds_t interval                                                 
)                                                                     
{                                                                     
ffc092a0:	90 01 00 2c 	stw     r0,44(r1)                              
                                                                      
  /*                                                                  
   *  Initialize the timer used to implement alarm().                 
   */                                                                 
                                                                      
  if ( !the_timer->routine ) {                                        
ffc092a4:	81 3f 00 1c 	lwz     r9,28(r31)                             
                                                                      
useconds_t ualarm(                                                    
  useconds_t useconds,                                                
  useconds_t interval                                                 
)                                                                     
{                                                                     
ffc092a8:	93 c1 00 20 	stw     r30,32(r1)                             
ffc092ac:	7c 7e 1b 78 	mr      r30,r3                                 
                                                                      
  /*                                                                  
   *  Initialize the timer used to implement alarm().                 
   */                                                                 
                                                                      
  if ( !the_timer->routine ) {                                        
ffc092b0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
                                                                      
useconds_t ualarm(                                                    
  useconds_t useconds,                                                
  useconds_t interval                                                 
)                                                                     
{                                                                     
ffc092b4:	93 a1 00 1c 	stw     r29,28(r1)                             
                                                                      
  /*                                                                  
   *  Initialize the timer used to implement alarm().                 
   */                                                                 
                                                                      
  if ( !the_timer->routine ) {                                        
ffc092b8:	41 9e 00 a4 	beq-    cr7,ffc0935c <ualarm+0xd0>             
    _Watchdog_Initialize( the_timer, _POSIX_signals_Ualarm_TSR, 0, NULL );
  } else {                                                            
    Watchdog_States state;                                            
                                                                      
    state = _Watchdog_Remove( the_timer );                            
ffc092bc:	7f e3 fb 78 	mr      r3,r31                                 
ffc092c0:	48 00 4c 41 	bl      ffc0df00 <_Watchdog_Remove>            
useconds_t ualarm(                                                    
  useconds_t useconds,                                                
  useconds_t interval                                                 
)                                                                     
{                                                                     
  useconds_t        remaining = 0;                                    
ffc092c4:	3b a0 00 00 	li      r29,0                                  
    _Watchdog_Initialize( the_timer, _POSIX_signals_Ualarm_TSR, 0, NULL );
  } else {                                                            
    Watchdog_States state;                                            
                                                                      
    state = _Watchdog_Remove( the_timer );                            
    if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) {
ffc092c8:	38 63 ff fe 	addi    r3,r3,-2                               
ffc092cc:	2b 83 00 01 	cmplwi  cr7,r3,1                               
ffc092d0:	40 9d 00 ac 	ble-    cr7,ffc0937c <ualarm+0xf0>             <== ALWAYS TAKEN
  /*                                                                  
   *  If useconds is non-zero, then the caller wants to schedule      
   *  the alarm repeatedly at that interval.  If the interval is      
   *  less than a single clock tick, then fudge it to a clock tick.   
   */                                                                 
  if ( useconds ) {                                                   
ffc092d4:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
ffc092d8:	41 be 00 64 	beq+    cr7,ffc0933c <ualarm+0xb0>             
    Watchdog_Interval ticks;                                          
                                                                      
    tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;               
ffc092dc:	3d 20 43 1b 	lis     r9,17179                               
ffc092e0:	61 29 de 83 	ori     r9,r9,56963                            
ffc092e4:	7d 3e 48 16 	mulhwu  r9,r30,r9                              
    tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;     
    ticks = _Timespec_To_ticks( &tp );                                
ffc092e8:	38 61 00 08 	addi    r3,r1,8                                
   *  less than a single clock tick, then fudge it to a clock tick.   
   */                                                                 
  if ( useconds ) {                                                   
    Watchdog_Interval ticks;                                          
                                                                      
    tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;               
ffc092ec:	55 29 74 be 	rlwinm  r9,r9,14,18,31                         
    tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;     
ffc092f0:	55 28 40 2e 	rlwinm  r8,r9,8,0,23                           
   *  less than a single clock tick, then fudge it to a clock tick.   
   */                                                                 
  if ( useconds ) {                                                   
    Watchdog_Interval ticks;                                          
                                                                      
    tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;               
ffc092f4:	91 21 00 08 	stw     r9,8(r1)                               
    tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;     
ffc092f8:	55 2a 18 38 	rlwinm  r10,r9,3,0,28                          
ffc092fc:	7d 4a 40 50 	subf    r10,r10,r8                             
ffc09300:	55 48 30 32 	rlwinm  r8,r10,6,0,25                          
ffc09304:	7d 4a 40 50 	subf    r10,r10,r8                             
ffc09308:	7d 4a 4a 14 	add     r10,r10,r9                             
ffc0930c:	55 4a 30 32 	rlwinm  r10,r10,6,0,25                         
ffc09310:	7f ca f0 50 	subf    r30,r10,r30                            
ffc09314:	1f de 03 e8 	mulli   r30,r30,1000                           
ffc09318:	93 c1 00 0c 	stw     r30,12(r1)                             
    ticks = _Timespec_To_ticks( &tp );                                
ffc0931c:	48 00 46 41 	bl      ffc0d95c <_Timespec_To_ticks>          
    if ( ticks == 0 )                                                 
      ticks = 1;                                                      
                                                                      
    _Watchdog_Insert_ticks( the_timer, _Timespec_To_ticks( &tp ) );   
ffc09320:	38 61 00 08 	addi    r3,r1,8                                
ffc09324:	48 00 46 39 	bl      ffc0d95c <_Timespec_To_ticks>          
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
ffc09328:	7f e4 fb 78 	mr      r4,r31                                 
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
ffc0932c:	90 7f 00 0c 	stw     r3,12(r31)                             
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
ffc09330:	3c 60 00 00 	lis     r3,0                                   
ffc09334:	38 63 2e 08 	addi    r3,r3,11784                            
ffc09338:	48 00 4a 01 	bl      ffc0dd38 <_Watchdog_Insert>            
  }                                                                   
                                                                      
  return remaining;                                                   
}                                                                     
ffc0933c:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc09340:	7f a3 eb 78 	mr      r3,r29                                 
ffc09344:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc09348:	7c 08 03 a6 	mtlr    r0                                     
ffc0934c:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc09350:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc09354:	38 21 00 28 	addi    r1,r1,40                               
ffc09358:	4e 80 00 20 	blr                                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
ffc0935c:	3d 40 ff c1 	lis     r10,-63                                
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
ffc09360:	91 3f 00 08 	stw     r9,8(r31)                              
  the_watchdog->routine   = routine;                                  
ffc09364:	39 4a 92 40 	addi    r10,r10,-28096                         
useconds_t ualarm(                                                    
  useconds_t useconds,                                                
  useconds_t interval                                                 
)                                                                     
{                                                                     
  useconds_t        remaining = 0;                                    
ffc09368:	3b a0 00 00 	li      r29,0                                  
ffc0936c:	91 5f 00 1c 	stw     r10,28(r31)                            
  the_watchdog->id        = id;                                       
ffc09370:	91 3f 00 20 	stw     r9,32(r31)                             
  the_watchdog->user_data = user_data;                                
ffc09374:	91 3f 00 24 	stw     r9,36(r31)                             
ffc09378:	4b ff ff 5c 	b       ffc092d4 <ualarm+0x48>                 
       *  boot.  Since alarm() is dealing in seconds, we must account for
       *  this.                                                       
       */                                                             
                                                                      
      ticks = the_timer->initial;                                     
      ticks -= (the_timer->stop_time - the_timer->start_time);        
ffc0937c:	81 1f 00 14 	lwz     r8,20(r31)                             
      /* remaining is now in ticks */                                 
                                                                      
      _Timespec_From_ticks( ticks, &tp );                             
ffc09380:	38 81 00 08 	addi    r4,r1,8                                
       *  boot.  Since alarm() is dealing in seconds, we must account for
       *  this.                                                       
       */                                                             
                                                                      
      ticks = the_timer->initial;                                     
      ticks -= (the_timer->stop_time - the_timer->start_time);        
ffc09384:	81 5f 00 0c 	lwz     r10,12(r31)                            
      /* remaining is now in ticks */                                 
                                                                      
      _Timespec_From_ticks( ticks, &tp );                             
      remaining  = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;           
      remaining += tp.tv_nsec / 1000;                                 
ffc09388:	3f a0 10 62 	lis     r29,4194                               
       *  boot.  Since alarm() is dealing in seconds, we must account for
       *  this.                                                       
       */                                                             
                                                                      
      ticks = the_timer->initial;                                     
      ticks -= (the_timer->stop_time - the_timer->start_time);        
ffc0938c:	80 7f 00 18 	lwz     r3,24(r31)                             
      /* remaining is now in ticks */                                 
                                                                      
      _Timespec_From_ticks( ticks, &tp );                             
      remaining  = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;           
      remaining += tp.tv_nsec / 1000;                                 
ffc09390:	63 bd 4d d3 	ori     r29,r29,19923                          
       *  boot.  Since alarm() is dealing in seconds, we must account for
       *  this.                                                       
       */                                                             
                                                                      
      ticks = the_timer->initial;                                     
      ticks -= (the_timer->stop_time - the_timer->start_time);        
ffc09394:	7d 48 52 14 	add     r10,r8,r10                             
      /* remaining is now in ticks */                                 
                                                                      
      _Timespec_From_ticks( ticks, &tp );                             
ffc09398:	7c 63 50 50 	subf    r3,r3,r10                              
ffc0939c:	48 00 45 75 	bl      ffc0d910 <_Timespec_From_ticks>        
      remaining  = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;           
ffc093a0:	81 21 00 08 	lwz     r9,8(r1)                               
      remaining += tp.tv_nsec / 1000;                                 
ffc093a4:	81 41 00 0c 	lwz     r10,12(r1)                             
      ticks = the_timer->initial;                                     
      ticks -= (the_timer->stop_time - the_timer->start_time);        
      /* remaining is now in ticks */                                 
                                                                      
      _Timespec_From_ticks( ticks, &tp );                             
      remaining  = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;           
ffc093a8:	55 27 40 2e 	rlwinm  r7,r9,8,0,23                           
ffc093ac:	55 28 18 38 	rlwinm  r8,r9,3,0,28                           
ffc093b0:	7d 08 38 50 	subf    r8,r8,r7                               
      remaining += tp.tv_nsec / 1000;                                 
ffc093b4:	7f aa e8 96 	mulhw   r29,r10,r29                            
      ticks = the_timer->initial;                                     
      ticks -= (the_timer->stop_time - the_timer->start_time);        
      /* remaining is now in ticks */                                 
                                                                      
      _Timespec_From_ticks( ticks, &tp );                             
      remaining  = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;           
ffc093b8:	55 07 30 32 	rlwinm  r7,r8,6,0,25                           
ffc093bc:	7d 08 38 50 	subf    r8,r8,r7                               
ffc093c0:	7d 28 4a 14 	add     r9,r8,r9                               
      remaining += tp.tv_nsec / 1000;                                 
ffc093c4:	7f bd 36 70 	srawi   r29,r29,6                              
ffc093c8:	7d 4a fe 70 	srawi   r10,r10,31                             
      ticks = the_timer->initial;                                     
      ticks -= (the_timer->stop_time - the_timer->start_time);        
      /* remaining is now in ticks */                                 
                                                                      
      _Timespec_From_ticks( ticks, &tp );                             
      remaining  = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;           
ffc093cc:	55 29 30 32 	rlwinm  r9,r9,6,0,25                           
      remaining += tp.tv_nsec / 1000;                                 
ffc093d0:	7f aa e8 50 	subf    r29,r10,r29                            
ffc093d4:	7f bd 4a 14 	add     r29,r29,r9                             
ffc093d8:	4b ff fe fc 	b       ffc092d4 <ualarm+0x48>