RTEMS 4.11
Annotated Report
Sun Nov 28 17:13:35 2010

080036c4 <_API_extensions_Run_postdriver>:                            
 *                                                                    
 *  _API_extensions_Run_postdriver                                    
 */                                                                   
                                                                      
void _API_extensions_Run_postdriver( void )                           
{                                                                     
 80036c4:	37 9c ff f4 	addi sp,sp,-12                                 
 80036c8:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80036cc:	5b 8c 00 08 	sw (sp+8),r12                                  
 80036d0:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
    the_extension = (API_extensions_Control *) the_node;              
                                                                      
    (*the_extension->postswitch_hook)( _Thread_Executing );           
  }                                                                   
}                                                                     
 80036d4:	78 01 08 01 	mvhi r1,0x801                                  
 80036d8:	38 21 4a 34 	ori r1,r1,0x4a34                               
 80036dc:	28 2b 00 00 	lw r11,(r1+0)                                  
void _API_extensions_Run_postdriver( void )                           
{                                                                     
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
 80036e0:	78 0c 08 01 	mvhi r12,0x801                                 
 80036e4:	39 8c 4a 38 	ori r12,r12,0x4a38                             
 80036e8:	45 6c 00 05 	be r11,r12,80036fc <_API_extensions_Run_postdriver+0x38><== 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)();                            
 80036ec:	29 61 00 08 	lw r1,(r11+8)                                  
 80036f0:	d8 20 00 00 	call r1                                        
  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 ) {                                 
 80036f4:	29 6b 00 00 	lw r11,(r11+0)                                 
void _API_extensions_Run_postdriver( void )                           
{                                                                     
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
 80036f8:	5d 6c ff fd 	bne r11,r12,80036ec <_API_extensions_Run_postdriver+0x28>
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)              
    if ( the_extension->postdriver_hook )                             
#endif                                                                
      (*the_extension->postdriver_hook)();                            
  }                                                                   
}                                                                     
 80036fc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003700:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8003704:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003708:	37 9c 00 0c 	addi sp,sp,12                                  
 800370c:	c3 a0 00 00 	ret                                            
                                                                      

08003710 <_API_extensions_Run_postswitch>: * * _API_extensions_Run_postswitch */ void _API_extensions_Run_postswitch( void ) {
 8003710:	37 9c ff f0 	addi sp,sp,-16                                 
 8003714:	5b 8b 00 10 	sw (sp+16),r11                                 
 8003718:	5b 8c 00 0c 	sw (sp+12),r12                                 
 800371c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8003720:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
    the_extension = (API_extensions_Control *) the_node;              
                                                                      
    (*the_extension->postswitch_hook)( _Thread_Executing );           
  }                                                                   
}                                                                     
 8003724:	78 01 08 01 	mvhi r1,0x801                                  
 8003728:	38 21 4a 34 	ori r1,r1,0x4a34                               
 800372c:	28 2b 00 00 	lw r11,(r1+0)                                  
void _API_extensions_Run_postswitch( void )                           
{                                                                     
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
 8003730:	78 0c 08 01 	mvhi r12,0x801                                 
 8003734:	39 8c 4a 38 	ori r12,r12,0x4a38                             
 8003738:	45 6c 00 08 	be r11,r12,8003758 <_API_extensions_Run_postswitch+0x48><== NEVER TAKEN
 800373c:	78 0d 08 01 	mvhi r13,0x801                                 
 8003740:	39 ad 4d 78 	ori r13,r13,0x4d78                             
        !_Chain_Is_tail( &_API_extensions_List, the_node ) ;          
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (API_extensions_Control *) the_node;              
                                                                      
    (*the_extension->postswitch_hook)( _Thread_Executing );           
 8003744:	29 62 00 0c 	lw r2,(r11+12)                                 
 8003748:	29 a1 00 0c 	lw r1,(r13+12)                                 
 800374c:	d8 40 00 00 	call r2                                        
  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 ) {                                 
 8003750:	29 6b 00 00 	lw r11,(r11+0)                                 
void _API_extensions_Run_postswitch( void )                           
{                                                                     
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
 8003754:	5d 6c ff fc 	bne r11,r12,8003744 <_API_extensions_Run_postswitch+0x34>
                                                                      
    the_extension = (API_extensions_Control *) the_node;              
                                                                      
    (*the_extension->postswitch_hook)( _Thread_Executing );           
  }                                                                   
}                                                                     
 8003758:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800375c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003760:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003764:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003768:	37 9c 00 10 	addi sp,sp,16                                  
 800376c:	c3 a0 00 00 	ret                                            
                                                                      

08006464 <_CORE_RWLock_Release>: */ CORE_RWLock_Status _CORE_RWLock_Release( CORE_RWLock_Control *the_rwlock ) {
 8006464:	37 9c ff f4 	addi sp,sp,-12                                 
 8006468:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800646c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8006470:	5b 9d 00 04 	sw (sp+4),ra                                   
  ISR_Level       level;                                              
  Thread_Control *executing = _Thread_Executing;                      
 8006474:	78 02 08 01 	mvhi r2,0x801                                  
 8006478:	38 42 9d 38 	ori r2,r2,0x9d38                               
 800647c:	28 43 00 0c 	lw r3,(r2+12)                                  
 */                                                                   
                                                                      
CORE_RWLock_Status _CORE_RWLock_Release(                              
  CORE_RWLock_Control  *the_rwlock                                    
)                                                                     
{                                                                     
 8006480:	b8 20 58 00 	mv r11,r1                                      
   *  Otherwise, we have to block.                                    
   *  If locked for reading and no waiters, then OK to read.          
   *  If any thread is waiting, then we wait.                         
   */                                                                 
                                                                      
  _ISR_Disable( level );                                              
 8006484:	90 00 08 00 	rcsr r1,IE                                     
 8006488:	34 02 ff fe 	mvi r2,-2                                      
 800648c:	a0 22 10 00 	and r2,r1,r2                                   
 8006490:	d0 02 00 00 	wcsr IE,r2                                     
    if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){          
 8006494:	29 62 00 44 	lw r2,(r11+68)                                 
 8006498:	44 40 00 2f 	be r2,r0,8006554 <_CORE_RWLock_Release+0xf0>   
      _ISR_Enable( level );                                           
      executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;          
      return CORE_RWLOCK_SUCCESSFUL;                                  
    }                                                                 
    if ( the_rwlock->current_state == CORE_RWLOCK_LOCKED_FOR_READING ) {
 800649c:	34 04 00 01 	mvi r4,1                                       
 80064a0:	44 44 00 22 	be r2,r4,8006528 <_CORE_RWLock_Release+0xc4>   
          return CORE_RWLOCK_SUCCESSFUL;                              
        }                                                             
    }                                                                 
                                                                      
    /* CORE_RWLOCK_LOCKED_FOR_WRITING or READING with readers */      
    executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;             
 80064a4:	58 60 00 34 	sw (r3+52),r0                                  
                                                                      
    /*                                                                
     * Implicitly transition to "unlocked" and find another thread interested
     * in obtaining this rwlock.                                      
     */                                                               
    the_rwlock->current_state = CORE_RWLOCK_UNLOCKED;                 
 80064a8:	59 60 00 44 	sw (r11+68),r0                                 
  _ISR_Enable( level );                                               
 80064ac:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
  next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue );            
 80064b0:	b9 60 08 00 	mv r1,r11                                      
 80064b4:	f8 00 07 e9 	calli 8008458 <_Thread_queue_Dequeue>          
                                                                      
  if ( next ) {                                                       
 80064b8:	44 20 00 16 	be r1,r0,8006510 <_CORE_RWLock_Release+0xac>   
    if ( next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) {
 80064bc:	28 22 00 30 	lw r2,(r1+48)                                  
 80064c0:	34 01 00 01 	mvi r1,1                                       
 80064c4:	44 41 00 2d 	be r2,r1,8006578 <_CORE_RWLock_Release+0x114>  
    }                                                                 
                                                                      
    /*                                                                
     * Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING                 
     */                                                               
    the_rwlock->number_of_readers += 1;                               
 80064c8:	29 62 00 48 	lw r2,(r11+72)                                 
    the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING;       
 80064cc:	59 61 00 44 	sw (r11+68),r1                                 
    /*                                                                
     * Now see if more readers can be let go.                         
     */                                                               
    while ( 1 ) {                                                     
      next = _Thread_queue_First( &the_rwlock->Wait_queue );          
      if ( !next ||                                                   
 80064d0:	34 0c 00 01 	mvi r12,1                                      
    }                                                                 
                                                                      
    /*                                                                
     * Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING                 
     */                                                               
    the_rwlock->number_of_readers += 1;                               
 80064d4:	34 41 00 01 	addi r1,r2,1                                   
 80064d8:	59 61 00 48 	sw (r11+72),r1                                 
 80064dc:	e0 00 00 07 	bi 80064f8 <_CORE_RWLock_Release+0x94>         
    /*                                                                
     * Now see if more readers can be let go.                         
     */                                                               
    while ( 1 ) {                                                     
      next = _Thread_queue_First( &the_rwlock->Wait_queue );          
      if ( !next ||                                                   
 80064e0:	28 63 00 30 	lw r3,(r3+48)                                  
 80064e4:	44 6c 00 0b 	be r3,r12,8006510 <_CORE_RWLock_Release+0xac>  <== NEVER TAKEN
           next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE )
        return CORE_RWLOCK_SUCCESSFUL;                                
      the_rwlock->number_of_readers += 1;                             
 80064e8:	29 63 00 48 	lw r3,(r11+72)                                 
 80064ec:	34 63 00 01 	addi r3,r3,1                                   
 80064f0:	59 63 00 48 	sw (r11+72),r3                                 
      _Thread_queue_Extract( &the_rwlock->Wait_queue, next );         
 80064f4:	f8 00 09 01 	calli 80088f8 <_Thread_queue_Extract>          
                                                                      
    /*                                                                
     * Now see if more readers can be let go.                         
     */                                                               
    while ( 1 ) {                                                     
      next = _Thread_queue_First( &the_rwlock->Wait_queue );          
 80064f8:	b9 60 08 00 	mv r1,r11                                      
 80064fc:	f8 00 09 52 	calli 8008a44 <_Thread_queue_First>            
 8006500:	b8 20 18 00 	mv r3,r1                                       
      if ( !next ||                                                   
           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 );         
 8006504:	b8 20 10 00 	mv r2,r1                                       
 8006508:	b9 60 08 00 	mv r1,r11                                      
    /*                                                                
     * Now see if more readers can be let go.                         
     */                                                               
    while ( 1 ) {                                                     
      next = _Thread_queue_First( &the_rwlock->Wait_queue );          
      if ( !next ||                                                   
 800650c:	5c 60 ff f5 	bne r3,r0,80064e0 <_CORE_RWLock_Release+0x7c>  
  }                                                                   
                                                                      
  /* indentation is to match _ISR_Disable at top */                   
                                                                      
  return CORE_RWLOCK_SUCCESSFUL;                                      
}                                                                     
 8006510:	34 01 00 00 	mvi r1,0                                       
 8006514:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006518:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800651c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8006520:	37 9c 00 0c 	addi sp,sp,12                                  
 8006524:	c3 a0 00 00 	ret                                            
      _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;                                  
 8006528:	29 62 00 48 	lw r2,(r11+72)                                 
 800652c:	34 42 ff ff 	addi r2,r2,-1                                  
 8006530:	59 62 00 48 	sw (r11+72),r2                                 
	if ( the_rwlock->number_of_readers != 0 ) {                          
 8006534:	44 40 ff dc 	be r2,r0,80064a4 <_CORE_RWLock_Release+0x40>   
          /* must be unlocked again */                                
	  _ISR_Enable( level );                                              
 8006538:	d0 01 00 00 	wcsr IE,r1                                     
  }                                                                   
                                                                      
  /* indentation is to match _ISR_Disable at top */                   
                                                                      
  return CORE_RWLOCK_SUCCESSFUL;                                      
}                                                                     
 800653c:	34 01 00 00 	mvi r1,0                                       
 8006540:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006544:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8006548:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800654c:	37 9c 00 0c 	addi sp,sp,12                                  
 8006550:	c3 a0 00 00 	ret                                            
   *  If any thread is waiting, then we wait.                         
   */                                                                 
                                                                      
  _ISR_Disable( level );                                              
    if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){          
      _ISR_Enable( level );                                           
 8006554:	d0 01 00 00 	wcsr IE,r1                                     
      executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;          
 8006558:	34 01 00 02 	mvi r1,2                                       
 800655c:	58 61 00 34 	sw (r3+52),r1                                  
  }                                                                   
                                                                      
  /* indentation is to match _ISR_Disable at top */                   
                                                                      
  return CORE_RWLOCK_SUCCESSFUL;                                      
}                                                                     
 8006560:	34 01 00 00 	mvi r1,0                                       
 8006564:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006568:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800656c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8006570:	37 9c 00 0c 	addi sp,sp,12                                  
 8006574:	c3 a0 00 00 	ret                                            
                                                                      
  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;     
 8006578:	34 01 00 02 	mvi r1,2                                       
 800657c:	59 61 00 44 	sw (r11+68),r1                                 
      return CORE_RWLOCK_SUCCESSFUL;                                  
 8006580:	e3 ff ff e4 	bi 8006510 <_CORE_RWLock_Release+0xac>         
                                                                      

08006584 <_CORE_RWLock_Timeout>: void _CORE_RWLock_Timeout( Objects_Id id, void *ignored ) {
 8006584:	37 9c ff f8 	addi sp,sp,-8                                  
 8006588:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control       *the_thread;                                   
  Objects_Locations     location;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 800658c:	37 82 00 08 	addi r2,sp,8                                   
 8006590:	f8 00 06 b2 	calli 8008058 <_Thread_Get>                    
  switch ( location ) {                                               
 8006594:	2b 82 00 08 	lw r2,(sp+8)                                   
 8006598:	5c 40 00 07 	bne r2,r0,80065b4 <_CORE_RWLock_Timeout+0x30>  <== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
      break;                                                          
    case OBJECTS_LOCAL:                                               
      _Thread_queue_Process_timeout( the_thread );                    
 800659c:	f8 00 09 68 	calli 8008b3c <_Thread_queue_Process_timeout>  
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )             
{                                                                     
  RTEMS_COMPILER_MEMORY_BARRIER();                                    
  _Thread_Dispatch_disable_level -= 1;                                
 80065a0:	78 01 08 01 	mvhi r1,0x801                                  
 80065a4:	38 21 98 68 	ori r1,r1,0x9868                               
 80065a8:	28 22 00 00 	lw r2,(r1+0)                                   
 80065ac:	34 42 ff ff 	addi r2,r2,-1                                  
 80065b0:	58 22 00 00 	sw (r1+0),r2                                   
      _Thread_Unnest_dispatch();                                      
      break;                                                          
  }                                                                   
}                                                                     
 80065b4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80065b8:	37 9c 00 08 	addi sp,sp,8                                   
 80065bc:	c3 a0 00 00 	ret                                            
                                                                      

0801539c <_CORE_message_queue_Broadcast>: Objects_Id id __attribute__((unused)), CORE_message_queue_API_mp_support_callout api_message_queue_mp_support __attribute__((unused)), #endif uint32_t *count ) {
 801539c:	37 9c ff e4 	addi sp,sp,-28                                 
 80153a0:	5b 8b 00 1c 	sw (sp+28),r11                                 
 80153a4:	5b 8c 00 18 	sw (sp+24),r12                                 
 80153a8:	5b 8d 00 14 	sw (sp+20),r13                                 
 80153ac:	5b 8e 00 10 	sw (sp+16),r14                                 
 80153b0:	5b 8f 00 0c 	sw (sp+12),r15                                 
 80153b4:	5b 90 00 08 	sw (sp+8),r16                                  
 80153b8:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control          *the_thread;                                
  uint32_t                 number_broadcasted;                        
  Thread_Wait_information *waitp;                                     
                                                                      
  if ( size > the_message_queue->maximum_message_size ) {             
 80153bc:	28 24 00 4c 	lw r4,(r1+76)                                  
    Objects_Id                                 id __attribute__((unused)),
    CORE_message_queue_API_mp_support_callout  api_message_queue_mp_support __attribute__((unused)),
  #endif                                                              
  uint32_t                                  *count                    
)                                                                     
{                                                                     
 80153c0:	b8 20 68 00 	mv r13,r1                                      
 80153c4:	b8 60 60 00 	mv r12,r3                                      
 80153c8:	b8 40 78 00 	mv r15,r2                                      
 80153cc:	b8 c0 80 00 	mv r16,r6                                      
  Thread_Control          *the_thread;                                
  uint32_t                 number_broadcasted;                        
  Thread_Wait_information *waitp;                                     
                                                                      
  if ( size > the_message_queue->maximum_message_size ) {             
    return CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE;                    
 80153d0:	34 01 00 01 	mvi r1,1                                       
{                                                                     
  Thread_Control          *the_thread;                                
  uint32_t                 number_broadcasted;                        
  Thread_Wait_information *waitp;                                     
                                                                      
  if ( size > the_message_queue->maximum_message_size ) {             
 80153d4:	54 64 00 06 	bgu r3,r4,80153ec <_CORE_message_queue_Broadcast+0x50><== NEVER TAKEN
   *  NOTE: This check is critical because threads can block on       
   *        send and receive and this ensures that we are broadcasting
   *        the message to threads waiting to receive -- not to send. 
   */                                                                 
                                                                      
  if ( the_message_queue->number_of_pending_messages != 0 ) {         
 80153d8:	29 a1 00 48 	lw r1,(r13+72)                                 
 80153dc:	34 0e 00 00 	mvi r14,0                                      
 80153e0:	44 20 00 11 	be r1,r0,8015424 <_CORE_message_queue_Broadcast+0x88>
    *count = 0;                                                       
 80153e4:	58 c0 00 00 	sw (r6+0),r0                                   
    return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;                      
 80153e8:	34 01 00 00 	mvi r1,0                                       
    #endif                                                            
                                                                      
  }                                                                   
  *count = number_broadcasted;                                        
  return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;                        
}                                                                     
 80153ec:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80153f0:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 80153f4:	2b 8c 00 18 	lw r12,(sp+24)                                 
 80153f8:	2b 8d 00 14 	lw r13,(sp+20)                                 
 80153fc:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8015400:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8015404:	2b 90 00 08 	lw r16,(sp+8)                                  
 8015408:	37 9c 00 1c 	addi sp,sp,28                                  
 801540c:	c3 a0 00 00 	ret                                            
  const void *source,                                                 
  void       *destination,                                            
  size_t      size                                                    
)                                                                     
{                                                                     
  memcpy(destination, source, size);                                  
 8015410:	29 61 00 2c 	lw r1,(r11+44)                                 
   */                                                                 
  number_broadcasted = 0;                                             
  while ((the_thread =                                                
          _Thread_queue_Dequeue(&the_message_queue->Wait_queue))) {   
    waitp = &the_thread->Wait;                                        
    number_broadcasted += 1;                                          
 8015414:	35 ce 00 01 	addi r14,r14,1                                 
 8015418:	f8 00 2b b9 	calli 80202fc <memcpy>                         
      buffer,                                                         
      waitp->return_argument_second.mutable_object,                   
      size                                                            
    );                                                                
                                                                      
    *(size_t *) the_thread->Wait.return_argument = size;              
 801541c:	29 61 00 28 	lw r1,(r11+40)                                 
 8015420:	58 2c 00 00 	sw (r1+0),r12                                  
  /*                                                                  
   *  There must be no pending messages if there is a thread waiting to
   *  receive a message.                                              
   */                                                                 
  number_broadcasted = 0;                                             
  while ((the_thread =                                                
 8015424:	b9 a0 08 00 	mv r1,r13                                      
 8015428:	f8 00 0d 80 	calli 8018a28 <_Thread_queue_Dequeue>          
 801542c:	b8 20 58 00 	mv r11,r1                                      
 8015430:	b9 e0 10 00 	mv r2,r15                                      
 8015434:	b9 80 18 00 	mv r3,r12                                      
 8015438:	5c 20 ff f6 	bne r1,r0,8015410 <_CORE_message_queue_Broadcast+0x74>
      if ( !_Objects_Is_local_id( the_thread->Object.id ) )           
        (*api_message_queue_mp_support) ( the_thread, id );           
    #endif                                                            
                                                                      
  }                                                                   
  *count = number_broadcasted;                                        
 801543c:	5a 0e 00 00 	sw (r16+0),r14                                 
  return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;                        
 8015440:	34 01 00 00 	mvi r1,0                                       
 8015444:	e3 ff ff ea 	bi 80153ec <_CORE_message_queue_Broadcast+0x50>
                                                                      

0800ed5c <_CORE_message_queue_Initialize>: CORE_message_queue_Control *the_message_queue, CORE_message_queue_Attributes *the_message_queue_attributes, uint32_t maximum_pending_messages, size_t maximum_message_size ) {
 800ed5c:	37 9c ff e4 	addi sp,sp,-28                                 
 800ed60:	5b 8b 00 1c 	sw (sp+28),r11                                 
 800ed64:	5b 8c 00 18 	sw (sp+24),r12                                 
 800ed68:	5b 8d 00 14 	sw (sp+20),r13                                 
 800ed6c:	5b 8e 00 10 	sw (sp+16),r14                                 
 800ed70:	5b 8f 00 0c 	sw (sp+12),r15                                 
 800ed74:	5b 90 00 08 	sw (sp+8),r16                                  
 800ed78:	5b 9d 00 04 	sw (sp+4),ra                                   
 800ed7c:	b8 20 58 00 	mv r11,r1                                      
  size_t message_buffering_required;                                  
  size_t allocated_message_size;                                      
                                                                      
  the_message_queue->maximum_pending_messages   = maximum_pending_messages;
  the_message_queue->number_of_pending_messages = 0;                  
 800ed80:	58 20 00 48 	sw (r1+72),r0                                  
  the_message_queue->maximum_message_size       = maximum_message_size;
 800ed84:	58 24 00 4c 	sw (r1+76),r4                                  
    CORE_message_queue_Control        *the_message_queue,             
    CORE_message_queue_Notify_Handler  the_handler,                   
    void                              *the_argument                   
  )                                                                   
  {                                                                   
    the_message_queue->notify_handler  = the_handler;                 
 800ed88:	58 20 00 60 	sw (r1+96),r0                                  
    the_message_queue->notify_argument = the_argument;                
 800ed8c:	58 20 00 64 	sw (r1+100),r0                                 
)                                                                     
{                                                                     
  size_t message_buffering_required;                                  
  size_t allocated_message_size;                                      
                                                                      
  the_message_queue->maximum_pending_messages   = maximum_pending_messages;
 800ed90:	59 63 00 44 	sw (r11+68),r3                                 
  /*                                                                  
   *  Round size up to multiple of a pointer for chain init and       
   *  check for overflow on adding overhead to each message.          
   */                                                                 
  allocated_message_size = maximum_message_size;                      
  if (allocated_message_size & (sizeof(uint32_t) - 1)) {              
 800ed94:	20 81 00 03 	andi r1,r4,0x3                                 
  CORE_message_queue_Control    *the_message_queue,                   
  CORE_message_queue_Attributes *the_message_queue_attributes,        
  uint32_t                       maximum_pending_messages,            
  size_t                         maximum_message_size                 
)                                                                     
{                                                                     
 800ed98:	b8 60 70 00 	mv r14,r3                                      
 800ed9c:	b8 40 80 00 	mv r16,r2                                      
  /*                                                                  
   *  Round size up to multiple of a pointer for chain init and       
   *  check for overflow on adding overhead to each message.          
   */                                                                 
  allocated_message_size = maximum_message_size;                      
  if (allocated_message_size & (sizeof(uint32_t) - 1)) {              
 800eda0:	b8 80 60 00 	mv r12,r4                                      
 800eda4:	44 20 00 06 	be r1,r0,800edbc <_CORE_message_queue_Initialize+0x60>
    allocated_message_size += sizeof(uint32_t);                       
 800eda8:	34 8c 00 04 	addi r12,r4,4                                  
    allocated_message_size &= ~(sizeof(uint32_t) - 1);                
 800edac:	34 01 ff fc 	mvi r1,-4                                      
 800edb0:	a1 81 60 00 	and r12,r12,r1                                 
  }                                                                   
                                                                      
  if (allocated_message_size < maximum_message_size)                  
    return false;                                                     
 800edb4:	34 0d 00 00 	mvi r13,0                                      
  if (allocated_message_size & (sizeof(uint32_t) - 1)) {              
    allocated_message_size += sizeof(uint32_t);                       
    allocated_message_size &= ~(sizeof(uint32_t) - 1);                
  }                                                                   
                                                                      
  if (allocated_message_size < maximum_message_size)                  
 800edb8:	54 8c 00 1c 	bgu r4,r12,800ee28 <_CORE_message_queue_Initialize+0xcc><== NEVER TAKEN
  /*                                                                  
   *  Calculate how much total memory is required for message buffering and
   *  check for overflow on the multiplication.                       
   */                                                                 
  message_buffering_required = (size_t) maximum_pending_messages *    
       (allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
 800edbc:	35 8f 00 14 	addi r15,r12,20                                
                                                                      
  /*                                                                  
   *  Calculate how much total memory is required for message buffering and
   *  check for overflow on the multiplication.                       
   */                                                                 
  message_buffering_required = (size_t) maximum_pending_messages *    
 800edc0:	b9 e0 08 00 	mv r1,r15                                      
 800edc4:	b9 c0 10 00 	mv r2,r14                                      
 800edc8:	f8 00 5e 50 	calli 8026708 <__mulsi3>                       
       (allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
                                                                      
  if (message_buffering_required < allocated_message_size)            
    return false;                                                     
 800edcc:	34 0d 00 00 	mvi r13,0                                      
   *  check for overflow on the multiplication.                       
   */                                                                 
  message_buffering_required = (size_t) maximum_pending_messages *    
       (allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
                                                                      
  if (message_buffering_required < allocated_message_size)            
 800edd0:	55 81 00 16 	bgu r12,r1,800ee28 <_CORE_message_queue_Initialize+0xcc><== NEVER TAKEN
                                                                      
  /*                                                                  
   *  Attempt to allocate the message memory                          
   */                                                                 
  the_message_queue->message_buffers = (CORE_message_queue_Buffer *)  
     _Workspace_Allocate( message_buffering_required );               
 800edd4:	f8 00 0e f7 	calli 80129b0 <_Workspace_Allocate>            
    return false;                                                     
                                                                      
  /*                                                                  
   *  Attempt to allocate the message memory                          
   */                                                                 
  the_message_queue->message_buffers = (CORE_message_queue_Buffer *)  
 800edd8:	59 61 00 5c 	sw (r11+92),r1                                 
     _Workspace_Allocate( message_buffering_required );               
 800eddc:	b8 20 18 00 	mv r3,r1                                       
                                                                      
  if (the_message_queue->message_buffers == 0)                        
 800ede0:	44 20 00 12 	be r1,r0,800ee28 <_CORE_message_queue_Initialize+0xcc>
                                                                      
  /*                                                                  
   *  Initialize the pool of inactive messages, pending messages,     
   *  and set of waiting threads.                                     
   */                                                                 
  _Chain_Initialize (                                                 
 800ede4:	b8 60 10 00 	mv r2,r3                                       
 800ede8:	35 61 00 68 	addi r1,r11,104                                
 800edec:	b9 c0 18 00 	mv r3,r14                                      
 800edf0:	b9 e0 20 00 	mv r4,r15                                      
 800edf4:	f8 00 1a 6a 	calli 801579c <_Chain_Initialize>              
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 );                        
 800edf8:	35 62 00 54 	addi r2,r11,84                                 
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 800edfc:	35 61 00 50 	addi r1,r11,80                                 
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800ee00:	59 61 00 58 	sw (r11+88),r1                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800ee04:	59 62 00 50 	sw (r11+80),r2                                 
  head->previous = NULL;                                              
 800ee08:	59 60 00 54 	sw (r11+84),r0                                 
    allocated_message_size + sizeof( CORE_message_queue_Buffer_control )
  );                                                                  
                                                                      
  _Chain_Initialize_empty( &the_message_queue->Pending_messages );    
                                                                      
  _Thread_queue_Initialize(                                           
 800ee0c:	2a 02 00 00 	lw r2,(r16+0)                                  
 800ee10:	b9 60 08 00 	mv r1,r11                                      
 800ee14:	34 03 00 80 	mvi r3,128                                     
 800ee18:	64 42 00 01 	cmpei r2,r2,1                                  
 800ee1c:	34 04 00 06 	mvi r4,6                                       
 800ee20:	f8 00 0b 89 	calli 8011c44 <_Thread_queue_Initialize>       
       THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO,
    STATES_WAITING_FOR_MESSAGE,                                       
    CORE_MESSAGE_QUEUE_STATUS_TIMEOUT                                 
  );                                                                  
                                                                      
  return true;                                                        
 800ee24:	34 0d 00 01 	mvi r13,1                                      
}                                                                     
 800ee28:	b9 a0 08 00 	mv r1,r13                                      
 800ee2c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ee30:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 800ee34:	2b 8c 00 18 	lw r12,(sp+24)                                 
 800ee38:	2b 8d 00 14 	lw r13,(sp+20)                                 
 800ee3c:	2b 8e 00 10 	lw r14,(sp+16)                                 
 800ee40:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 800ee44:	2b 90 00 08 	lw r16,(sp+8)                                  
 800ee48:	37 9c 00 1c 	addi sp,sp,28                                  
 800ee4c:	c3 a0 00 00 	ret                                            
                                                                      

08003a88 <_CORE_mutex_Seize>: Objects_Id _id, bool _wait, Watchdog_Interval _timeout, ISR_Level _level ) {
 8003a88:	37 9c ff e4 	addi sp,sp,-28                                 
 8003a8c:	5b 8b 00 18 	sw (sp+24),r11                                 
 8003a90:	5b 8c 00 14 	sw (sp+20),r12                                 
 8003a94:	5b 8d 00 10 	sw (sp+16),r13                                 
 8003a98:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8003a9c:	5b 8f 00 08 	sw (sp+8),r15                                  
 8003aa0:	5b 9d 00 04 	sw (sp+4),ra                                   
  _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 
 8003aa4:	78 0b 08 01 	mvhi r11,0x801                                 
 8003aa8:	39 6b 48 a8 	ori r11,r11,0x48a8                             
 8003aac:	29 66 00 00 	lw r6,(r11+0)                                  
  Objects_Id           _id,                                           
  bool                 _wait,                                         
  Watchdog_Interval    _timeout,                                      
  ISR_Level            _level                                         
)                                                                     
{                                                                     
 8003ab0:	5b 85 00 1c 	sw (sp+28),r5                                  
 8003ab4:	b8 20 60 00 	mv r12,r1                                      
 8003ab8:	b8 40 78 00 	mv r15,r2                                      
 8003abc:	b8 80 70 00 	mv r14,r4                                      
 8003ac0:	20 6d 00 ff 	andi r13,r3,0xff                               
  _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 
 8003ac4:	44 c0 00 02 	be r6,r0,8003acc <_CORE_mutex_Seize+0x44>      
 8003ac8:	5d a0 00 15 	bne r13,r0,8003b1c <_CORE_mutex_Seize+0x94>    <== ALWAYS TAKEN
 8003acc:	b9 80 08 00 	mv r1,r12                                      
 8003ad0:	37 82 00 1c 	addi r2,sp,28                                  
 8003ad4:	f8 00 18 ef 	calli 8009e90 <_CORE_mutex_Seize_interrupt_trylock>
 8003ad8:	44 20 00 09 	be r1,r0,8003afc <_CORE_mutex_Seize+0x74>      
 8003adc:	5d a0 00 19 	bne r13,r0,8003b40 <_CORE_mutex_Seize+0xb8>    
 8003ae0:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8003ae4:	d0 01 00 00 	wcsr IE,r1                                     
 8003ae8:	78 01 08 01 	mvhi r1,0x801                                  
 8003aec:	38 21 4d 78 	ori r1,r1,0x4d78                               
 8003af0:	28 21 00 0c 	lw r1,(r1+12)                                  
 8003af4:	34 02 00 01 	mvi r2,1                                       
 8003af8:	58 22 00 34 	sw (r1+52),r2                                  
}                                                                     
 8003afc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003b00:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003b04:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003b08:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003b0c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8003b10:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003b14:	37 9c 00 1c 	addi sp,sp,28                                  
 8003b18:	c3 a0 00 00 	ret                                            
  bool                 _wait,                                         
  Watchdog_Interval    _timeout,                                      
  ISR_Level            _level                                         
)                                                                     
{                                                                     
  _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 
 8003b1c:	78 01 08 01 	mvhi r1,0x801                                  
 8003b20:	38 21 4a 20 	ori r1,r1,0x4a20                               
 8003b24:	28 21 00 00 	lw r1,(r1+0)                                   
 8003b28:	34 02 00 01 	mvi r2,1                                       
 8003b2c:	50 41 ff e8 	bgeu r2,r1,8003acc <_CORE_mutex_Seize+0x44>    
 8003b30:	34 01 00 00 	mvi r1,0                                       
 8003b34:	34 02 00 00 	mvi r2,0                                       
 8003b38:	34 03 00 12 	mvi r3,18                                      
 8003b3c:	f8 00 02 32 	calli 8004404 <_Internal_error_Occurred>       
 8003b40:	78 01 08 01 	mvhi r1,0x801                                  
 8003b44:	29 62 00 00 	lw r2,(r11+0)                                  
 8003b48:	38 21 4d 78 	ori r1,r1,0x4d78                               
 8003b4c:	28 21 00 0c 	lw r1,(r1+12)                                  
                                                                      
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;
 8003b50:	34 03 00 01 	mvi r3,1                                       
 8003b54:	59 83 00 30 	sw (r12+48),r3                                 
 8003b58:	34 42 00 01 	addi r2,r2,1                                   
 8003b5c:	58 2c 00 44 	sw (r1+68),r12                                 
 8003b60:	58 2f 00 20 	sw (r1+32),r15                                 
 8003b64:	59 62 00 00 	sw (r11+0),r2                                  
 8003b68:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8003b6c:	d0 01 00 00 	wcsr IE,r1                                     
 8003b70:	b9 80 08 00 	mv r1,r12                                      
 8003b74:	b9 c0 10 00 	mv r2,r14                                      
 8003b78:	fb ff ff a3 	calli 8003a04 <_CORE_mutex_Seize_interrupt_blocking>
}                                                                     
 8003b7c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003b80:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003b84:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003b88:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003b8c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8003b90:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003b94:	37 9c 00 1c 	addi sp,sp,28                                  
 8003b98:	c3 a0 00 00 	ret                                            
                                                                      

08003d08 <_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 ) {
 8003d08:	37 9c ff f8 	addi sp,sp,-8                                  
 8003d0c:	5b 8b 00 08 	sw (sp+8),r11                                  
 8003d10:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003d14:	b8 20 58 00 	mv r11,r1                                      
  ISR_Level       level;                                              
  CORE_semaphore_Status status;                                       
                                                                      
  status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;                          
                                                                      
  if ( (the_thread = _Thread_queue_Dequeue(&the_semaphore->Wait_queue)) ) {
 8003d18:	f8 00 07 fa 	calli 8005d00 <_Thread_queue_Dequeue>          
{                                                                     
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  CORE_semaphore_Status status;                                       
                                                                      
  status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;                          
 8003d1c:	34 02 00 00 	mvi r2,0                                       
                                                                      
  if ( (the_thread = _Thread_queue_Dequeue(&the_semaphore->Wait_queue)) ) {
 8003d20:	44 20 00 06 	be r1,r0,8003d38 <_CORE_semaphore_Surrender+0x30>
        status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;               
    _ISR_Enable( level );                                             
  }                                                                   
                                                                      
  return status;                                                      
}                                                                     
 8003d24:	b8 40 08 00 	mv r1,r2                                       
 8003d28:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003d2c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8003d30:	37 9c 00 08 	addi sp,sp,8                                   
 8003d34:	c3 a0 00 00 	ret                                            
    if ( !_Objects_Is_local_id( the_thread->Object.id ) )             
      (*api_semaphore_mp_support) ( the_thread, id );                 
#endif                                                                
                                                                      
  } else {                                                            
    _ISR_Disable( level );                                            
 8003d38:	90 00 08 00 	rcsr r1,IE                                     
 8003d3c:	34 02 ff fe 	mvi r2,-2                                      
 8003d40:	a0 22 10 00 	and r2,r1,r2                                   
 8003d44:	d0 02 00 00 	wcsr IE,r2                                     
      if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
 8003d48:	29 63 00 48 	lw r3,(r11+72)                                 
 8003d4c:	29 64 00 40 	lw r4,(r11+64)                                 
        the_semaphore->count += 1;                                    
      else                                                            
        status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;               
 8003d50:	34 02 00 04 	mvi r2,4                                       
      (*api_semaphore_mp_support) ( the_thread, id );                 
#endif                                                                
                                                                      
  } else {                                                            
    _ISR_Disable( level );                                            
      if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
 8003d54:	50 64 00 04 	bgeu r3,r4,8003d64 <_CORE_semaphore_Surrender+0x5c><== NEVER TAKEN
        the_semaphore->count += 1;                                    
 8003d58:	34 63 00 01 	addi r3,r3,1                                   
 8003d5c:	59 63 00 48 	sw (r11+72),r3                                 
{                                                                     
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  CORE_semaphore_Status status;                                       
                                                                      
  status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;                          
 8003d60:	34 02 00 00 	mvi r2,0                                       
    _ISR_Disable( level );                                            
      if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
        the_semaphore->count += 1;                                    
      else                                                            
        status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;               
    _ISR_Enable( level );                                             
 8003d64:	d0 01 00 00 	wcsr IE,r1                                     
  }                                                                   
                                                                      
  return status;                                                      
}                                                                     
 8003d68:	b8 40 08 00 	mv r1,r2                                       
 8003d6c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003d70:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8003d74:	37 9c 00 08 	addi sp,sp,8                                   
 8003d78:	c3 a0 00 00 	ret                                            
                                                                      

08009df4 <_Chain_Initialize>: Chain_Control *the_chain, void *starting_address, size_t number_nodes, size_t node_size ) {
 8009df4:	37 9c ff f0 	addi sp,sp,-16                                 
 8009df8:	5b 8b 00 10 	sw (sp+16),r11                                 
 8009dfc:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8009e00:	5b 8d 00 08 	sw (sp+8),r13                                  
 8009e04:	5b 9d 00 04 	sw (sp+4),ra                                   
  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;                                              
 8009e08:	58 20 00 04 	sw (r1+4),r0                                   
  Chain_Control *the_chain,                                           
  void           *starting_address,                                   
  size_t         number_nodes,                                        
  size_t         node_size                                            
)                                                                     
{                                                                     
 8009e0c:	b8 20 58 00 	mv r11,r1                                      
 8009e10:	b8 40 60 00 	mv r12,r2                                      
  size_t count = number_nodes;                                        
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 8009e14:	34 2d 00 04 	addi r13,r1,4                                  
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
                                                                      
  while ( count-- ) {                                                 
 8009e18:	44 60 00 10 	be r3,r0,8009e58 <_Chain_Initialize+0x64>      <== NEVER TAKEN
 8009e1c:	34 63 ff ff 	addi r3,r3,-1                                  
 8009e20:	b8 60 10 00 	mv r2,r3                                       
{                                                                     
  size_t count = number_nodes;                                        
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
 8009e24:	b9 80 28 00 	mv r5,r12                                      
)                                                                     
{                                                                     
  size_t count = number_nodes;                                        
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *current = head;                                         
 8009e28:	b9 60 30 00 	mv r6,r11                                      
 8009e2c:	e0 00 00 04 	bi 8009e3c <_Chain_Initialize+0x48>            
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
                                                                      
  while ( count-- ) {                                                 
 8009e30:	b8 a0 30 00 	mv r6,r5                                       
 8009e34:	34 63 ff ff 	addi r3,r3,-1                                  
    current->next  = next;                                            
    next->previous = current;                                         
    current        = next;                                            
    next           = (Chain_Node *)                                   
 8009e38:	b8 e0 28 00 	mv r5,r7                                       
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
                                                                      
  while ( count-- ) {                                                 
    current->next  = next;                                            
 8009e3c:	58 c5 00 00 	sw (r6+0),r5                                   
    next->previous = current;                                         
 8009e40:	58 a6 00 04 	sw (r5+4),r6                                   
 *    node_size        - size of node in bytes                        
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _Chain_Initialize(                                               
 8009e44:	b4 a4 38 00 	add r7,r5,r4                                   
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
                                                                      
  while ( count-- ) {                                                 
 8009e48:	5c 60 ff fa 	bne r3,r0,8009e30 <_Chain_Initialize+0x3c>     
 *    node_size        - size of node in bytes                        
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _Chain_Initialize(                                               
 8009e4c:	b8 80 08 00 	mv r1,r4                                       
 8009e50:	f8 00 21 05 	calli 8012264 <__mulsi3>                       
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
                                                                      
  while ( count-- ) {                                                 
 8009e54:	b5 81 08 00 	add r1,r12,r1                                  
    current        = next;                                            
    next           = (Chain_Node *)                                   
                        _Addresses_Add_offset( (void *) next, node_size );
  }                                                                   
                                                                      
  current->next = tail;                                               
 8009e58:	58 2d 00 00 	sw (r1+0),r13                                  
  tail->previous = current;                                           
 8009e5c:	59 61 00 08 	sw (r11+8),r1                                  
}                                                                     
 8009e60:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009e64:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8009e68:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8009e6c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8009e70:	37 9c 00 10 	addi sp,sp,16                                  
 8009e74:	c3 a0 00 00 	ret                                            
                                                                      

0800df28 <_Event_Seize>: rtems_event_set event_in, rtems_option option_set, rtems_interval ticks, rtems_event_set *event_out ) {
 800df28:	37 9c ff f4 	addi sp,sp,-12                                 
 800df2c:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800df30:	5b 8c 00 08 	sw (sp+8),r12                                  
 800df34:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_event_set                   pending_events;                   
  ISR_Level                         level;                            
  RTEMS_API_Control                *api;                              
  Thread_blocking_operation_States  sync_state;                       
                                                                      
  executing = _Thread_Executing;                                      
 800df38:	78 05 08 01 	mvhi r5,0x801                                  
 800df3c:	38 a5 ad f0 	ori r5,r5,0xadf0                               
 800df40:	28 ab 00 0c 	lw r11,(r5+12)                                 
  executing->Wait.return_code = RTEMS_SUCCESSFUL;                     
 800df44:	59 60 00 34 	sw (r11+52),r0                                 
                                                                      
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
 800df48:	29 67 01 1c 	lw r7,(r11+284)                                
                                                                      
  _ISR_Disable( level );                                              
 800df4c:	90 00 30 00 	rcsr r6,IE                                     
 800df50:	34 05 ff fe 	mvi r5,-2                                      
 800df54:	a0 c5 28 00 	and r5,r6,r5                                   
 800df58:	d0 05 00 00 	wcsr IE,r5                                     
  pending_events = api->pending_events;                               
 800df5c:	28 e8 00 00 	lw r8,(r7+0)                                   
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get(                 
  rtems_event_set the_event_set,                                      
  rtems_event_set the_event_condition                                 
)                                                                     
{                                                                     
   return ( the_event_set & the_event_condition );                    
 800df60:	a0 28 28 00 	and r5,r1,r8                                   
  seized_events  = _Event_sets_Get( pending_events, event_in );       
                                                                      
  if ( !_Event_sets_Is_empty( seized_events ) &&                      
 800df64:	44 a0 00 04 	be r5,r0,800df74 <_Event_Seize+0x4c>           
 800df68:	44 25 00 29 	be r1,r5,800e00c <_Event_Seize+0xe4>           
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Options_Is_any (                           
  rtems_option option_set                                             
)                                                                     
{                                                                     
   return (option_set & RTEMS_EVENT_ANY) ? true : false;              
 800df6c:	20 49 00 02 	andi r9,r2,0x2                                 
       (seized_events == event_in || _Options_Is_any( option_set )) ) {
 800df70:	5d 20 00 27 	bne r9,r0,800e00c <_Event_Seize+0xe4>          
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Options_Is_no_wait (                       
  rtems_option option_set                                             
)                                                                     
{                                                                     
   return (option_set & RTEMS_NO_WAIT) ? true : false;                
 800df74:	20 47 00 01 	andi r7,r2,0x1                                 
    _ISR_Enable( level );                                             
    *event_out = seized_events;                                       
    return;                                                           
  }                                                                   
                                                                      
  if ( _Options_Is_no_wait( option_set ) ) {                          
 800df78:	5c e0 00 1c 	bne r7,r0,800dfe8 <_Event_Seize+0xc0>          
   */                                                                 
  executing->Wait.option            = (uint32_t) option_set;          
  executing->Wait.count             = (uint32_t) event_in;            
  executing->Wait.return_argument   = event_out;                      
                                                                      
  _Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;     
 800df7c:	78 0c 08 01 	mvhi r12,0x801                                 
 800df80:	39 8c b2 e8 	ori r12,r12,0xb2e8                             
   *                                                                  
   *  NOTE: Since interrupts are disabled, this isn't that much of an 
   *        issue but better safe than sorry.                         
   */                                                                 
  executing->Wait.option            = (uint32_t) option_set;          
  executing->Wait.count             = (uint32_t) event_in;            
 800df84:	59 61 00 24 	sw (r11+36),r1                                 
  executing->Wait.return_argument   = event_out;                      
                                                                      
  _Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;     
 800df88:	34 01 00 01 	mvi r1,1                                       
   *  set properly when we are marked as in the event critical section.
   *                                                                  
   *  NOTE: Since interrupts are disabled, this isn't that much of an 
   *        issue but better safe than sorry.                         
   */                                                                 
  executing->Wait.option            = (uint32_t) option_set;          
 800df8c:	59 62 00 30 	sw (r11+48),r2                                 
  executing->Wait.count             = (uint32_t) event_in;            
  executing->Wait.return_argument   = event_out;                      
 800df90:	59 64 00 28 	sw (r11+40),r4                                 
                                                                      
  _Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;     
 800df94:	59 81 00 00 	sw (r12+0),r1                                  
                                                                      
  _ISR_Enable( level );                                               
 800df98:	d0 06 00 00 	wcsr IE,r6                                     
                                                                      
  if ( ticks ) {                                                      
 800df9c:	5c 60 00 2c 	bne r3,r0,800e04c <_Event_Seize+0x124>         
      NULL                                                            
    );                                                                
    _Watchdog_Insert_ticks( &executing->Timer, ticks );               
  }                                                                   
                                                                      
  _Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );           
 800dfa0:	b9 60 08 00 	mv r1,r11                                      
 800dfa4:	34 02 01 00 	mvi r2,256                                     
 800dfa8:	fb ff e5 d4 	calli 80076f8 <_Thread_Set_state>              
                                                                      
  _ISR_Disable( level );                                              
 800dfac:	90 00 18 00 	rcsr r3,IE                                     
 800dfb0:	34 01 ff fe 	mvi r1,-2                                      
 800dfb4:	a0 61 08 00 	and r1,r3,r1                                   
 800dfb8:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
  sync_state = _Event_Sync_state;                                     
 800dfbc:	29 81 00 00 	lw r1,(r12+0)                                  
  _Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;         
  if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {   
 800dfc0:	34 02 00 01 	mvi r2,1                                       
  _Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );           
                                                                      
  _ISR_Disable( level );                                              
                                                                      
  sync_state = _Event_Sync_state;                                     
  _Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;         
 800dfc4:	59 80 00 00 	sw (r12+0),r0                                  
  if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {   
 800dfc8:	44 22 00 1b 	be r1,r2,800e034 <_Event_Seize+0x10c>          <== ALWAYS TAKEN
   *  An interrupt completed the thread's blocking request.           
   *  The blocking thread was satisfied by an ISR or timed out.       
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  _Thread_blocking_operation_Cancel( sync_state, executing, level );  
 800dfcc:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800dfd0:	f8 00 05 f6 	calli 800f7a8 <_Thread_blocking_operation_Cancel><== NOT EXECUTED
}                                                                     
 800dfd4:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800dfd8:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 800dfdc:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 800dfe0:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 800dfe4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    *event_out = seized_events;                                       
    return;                                                           
  }                                                                   
                                                                      
  if ( _Options_Is_no_wait( option_set ) ) {                          
    _ISR_Enable( level );                                             
 800dfe8:	d0 06 00 00 	wcsr IE,r6                                     
    executing->Wait.return_code = RTEMS_UNSATISFIED;                  
 800dfec:	34 01 00 0d 	mvi r1,13                                      
 800dff0:	59 61 00 34 	sw (r11+52),r1                                 
    *event_out = seized_events;                                       
 800dff4:	58 85 00 00 	sw (r4+0),r5                                   
   *  The blocking thread was satisfied by an ISR or timed out.       
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  _Thread_blocking_operation_Cancel( sync_state, executing, level );  
}                                                                     
 800dff8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800dffc:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800e000:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800e004:	37 9c 00 0c 	addi sp,sp,12                                  
 800e008:	c3 a0 00 00 	ret                                            
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) );                            
 800e00c:	a4 a0 08 00 	not r1,r5                                      
 800e010:	a0 28 40 00 	and r8,r1,r8                                   
  pending_events = api->pending_events;                               
  seized_events  = _Event_sets_Get( pending_events, event_in );       
                                                                      
  if ( !_Event_sets_Is_empty( seized_events ) &&                      
       (seized_events == event_in || _Options_Is_any( option_set )) ) {
    api->pending_events =                                             
 800e014:	58 e8 00 00 	sw (r7+0),r8                                   
      _Event_sets_Clear( pending_events, seized_events );             
    _ISR_Enable( level );                                             
 800e018:	d0 06 00 00 	wcsr IE,r6                                     
    *event_out = seized_events;                                       
 800e01c:	58 85 00 00 	sw (r4+0),r5                                   
   *  The blocking thread was satisfied by an ISR or timed out.       
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  _Thread_blocking_operation_Cancel( sync_state, executing, level );  
}                                                                     
 800e020:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800e024:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800e028:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800e02c:	37 9c 00 0c 	addi sp,sp,12                                  
 800e030:	c3 a0 00 00 	ret                                            
  _ISR_Disable( level );                                              
                                                                      
  sync_state = _Event_Sync_state;                                     
  _Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;         
  if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {   
    _ISR_Enable( level );                                             
 800e034:	d0 03 00 00 	wcsr IE,r3                                     
   *  The blocking thread was satisfied by an ISR or timed out.       
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  _Thread_blocking_operation_Cancel( sync_state, executing, level );  
}                                                                     
 800e038:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800e03c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800e040:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800e044:	37 9c 00 0c 	addi sp,sp,12                                  
 800e048:	c3 a0 00 00 	ret                                            
  _Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;     
                                                                      
  _ISR_Enable( level );                                               
                                                                      
  if ( ticks ) {                                                      
    _Watchdog_Initialize(                                             
 800e04c:	29 62 00 08 	lw r2,(r11+8)                                  
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
 800e050:	78 01 08 00 	mvhi r1,0x800                                  
 800e054:	38 21 e2 58 	ori r1,r1,0xe258                               
 800e058:	59 61 00 64 	sw (r11+100),r1                                
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 800e05c:	78 01 08 01 	mvhi r1,0x801                                  
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
  the_watchdog->id        = id;                                       
 800e060:	59 62 00 68 	sw (r11+104),r2                                
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 800e064:	59 60 00 50 	sw (r11+80),r0                                 
  the_watchdog->routine   = routine;                                  
  the_watchdog->id        = id;                                       
  the_watchdog->user_data = user_data;                                
 800e068:	59 60 00 6c 	sw (r11+108),r0                                
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 800e06c:	59 63 00 54 	sw (r11+84),r3                                 
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 800e070:	38 21 aa 00 	ori r1,r1,0xaa00                               
 800e074:	35 62 00 48 	addi r2,r11,72                                 
 800e078:	fb ff e7 5a 	calli 8007de0 <_Watchdog_Insert>               
 800e07c:	e3 ff ff c9 	bi 800dfa0 <_Event_Seize+0x78>                 
                                                                      

0800e0f4 <_Event_Surrender>: */ void _Event_Surrender( Thread_Control *the_thread ) {
 800e0f4:	37 9c ff f8 	addi sp,sp,-8                                  
 800e0f8:	5b 8b 00 08 	sw (sp+8),r11                                  
 800e0fc:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_event_set     event_condition;                                
  rtems_event_set     seized_events;                                  
  rtems_option        option_set;                                     
  RTEMS_API_Control  *api;                                            
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_RTEMS ];               
 800e100:	28 25 01 1c 	lw r5,(r1+284)                                 
                                                                      
  option_set = (rtems_option) the_thread->Wait.option;                
 800e104:	28 28 00 30 	lw r8,(r1+48)                                  
 */                                                                   
                                                                      
void _Event_Surrender(                                                
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
 800e108:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_RTEMS ];               
                                                                      
  option_set = (rtems_option) the_thread->Wait.option;                
                                                                      
  _ISR_Disable( level );                                              
 800e10c:	90 00 08 00 	rcsr r1,IE                                     
 800e110:	34 07 ff fe 	mvi r7,-2                                      
 800e114:	a0 27 38 00 	and r7,r1,r7                                   
 800e118:	d0 07 00 00 	wcsr IE,r7                                     
  pending_events  = api->pending_events;                              
 800e11c:	28 a6 00 00 	lw r6,(r5+0)                                   
  event_condition = (rtems_event_set) the_thread->Wait.count;         
 800e120:	29 64 00 24 	lw r4,(r11+36)                                 
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get(                 
  rtems_event_set the_event_set,                                      
  rtems_event_set the_event_condition                                 
)                                                                     
{                                                                     
   return ( the_event_set & the_event_condition );                    
 800e124:	a0 86 10 00 	and r2,r4,r6                                   
  seized_events = _Event_sets_Get( pending_events, event_condition ); 
                                                                      
  /*                                                                  
   *  No events were seized in this operation                         
   */                                                                 
  if ( _Event_sets_Is_empty( seized_events ) ) {                      
 800e128:	44 40 00 27 	be r2,r0,800e1c4 <_Event_Surrender+0xd0>       
                                                                      
  /*                                                                  
   *  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() &&                                       
 800e12c:	78 03 08 01 	mvhi r3,0x801                                  
 800e130:	38 63 ad f0 	ori r3,r3,0xadf0                               
 800e134:	28 69 00 08 	lw r9,(r3+8)                                   
 800e138:	45 20 00 03 	be r9,r0,800e144 <_Event_Surrender+0x50>       
 800e13c:	28 63 00 0c 	lw r3,(r3+12)                                  
 800e140:	45 63 00 31 	be r11,r3,800e204 <_Event_Surrender+0x110>     <== NEVER TAKEN
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_event (              
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_FOR_EVENT);                    
 800e144:	29 63 00 10 	lw r3,(r11+16)                                 
 800e148:	20 63 01 00 	andi r3,r3,0x100                               
  }                                                                   
                                                                      
  /*                                                                  
   *  Otherwise, this is a normal send to another thread              
   */                                                                 
  if ( _States_Is_waiting_for_event( the_thread->current_state ) ) {  
 800e14c:	44 60 00 19 	be r3,r0,800e1b0 <_Event_Surrender+0xbc>       
    if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
 800e150:	44 82 00 03 	be r4,r2,800e15c <_Event_Surrender+0x68>       
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Options_Is_any (                           
  rtems_option option_set                                             
)                                                                     
{                                                                     
   return (option_set & RTEMS_EVENT_ANY) ? true : false;              
 800e154:	21 08 00 02 	andi r8,r8,0x2                                 
 800e158:	45 00 00 16 	be r8,r0,800e1b0 <_Event_Surrender+0xbc>       <== NEVER TAKEN
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) );                            
 800e15c:	a4 40 18 00 	not r3,r2                                      
      api->pending_events = _Event_sets_Clear( pending_events, seized_events );
      the_thread->Wait.count = 0;                                     
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
 800e160:	29 64 00 28 	lw r4,(r11+40)                                 
 800e164:	a0 66 30 00 	and r6,r3,r6                                   
  /*                                                                  
   *  Otherwise, this is a normal send to another thread              
   */                                                                 
  if ( _States_Is_waiting_for_event( the_thread->current_state ) ) {  
    if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
      api->pending_events = _Event_sets_Clear( pending_events, seized_events );
 800e168:	58 a6 00 00 	sw (r5+0),r6                                   
      the_thread->Wait.count = 0;                                     
 800e16c:	59 60 00 24 	sw (r11+36),r0                                 
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
 800e170:	58 82 00 00 	sw (r4+0),r2                                   
                                                                      
      _ISR_Flash( level );                                            
 800e174:	d0 01 00 00 	wcsr IE,r1                                     
 800e178:	d0 07 00 00 	wcsr IE,r7                                     
                                                                      
      if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {             
 800e17c:	29 63 00 50 	lw r3,(r11+80)                                 
 800e180:	34 02 00 02 	mvi r2,2                                       
 800e184:	44 62 00 15 	be r3,r2,800e1d8 <_Event_Surrender+0xe4>       
        _ISR_Enable( level );                                         
 800e188:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
 800e18c:	78 01 08 01 	mvhi r1,0x801                                  
 800e190:	38 21 8a ac 	ori r1,r1,0x8aac                               
 800e194:	28 22 00 00 	lw r2,(r1+0)                                   
 800e198:	b9 60 08 00 	mv r1,r11                                      
 800e19c:	f8 00 05 9b 	calli 800f808 <_Thread_Clear_state>            
      }                                                               
      return;                                                         
    }                                                                 
  }                                                                   
  _ISR_Enable( level );                                               
}                                                                     
 800e1a0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800e1a4:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800e1a8:	37 9c 00 08 	addi sp,sp,8                                   
 800e1ac:	c3 a0 00 00 	ret                                            
        _Thread_Unblock( the_thread );                                
      }                                                               
      return;                                                         
    }                                                                 
  }                                                                   
  _ISR_Enable( level );                                               
 800e1b0:	d0 01 00 00 	wcsr IE,r1                                     
}                                                                     
 800e1b4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800e1b8:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800e1bc:	37 9c 00 08 	addi sp,sp,8                                   
 800e1c0:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  No events were seized in this operation                         
   */                                                                 
  if ( _Event_sets_Is_empty( seized_events ) ) {                      
    _ISR_Enable( level );                                             
 800e1c4:	d0 01 00 00 	wcsr IE,r1                                     
      }                                                               
      return;                                                         
    }                                                                 
  }                                                                   
  _ISR_Enable( level );                                               
}                                                                     
 800e1c8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800e1cc:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800e1d0:	37 9c 00 08 	addi sp,sp,8                                   
 800e1d4:	c3 a0 00 00 	ret                                            
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(                       
  Watchdog_Control *the_watchdog                                      
)                                                                     
{                                                                     
                                                                      
  the_watchdog->state = WATCHDOG_REMOVE_IT;                           
 800e1d8:	34 02 00 03 	mvi r2,3                                       
 800e1dc:	59 62 00 50 	sw (r11+80),r2                                 
      if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {             
        _ISR_Enable( level );                                         
        _Thread_Unblock( the_thread );                                
      } else {                                                        
        _Watchdog_Deactivate( &the_thread->Timer );                   
        _ISR_Enable( level );                                         
 800e1e0:	d0 01 00 00 	wcsr IE,r1                                     
        (void) _Watchdog_Remove( &the_thread->Timer );                
 800e1e4:	35 61 00 48 	addi r1,r11,72                                 
 800e1e8:	fb ff e7 67 	calli 8007f84 <_Watchdog_Remove>               
 800e1ec:	78 03 08 01 	mvhi r3,0x801                                  
 800e1f0:	38 63 8a ac 	ori r3,r3,0x8aac                               
 800e1f4:	28 62 00 00 	lw r2,(r3+0)                                   
 800e1f8:	b9 60 08 00 	mv r1,r11                                      
 800e1fc:	f8 00 05 83 	calli 800f808 <_Thread_Clear_state>            
 800e200:	e3 ff ff ed 	bi 800e1b4 <_Event_Surrender+0xc0>             
   *  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 ) &&                          
       ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||   
 800e204:	78 03 08 01 	mvhi r3,0x801                                  <== NOT EXECUTED
 800e208:	38 63 b2 e8 	ori r3,r3,0xb2e8                               <== NOT EXECUTED
 800e20c:	28 6a 00 00 	lw r10,(r3+0)                                  <== NOT EXECUTED
  /*                                                                  
   *  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 ) &&                          
 800e210:	34 09 00 02 	mvi r9,2                                       <== NOT EXECUTED
 800e214:	45 49 00 04 	be r10,r9,800e224 <_Event_Surrender+0x130>     <== NOT EXECUTED
       ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||   
        (_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
 800e218:	28 6a 00 00 	lw r10,(r3+0)                                  <== NOT EXECUTED
   *  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 ) &&                          
       ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||   
 800e21c:	34 09 00 01 	mvi r9,1                                       <== NOT EXECUTED
 800e220:	5d 49 ff c9 	bne r10,r9,800e144 <_Event_Surrender+0x50>     <== NOT EXECUTED
        (_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
    if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
 800e224:	44 82 00 03 	be r4,r2,800e230 <_Event_Surrender+0x13c>      <== NOT EXECUTED
 800e228:	21 08 00 02 	andi r8,r8,0x2                                 <== NOT EXECUTED
 800e22c:	45 00 00 09 	be r8,r0,800e250 <_Event_Surrender+0x15c>      <== NOT EXECUTED
 800e230:	a4 40 20 00 	not r4,r2                                      <== NOT EXECUTED
 800e234:	a0 86 30 00 	and r6,r4,r6                                   <== NOT EXECUTED
      api->pending_events = _Event_sets_Clear( pending_events,seized_events );
      the_thread->Wait.count = 0;                                     
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
 800e238:	29 64 00 28 	lw r4,(r11+40)                                 <== NOT EXECUTED
  if ( _ISR_Is_in_progress() &&                                       
       _Thread_Is_executing( the_thread ) &&                          
       ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||   
        (_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
    if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
      api->pending_events = _Event_sets_Clear( pending_events,seized_events );
 800e23c:	58 a6 00 00 	sw (r5+0),r6                                   <== NOT EXECUTED
      the_thread->Wait.count = 0;                                     
 800e240:	59 60 00 24 	sw (r11+36),r0                                 <== NOT EXECUTED
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
 800e244:	58 82 00 00 	sw (r4+0),r2                                   <== NOT EXECUTED
      _Event_Sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;        
 800e248:	34 02 00 03 	mvi r2,3                                       <== NOT EXECUTED
 800e24c:	58 62 00 00 	sw (r3+0),r2                                   <== NOT EXECUTED
    }                                                                 
    _ISR_Enable( level );                                             
 800e250:	d0 01 00 00 	wcsr IE,r1                                     <== NOT EXECUTED
    return;                                                           
 800e254:	e3 ff ff d8 	bi 800e1b4 <_Event_Surrender+0xc0>             <== NOT EXECUTED
                                                                      

0800e258 <_Event_Timeout>: void _Event_Timeout( Objects_Id id, void *ignored ) {
 800e258:	37 9c ff f8 	addi sp,sp,-8                                  
 800e25c:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control    *the_thread;                                      
  Objects_Locations  location;                                        
  ISR_Level          level;                                           
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 800e260:	37 82 00 08 	addi r2,sp,8                                   
 800e264:	fb ff e2 88 	calli 8006c84 <_Thread_Get>                    
  switch ( location ) {                                               
 800e268:	2b 82 00 08 	lw r2,(sp+8)                                   
 800e26c:	44 40 00 04 	be r2,r0,800e27c <_Event_Timeout+0x24>         <== ALWAYS TAKEN
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
}                                                                     
 800e270:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800e274:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 800e278:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
       *                                                              
       *  If it is not satisfied, then it is "nothing happened" and   
       *  this is the "timeout" transition.  After a request is satisfied,
       *  a timeout is not allowed to occur.                          
       */                                                             
      _ISR_Disable( level );                                          
 800e27c:	90 00 18 00 	rcsr r3,IE                                     
 800e280:	34 02 ff fe 	mvi r2,-2                                      
 800e284:	a0 62 10 00 	and r2,r3,r2                                   
 800e288:	d0 02 00 00 	wcsr IE,r2                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (                      
  const Thread_Control *the_thread                                    
)                                                                     
{                                                                     
  return ( the_thread == _Thread_Executing );                         
 800e28c:	78 02 08 01 	mvhi r2,0x801                                  
 800e290:	38 42 ad f0 	ori r2,r2,0xadf0                               
            return;                                                   
          }                                                           
        #endif                                                        
                                                                      
        the_thread->Wait.count = 0;                                   
        if ( _Thread_Is_executing( the_thread ) ) {                   
 800e294:	28 42 00 0c 	lw r2,(r2+12)                                  
            _ISR_Enable( level );                                     
            return;                                                   
          }                                                           
        #endif                                                        
                                                                      
        the_thread->Wait.count = 0;                                   
 800e298:	58 20 00 24 	sw (r1+36),r0                                  
        if ( _Thread_Is_executing( the_thread ) ) {                   
 800e29c:	44 22 00 10 	be r1,r2,800e2dc <_Event_Timeout+0x84>         <== NEVER TAKEN
          if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
            _Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;    
        }                                                             
                                                                      
        the_thread->Wait.return_code = RTEMS_TIMEOUT;                 
 800e2a0:	34 02 00 06 	mvi r2,6                                       
 800e2a4:	58 22 00 34 	sw (r1+52),r2                                  
      _ISR_Enable( level );                                           
 800e2a8:	d0 03 00 00 	wcsr IE,r3                                     
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
 800e2ac:	78 03 08 01 	mvhi r3,0x801                                  
 800e2b0:	38 63 8a ac 	ori r3,r3,0x8aac                               
 800e2b4:	28 62 00 00 	lw r2,(r3+0)                                   
 800e2b8:	f8 00 05 54 	calli 800f808 <_Thread_Clear_state>            
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )             
{                                                                     
  RTEMS_COMPILER_MEMORY_BARRIER();                                    
  _Thread_Dispatch_disable_level -= 1;                                
 800e2bc:	78 01 08 01 	mvhi r1,0x801                                  
 800e2c0:	38 21 a9 20 	ori r1,r1,0xa920                               
 800e2c4:	28 22 00 00 	lw r2,(r1+0)                                   
 800e2c8:	34 42 ff ff 	addi r2,r2,-1                                  
 800e2cc:	58 22 00 00 	sw (r1+0),r2                                   
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
}                                                                     
 800e2d0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800e2d4:	37 9c 00 08 	addi sp,sp,8                                   
 800e2d8:	c3 a0 00 00 	ret                                            
          }                                                           
        #endif                                                        
                                                                      
        the_thread->Wait.count = 0;                                   
        if ( _Thread_Is_executing( the_thread ) ) {                   
          if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
 800e2dc:	78 02 08 01 	mvhi r2,0x801                                  <== NOT EXECUTED
 800e2e0:	38 42 b2 e8 	ori r2,r2,0xb2e8                               <== NOT EXECUTED
 800e2e4:	28 45 00 00 	lw r5,(r2+0)                                   <== NOT EXECUTED
 800e2e8:	34 04 00 01 	mvi r4,1                                       <== NOT EXECUTED
 800e2ec:	5c a4 ff ed 	bne r5,r4,800e2a0 <_Event_Timeout+0x48>        <== NOT EXECUTED
            _Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;    
 800e2f0:	34 04 00 02 	mvi r4,2                                       <== NOT EXECUTED
 800e2f4:	58 44 00 00 	sw (r2+0),r4                                   <== NOT EXECUTED
 800e2f8:	e3 ff ff ea 	bi 800e2a0 <_Event_Timeout+0x48>               <== NOT EXECUTED
                                                                      

0800a090 <_Heap_Allocate_aligned_with_boundary>: Heap_Control *heap, uintptr_t alloc_size, uintptr_t alignment, uintptr_t boundary ) {
 800a090:	37 9c ff bc 	addi sp,sp,-68                                 
 800a094:	5b 8b 00 44 	sw (sp+68),r11                                 
 800a098:	5b 8c 00 40 	sw (sp+64),r12                                 
 800a09c:	5b 8d 00 3c 	sw (sp+60),r13                                 
 800a0a0:	5b 8e 00 38 	sw (sp+56),r14                                 
 800a0a4:	5b 8f 00 34 	sw (sp+52),r15                                 
 800a0a8:	5b 90 00 30 	sw (sp+48),r16                                 
 800a0ac:	5b 91 00 2c 	sw (sp+44),r17                                 
 800a0b0:	5b 92 00 28 	sw (sp+40),r18                                 
 800a0b4:	5b 93 00 24 	sw (sp+36),r19                                 
 800a0b8:	5b 94 00 20 	sw (sp+32),r20                                 
 800a0bc:	5b 95 00 1c 	sw (sp+28),r21                                 
 800a0c0:	5b 96 00 18 	sw (sp+24),r22                                 
 800a0c4:	5b 97 00 14 	sw (sp+20),r23                                 
 800a0c8:	5b 98 00 10 	sw (sp+16),r24                                 
 800a0cc:	5b 99 00 0c 	sw (sp+12),r25                                 
 800a0d0:	5b 9b 00 08 	sw (sp+8),fp                                   
 800a0d4:	5b 9d 00 04 	sw (sp+4),ra                                   
  Heap_Statistics *const stats = &heap->stats;                        
  uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
 800a0d8:	34 54 00 04 	addi r20,r2,4                                  
  Heap_Control *heap,                                                 
  uintptr_t alloc_size,                                               
  uintptr_t alignment,                                                
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
 800a0dc:	b8 20 78 00 	mv r15,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;                        
 800a0e0:	28 37 00 10 	lw r23,(r1+16)                                 
  Heap_Control *heap,                                                 
  uintptr_t alloc_size,                                               
  uintptr_t alignment,                                                
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
 800a0e4:	b8 40 70 00 	mv r14,r2                                      
 800a0e8:	b8 60 80 00 	mv r16,r3                                      
 800a0ec:	b8 80 90 00 	mv r18,r4                                      
  uint32_t search_count = 0;                                          
  bool search_again = false;                                          
                                                                      
  if ( block_size_floor < alloc_size ) {                              
    /* Integer overflow occured */                                    
    return NULL;                                                      
 800a0f0:	34 01 00 00 	mvi r1,0                                       
  Heap_Block *block = NULL;                                           
  uintptr_t alloc_begin = 0;                                          
  uint32_t search_count = 0;                                          
  bool search_again = false;                                          
                                                                      
  if ( block_size_floor < alloc_size ) {                              
 800a0f4:	54 54 00 5b 	bgu r2,r20,800a260 <_Heap_Allocate_aligned_with_boundary+0x1d0>
    /* Integer overflow occured */                                    
    return NULL;                                                      
  }                                                                   
                                                                      
  if ( boundary != 0 ) {                                              
 800a0f8:	5c 80 00 6f 	bne r4,r0,800a2b4 <_Heap_Allocate_aligned_with_boundary+0x224>
  if ( stats->max_search < search_count ) {                           
    stats->max_search = search_count;                                 
  }                                                                   
                                                                      
  return (void *) alloc_begin;                                        
}                                                                     
 800a0fc:	29 ec 00 08 	lw r12,(r15+8)                                 
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
 800a100:	34 01 00 00 	mvi r1,0                                       
 800a104:	45 ec 00 57 	be r15,r12,800a260 <_Heap_Allocate_aligned_with_boundary+0x1d0>
                                                                      
  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;                 
 800a108:	34 18 00 04 	mvi r24,4                                      
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
 800a10c:	34 11 00 01 	mvi r17,1                                      
    - 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;                
 800a110:	34 1b ff fe 	mvi fp,-2                                      
  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    
 800a114:	36 f9 00 07 	addi r25,r23,7                                 
    + HEAP_BLOCK_HEADER_SIZE + page_size - 1;                         
                                                                      
  uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;                 
 800a118:	cb 0e c0 00 	sub r24,r24,r14                                
      /*                                                              
       * 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 ) {                
 800a11c:	29 81 00 04 	lw r1,(r12+4)                                  
 800a120:	52 81 00 3b 	bgeu r20,r1,800a20c <_Heap_Allocate_aligned_with_boundary+0x17c>
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(             
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;                  
 800a124:	35 8b 00 08 	addi r11,r12,8                                 
        if ( alignment == 0 ) {                                       
 800a128:	46 00 00 3e 	be r16,r0,800a220 <_Heap_Allocate_aligned_with_boundary+0x190>
    - 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;                
 800a12c:	a0 3b 68 00 	and r13,r1,fp                                  
  if ( stats->max_search < search_count ) {                           
    stats->max_search = search_count;                                 
  }                                                                   
                                                                      
  return (void *) alloc_begin;                                        
}                                                                     
 800a130:	29 f5 00 14 	lw r21,(r15+20)                                
  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;               
 800a134:	b5 8d 68 00 	add r13,r12,r13                                
  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;                     
 800a138:	b7 0d 58 00 	add r11,r24,r13                                
  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;                         
 800a13c:	cb 35 18 00 	sub r3,r25,r21                                 
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800a140:	b9 60 08 00 	mv r1,r11                                      
 800a144:	ba 00 10 00 	mv r2,r16                                      
  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    
 800a148:	b4 6d 68 00 	add r13,r3,r13                                 
 800a14c:	f8 00 20 bb 	calli 8012438 <__umodsi3>                      
 800a150:	c9 61 58 00 	sub r11,r11,r1                                 
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(             
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;                  
 800a154:	35 96 00 08 	addi r22,r12,8                                 
  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 ) {                          
 800a158:	51 ab 00 05 	bgeu r13,r11,800a16c <_Heap_Allocate_aligned_with_boundary+0xdc>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800a15c:	b9 a0 08 00 	mv r1,r13                                      
 800a160:	ba 00 10 00 	mv r2,r16                                      
 800a164:	f8 00 20 b5 	calli 8012438 <__umodsi3>                      
 800a168:	c9 a1 58 00 	sub r11,r13,r1                                 
  }                                                                   
                                                                      
  alloc_end = alloc_begin + alloc_size;                               
                                                                      
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
 800a16c:	46 40 00 1c 	be r18,r0,800a1dc <_Heap_Allocate_aligned_with_boundary+0x14c>
  /* 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;                               
 800a170:	b5 6e 68 00 	add r13,r11,r14                                
 800a174:	b9 a0 08 00 	mv r1,r13                                      
 800a178:	ba 40 10 00 	mv r2,r18                                      
 800a17c:	f8 00 20 af 	calli 8012438 <__umodsi3>                      
 800a180:	c9 a1 28 00 	sub r5,r13,r1                                  
  /* 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 ) {
 800a184:	f5 a5 68 00 	cmpgu r13,r13,r5                               
 800a188:	f4 ab 08 00 	cmpgu r1,r5,r11                                
 800a18c:	a1 a1 68 00 	and r13,r13,r1                                 
 800a190:	45 a0 00 13 	be r13,r0,800a1dc <_Heap_Allocate_aligned_with_boundary+0x14c>
                                                                      
  alloc_end = alloc_begin + alloc_size;                               
                                                                      
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
    uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;  
 800a194:	b6 ce 98 00 	add r19,r22,r14                                
    uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
                                                                      
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
      if ( boundary_line < boundary_floor ) {                         
 800a198:	56 65 00 1d 	bgu r19,r5,800a20c <_Heap_Allocate_aligned_with_boundary+0x17c>
 800a19c:	e0 00 00 02 	bi 800a1a4 <_Heap_Allocate_aligned_with_boundary+0x114>
 800a1a0:	56 65 00 1b 	bgu r19,r5,800a20c <_Heap_Allocate_aligned_with_boundary+0x17c><== NEVER TAKEN
        return 0;                                                     
      }                                                               
      alloc_begin = boundary_line - alloc_size;                       
 800a1a4:	c8 ae 58 00 	sub r11,r5,r14                                 
 800a1a8:	ba 00 10 00 	mv r2,r16                                      
 800a1ac:	b9 60 08 00 	mv r1,r11                                      
 800a1b0:	f8 00 20 a2 	calli 8012438 <__umodsi3>                      
 800a1b4:	c9 61 58 00 	sub r11,r11,r1                                 
      alloc_begin = _Heap_Align_down( alloc_begin, alignment );       
      alloc_end = alloc_begin + alloc_size;                           
 800a1b8:	b5 6e 68 00 	add r13,r11,r14                                
 800a1bc:	b9 a0 08 00 	mv r1,r13                                      
 800a1c0:	ba 40 10 00 	mv r2,r18                                      
 800a1c4:	f8 00 20 9d 	calli 8012438 <__umodsi3>                      
 800a1c8:	c9 a1 28 00 	sub r5,r13,r1                                  
  /* 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 ) {
 800a1cc:	f5 a5 68 00 	cmpgu r13,r13,r5                               
 800a1d0:	f4 ab 08 00 	cmpgu r1,r5,r11                                
 800a1d4:	a1 a1 68 00 	and r13,r13,r1                                 
 800a1d8:	5d a0 ff f2 	bne r13,r0,800a1a0 <_Heap_Allocate_aligned_with_boundary+0x110>
      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 ) {                           
 800a1dc:	56 cb 00 0c 	bgu r22,r11,800a20c <_Heap_Allocate_aligned_with_boundary+0x17c>
 800a1e0:	34 01 ff f8 	mvi r1,-8                                      
 800a1e4:	c8 2c 68 00 	sub r13,r1,r12                                 
 800a1e8:	ba e0 10 00 	mv r2,r23                                      
 800a1ec:	b9 60 08 00 	mv r1,r11                                      
 800a1f0:	f8 00 20 92 	calli 8012438 <__umodsi3>                      
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
 800a1f4:	b5 ab 68 00 	add r13,r13,r11                                
    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;      
 800a1f8:	c9 a1 08 00 	sub r1,r13,r1                                  
                                                                      
    if ( free_size >= min_block_size || free_size == 0 ) {            
 800a1fc:	64 22 00 00 	cmpei r2,r1,0                                  
 800a200:	f0 35 a8 00 	cmpgeu r21,r1,r21                              
 800a204:	b8 55 08 00 	or r1,r2,r21                                   
 800a208:	5c 20 00 06 	bne r1,r0,800a220 <_Heap_Allocate_aligned_with_boundary+0x190>
                                                                      
      if ( alloc_begin != 0 ) {                                       
        break;                                                        
      }                                                               
                                                                      
      block = block->next;                                            
 800a20c:	29 8c 00 08 	lw r12,(r12+8)                                 
 800a210:	36 21 00 01 	addi r1,r17,1                                  
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
 800a214:	45 ec 00 26 	be r15,r12,800a2ac <_Heap_Allocate_aligned_with_boundary+0x21c>
 800a218:	b8 20 88 00 	mv r17,r1                                      
 800a21c:	e3 ff ff c0 	bi 800a11c <_Heap_Allocate_aligned_with_boundary+0x8c>
      }                                                               
                                                                      
      /* Statistics */                                                
      ++search_count;                                                 
                                                                      
      if ( alloc_begin != 0 ) {                                       
 800a220:	45 60 ff fb 	be r11,r0,800a20c <_Heap_Allocate_aligned_with_boundary+0x17c><== NEVER TAKEN
    search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
 800a224:	29 e3 00 48 	lw r3,(r15+72)                                 
    stats->searches += search_count;                                  
 800a228:	29 e2 00 4c 	lw r2,(r15+76)                                 
                                                                      
    block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
 800a22c:	b9 e0 08 00 	mv r1,r15                                      
    search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
 800a230:	34 63 00 01 	addi r3,r3,1                                   
    stats->searches += search_count;                                  
 800a234:	b4 51 10 00 	add r2,r2,r17                                  
    search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
 800a238:	59 e3 00 48 	sw (r15+72),r3                                 
    stats->searches += search_count;                                  
 800a23c:	59 e2 00 4c 	sw (r15+76),r2                                 
                                                                      
    block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
 800a240:	b9 60 18 00 	mv r3,r11                                      
 800a244:	b9 80 10 00 	mv r2,r12                                      
 800a248:	b9 c0 20 00 	mv r4,r14                                      
 800a24c:	fb ff e8 12 	calli 8004294 <_Heap_Block_allocate>           
 800a250:	b9 60 08 00 	mv r1,r11                                      
      boundary                                                        
    );                                                                
  }                                                                   
                                                                      
  /* Statistics */                                                    
  if ( stats->max_search < search_count ) {                           
 800a254:	29 e2 00 44 	lw r2,(r15+68)                                 
 800a258:	50 51 00 02 	bgeu r2,r17,800a260 <_Heap_Allocate_aligned_with_boundary+0x1d0>
    stats->max_search = search_count;                                 
 800a25c:	59 f1 00 44 	sw (r15+68),r17                                
  }                                                                   
                                                                      
  return (void *) alloc_begin;                                        
}                                                                     
 800a260:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a264:	2b 8b 00 44 	lw r11,(sp+68)                                 
 800a268:	2b 8c 00 40 	lw r12,(sp+64)                                 
 800a26c:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 800a270:	2b 8e 00 38 	lw r14,(sp+56)                                 
 800a274:	2b 8f 00 34 	lw r15,(sp+52)                                 
 800a278:	2b 90 00 30 	lw r16,(sp+48)                                 
 800a27c:	2b 91 00 2c 	lw r17,(sp+44)                                 
 800a280:	2b 92 00 28 	lw r18,(sp+40)                                 
 800a284:	2b 93 00 24 	lw r19,(sp+36)                                 
 800a288:	2b 94 00 20 	lw r20,(sp+32)                                 
 800a28c:	2b 95 00 1c 	lw r21,(sp+28)                                 
 800a290:	2b 96 00 18 	lw r22,(sp+24)                                 
 800a294:	2b 97 00 14 	lw r23,(sp+20)                                 
 800a298:	2b 98 00 10 	lw r24,(sp+16)                                 
 800a29c:	2b 99 00 0c 	lw r25,(sp+12)                                 
 800a2a0:	2b 9b 00 08 	lw fp,(sp+8)                                   
 800a2a4:	37 9c 00 44 	addi sp,sp,68                                  
 800a2a8:	c3 a0 00 00 	ret                                            
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
 800a2ac:	34 01 00 00 	mvi r1,0                                       
 800a2b0:	e3 ff ff e9 	bi 800a254 <_Heap_Allocate_aligned_with_boundary+0x1c4>
    /* Integer overflow occured */                                    
    return NULL;                                                      
  }                                                                   
                                                                      
  if ( boundary != 0 ) {                                              
    if ( boundary < alloc_size ) {                                    
 800a2b4:	54 44 ff eb 	bgu r2,r4,800a260 <_Heap_Allocate_aligned_with_boundary+0x1d0>
      return NULL;                                                    
    }                                                                 
                                                                      
    if ( alignment == 0 ) {                                           
 800a2b8:	5c 60 ff 91 	bne r3,r0,800a0fc <_Heap_Allocate_aligned_with_boundary+0x6c>
      alignment = page_size;                                          
 800a2bc:	ba e0 80 00 	mv r16,r23                                     
 800a2c0:	e3 ff ff 8f 	bi 800a0fc <_Heap_Allocate_aligned_with_boundary+0x6c>
                                                                      

0800a520 <_Heap_Extend>: Heap_Control *heap, void *extend_area_begin_ptr, uintptr_t extend_area_size, uintptr_t *extended_size_ptr ) {
 800a520:	37 9c ff b8 	addi sp,sp,-72                                 
 800a524:	5b 8b 00 40 	sw (sp+64),r11                                 
 800a528:	5b 8c 00 3c 	sw (sp+60),r12                                 
 800a52c:	5b 8d 00 38 	sw (sp+56),r13                                 
 800a530:	5b 8e 00 34 	sw (sp+52),r14                                 
 800a534:	5b 8f 00 30 	sw (sp+48),r15                                 
 800a538:	5b 90 00 2c 	sw (sp+44),r16                                 
 800a53c:	5b 91 00 28 	sw (sp+40),r17                                 
 800a540:	5b 92 00 24 	sw (sp+36),r18                                 
 800a544:	5b 93 00 20 	sw (sp+32),r19                                 
 800a548:	5b 94 00 1c 	sw (sp+28),r20                                 
 800a54c:	5b 95 00 18 	sw (sp+24),r21                                 
 800a550:	5b 96 00 14 	sw (sp+20),r22                                 
 800a554:	5b 97 00 10 	sw (sp+16),r23                                 
 800a558:	5b 98 00 0c 	sw (sp+12),r24                                 
 800a55c:	5b 99 00 08 	sw (sp+8),r25                                  
 800a560:	5b 9d 00 04 	sw (sp+4),ra                                   
  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;                              
 800a564:	5b 80 00 48 	sw (sp+72),r0                                  
  Heap_Block *extend_last_block = NULL;                               
 800a568:	5b 80 00 44 	sw (sp+68),r0                                  
  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;
 800a56c:	b4 43 70 00 	add r14,r2,r3                                  
  Heap_Control *heap,                                                 
  void *extend_area_begin_ptr,                                        
  uintptr_t extend_area_size,                                         
  uintptr_t *extended_size_ptr                                        
)                                                                     
{                                                                     
 800a570:	b8 40 68 00 	mv r13,r2                                      
 800a574:	b8 20 58 00 	mv r11,r1                                      
 800a578:	b8 80 b8 00 	mv r23,r4                                      
  Heap_Statistics *const stats = &heap->stats;                        
  Heap_Block *const first_block = heap->first_block;                  
 800a57c:	28 30 00 20 	lw r16,(r1+32)                                 
  Heap_Block *merge_above_block = NULL;                               
  Heap_Block *link_below_block = NULL;                                
  Heap_Block *link_above_block = NULL;                                
  Heap_Block *extend_first_block = NULL;                              
  Heap_Block *extend_last_block = NULL;                               
  uintptr_t const page_size = heap->page_size;                        
 800a580:	28 32 00 10 	lw r18,(r1+16)                                 
  uintptr_t const min_block_size = heap->min_block_size;              
 800a584:	28 25 00 14 	lw r5,(r1+20)                                  
  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;                       
 800a588:	28 38 00 30 	lw r24,(r1+48)                                 
  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 false;                                                     
 800a58c:	34 0c 00 00 	mvi r12,0                                      
  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 ) {                        
 800a590:	54 4e 00 76 	bgu r2,r14,800a768 <_Heap_Extend+0x248>        
    return false;                                                     
  }                                                                   
                                                                      
  extend_area_ok = _Heap_Get_first_and_last_block(                    
 800a594:	b8 40 08 00 	mv r1,r2                                       
 800a598:	b8 a0 20 00 	mv r4,r5                                       
 800a59c:	b8 60 10 00 	mv r2,r3                                       
 800a5a0:	37 85 00 48 	addi r5,sp,72                                  
 800a5a4:	ba 40 18 00 	mv r3,r18                                      
 800a5a8:	37 86 00 44 	addi r6,sp,68                                  
 800a5ac:	fb ff e7 a3 	calli 8004438 <_Heap_Get_first_and_last_block> 
    page_size,                                                        
    min_block_size,                                                   
    &extend_first_block,                                              
    &extend_last_block                                                
  );                                                                  
  if (!extend_area_ok ) {                                             
 800a5b0:	44 20 00 6e 	be r1,r0,800a768 <_Heap_Extend+0x248>          
 800a5b4:	ba 00 60 00 	mv r12,r16                                     
 800a5b8:	34 16 00 00 	mvi r22,0                                      
 800a5bc:	34 19 00 00 	mvi r25,0                                      
 800a5c0:	34 11 00 00 	mvi r17,0                                      
 800a5c4:	34 14 00 00 	mvi r20,0                                      
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 800a5c8:	34 15 ff fe 	mvi r21,-2                                     
 800a5cc:	e0 00 00 0d 	bi 800a600 <_Heap_Extend+0xe0>                 
      return false;                                                   
    }                                                                 
                                                                      
    if ( extend_area_end == sub_area_begin ) {                        
      merge_below_block = start_block;                                
    } else if ( extend_area_end < sub_area_end ) {                    
 800a5d0:	55 ee 00 7b 	bgu r15,r14,800a7bc <_Heap_Extend+0x29c>       
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800a5d4:	b9 e0 08 00 	mv r1,r15                                      
 800a5d8:	ba 40 10 00 	mv r2,r18                                      
 800a5dc:	35 f3 ff f8 	addi r19,r15,-8                                
 800a5e0:	f8 00 21 1a 	calli 8012a48 <__umodsi3>                      
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
 800a5e4:	ca 61 08 00 	sub r1,r19,r1                                  
      link_below_block = start_block;                                 
    }                                                                 
                                                                      
    if ( sub_area_end == extend_area_begin ) {                        
 800a5e8:	45 af 00 15 	be r13,r15,800a63c <_Heap_Extend+0x11c>        
      start_block->prev_size = extend_area_end;                       
                                                                      
      merge_above_block = end_block;                                  
    } else if ( sub_area_end < extend_area_begin ) {                  
 800a5ec:	55 af 00 72 	bgu r13,r15,800a7b4 <_Heap_Extend+0x294>       
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 800a5f0:	28 2c 00 04 	lw r12,(r1+4)                                  
 800a5f4:	a2 ac 60 00 	and r12,r21,r12                                
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 800a5f8:	b4 2c 60 00 	add r12,r1,r12                                 
      link_above_block = end_block;                                   
    }                                                                 
                                                                      
    start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );
  } while ( start_block != first_block );                             
 800a5fc:	46 0c 00 16 	be r16,r12,800a654 <_Heap_Extend+0x134>        
    return false;                                                     
  }                                                                   
                                                                      
  do {                                                                
    uintptr_t const sub_area_begin = (start_block != first_block) ?   
      (uintptr_t) start_block : heap->area_begin;                     
 800a600:	b9 80 08 00 	mv r1,r12                                      
 800a604:	45 90 00 70 	be r12,r16,800a7c4 <_Heap_Extend+0x2a4>        
    uintptr_t const sub_area_end = start_block->prev_size;            
 800a608:	29 8f 00 00 	lw r15,(r12+0)                                 
    Heap_Block *const end_block =                                     
      _Heap_Block_of_alloc_area( sub_area_end, page_size );           
                                                                      
    if (                                                              
      sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
 800a60c:	f5 c1 30 00 	cmpgu r6,r14,r1                                
 800a610:	f5 ed 28 00 	cmpgu r5,r15,r13                               
      (uintptr_t) start_block : heap->area_begin;                     
    uintptr_t const sub_area_end = start_block->prev_size;            
    Heap_Block *const end_block =                                     
      _Heap_Block_of_alloc_area( sub_area_end, page_size );           
                                                                      
    if (                                                              
 800a614:	a0 c5 28 00 	and r5,r6,r5                                   
 800a618:	5c a0 00 75 	bne r5,r0,800a7ec <_Heap_Extend+0x2cc>         
      sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
    ) {                                                               
      return false;                                                   
    }                                                                 
                                                                      
    if ( extend_area_end == sub_area_begin ) {                        
 800a61c:	5c 2e ff ed 	bne r1,r14,800a5d0 <_Heap_Extend+0xb0>         
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800a620:	b9 e0 08 00 	mv r1,r15                                      
 800a624:	ba 40 10 00 	mv r2,r18                                      
 800a628:	35 f3 ff f8 	addi r19,r15,-8                                
 800a62c:	f8 00 21 07 	calli 8012a48 <__umodsi3>                      
 800a630:	b9 80 a0 00 	mv r20,r12                                     
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
 800a634:	ca 61 08 00 	sub r1,r19,r1                                  
      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 ) {                        
 800a638:	5d af ff ed 	bne r13,r15,800a5ec <_Heap_Extend+0xcc>        <== ALWAYS TAKEN
      start_block->prev_size = extend_area_end;                       
 800a63c:	59 8e 00 00 	sw (r12+0),r14                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 800a640:	28 2c 00 04 	lw r12,(r1+4)                                  
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 )   
 800a644:	b8 20 88 00 	mv r17,r1                                      
    - 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;                
 800a648:	a2 ac 60 00 	and r12,r21,r12                                
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 800a64c:	b4 2c 60 00 	add r12,r1,r12                                 
    } 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 );                             
 800a650:	5e 0c ff ec 	bne r16,r12,800a600 <_Heap_Extend+0xe0>        <== NEVER TAKEN
                                                                      
  if ( extend_area_begin < heap->area_begin ) {                       
 800a654:	29 61 00 18 	lw r1,(r11+24)                                 
 800a658:	51 a1 00 61 	bgeu r13,r1,800a7dc <_Heap_Extend+0x2bc>       
    heap->area_begin = extend_area_begin;                             
 800a65c:	59 6d 00 18 	sw (r11+24),r13                                
  } 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;   
 800a660:	2b 81 00 44 	lw r1,(sp+68)                                  
 800a664:	2b 82 00 48 	lw r2,(sp+72)                                  
                                                                      
  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 ) {
 800a668:	29 65 00 20 	lw r5,(r11+32)                                 
    heap->area_begin = extend_area_begin;                             
  } else if ( heap->area_end < extend_area_end ) {                    
    heap->area_end = extend_area_end;                                 
  }                                                                   
                                                                      
  extend_first_block_size =                                           
 800a66c:	c8 22 18 00 	sub r3,r1,r2                                   
    (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;                   
 800a670:	38 64 00 01 	ori r4,r3,0x1                                  
  }                                                                   
                                                                      
  extend_first_block_size =                                           
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;   
                                                                      
  extend_first_block->prev_size = extend_area_end;                    
 800a674:	58 4e 00 00 	sw (r2+0),r14                                  
  extend_first_block->size_and_flag =                                 
 800a678:	58 44 00 04 	sw (r2+4),r4                                   
    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;             
 800a67c:	58 23 00 00 	sw (r1+0),r3                                   
  extend_last_block->size_and_flag = 0;                               
 800a680:	58 20 00 04 	sw (r1+4),r0                                   
  _Heap_Protection_block_initialize( heap, extend_last_block );       
                                                                      
  if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
 800a684:	50 45 00 52 	bgeu r2,r5,800a7cc <_Heap_Extend+0x2ac>        
    heap->first_block = extend_first_block;                           
 800a688:	59 62 00 20 	sw (r11+32),r2                                 
  } else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
    heap->last_block = extend_last_block;                             
  }                                                                   
                                                                      
  if ( merge_below_block != NULL ) {                                  
 800a68c:	46 80 00 6a 	be r20,r0,800a834 <_Heap_Extend+0x314>         
  Heap_Control *heap,                                                 
  uintptr_t extend_area_begin,                                        
  Heap_Block *first_block                                             
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
 800a690:	29 6c 00 10 	lw r12,(r11+16)                                
  uintptr_t const new_first_block_alloc_begin =                       
    _Heap_Align_up( extend_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );
 800a694:	35 ad 00 08 	addi r13,r13,8                                 
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(                        
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  uintptr_t remainder = value % alignment;                            
 800a698:	b9 a0 08 00 	mv r1,r13                                      
 800a69c:	b9 80 10 00 	mv r2,r12                                      
 800a6a0:	f8 00 20 ea 	calli 8012a48 <__umodsi3>                      
                                                                      
  if ( remainder != 0 ) {                                             
 800a6a4:	44 20 00 03 	be r1,r0,800a6b0 <_Heap_Extend+0x190>          <== ALWAYS TAKEN
    return value - remainder + alignment;                             
 800a6a8:	b5 ac 68 00 	add r13,r13,r12                                <== NOT EXECUTED
 800a6ac:	c9 a1 68 00 	sub r13,r13,r1                                 <== NOT EXECUTED
  uintptr_t const new_first_block_begin =                             
 800a6b0:	35 a2 ff f8 	addi r2,r13,-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;                
 800a6b4:	2a 83 00 00 	lw r3,(r20+0)                                  
  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 =                              
 800a6b8:	ca 82 08 00 	sub r1,r20,r2                                  
    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;
 800a6bc:	38 21 00 01 	ori r1,r1,0x1                                  
 800a6c0:	58 41 00 04 	sw (r2+4),r1                                   
  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;                
 800a6c4:	59 a3 ff f8 	sw (r13+-8),r3                                 
  new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;
                                                                      
  _Heap_Free_block( heap, new_first_block );                          
 800a6c8:	b9 60 08 00 	mv r1,r11                                      
 800a6cc:	fb ff ff 88 	calli 800a4ec <_Heap_Free_block>               
      link_below_block,                                               
      extend_last_block                                               
    );                                                                
  }                                                                   
                                                                      
  if ( merge_above_block != NULL ) {                                  
 800a6d0:	46 20 00 49 	be r17,r0,800a7f4 <_Heap_Extend+0x2d4>         
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800a6d4:	29 62 00 10 	lw r2,(r11+16)                                 
)                                                                     
{                                                                     
  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,      
 800a6d8:	35 ce ff f8 	addi r14,r14,-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(             
 800a6dc:	c9 d1 70 00 	sub r14,r14,r17                                
 800a6e0:	b9 c0 08 00 	mv r1,r14                                      
 800a6e4:	f8 00 20 d9 	calli 8012a48 <__umodsi3>                      
  );                                                                  
  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)                 
 800a6e8:	2a 22 00 04 	lw r2,(r17+4)                                  
 800a6ec:	c9 c1 70 00 	sub r14,r14,r1                                 
    page_size                                                         
  );                                                                  
  Heap_Block *const new_last_block =                                  
    _Heap_Block_at( last_block, last_block_new_size );                
                                                                      
  new_last_block->size_and_flag =                                     
 800a6f0:	b5 d1 08 00 	add r1,r14,r17                                 
    (last_block->size_and_flag - last_block_new_size)                 
 800a6f4:	c8 4e 10 00 	sub r2,r2,r14                                  
      | HEAP_PREV_BLOCK_USED;                                         
 800a6f8:	38 42 00 01 	ori r2,r2,0x1                                  
    page_size                                                         
  );                                                                  
  Heap_Block *const new_last_block =                                  
    _Heap_Block_at( last_block, last_block_new_size );                
                                                                      
  new_last_block->size_and_flag =                                     
 800a6fc:	58 22 00 04 	sw (r1+4),r2                                   
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;       
 800a700:	2a 23 00 04 	lw r3,(r17+4)                                  
    (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 );                               
 800a704:	b9 60 08 00 	mv r1,r11                                      
 800a708:	ba 20 10 00 	mv r2,r17                                      
 800a70c:	20 63 00 01 	andi r3,r3,0x1                                 
                                                                      
  block->size_and_flag = size | flag;                                 
 800a710:	b9 c3 70 00 	or r14,r14,r3                                  
 800a714:	5a 2e 00 04 	sw (r17+4),r14                                 
 800a718:	fb ff ff 75 	calli 800a4ec <_Heap_Free_block>               
      extend_first_block,                                             
      extend_last_block                                               
    );                                                                
  }                                                                   
                                                                      
  if ( merge_below_block == NULL && merge_above_block == NULL ) {     
 800a71c:	66 31 00 00 	cmpei r17,r17,0                                
 800a720:	66 94 00 00 	cmpei r20,r20,0                                
 800a724:	a2 34 88 00 	and r17,r17,r20                                
 800a728:	5e 20 00 3f 	bne r17,r0,800a824 <_Heap_Extend+0x304>        
                                                                      
  if ( extended_size_ptr != NULL )                                    
    *extended_size_ptr = extended_size;                               
                                                                      
  return true;                                                        
}                                                                     
 800a72c:	29 61 00 24 	lw r1,(r11+36)                                 
 * 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(                                               
 800a730:	29 63 00 20 	lw r3,(r11+32)                                 
    _Heap_Free_block( heap, extend_first_block );                     
  }                                                                   
                                                                      
  _Heap_Set_last_block_size( heap );                                  
                                                                      
  extended_size = stats->free_size - free_size;                       
 800a734:	29 65 00 30 	lw r5,(r11+48)                                 
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;       
 800a738:	28 22 00 04 	lw r2,(r1+4)                                   
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
 800a73c:	29 64 00 2c 	lw r4,(r11+44)                                 
 * 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(                                               
 800a740:	c8 61 18 00 	sub r3,r3,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;       
 800a744:	20 42 00 01 	andi r2,r2,0x1                                 
                                                                      
  block->size_and_flag = size | flag;                                 
 800a748:	b8 62 10 00 	or r2,r3,r2                                    
    _Heap_Free_block( heap, extend_first_block );                     
  }                                                                   
                                                                      
  _Heap_Set_last_block_size( heap );                                  
                                                                      
  extended_size = stats->free_size - free_size;                       
 800a74c:	c8 b8 c0 00 	sub r24,r5,r24                                 
 800a750:	58 22 00 04 	sw (r1+4),r2                                   
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
 800a754:	b4 98 08 00 	add r1,r4,r24                                  
 800a758:	59 61 00 2c 	sw (r11+44),r1                                 
                                                                      
  if ( extended_size_ptr != NULL )                                    
    *extended_size_ptr = extended_size;                               
                                                                      
  return true;                                                        
 800a75c:	34 0c 00 01 	mvi r12,1                                      
  extended_size = stats->free_size - free_size;                       
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
                                                                      
  if ( extended_size_ptr != NULL )                                    
 800a760:	46 e0 00 02 	be r23,r0,800a768 <_Heap_Extend+0x248>         <== NEVER TAKEN
    *extended_size_ptr = extended_size;                               
 800a764:	5a f8 00 00 	sw (r23+0),r24                                 
                                                                      
  return true;                                                        
}                                                                     
 800a768:	b9 80 08 00 	mv r1,r12                                      
 800a76c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a770:	2b 8b 00 40 	lw r11,(sp+64)                                 
 800a774:	2b 8c 00 3c 	lw r12,(sp+60)                                 
 800a778:	2b 8d 00 38 	lw r13,(sp+56)                                 
 800a77c:	2b 8e 00 34 	lw r14,(sp+52)                                 
 800a780:	2b 8f 00 30 	lw r15,(sp+48)                                 
 800a784:	2b 90 00 2c 	lw r16,(sp+44)                                 
 800a788:	2b 91 00 28 	lw r17,(sp+40)                                 
 800a78c:	2b 92 00 24 	lw r18,(sp+36)                                 
 800a790:	2b 93 00 20 	lw r19,(sp+32)                                 
 800a794:	2b 94 00 1c 	lw r20,(sp+28)                                 
 800a798:	2b 95 00 18 	lw r21,(sp+24)                                 
 800a79c:	2b 96 00 14 	lw r22,(sp+20)                                 
 800a7a0:	2b 97 00 10 	lw r23,(sp+16)                                 
 800a7a4:	2b 98 00 0c 	lw r24,(sp+12)                                 
 800a7a8:	2b 99 00 08 	lw r25,(sp+8)                                  
 800a7ac:	37 9c 00 48 	addi sp,sp,72                                  
 800a7b0:	c3 a0 00 00 	ret                                            
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 )   
 800a7b4:	b8 20 b0 00 	mv r22,r1                                      
 800a7b8:	e3 ff ff 8e 	bi 800a5f0 <_Heap_Extend+0xd0>                 
      return false;                                                   
    }                                                                 
                                                                      
    if ( extend_area_end == sub_area_begin ) {                        
      merge_below_block = start_block;                                
    } else if ( extend_area_end < sub_area_end ) {                    
 800a7bc:	b9 80 c8 00 	mv r25,r12                                     
 800a7c0:	e3 ff ff 85 	bi 800a5d4 <_Heap_Extend+0xb4>                 
    return false;                                                     
  }                                                                   
                                                                      
  do {                                                                
    uintptr_t const sub_area_begin = (start_block != first_block) ?   
      (uintptr_t) start_block : heap->area_begin;                     
 800a7c4:	29 61 00 18 	lw r1,(r11+24)                                 
 800a7c8:	e3 ff ff 90 	bi 800a608 <_Heap_Extend+0xe8>                 
  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 ) {
    heap->first_block = extend_first_block;                           
  } else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
 800a7cc:	29 62 00 24 	lw r2,(r11+36)                                 
 800a7d0:	50 41 ff af 	bgeu r2,r1,800a68c <_Heap_Extend+0x16c>        
    heap->last_block = extend_last_block;                             
 800a7d4:	59 61 00 24 	sw (r11+36),r1                                 
 800a7d8:	e3 ff ff ad 	bi 800a68c <_Heap_Extend+0x16c>                
    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;                             
  } else if ( heap->area_end < extend_area_end ) {                    
 800a7dc:	29 61 00 1c 	lw r1,(r11+28)                                 
 800a7e0:	50 2e ff a0 	bgeu r1,r14,800a660 <_Heap_Extend+0x140>       
    heap->area_end = extend_area_end;                                 
 800a7e4:	59 6e 00 1c 	sw (r11+28),r14                                
 800a7e8:	e3 ff ff 9e 	bi 800a660 <_Heap_Extend+0x140>                
      _Heap_Block_of_alloc_area( sub_area_end, page_size );           
                                                                      
    if (                                                              
      sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
    ) {                                                               
      return false;                                                   
 800a7ec:	34 0c 00 00 	mvi r12,0                                      
 800a7f0:	e3 ff ff de 	bi 800a768 <_Heap_Extend+0x248>                
    );                                                                
  }                                                                   
                                                                      
  if ( merge_above_block != NULL ) {                                  
    _Heap_Merge_above( heap, merge_above_block, extend_area_end );    
  } else if ( link_above_block != NULL ) {                            
 800a7f4:	46 d1 ff ca 	be r22,r17,800a71c <_Heap_Extend+0x1fc>        
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;       
 800a7f8:	2a c3 00 04 	lw r3,(r22+4)                                  
)                                                                     
{                                                                     
  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 );       
 800a7fc:	2b 82 00 48 	lw r2,(sp+72)                                  
  }                                                                   
                                                                      
  if ( merge_above_block != NULL ) {                                  
    _Heap_Merge_above( heap, merge_above_block, extend_area_end );    
  } else if ( link_above_block != NULL ) {                            
    _Heap_Link_above(                                                 
 800a800:	2b 81 00 44 	lw r1,(sp+68)                                  
 800a804:	20 63 00 01 	andi r3,r3,0x1                                 
)                                                                     
{                                                                     
  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 );       
 800a808:	c8 56 10 00 	sub r2,r2,r22                                  
                                                                      
  block->size_and_flag = size | flag;                                 
 800a80c:	b8 43 10 00 	or r2,r2,r3                                    
 800a810:	5a c2 00 04 	sw (r22+4),r2                                  
                                                                      
  last_block->size_and_flag |= HEAP_PREV_BLOCK_USED;                  
 800a814:	28 22 00 04 	lw r2,(r1+4)                                   
 800a818:	38 42 00 01 	ori r2,r2,0x1                                  
 800a81c:	58 22 00 04 	sw (r1+4),r2                                   
 800a820:	e3 ff ff bf 	bi 800a71c <_Heap_Extend+0x1fc>                
      extend_last_block                                               
    );                                                                
  }                                                                   
                                                                      
  if ( merge_below_block == NULL && merge_above_block == NULL ) {     
    _Heap_Free_block( heap, extend_first_block );                     
 800a824:	2b 82 00 48 	lw r2,(sp+72)                                  
 800a828:	b9 60 08 00 	mv r1,r11                                      
 800a82c:	fb ff ff 30 	calli 800a4ec <_Heap_Free_block>               
 800a830:	e3 ff ff bf 	bi 800a72c <_Heap_Extend+0x20c>                
    heap->last_block = extend_last_block;                             
  }                                                                   
                                                                      
  if ( merge_below_block != NULL ) {                                  
    _Heap_Merge_below( heap, extend_area_begin, merge_below_block );  
  } else if ( link_below_block != NULL ) {                            
 800a834:	47 34 ff a7 	be r25,r20,800a6d0 <_Heap_Extend+0x1b0>        
{                                                                     
  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;           
 800a838:	cb 21 c8 00 	sub r25,r25,r1                                 
 800a83c:	3b 39 00 01 	ori r25,r25,0x1                                
)                                                                     
{                                                                     
  uintptr_t const last_block_begin = (uintptr_t) last_block;          
  uintptr_t const link_begin = (uintptr_t) link;                      
                                                                      
  last_block->size_and_flag =                                         
 800a840:	58 39 00 04 	sw (r1+4),r25                                  
 800a844:	e3 ff ff a3 	bi 800a6d0 <_Heap_Extend+0x1b0>                
                                                                      

0800a2c4 <_Heap_Free>: return do_free; } #endif bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr ) {
 800a2c4:	37 9c ff f4 	addi sp,sp,-12                                 
 800a2c8:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800a2cc:	5b 8c 00 08 	sw (sp+8),r12                                  
 800a2d0:	5b 9d 00 04 	sw (sp+4),ra                                   
 800a2d4:	b8 40 18 00 	mv r3,r2                                       
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800a2d8:	28 22 00 10 	lw r2,(r1+16)                                  
 800a2dc:	b8 20 58 00 	mv r11,r1                                      
 800a2e0:	b8 60 08 00 	mv r1,r3                                       
 800a2e4:	34 6c ff f8 	addi r12,r3,-8                                 
 800a2e8:	f8 00 20 54 	calli 8012438 <__umodsi3>                      
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           
 800a2ec:	29 64 00 20 	lw r4,(r11+32)                                 
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
 800a2f0:	c9 81 10 00 	sub r2,r12,r1                                  
  bool next_is_free = false;                                          
                                                                      
  _Heap_Protection_block_check( heap, block );                        
                                                                      
  if ( !_Heap_Is_block_in_heap( heap, block ) ) {                     
    return false;                                                     
 800a2f4:	34 01 00 00 	mvi r1,0                                       
  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;             
 800a2f8:	54 82 00 43 	bgu r4,r2,800a404 <_Heap_Free+0x140>           
 800a2fc:	29 65 00 24 	lw r5,(r11+36)                                 
 800a300:	54 45 00 41 	bgu r2,r5,800a404 <_Heap_Free+0x140>           
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
 800a304:	28 48 00 04 	lw r8,(r2+4)                                   
    - 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;                
 800a308:	34 07 ff fe 	mvi r7,-2                                      
 800a30c:	a1 07 30 00 	and r6,r8,r7                                   
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 800a310:	b4 46 18 00 	add r3,r2,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;             
 800a314:	54 83 00 3c 	bgu r4,r3,800a404 <_Heap_Free+0x140>           <== NEVER TAKEN
 800a318:	54 65 00 3b 	bgu r3,r5,800a404 <_Heap_Free+0x140>           <== NEVER TAKEN
 800a31c:	28 69 00 04 	lw r9,(r3+4)                                   
  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;                 
 800a320:	21 2a 00 01 	andi r10,r9,0x1                                
  if ( !_Heap_Is_block_in_heap( heap, next_block ) ) {                
    _HAssert( false );                                                
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_prev_used( next_block ) ) {                          
 800a324:	45 40 00 38 	be r10,r0,800a404 <_Heap_Free+0x140>           <== 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;                
 800a328:	a1 27 48 00 	and r9,r9,r7                                   
    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 ));
 800a32c:	34 07 00 00 	mvi r7,0                                       
 800a330:	44 a3 00 05 	be r5,r3,800a344 <_Heap_Free+0x80>             
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
 800a334:	b4 69 08 00 	add r1,r3,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;                 
 800a338:	28 27 00 04 	lw r7,(r1+4)                                   
 800a33c:	20 e7 00 01 	andi r7,r7,0x1                                 
                                                                      
    return do_free;                                                   
  }                                                                   
#endif                                                                
                                                                      
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )          
 800a340:	18 e7 00 01 	xori r7,r7,0x1                                 
 800a344:	21 08 00 01 	andi r8,r8,0x1                                 
                                                                      
  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 ) ) {                               
 800a348:	5d 00 00 19 	bne r8,r0,800a3ac <_Heap_Free+0xe8>            
    uintptr_t const prev_size = block->prev_size;                     
 800a34c:	28 4a 00 00 	lw r10,(r2+0)                                  
    Heap_Block * const prev_block = _Heap_Block_at( block, -prev_size );
                                                                      
    if ( !_Heap_Is_block_in_heap( heap, prev_block ) ) {              
      _HAssert( false );                                              
      return( false );                                                
 800a350:	34 01 00 00 	mvi r1,0                                       
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 800a354:	c8 4a 10 00 	sub r2,r2,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;             
 800a358:	54 82 00 2b 	bgu r4,r2,800a404 <_Heap_Free+0x140>           <== NEVER TAKEN
 800a35c:	b9 00 08 00 	mv r1,r8                                       
 800a360:	54 45 00 29 	bgu r2,r5,800a404 <_Heap_Free+0x140>           <== 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;                 
 800a364:	28 44 00 04 	lw r4,(r2+4)                                   
 800a368:	20 84 00 01 	andi r4,r4,0x1                                 
    }                                                                 
                                                                      
    /* As we always coalesce free blocks, the block that preceedes prev_block
       must have been used. */                                        
    if ( !_Heap_Is_prev_used ( prev_block) ) {                        
 800a36c:	44 80 00 26 	be r4,r0,800a404 <_Heap_Free+0x140>            <== NEVER TAKEN
      _HAssert( false );                                              
      return( false );                                                
    }                                                                 
                                                                      
    if ( next_is_free ) {       /* coalesce both */                   
 800a370:	44 e0 00 3d 	be r7,r0,800a464 <_Heap_Free+0x1a0>            
      uintptr_t const size = block_size + prev_size + next_block_size;
      _Heap_Free_list_remove( next_block );                           
      stats->free_blocks -= 1;                                        
 800a374:	29 64 00 38 	lw r4,(r11+56)                                 
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
 800a378:	28 61 00 08 	lw r1,(r3+8)                                   
 800a37c:	28 63 00 0c 	lw r3,(r3+12)                                  
      _HAssert( false );                                              
      return( false );                                                
    }                                                                 
                                                                      
    if ( next_is_free ) {       /* coalesce both */                   
      uintptr_t const size = block_size + prev_size + next_block_size;
 800a380:	b4 c9 48 00 	add r9,r6,r9                                   
 800a384:	b5 2a 50 00 	add r10,r9,r10                                 
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block ) 
{                                                                     
  Heap_Block *next = block->next;                                     
  Heap_Block *prev = block->prev;                                     
                                                                      
  prev->next = next;                                                  
 800a388:	58 61 00 08 	sw (r3+8),r1                                   
  next->prev = prev;                                                  
 800a38c:	58 23 00 0c 	sw (r1+12),r3                                  
      _Heap_Free_list_remove( next_block );                           
      stats->free_blocks -= 1;                                        
 800a390:	34 81 ff ff 	addi r1,r4,-1                                  
 800a394:	59 61 00 38 	sw (r11+56),r1                                 
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
 800a398:	39 43 00 01 	ori r3,r10,0x1                                 
      next_block = _Heap_Block_at( prev_block, size );                
      _HAssert(!_Heap_Is_prev_used( next_block));                     
      next_block->prev_size = size;                                   
 800a39c:	b4 4a 08 00 	add r1,r2,r10                                  
                                                                      
    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;                                        
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
 800a3a0:	58 43 00 04 	sw (r2+4),r3                                   
      next_block = _Heap_Block_at( prev_block, size );                
      _HAssert(!_Heap_Is_prev_used( next_block));                     
      next_block->prev_size = size;                                   
 800a3a4:	58 2a 00 00 	sw (r1+0),r10                                  
 800a3a8:	e0 00 00 0d 	bi 800a3dc <_Heap_Free+0x118>                  
      uintptr_t const size = block_size + prev_size;                  
      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 */                 
 800a3ac:	44 e0 00 1b 	be r7,r0,800a418 <_Heap_Free+0x154>            
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
 800a3b0:	28 64 00 08 	lw r4,(r3+8)                                   
 800a3b4:	28 61 00 0c 	lw r1,(r3+12)                                  
      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;              
 800a3b8:	b5 26 48 00 	add r9,r9,r6                                   
)                                                                     
{                                                                     
  Heap_Block *next = old_block->next;                                 
  Heap_Block *prev = old_block->prev;                                 
                                                                      
  new_block->next = next;                                             
 800a3bc:	58 44 00 08 	sw (r2+8),r4                                   
  new_block->prev = prev;                                             
 800a3c0:	58 41 00 0c 	sw (r2+12),r1                                  
    _Heap_Free_list_replace( next_block, block );                     
    block->size_and_flag = size | HEAP_PREV_BLOCK_USED;               
 800a3c4:	39 25 00 01 	ori r5,r9,0x1                                  
    next_block  = _Heap_Block_at( block, size );                      
    next_block->prev_size = size;                                     
 800a3c8:	b4 49 18 00 	add r3,r2,r9                                   
                                                                      
  next->prev = new_block;                                             
 800a3cc:	58 82 00 0c 	sw (r4+12),r2                                  
  prev->next = new_block;                                             
 800a3d0:	58 22 00 08 	sw (r1+8),r2                                   
      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;               
 800a3d4:	58 45 00 04 	sw (r2+4),r5                                   
    next_block  = _Heap_Block_at( block, size );                      
    next_block->prev_size = size;                                     
 800a3d8:	58 69 00 00 	sw (r3+0),r9                                   
      stats->max_free_blocks = stats->free_blocks;                    
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
 800a3dc:	29 62 00 40 	lw r2,(r11+64)                                 
  ++stats->frees;                                                     
 800a3e0:	29 61 00 50 	lw r1,(r11+80)                                 
  stats->free_size += block_size;                                     
 800a3e4:	29 63 00 30 	lw r3,(r11+48)                                 
      stats->max_free_blocks = stats->free_blocks;                    
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
 800a3e8:	34 42 ff ff 	addi r2,r2,-1                                  
  ++stats->frees;                                                     
 800a3ec:	34 21 00 01 	addi r1,r1,1                                   
  stats->free_size += block_size;                                     
 800a3f0:	b4 66 30 00 	add r6,r3,r6                                   
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
 800a3f4:	59 61 00 50 	sw (r11+80),r1                                 
      stats->max_free_blocks = stats->free_blocks;                    
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
 800a3f8:	59 62 00 40 	sw (r11+64),r2                                 
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
 800a3fc:	59 66 00 30 	sw (r11+48),r6                                 
                                                                      
  return( true );                                                     
 800a400:	34 01 00 01 	mvi r1,1                                       
}                                                                     
 800a404:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a408:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800a40c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800a410:	37 9c 00 0c 	addi sp,sp,12                                  
 800a414:	c3 a0 00 00 	ret                                            
    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;         
 800a418:	38 c1 00 01 	ori r1,r6,0x1                                  
 800a41c:	58 41 00 04 	sw (r2+4),r1                                   
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
 800a420:	28 67 00 04 	lw r7,(r3+4)                                   
    next_block->prev_size = block_size;                               
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
 800a424:	29 61 00 38 	lw r1,(r11+56)                                 
RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after(               
  Heap_Block *block_before,                                           
  Heap_Block *new_block                                               
)                                                                     
{                                                                     
  Heap_Block *next = block_before->next;                              
 800a428:	29 64 00 08 	lw r4,(r11+8)                                  
  } 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;               
 800a42c:	34 05 ff fe 	mvi r5,-2                                      
                                                                      
  new_block->next = next;                                             
  new_block->prev = block_before;                                     
 800a430:	58 4b 00 0c 	sw (r2+12),r11                                 
 800a434:	a0 e5 28 00 	and r5,r7,r5                                   
    next_block->prev_size = block_size;                               
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
    if ( stats->max_free_blocks < stats->free_blocks ) {              
 800a438:	29 67 00 3c 	lw r7,(r11+60)                                 
    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;                                             
 800a43c:	34 21 00 01 	addi r1,r1,1                                   
  Heap_Block *new_block                                               
)                                                                     
{                                                                     
  Heap_Block *next = block_before->next;                              
                                                                      
  new_block->next = next;                                             
 800a440:	58 44 00 08 	sw (r2+8),r4                                   
  new_block->prev = block_before;                                     
  block_before->next = new_block;                                     
  next->prev = new_block;                                             
 800a444:	58 82 00 0c 	sw (r4+12),r2                                  
  } 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;               
 800a448:	58 65 00 04 	sw (r3+4),r5                                   
    next_block->prev_size = block_size;                               
 800a44c:	58 66 00 00 	sw (r3+0),r6                                   
{                                                                     
  Heap_Block *next = block_before->next;                              
                                                                      
  new_block->next = next;                                             
  new_block->prev = block_before;                                     
  block_before->next = new_block;                                     
 800a450:	59 62 00 08 	sw (r11+8),r2                                  
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
 800a454:	59 61 00 38 	sw (r11+56),r1                                 
    if ( stats->max_free_blocks < stats->free_blocks ) {              
 800a458:	50 e1 ff e1 	bgeu r7,r1,800a3dc <_Heap_Free+0x118>          
      stats->max_free_blocks = stats->free_blocks;                    
 800a45c:	59 61 00 3c 	sw (r11+60),r1                                 
 800a460:	e3 ff ff df 	bi 800a3dc <_Heap_Free+0x118>                  
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
      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;                  
 800a464:	b4 ca 50 00 	add r10,r6,r10                                 
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
 800a468:	39 41 00 01 	ori r1,r10,0x1                                 
 800a46c:	58 41 00 04 	sw (r2+4),r1                                   
      next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;             
 800a470:	28 62 00 04 	lw r2,(r3+4)                                   
 800a474:	34 01 ff fe 	mvi r1,-2                                      
      next_block->prev_size = size;                                   
 800a478:	58 6a 00 00 	sw (r3+0),r10                                  
      _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;        
      next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;             
 800a47c:	a0 41 08 00 	and r1,r2,r1                                   
 800a480:	58 61 00 04 	sw (r3+4),r1                                   
 800a484:	e3 ff ff d6 	bi 800a3dc <_Heap_Free+0x118>                  
                                                                      

0800ae9c <_Heap_Get_information>: void _Heap_Get_information( Heap_Control *the_heap, Heap_Information_block *the_info ) {
 800ae9c:	37 9c ff fc 	addi sp,sp,-4                                  
 800aea0:	5b 8b 00 04 	sw (sp+4),r11                                  
  Heap_Block *the_block = the_heap->first_block;                      
 800aea4:	28 26 00 20 	lw r6,(r1+32)                                  
  Heap_Block *const end = the_heap->last_block;                       
 800aea8:	28 29 00 24 	lw r9,(r1+36)                                  
                                                                      
  memset(the_info, 0, sizeof(*the_info));                             
 800aeac:	58 40 00 00 	sw (r2+0),r0                                   
 800aeb0:	58 40 00 04 	sw (r2+4),r0                                   
 800aeb4:	58 40 00 08 	sw (r2+8),r0                                   
 800aeb8:	58 40 00 0c 	sw (r2+12),r0                                  
 800aebc:	58 40 00 10 	sw (r2+16),r0                                  
 800aec0:	58 40 00 14 	sw (r2+20),r0                                  
                                                                      
  while ( the_block != end ) {                                        
 800aec4:	44 c9 00 15 	be r6,r9,800af18 <_Heap_Get_information+0x7c>  <== NEVER TAKEN
 800aec8:	28 c5 00 04 	lw r5,(r6+4)                                   
    - 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;                
 800aecc:	34 0a ff fe 	mvi r10,-2                                     
 800aed0:	a0 aa 18 00 	and r3,r5,r10                                  
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 800aed4:	b4 c3 20 00 	add r4,r6,r3                                   
    if ( info->largest < the_size )                                   
      info->largest = the_size;                                       
                                                                      
    the_block = next_block;                                           
  }                                                                   
}                                                                     
 800aed8:	28 85 00 04 	lw r5,(r4+4)                                   
    Heap_Information  *info;                                          
                                                                      
    if ( _Heap_Is_prev_used(next_block) )                             
      info = &the_info->Used;                                         
    else                                                              
      info = &the_info->Free;                                         
 800aedc:	b8 40 08 00 	mv r1,r2                                       
  Heap_Block *the_block = the_heap->first_block;                      
  Heap_Block *const end = the_heap->last_block;                       
                                                                      
  memset(the_info, 0, sizeof(*the_info));                             
                                                                      
  while ( the_block != end ) {                                        
 800aee0:	b8 80 30 00 	mv r6,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;                 
 800aee4:	20 a7 00 01 	andi r7,r5,0x1                                 
    uintptr_t const     the_size = _Heap_Block_size(the_block);       
    Heap_Block *const  next_block = _Heap_Block_at(the_block, the_size);
    Heap_Information  *info;                                          
                                                                      
    if ( _Heap_Is_prev_used(next_block) )                             
 800aee8:	44 e0 00 02 	be r7,r0,800aef0 <_Heap_Get_information+0x54>  
      info = &the_info->Used;                                         
 800aeec:	34 41 00 0c 	addi r1,r2,12                                  
    else                                                              
      info = &the_info->Free;                                         
                                                                      
    info->number++;                                                   
 800aef0:	28 28 00 00 	lw r8,(r1+0)                                   
    info->total += the_size;                                          
 800aef4:	28 27 00 08 	lw r7,(r1+8)                                   
    if ( info->largest < the_size )                                   
 800aef8:	28 2b 00 04 	lw r11,(r1+4)                                  
    if ( _Heap_Is_prev_used(next_block) )                             
      info = &the_info->Used;                                         
    else                                                              
      info = &the_info->Free;                                         
                                                                      
    info->number++;                                                   
 800aefc:	35 08 00 01 	addi r8,r8,1                                   
    info->total += the_size;                                          
 800af00:	b4 e3 38 00 	add r7,r7,r3                                   
    if ( _Heap_Is_prev_used(next_block) )                             
      info = &the_info->Used;                                         
    else                                                              
      info = &the_info->Free;                                         
                                                                      
    info->number++;                                                   
 800af04:	58 28 00 00 	sw (r1+0),r8                                   
    info->total += the_size;                                          
 800af08:	58 27 00 08 	sw (r1+8),r7                                   
    if ( info->largest < the_size )                                   
 800af0c:	51 63 00 02 	bgeu r11,r3,800af14 <_Heap_Get_information+0x78>
      info->largest = the_size;                                       
 800af10:	58 23 00 04 	sw (r1+4),r3                                   
  Heap_Block *the_block = the_heap->first_block;                      
  Heap_Block *const end = the_heap->last_block;                       
                                                                      
  memset(the_info, 0, sizeof(*the_info));                             
                                                                      
  while ( the_block != end ) {                                        
 800af14:	5d 24 ff ef 	bne r9,r4,800aed0 <_Heap_Get_information+0x34> 
    if ( info->largest < the_size )                                   
      info->largest = the_size;                                       
                                                                      
    the_block = next_block;                                           
  }                                                                   
}                                                                     
 800af18:	2b 8b 00 04 	lw r11,(sp+4)                                  
 800af1c:	37 9c 00 04 	addi sp,sp,4                                   
 800af20:	c3 a0 00 00 	ret                                            
                                                                      

08012e60 <_Heap_Size_of_alloc_area>: bool _Heap_Size_of_alloc_area( Heap_Control *heap, void *alloc_begin_ptr, uintptr_t *alloc_size ) {
 8012e60:	37 9c ff f0 	addi sp,sp,-16                                 
 8012e64:	5b 8b 00 10 	sw (sp+16),r11                                 
 8012e68:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8012e6c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8012e70:	5b 9d 00 04 	sw (sp+4),ra                                   
 8012e74:	b8 40 60 00 	mv r12,r2                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 8012e78:	28 22 00 10 	lw r2,(r1+16)                                  
 8012e7c:	b8 20 58 00 	mv r11,r1                                      
 8012e80:	b9 80 08 00 	mv r1,r12                                      
 8012e84:	b8 60 68 00 	mv r13,r3                                      
 8012e88:	fb ff fd 6c 	calli 8012438 <__umodsi3>                      
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           
 8012e8c:	29 62 00 20 	lw r2,(r11+32)                                 
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 8012e90:	35 84 ff f8 	addi r4,r12,-8                                 
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
 8012e94:	c8 81 20 00 	sub r4,r4,r1                                   
  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;                                                     
 8012e98:	34 01 00 00 	mvi r1,0                                       
  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;             
 8012e9c:	54 44 00 10 	bgu r2,r4,8012edc <_Heap_Size_of_alloc_area+0x7c>
 8012ea0:	29 65 00 24 	lw r5,(r11+36)                                 
 8012ea4:	54 85 00 0e 	bgu r4,r5,8012edc <_Heap_Size_of_alloc_area+0x7c><== 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;                
 8012ea8:	28 86 00 04 	lw r6,(r4+4)                                   
 8012eac:	34 03 ff fe 	mvi r3,-2                                      
 8012eb0:	a0 66 18 00 	and r3,r3,r6                                   
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 8012eb4:	b4 83 20 00 	add r4,r4,r3                                   
  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;             
 8012eb8:	54 44 00 09 	bgu r2,r4,8012edc <_Heap_Size_of_alloc_area+0x7c><== NEVER TAKEN
 8012ebc:	54 85 00 08 	bgu r4,r5,8012edc <_Heap_Size_of_alloc_area+0x7c><== 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;                 
 8012ec0:	28 82 00 04 	lw r2,(r4+4)                                   
 8012ec4:	20 42 00 01 	andi r2,r2,0x1                                 
  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 )                            
 8012ec8:	44 40 00 05 	be r2,r0,8012edc <_Heap_Size_of_alloc_area+0x7c><== NEVER TAKEN
  ) {                                                                 
    return false;                                                     
  }                                                                   
                                                                      
  *alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
 8012ecc:	c8 8c 20 00 	sub r4,r4,r12                                  
 8012ed0:	34 84 00 04 	addi r4,r4,4                                   
 8012ed4:	59 a4 00 00 	sw (r13+0),r4                                  
                                                                      
  return true;                                                        
 8012ed8:	34 01 00 01 	mvi r1,1                                       
}                                                                     
 8012edc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8012ee0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8012ee4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8012ee8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8012eec:	37 9c 00 10 	addi sp,sp,16                                  
 8012ef0:	c3 a0 00 00 	ret                                            
                                                                      

08004e7c <_Heap_Walk>: bool _Heap_Walk( Heap_Control *heap, int source, bool dump ) {
 8004e7c:	37 9c ff 9c 	addi sp,sp,-100                                
 8004e80:	5b 8b 00 50 	sw (sp+80),r11                                 
 8004e84:	5b 8c 00 4c 	sw (sp+76),r12                                 
 8004e88:	5b 8d 00 48 	sw (sp+72),r13                                 
 8004e8c:	5b 8e 00 44 	sw (sp+68),r14                                 
 8004e90:	5b 8f 00 40 	sw (sp+64),r15                                 
 8004e94:	5b 90 00 3c 	sw (sp+60),r16                                 
 8004e98:	5b 91 00 38 	sw (sp+56),r17                                 
 8004e9c:	5b 92 00 34 	sw (sp+52),r18                                 
 8004ea0:	5b 93 00 30 	sw (sp+48),r19                                 
 8004ea4:	5b 94 00 2c 	sw (sp+44),r20                                 
 8004ea8:	5b 95 00 28 	sw (sp+40),r21                                 
 8004eac:	5b 96 00 24 	sw (sp+36),r22                                 
 8004eb0:	5b 97 00 20 	sw (sp+32),r23                                 
 8004eb4:	5b 98 00 1c 	sw (sp+28),r24                                 
 8004eb8:	5b 99 00 18 	sw (sp+24),r25                                 
 8004ebc:	5b 9b 00 14 	sw (sp+20),fp                                  
 8004ec0:	5b 9d 00 10 	sw (sp+16),ra                                  
  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;                      
 8004ec4:	78 0f 08 00 	mvhi r15,0x800                                 
bool _Heap_Walk(                                                      
  Heap_Control *heap,                                                 
  int source,                                                         
  bool dump                                                           
)                                                                     
{                                                                     
 8004ec8:	20 63 00 ff 	andi r3,r3,0xff                                
 8004ecc:	b8 20 68 00 	mv r13,r1                                      
 8004ed0:	b8 40 98 00 	mv r19,r2                                      
  uintptr_t const page_size = heap->page_size;                        
 8004ed4:	28 35 00 10 	lw r21,(r1+16)                                 
  uintptr_t const min_block_size = heap->min_block_size;              
 8004ed8:	28 36 00 14 	lw r22,(r1+20)                                 
  Heap_Block *const first_block = heap->first_block;                  
 8004edc:	28 34 00 20 	lw r20,(r1+32)                                 
  Heap_Block *const last_block = heap->last_block;                    
 8004ee0:	28 37 00 24 	lw r23,(r1+36)                                 
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
 8004ee4:	39 ef 4d d4 	ori r15,r15,0x4dd4                             
 8004ee8:	44 60 00 03 	be r3,r0,8004ef4 <_Heap_Walk+0x78>             
 8004eec:	78 0f 08 00 	mvhi r15,0x800                                 
 8004ef0:	39 ef 4d f8 	ori r15,r15,0x4df8                             
                                                                      
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
 8004ef4:	78 03 08 01 	mvhi r3,0x801                                  
 8004ef8:	38 63 7a 68 	ori r3,r3,0x7a68                               
 8004efc:	28 69 00 00 	lw r9,(r3+0)                                   
 8004f00:	34 07 00 03 	mvi r7,3                                       
    return true;                                                      
 8004f04:	34 03 00 01 	mvi 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() ) ) {                
 8004f08:	45 27 00 15 	be r9,r7,8004f5c <_Heap_Walk+0xe0>             
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8004f0c:	b8 60 08 00 	mv r1,r3                                       
 8004f10:	2b 9d 00 10 	lw ra,(sp+16)                                  
 8004f14:	2b 8b 00 50 	lw r11,(sp+80)                                 
 8004f18:	2b 8c 00 4c 	lw r12,(sp+76)                                 
 8004f1c:	2b 8d 00 48 	lw r13,(sp+72)                                 
 8004f20:	2b 8e 00 44 	lw r14,(sp+68)                                 
 8004f24:	2b 8f 00 40 	lw r15,(sp+64)                                 
 8004f28:	2b 90 00 3c 	lw r16,(sp+60)                                 
 8004f2c:	2b 91 00 38 	lw r17,(sp+56)                                 
 8004f30:	2b 92 00 34 	lw r18,(sp+52)                                 
 8004f34:	2b 93 00 30 	lw r19,(sp+48)                                 
 8004f38:	2b 94 00 2c 	lw r20,(sp+44)                                 
 8004f3c:	2b 95 00 28 	lw r21,(sp+40)                                 
 8004f40:	2b 96 00 24 	lw r22,(sp+36)                                 
 8004f44:	2b 97 00 20 	lw r23,(sp+32)                                 
 8004f48:	2b 98 00 1c 	lw r24,(sp+28)                                 
 8004f4c:	2b 99 00 18 	lw r25,(sp+24)                                 
 8004f50:	2b 9b 00 14 	lw fp,(sp+20)                                  
 8004f54:	37 9c 00 64 	addi sp,sp,100                                 
 8004f58:	c3 a0 00 00 	ret                                            
  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)(                                                         
 8004f5c:	29 a2 00 08 	lw r2,(r13+8)                                  
 8004f60:	29 a1 00 0c 	lw r1,(r13+12)                                 
 8004f64:	29 a6 00 18 	lw r6,(r13+24)                                 
 8004f68:	29 a7 00 1c 	lw r7,(r13+28)                                 
 8004f6c:	78 03 08 01 	mvhi r3,0x801                                  
 8004f70:	5b 82 00 08 	sw (sp+8),r2                                   
 8004f74:	5b 81 00 0c 	sw (sp+12),r1                                  
 8004f78:	5b 97 00 04 	sw (sp+4),r23                                  
 8004f7c:	ba 60 08 00 	mv r1,r19                                      
 8004f80:	34 02 00 00 	mvi r2,0                                       
 8004f84:	38 63 48 30 	ori r3,r3,0x4830                               
 8004f88:	ba a0 20 00 	mv r4,r21                                      
 8004f8c:	ba c0 28 00 	mv r5,r22                                      
 8004f90:	ba 80 40 00 	mv r8,r20                                      
 8004f94:	d9 e0 00 00 	call r15                                       
    heap->area_begin, heap->area_end,                                 
    first_block, last_block,                                          
    first_free_block, last_free_block                                 
  );                                                                  
                                                                      
  if ( page_size == 0 ) {                                             
 8004f98:	46 a0 00 26 	be r21,r0,8005030 <_Heap_Walk+0x1b4>           <== NEVER TAKEN
)                                                                     
{                                                                     
#if (CPU_ALIGNMENT == 0)                                              
    return true;                                                      
#else                                                                 
    return (((uintptr_t)address % CPU_ALIGNMENT) == 0);               
 8004f9c:	22 ab 00 07 	andi r11,r21,0x7                               
    (*printer)( source, true, "page size is zero\n" );                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Addresses_Is_aligned( (void *) page_size ) ) {               
 8004fa0:	5d 60 00 2b 	bne r11,r0,800504c <_Heap_Walk+0x1d0>          <== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
 8004fa4:	ba c0 08 00 	mv r1,r22                                      
 8004fa8:	ba a0 10 00 	mv r2,r21                                      
 8004fac:	fb ff ee 91 	calli 80009f0 <__umodsi3>                      
 8004fb0:	b8 20 60 00 	mv r12,r1                                      
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {             
 8004fb4:	5c 2b 00 2e 	bne r1,r11,800506c <_Heap_Walk+0x1f0>          <== NEVER TAKEN
 8004fb8:	36 81 00 08 	addi r1,r20,8                                  
 8004fbc:	ba a0 10 00 	mv r2,r21                                      
 8004fc0:	fb ff ee 8c 	calli 80009f0 <__umodsi3>                      
 8004fc4:	b8 20 18 00 	mv r3,r1                                       
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if (                                                                
 8004fc8:	5c 2c 00 31 	bne r1,r12,800508c <_Heap_Walk+0x210>          <== NEVER TAKEN
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8004fcc:	2a 8c 00 04 	lw r12,(r20+4)                                 
  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;                 
 8004fd0:	21 81 00 01 	andi r1,r12,0x1                                
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_prev_used( first_block ) ) {                         
 8004fd4:	44 23 00 fe 	be r1,r3,80053cc <_Heap_Walk+0x550>            <== 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;                
 8004fd8:	2a e2 00 04 	lw r2,(r23+4)                                  
 8004fdc:	34 01 ff fe 	mvi r1,-2                                      
 8004fe0:	a0 22 08 00 	and r1,r1,r2                                   
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 8004fe4:	b6 e1 08 00 	add r1,r23,r1                                  
  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;                 
 8004fe8:	28 22 00 04 	lw r2,(r1+4)                                   
 8004fec:	20 42 00 01 	andi r2,r2,0x1                                 
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( _Heap_Is_free( last_block ) ) {                                
 8004ff0:	44 43 00 09 	be r2,r3,8005014 <_Heap_Walk+0x198>            <== NEVER TAKEN
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if (                                                                
 8004ff4:	46 81 00 2e 	be r20,r1,80050ac <_Heap_Walk+0x230>           <== ALWAYS TAKEN
    _Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
  ) {                                                                 
    (*printer)(                                                       
 8004ff8:	78 03 08 01 	mvhi r3,0x801                                  <== NOT EXECUTED
 8004ffc:	38 63 49 98 	ori r3,r3,0x4998                               <== NOT EXECUTED
 8005000:	ba 60 08 00 	mv r1,r19                                      <== NOT EXECUTED
 8005004:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8005008:	d9 e0 00 00 	call r15                                       <== NOT EXECUTED
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 800500c:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 8005010:	e3 ff ff bf 	bi 8004f0c <_Heap_Walk+0x90>                   <== NOT EXECUTED
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( _Heap_Is_free( last_block ) ) {                                
    (*printer)(                                                       
 8005014:	78 03 08 01 	mvhi r3,0x801                                  
 8005018:	38 63 49 80 	ori r3,r3,0x4980                               
 800501c:	ba 60 08 00 	mv r1,r19                                      
 8005020:	34 02 00 01 	mvi r2,1                                       
 8005024:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005028:	34 03 00 00 	mvi r3,0                                       
 800502c:	e3 ff ff b8 	bi 8004f0c <_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" );                
 8005030:	78 03 08 01 	mvhi r3,0x801                                  
 8005034:	38 63 48 c4 	ori r3,r3,0x48c4                               
 8005038:	ba 60 08 00 	mv r1,r19                                      
 800503c:	34 02 00 01 	mvi r2,1                                       
 8005040:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005044:	34 03 00 00 	mvi r3,0                                       
 8005048:	e3 ff ff b1 	bi 8004f0c <_Heap_Walk+0x90>                   
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Addresses_Is_aligned( (void *) page_size ) ) {               
    (*printer)(                                                       
 800504c:	78 03 08 01 	mvhi r3,0x801                                  
 8005050:	38 63 48 d8 	ori r3,r3,0x48d8                               
 8005054:	ba 60 08 00 	mv r1,r19                                      
 8005058:	34 02 00 01 	mvi r2,1                                       
 800505c:	ba a0 20 00 	mv r4,r21                                      
 8005060:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005064:	34 03 00 00 	mvi r3,0                                       
 8005068:	e3 ff ff a9 	bi 8004f0c <_Heap_Walk+0x90>                   
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {             
    (*printer)(                                                       
 800506c:	78 03 08 01 	mvhi r3,0x801                                  
 8005070:	38 63 48 f8 	ori r3,r3,0x48f8                               
 8005074:	ba 60 08 00 	mv r1,r19                                      
 8005078:	34 02 00 01 	mvi r2,1                                       
 800507c:	ba c0 20 00 	mv r4,r22                                      
 8005080:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005084:	34 03 00 00 	mvi r3,0                                       
 8005088:	e3 ff ff a1 	bi 8004f0c <_Heap_Walk+0x90>                   
  }                                                                   
                                                                      
  if (                                                                
    !_Heap_Is_aligned( _Heap_Alloc_area_of_block( first_block ), page_size )
  ) {                                                                 
    (*printer)(                                                       
 800508c:	78 03 08 01 	mvhi r3,0x801                                  
 8005090:	38 63 49 1c 	ori r3,r3,0x491c                               
 8005094:	ba 60 08 00 	mv r1,r19                                      
 8005098:	34 02 00 01 	mvi r2,1                                       
 800509c:	ba 80 20 00 	mv r4,r20                                      
 80050a0:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 80050a4:	34 03 00 00 	mvi r3,0                                       
 80050a8:	e3 ff ff 99 	bi 8004f0c <_Heap_Walk+0x90>                   
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 80050ac:	29 ab 00 08 	lw r11,(r13+8)                                 
  int source,                                                         
  Heap_Walk_printer printer,                                          
  Heap_Control *heap                                                  
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
 80050b0:	29 b2 00 10 	lw r18,(r13+16)                                
  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 ) {                            
 80050b4:	45 ab 00 2f 	be r13,r11,8005170 <_Heap_Walk+0x2f4>          
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 80050b8:	29 ae 00 20 	lw r14,(r13+32)                                
  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;             
 80050bc:	55 cb 00 dd 	bgu r14,r11,8005430 <_Heap_Walk+0x5b4>         <== NEVER TAKEN
 80050c0:	29 b8 00 24 	lw r24,(r13+36)                                
 80050c4:	55 78 00 db 	bgu r11,r24,8005430 <_Heap_Walk+0x5b4>         <== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
 80050c8:	35 61 00 08 	addi r1,r11,8                                  
 80050cc:	ba 40 10 00 	mv r2,r18                                      
 80050d0:	fb ff ee 48 	calli 80009f0 <__umodsi3>                      
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if (                                                              
 80050d4:	5c 20 00 df 	bne r1,r0,8005450 <_Heap_Walk+0x5d4>           <== 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;                
 80050d8:	29 63 00 04 	lw r3,(r11+4)                                  
 80050dc:	34 02 ff fe 	mvi r2,-2                                      
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
 80050e0:	b9 60 80 00 	mv r16,r11                                     
 80050e4:	a0 43 10 00 	and r2,r2,r3                                   
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 80050e8:	b5 62 10 00 	add r2,r11,r2                                  
  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;                 
 80050ec:	28 42 00 04 	lw r2,(r2+4)                                   
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
 80050f0:	b9 a0 18 00 	mv r3,r13                                      
    - 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;                
 80050f4:	34 11 ff fe 	mvi r17,-2                                     
  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;                 
 80050f8:	20 42 00 01 	andi r2,r2,0x1                                 
 80050fc:	44 41 00 12 	be r2,r1,8005144 <_Heap_Walk+0x2c8>            <== ALWAYS TAKEN
 8005100:	e0 00 00 dc 	bi 8005470 <_Heap_Walk+0x5f4>                  <== NOT EXECUTED
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    prev_block = free_block;                                          
    free_block = free_block->next;                                    
 8005104:	29 6b 00 08 	lw r11,(r11+8)                                 
  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 ) {                            
 8005108:	45 ab 00 1b 	be r13,r11,8005174 <_Heap_Walk+0x2f8>          
  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;             
 800510c:	55 cb 00 c9 	bgu r14,r11,8005430 <_Heap_Walk+0x5b4>         
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
 8005110:	35 61 00 08 	addi r1,r11,8                                  
 8005114:	ba 40 10 00 	mv r2,r18                                      
  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;             
 8005118:	55 78 00 c6 	bgu r11,r24,8005430 <_Heap_Walk+0x5b4>         <== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
 800511c:	fb ff ee 35 	calli 80009f0 <__umodsi3>                      
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if (                                                              
 8005120:	5c 20 00 cc 	bne r1,r0,8005450 <_Heap_Walk+0x5d4>           
    - 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;                
 8005124:	29 64 00 04 	lw r4,(r11+4)                                  
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
 8005128:	ba 00 18 00 	mv r3,r16                                      
 800512c:	b9 60 80 00 	mv r16,r11                                     
 8005130:	a2 24 20 00 	and r4,r17,r4                                  
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8005134:	b4 8b 20 00 	add r4,r4,r11                                  
  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;                 
 8005138:	28 84 00 04 	lw r4,(r4+4)                                   
 800513c:	20 84 00 01 	andi r4,r4,0x1                                 
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
 8005140:	5c 81 00 cc 	bne r4,r1,8005470 <_Heap_Walk+0x5f4>           
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( free_block->prev != prev_block ) {                           
 8005144:	29 67 00 0c 	lw r7,(r11+12)                                 
 8005148:	44 e3 ff ef 	be r7,r3,8005104 <_Heap_Walk+0x288>            
      (*printer)(                                                     
 800514c:	78 03 08 01 	mvhi r3,0x801                                  
 8005150:	38 63 4a 34 	ori r3,r3,0x4a34                               
 8005154:	ba 60 08 00 	mv r1,r19                                      
 8005158:	34 02 00 01 	mvi r2,1                                       
 800515c:	b9 60 20 00 	mv r4,r11                                      
 8005160:	b8 e0 28 00 	mv r5,r7                                       
 8005164:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005168:	34 03 00 00 	mvi r3,0                                       
 800516c:	e3 ff ff 68 	bi 8004f0c <_Heap_Walk+0x90>                   
  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 ) {                            
 8005170:	29 ae 00 20 	lw r14,(r13+32)                                
  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)(                                                         
 8005174:	78 01 08 01 	mvhi r1,0x801                                  
 8005178:	5b 81 00 54 	sw (sp+84),r1                                  
 800517c:	78 01 08 01 	mvhi r1,0x801                                  
 8005180:	5b 81 00 58 	sw (sp+88),r1                                  
 8005184:	78 01 08 01 	mvhi r1,0x801                                  
 8005188:	5b 81 00 5c 	sw (sp+92),r1                                  
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
 800518c:	78 01 08 01 	mvhi r1,0x801                                  
 8005190:	5b 81 00 60 	sw (sp+96),r1                                  
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
 8005194:	78 01 08 01 	mvhi r1,0x801                                  
 8005198:	5b 81 00 64 	sw (sp+100),r1                                 
  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)(                                                         
 800519c:	2b 81 00 54 	lw r1,(sp+84)                                  
        "block 0x%08x: size %u\n",                                    
        block,                                                        
        block_size                                                    
      );                                                              
    } else {                                                          
      (*printer)(                                                     
 80051a0:	78 1b 08 01 	mvhi fp,0x801                                  
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
      }                                                               
    } else if (prev_used) {                                           
      (*printer)(                                                     
 80051a4:	78 19 08 01 	mvhi r25,0x801                                 
  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)(                                                         
 80051a8:	38 21 47 f8 	ori r1,r1,0x47f8                               
 80051ac:	5b 81 00 54 	sw (sp+84),r1                                  
 80051b0:	2b 81 00 58 	lw r1,(sp+88)                                  
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
 80051b4:	78 18 08 01 	mvhi r24,0x801                                 
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
 80051b8:	ba 80 88 00 	mv r17,r20                                     
  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)(                                                         
 80051bc:	38 21 48 14 	ori r1,r1,0x4814                               
 80051c0:	5b 81 00 58 	sw (sp+88),r1                                  
 80051c4:	2b 81 00 5c 	lw r1,(sp+92)                                  
        "block 0x%08x: size %u\n",                                    
        block,                                                        
        block_size                                                    
      );                                                              
    } else {                                                          
      (*printer)(                                                     
 80051c8:	3b 7b 4b e4 	ori fp,fp,0x4be4                               
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
      }                                                               
    } else if (prev_used) {                                           
      (*printer)(                                                     
 80051cc:	3b 39 4b cc 	ori r25,r25,0x4bcc                             
  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)(                                                         
 80051d0:	38 21 4b 28 	ori r1,r1,0x4b28                               
 80051d4:	5b 81 00 5c 	sw (sp+92),r1                                  
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
 80051d8:	2b 81 00 60 	lw r1,(sp+96)                                  
 80051dc:	3b 18 4b 98 	ori r24,r24,0x4b98                             
 80051e0:	38 21 48 24 	ori r1,r1,0x4824                               
 80051e4:	5b 81 00 60 	sw (sp+96),r1                                  
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
 80051e8:	2b 81 00 64 	lw r1,(sp+100)                                 
 80051ec:	38 21 48 08 	ori r1,r1,0x4808                               
 80051f0:	5b 81 00 64 	sw (sp+100),r1                                 
    - 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;                
 80051f4:	34 01 ff fe 	mvi r1,-2                                      
 80051f8:	a1 81 90 00 	and r18,r12,r1                                 
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 80051fc:	b6 51 80 00 	add r16,r18,r17                                
  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;             
 8005200:	55 d0 00 7a 	bgu r14,r16,80053e8 <_Heap_Walk+0x56c>         <== NEVER TAKEN
 8005204:	29 a4 00 24 	lw r4,(r13+36)                                 
 8005208:	56 04 00 78 	bgu r16,r4,80053e8 <_Heap_Walk+0x56c>          
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
 800520c:	ba 40 08 00 	mv r1,r18                                      
 8005210:	ba a0 10 00 	mv r2,r21                                      
    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;               
 8005214:	fe 37 58 00 	cmpne r11,r17,r23                              
 8005218:	fb ff ed f6 	calli 80009f0 <__umodsi3>                      
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
 800521c:	44 20 00 02 	be r1,r0,8005224 <_Heap_Walk+0x3a8>            
 8005220:	5d 60 00 15 	bne r11,r0,8005274 <_Heap_Walk+0x3f8>          
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( block_size < min_block_size && is_not_last_block ) {         
 8005224:	52 56 00 02 	bgeu r18,r22,800522c <_Heap_Walk+0x3b0>        
 8005228:	5d 60 00 1c 	bne r11,r0,8005298 <_Heap_Walk+0x41c>          <== ALWAYS TAKEN
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( next_block_begin <= block_begin && is_not_last_block ) {     
 800522c:	56 11 00 02 	bgu r16,r17,8005234 <_Heap_Walk+0x3b8>         
 8005230:	5d 60 00 77 	bne r11,r0,800540c <_Heap_Walk+0x590>          
  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;                 
 8005234:	2a 06 00 04 	lw r6,(r16+4)                                  
 8005238:	21 8c 00 01 	andi r12,r12,0x1                               
 800523c:	20 c6 00 01 	andi r6,r6,0x1                                 
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
 8005240:	44 c0 00 28 	be r6,r0,80052e0 <_Heap_Walk+0x464>            
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
      }                                                               
    } else if (prev_used) {                                           
 8005244:	45 80 00 1f 	be r12,r0,80052c0 <_Heap_Walk+0x444>           
      (*printer)(                                                     
 8005248:	ba 60 08 00 	mv r1,r19                                      
 800524c:	34 02 00 00 	mvi r2,0                                       
 8005250:	bb 20 18 00 	mv r3,r25                                      
 8005254:	ba 20 20 00 	mv r4,r17                                      
 8005258:	ba 40 28 00 	mv r5,r18                                      
 800525c:	d9 e0 00 00 	call r15                                       
        block->prev_size                                              
      );                                                              
    }                                                                 
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
 8005260:	46 90 00 43 	be r20,r16,800536c <_Heap_Walk+0x4f0>          
 8005264:	2a 0c 00 04 	lw r12,(r16+4)                                 
 8005268:	29 ae 00 20 	lw r14,(r13+32)                                
 800526c:	ba 00 88 00 	mv r17,r16                                     
 8005270:	e3 ff ff e1 	bi 80051f4 <_Heap_Walk+0x378>                  
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
      (*printer)(                                                     
 8005274:	78 03 08 01 	mvhi r3,0x801                                  
 8005278:	38 63 4a 98 	ori r3,r3,0x4a98                               
 800527c:	ba 60 08 00 	mv r1,r19                                      
 8005280:	34 02 00 01 	mvi r2,1                                       
 8005284:	ba 20 20 00 	mv r4,r17                                      
 8005288:	ba 40 28 00 	mv r5,r18                                      
 800528c:	d9 e0 00 00 	call r15                                       
        "block 0x%08x: block size %u not page aligned\n",             
        block,                                                        
        block_size                                                    
      );                                                              
                                                                      
      return false;                                                   
 8005290:	34 03 00 00 	mvi r3,0                                       
 8005294:	e3 ff ff 1e 	bi 8004f0c <_Heap_Walk+0x90>                   
    }                                                                 
                                                                      
    if ( block_size < min_block_size && is_not_last_block ) {         
      (*printer)(                                                     
 8005298:	78 03 08 01 	mvhi r3,0x801                                  
 800529c:	38 63 4a c8 	ori r3,r3,0x4ac8                               
 80052a0:	ba 60 08 00 	mv r1,r19                                      
 80052a4:	34 02 00 01 	mvi r2,1                                       
 80052a8:	ba 20 20 00 	mv r4,r17                                      
 80052ac:	ba 40 28 00 	mv r5,r18                                      
 80052b0:	ba c0 30 00 	mv r6,r22                                      
 80052b4:	d9 e0 00 00 	call r15                                       
        block,                                                        
        block_size,                                                   
        min_block_size                                                
      );                                                              
                                                                      
      return false;                                                   
 80052b8:	34 03 00 00 	mvi r3,0                                       
 80052bc:	e3 ff ff 14 	bi 8004f0c <_Heap_Walk+0x90>                   
        "block 0x%08x: size %u\n",                                    
        block,                                                        
        block_size                                                    
      );                                                              
    } else {                                                          
      (*printer)(                                                     
 80052c0:	2a 26 00 00 	lw r6,(r17+0)                                  
 80052c4:	ba 20 20 00 	mv r4,r17                                      
 80052c8:	ba 60 08 00 	mv r1,r19                                      
 80052cc:	34 02 00 00 	mvi r2,0                                       
 80052d0:	bb 60 18 00 	mv r3,fp                                       
 80052d4:	ba 40 28 00 	mv r5,r18                                      
 80052d8:	d9 e0 00 00 	call r15                                       
 80052dc:	e3 ff ff e1 	bi 8005260 <_Heap_Walk+0x3e4>                  
    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 ?                                 
 80052e0:	2a 26 00 0c 	lw r6,(r17+12)                                 
  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)(                                                         
 80052e4:	29 a4 00 08 	lw r4,(r13+8)                                  
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 80052e8:	29 a5 00 0c 	lw r5,(r13+12)                                 
  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)(                                                         
 80052ec:	2b 87 00 54 	lw r7,(sp+84)                                  
 80052f0:	44 86 00 03 	be r4,r6,80052fc <_Heap_Walk+0x480>            
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
 80052f4:	bb 00 38 00 	mv r7,r24                                      
 80052f8:	45 a6 00 29 	be r13,r6,800539c <_Heap_Walk+0x520>           
    block->next,                                                      
    block->next == last_free_block ?                                  
 80052fc:	2a 28 00 08 	lw r8,(r17+8)                                  
  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)(                                                         
 8005300:	2b 84 00 58 	lw r4,(sp+88)                                  
 8005304:	44 a8 00 03 	be r5,r8,8005310 <_Heap_Walk+0x494>            
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
 8005308:	bb 00 20 00 	mv r4,r24                                      
 800530c:	45 a8 00 26 	be r13,r8,80053a4 <_Heap_Walk+0x528>           
  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)(                                                         
 8005310:	2b 83 00 5c 	lw r3,(sp+92)                                  
 8005314:	5b 84 00 04 	sw (sp+4),r4                                   
 8005318:	ba 60 08 00 	mv r1,r19                                      
 800531c:	34 02 00 00 	mvi r2,0                                       
 8005320:	ba 20 20 00 	mv r4,r17                                      
 8005324:	ba 40 28 00 	mv r5,r18                                      
 8005328:	d9 e0 00 00 	call r15                                       
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
  );                                                                  
                                                                      
  if ( block_size != next_block->prev_size ) {                        
 800532c:	2a 06 00 00 	lw r6,(r16+0)                                  
 8005330:	5e 46 00 11 	bne r18,r6,8005374 <_Heap_Walk+0x4f8>          
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !prev_used ) {                                                 
 8005334:	45 80 00 1e 	be r12,r0,80053ac <_Heap_Walk+0x530>           
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8005338:	29 a5 00 08 	lw r5,(r13+8)                                  
)                                                                     
{                                                                     
  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 ) {                            
 800533c:	45 a5 00 04 	be r13,r5,800534c <_Heap_Walk+0x4d0>           <== NEVER TAKEN
    if ( free_block == block ) {                                      
 8005340:	46 25 ff c8 	be r17,r5,8005260 <_Heap_Walk+0x3e4>           
      return true;                                                    
    }                                                                 
    free_block = free_block->next;                                    
 8005344:	28 a5 00 08 	lw r5,(r5+8)                                   
)                                                                     
{                                                                     
  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 ) {                            
 8005348:	5d a5 ff fe 	bne r13,r5,8005340 <_Heap_Walk+0x4c4>          
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {                 
    (*printer)(                                                       
 800534c:	78 03 08 01 	mvhi r3,0x801                                  
 8005350:	38 63 4c 0c 	ori r3,r3,0x4c0c                               
 8005354:	ba 60 08 00 	mv r1,r19                                      
 8005358:	34 02 00 01 	mvi r2,1                                       
 800535c:	ba 20 20 00 	mv r4,r17                                      
 8005360:	d9 e0 00 00 	call r15                                       
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
 8005364:	34 03 00 00 	mvi r3,0                                       
 8005368:	e3 ff fe e9 	bi 8004f0c <_Heap_Walk+0x90>                   
    }                                                                 
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
 800536c:	34 03 00 01 	mvi r3,1                                       
 8005370:	e3 ff fe e7 	bi 8004f0c <_Heap_Walk+0x90>                   
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
  );                                                                  
                                                                      
  if ( block_size != next_block->prev_size ) {                        
    (*printer)(                                                       
 8005374:	78 03 08 01 	mvhi r3,0x801                                  
 8005378:	38 63 4b 60 	ori r3,r3,0x4b60                               
 800537c:	ba 60 08 00 	mv r1,r19                                      
 8005380:	34 02 00 01 	mvi r2,1                                       
 8005384:	ba 20 20 00 	mv r4,r17                                      
 8005388:	ba 40 28 00 	mv r5,r18                                      
 800538c:	ba 00 38 00 	mv r7,r16                                      
 8005390:	d9 e0 00 00 	call r15                                       
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
 8005394:	34 03 00 00 	mvi r3,0                                       
 8005398:	e3 ff fe dd 	bi 8004f0c <_Heap_Walk+0x90>                   
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
 800539c:	2b 87 00 64 	lw r7,(sp+100)                                 
 80053a0:	e3 ff ff d7 	bi 80052fc <_Heap_Walk+0x480>                  
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
 80053a4:	2b 84 00 60 	lw r4,(sp+96)                                  
 80053a8:	e3 ff ff da 	bi 8005310 <_Heap_Walk+0x494>                  
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !prev_used ) {                                                 
    (*printer)(                                                       
 80053ac:	78 03 08 01 	mvhi r3,0x801                                  
 80053b0:	38 63 4b 9c 	ori r3,r3,0x4b9c                               
 80053b4:	ba 60 08 00 	mv r1,r19                                      
 80053b8:	34 02 00 01 	mvi r2,1                                       
 80053bc:	ba 20 20 00 	mv r4,r17                                      
 80053c0:	d9 e0 00 00 	call r15                                       
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
 80053c4:	34 03 00 00 	mvi r3,0                                       
 80053c8:	e3 ff fe d1 	bi 8004f0c <_Heap_Walk+0x90>                   
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_prev_used( first_block ) ) {                         
    (*printer)(                                                       
 80053cc:	78 03 08 01 	mvhi r3,0x801                                  
 80053d0:	38 63 49 50 	ori r3,r3,0x4950                               
 80053d4:	ba 60 08 00 	mv r1,r19                                      
 80053d8:	34 02 00 01 	mvi r2,1                                       
 80053dc:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 80053e0:	34 03 00 00 	mvi r3,0                                       
 80053e4:	e3 ff fe ca 	bi 8004f0c <_Heap_Walk+0x90>                   
    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)(                                                     
 80053e8:	78 03 08 01 	mvhi r3,0x801                                  
 80053ec:	38 63 4a 68 	ori r3,r3,0x4a68                               
 80053f0:	ba 60 08 00 	mv r1,r19                                      
 80053f4:	34 02 00 01 	mvi r2,1                                       
 80053f8:	ba 20 20 00 	mv r4,r17                                      
 80053fc:	ba 00 28 00 	mv r5,r16                                      
 8005400:	d9 e0 00 00 	call r15                                       
        "block 0x%08x: next block 0x%08x not in heap\n",              
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
 8005404:	34 03 00 00 	mvi r3,0                                       
 8005408:	e3 ff fe c1 	bi 8004f0c <_Heap_Walk+0x90>                   
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( next_block_begin <= block_begin && is_not_last_block ) {     
      (*printer)(                                                     
 800540c:	78 03 08 01 	mvhi r3,0x801                                  
 8005410:	38 63 4a f4 	ori r3,r3,0x4af4                               
 8005414:	ba 60 08 00 	mv r1,r19                                      
 8005418:	34 02 00 01 	mvi r2,1                                       
 800541c:	ba 20 20 00 	mv r4,r17                                      
 8005420:	ba 00 28 00 	mv r5,r16                                      
 8005424:	d9 e0 00 00 	call r15                                       
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
 8005428:	34 03 00 00 	mvi r3,0                                       
 800542c:	e3 ff fe b8 	bi 8004f0c <_Heap_Walk+0x90>                   
  const Heap_Block *prev_block = free_list_tail;                      
  const Heap_Block *free_block = first_free_block;                    
                                                                      
  while ( free_block != free_list_tail ) {                            
    if ( !_Heap_Is_block_in_heap( heap, free_block ) ) {              
      (*printer)(                                                     
 8005430:	78 03 08 01 	mvhi r3,0x801                                  
 8005434:	38 63 49 c8 	ori r3,r3,0x49c8                               
 8005438:	ba 60 08 00 	mv r1,r19                                      
 800543c:	34 02 00 01 	mvi r2,1                                       
 8005440:	b9 60 20 00 	mv r4,r11                                      
 8005444:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005448:	34 03 00 00 	mvi r3,0                                       
 800544c:	e3 ff fe b0 	bi 8004f0c <_Heap_Walk+0x90>                   
    }                                                                 
                                                                      
    if (                                                              
      !_Heap_Is_aligned( _Heap_Alloc_area_of_block( free_block ), page_size )
    ) {                                                               
      (*printer)(                                                     
 8005450:	78 03 08 01 	mvhi r3,0x801                                  
 8005454:	38 63 49 e8 	ori r3,r3,0x49e8                               
 8005458:	ba 60 08 00 	mv r1,r19                                      
 800545c:	34 02 00 01 	mvi r2,1                                       
 8005460:	b9 60 20 00 	mv r4,r11                                      
 8005464:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005468:	34 03 00 00 	mvi r3,0                                       
 800546c:	e3 ff fe a8 	bi 8004f0c <_Heap_Walk+0x90>                   
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
      (*printer)(                                                     
 8005470:	78 03 08 01 	mvhi r3,0x801                                  
 8005474:	38 63 4a 18 	ori r3,r3,0x4a18                               
 8005478:	ba 60 08 00 	mv r1,r19                                      
 800547c:	34 02 00 01 	mvi r2,1                                       
 8005480:	b9 60 20 00 	mv r4,r11                                      
 8005484:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005488:	34 03 00 00 	mvi r3,0                                       
 800548c:	e3 ff fe a0 	bi 8004f0c <_Heap_Walk+0x90>                   
                                                                      

08003584 <_IO_Initialize_all_drivers>: * * Output Parameters: NONE */ void _IO_Initialize_all_drivers( void ) {
 8003584:	37 9c ff f4 	addi sp,sp,-12                                 
 8003588:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800358c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8003590:	5b 9d 00 04 	sw (sp+4),ra                                   
   rtems_device_major_number major;                                   
                                                                      
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )         
 8003594:	78 0c 08 01 	mvhi r12,0x801                                 
 8003598:	39 8c 51 a8 	ori r12,r12,0x51a8                             
 800359c:	29 81 00 00 	lw r1,(r12+0)                                  
 80035a0:	44 20 00 09 	be r1,r0,80035c4 <_IO_Initialize_all_drivers+0x40><== NEVER TAKEN
 80035a4:	34 0b 00 00 	mvi r11,0                                      
     (void) rtems_io_initialize( major, 0, NULL );                    
 80035a8:	b9 60 08 00 	mv r1,r11                                      
 80035ac:	34 02 00 00 	mvi r2,0                                       
 80035b0:	34 03 00 00 	mvi r3,0                                       
 80035b4:	f8 00 19 f7 	calli 8009d90 <rtems_io_initialize>            
                                                                      
void _IO_Initialize_all_drivers( void )                               
{                                                                     
   rtems_device_major_number major;                                   
                                                                      
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )         
 80035b8:	29 81 00 00 	lw r1,(r12+0)                                  
 80035bc:	35 6b 00 01 	addi r11,r11,1                                 
 80035c0:	54 2b ff fa 	bgu r1,r11,80035a8 <_IO_Initialize_all_drivers+0x24>
     (void) rtems_io_initialize( major, 0, NULL );                    
}                                                                     
 80035c4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80035c8:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80035cc:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80035d0:	37 9c 00 0c 	addi sp,sp,12                                  
 80035d4:	c3 a0 00 00 	ret                                            
                                                                      

08003464 <_IO_Manager_initialization>: * workspace. * */ void _IO_Manager_initialization(void) {
 8003464:	37 9c ff e8 	addi sp,sp,-24                                 
 8003468:	5b 8b 00 18 	sw (sp+24),r11                                 
 800346c:	5b 8c 00 14 	sw (sp+20),r12                                 
 8003470:	5b 8d 00 10 	sw (sp+16),r13                                 
 8003474:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8003478:	5b 8f 00 08 	sw (sp+8),r15                                  
 800347c:	5b 9d 00 04 	sw (sp+4),ra                                   
  uint32_t                    index;                                  
  rtems_driver_address_table *driver_table;                           
  uint32_t                    drivers_in_table;                       
  uint32_t                    number_of_drivers;                      
                                                                      
  driver_table      = Configuration.Device_driver_table;              
 8003480:	78 01 08 01 	mvhi r1,0x801                                  
 8003484:	38 21 40 c4 	ori r1,r1,0x40c4                               
  drivers_in_table  = Configuration.number_of_device_drivers;         
 8003488:	28 2b 00 34 	lw r11,(r1+52)                                 
  number_of_drivers = Configuration.maximum_drivers;                  
 800348c:	28 2e 00 30 	lw r14,(r1+48)                                 
  uint32_t                    index;                                  
  rtems_driver_address_table *driver_table;                           
  uint32_t                    drivers_in_table;                       
  uint32_t                    number_of_drivers;                      
                                                                      
  driver_table      = Configuration.Device_driver_table;              
 8003490:	28 2d 00 38 	lw r13,(r1+56)                                 
                                                                      
  /*                                                                  
   *  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 )                        
 8003494:	51 6e 00 2e 	bgeu r11,r14,800354c <_IO_Manager_initialization+0xe8>
   *  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 )  
 8003498:	b5 ce 60 00 	add r12,r14,r14                                
 800349c:	b5 8e 60 00 	add r12,r12,r14                                
 80034a0:	b5 8c 60 00 	add r12,r12,r12                                
 80034a4:	b5 8c 60 00 	add r12,r12,r12                                
 80034a8:	b5 8c 60 00 	add r12,r12,r12                                
   *  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(                             
 80034ac:	b9 80 08 00 	mv r1,r12                                      
 80034b0:	f8 00 0e bb 	calli 8006f9c <_Workspace_Allocate_or_fatal_error>
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
 80034b4:	78 04 08 01 	mvhi r4,0x801                                  
  /*                                                                  
   *  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 *)           
 80034b8:	78 0f 08 01 	mvhi r15,0x801                                 
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
 80034bc:	38 84 51 a8 	ori r4,r4,0x51a8                               
  /*                                                                  
   *  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 *)           
 80034c0:	39 ef 51 ac 	ori r15,r15,0x51ac                             
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
                                                                      
  memset(                                                             
 80034c4:	34 02 00 00 	mvi r2,0                                       
 80034c8:	b9 80 18 00 	mv r3,r12                                      
                                                                      
  _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;                          
 80034cc:	58 8e 00 00 	sw (r4+0),r14                                  
  /*                                                                  
   *  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 *)           
 80034d0:	59 e1 00 00 	sw (r15+0),r1                                  
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
                                                                      
  memset(                                                             
 80034d4:	f8 00 29 33 	calli 800d9a0 <memset>                         
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
 80034d8:	45 60 00 15 	be r11,r0,800352c <_IO_Manager_initialization+0xc8><== NEVER TAKEN
 80034dc:	29 e5 00 00 	lw r5,(r15+0)                                  
 80034e0:	34 03 00 00 	mvi r3,0                                       
 80034e4:	34 04 00 00 	mvi r4,0                                       
 *  registration. The driver table is now allocated in the            
 *  workspace.                                                        
 *                                                                    
 */                                                                   
                                                                      
void _IO_Manager_initialization(void)                                 
 80034e8:	b5 a3 08 00 	add r1,r13,r3                                  
    _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];            
 80034ec:	28 26 00 00 	lw r6,(r1+0)                                   
 *  registration. The driver table is now allocated in the            
 *  workspace.                                                        
 *                                                                    
 */                                                                   
                                                                      
void _IO_Manager_initialization(void)                                 
 80034f0:	b4 a3 10 00 	add r2,r5,r3                                   
  memset(                                                             
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
 80034f4:	34 84 00 01 	addi r4,r4,1                                   
    _IO_Driver_address_table[index] = driver_table[index];            
 80034f8:	58 46 00 00 	sw (r2+0),r6                                   
 80034fc:	28 26 00 04 	lw r6,(r1+4)                                   
  memset(                                                             
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
 8003500:	34 63 00 18 	addi r3,r3,24                                  
    _IO_Driver_address_table[index] = driver_table[index];            
 8003504:	58 46 00 04 	sw (r2+4),r6                                   
 8003508:	28 26 00 08 	lw r6,(r1+8)                                   
 800350c:	58 46 00 08 	sw (r2+8),r6                                   
 8003510:	28 26 00 0c 	lw r6,(r1+12)                                  
 8003514:	58 46 00 0c 	sw (r2+12),r6                                  
 8003518:	28 26 00 10 	lw r6,(r1+16)                                  
 800351c:	58 46 00 10 	sw (r2+16),r6                                  
 8003520:	28 21 00 14 	lw r1,(r1+20)                                  
 8003524:	58 41 00 14 	sw (r2+20),r1                                  
  memset(                                                             
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
 8003528:	55 64 ff f0 	bgu r11,r4,80034e8 <_IO_Manager_initialization+0x84>
    _IO_Driver_address_table[index] = driver_table[index];            
}                                                                     
 800352c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003530:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003534:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003538:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800353c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8003540:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003544:	37 9c 00 18 	addi sp,sp,24                                  
 8003548:	c3 a0 00 00 	ret                                            
   *  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;                          
 800354c:	78 02 08 01 	mvhi r2,0x801                                  
    _IO_Number_of_drivers = number_of_drivers;                        
 8003550:	78 01 08 01 	mvhi r1,0x801                                  
   *  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;                          
 8003554:	38 42 51 ac 	ori r2,r2,0x51ac                               
    _IO_Number_of_drivers = number_of_drivers;                        
 8003558:	38 21 51 a8 	ori r1,r1,0x51a8                               
   *  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;                          
 800355c:	58 4d 00 00 	sw (r2+0),r13                                  
    _IO_Number_of_drivers = number_of_drivers;                        
 8003560:	58 2b 00 00 	sw (r1+0),r11                                  
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
    _IO_Driver_address_table[index] = driver_table[index];            
}                                                                     
 8003564:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003568:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800356c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003570:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003574:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8003578:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800357c:	37 9c 00 18 	addi sp,sp,24                                  
 8003580:	c3 a0 00 00 	ret                                            
                                                                      

080044d0 <_Objects_Allocate>: */ Objects_Control *_Objects_Allocate( Objects_Information *information ) {
 80044d0:	37 9c ff ec 	addi sp,sp,-20                                 
 80044d4:	5b 8b 00 14 	sw (sp+20),r11                                 
 80044d8:	5b 8c 00 10 	sw (sp+16),r12                                 
 80044dc:	5b 8d 00 0c 	sw (sp+12),r13                                 
 80044e0:	5b 8e 00 08 	sw (sp+8),r14                                  
 80044e4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80044e8:	b8 20 58 00 	mv r11,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 )                                       
 80044ec:	28 21 00 18 	lw r1,(r1+24)                                  
    return NULL;                                                      
 80044f0:	34 0c 00 00 	mvi r12,0                                      
   *  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 )                                       
 80044f4:	5c 20 00 09 	bne r1,r0,8004518 <_Objects_Allocate+0x48>     <== ALWAYS TAKEN
    );                                                                
  }                                                                   
#endif                                                                
                                                                      
  return the_object;                                                  
}                                                                     
 80044f8:	b9 80 08 00 	mv r1,r12                                      
 80044fc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004500:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8004504:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8004508:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800450c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8004510:	37 9c 00 14 	addi sp,sp,20                                  
 8004514:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  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 );
 8004518:	35 6d 00 20 	addi r13,r11,32                                
 800451c:	b9 a0 08 00 	mv r1,r13                                      
 8004520:	fb ff fc fa 	calli 8003908 <_Chain_Get>                     
 8004524:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  if ( information->auto_extend ) {                                   
 8004528:	41 61 00 12 	lbu r1,(r11+18)                                
                                                                      
  /*                                                                  
   *  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 );
 800452c:	b9 80 70 00 	mv r14,r12                                     
                                                                      
  if ( information->auto_extend ) {                                   
 8004530:	44 20 ff f2 	be r1,r0,80044f8 <_Objects_Allocate+0x28>      
    /*                                                                
     *  If the list is empty then we are out of objects and need to   
     *  extend information base.                                      
     */                                                               
                                                                      
    if ( !the_object ) {                                              
 8004534:	45 80 00 18 	be r12,r0,8004594 <_Objects_Allocate+0xc4>     
    }                                                                 
                                                                      
    if ( the_object ) {                                               
      uint32_t   block;                                               
                                                                      
      block = (uint32_t) _Objects_Get_index( the_object->id ) -       
 8004538:	2d 83 00 0a 	lhu r3,(r12+10)                                
 800453c:	2d 61 00 0a 	lhu r1,(r11+10)                                
              _Objects_Get_index( information->minimum_id );          
      block /= information->allocation_size;                          
 8004540:	2d 62 00 14 	lhu r2,(r11+20)                                
 8004544:	c8 61 08 00 	sub r1,r3,r1                                   
 8004548:	f8 00 37 ac 	calli 80123f8 <__udivsi3>                      
                                                                      
      information->inactive_per_block[ block ]--;                     
 800454c:	29 62 00 30 	lw r2,(r11+48)                                 
 8004550:	b4 21 08 00 	add r1,r1,r1                                   
 8004554:	b4 21 08 00 	add r1,r1,r1                                   
 8004558:	b4 41 08 00 	add r1,r2,r1                                   
 800455c:	28 22 00 00 	lw r2,(r1+0)                                   
      information->inactive--;                                        
 8004560:	2d 63 00 2c 	lhu r3,(r11+44)                                
                                                                      
      block = (uint32_t) _Objects_Get_index( the_object->id ) -       
              _Objects_Get_index( information->minimum_id );          
      block /= information->allocation_size;                          
                                                                      
      information->inactive_per_block[ block ]--;                     
 8004564:	34 42 ff ff 	addi r2,r2,-1                                  
 8004568:	58 22 00 00 	sw (r1+0),r2                                   
      information->inactive--;                                        
 800456c:	34 61 ff ff 	addi r1,r3,-1                                  
 8004570:	0d 61 00 2c 	sh (r11+44),r1                                 
    );                                                                
  }                                                                   
#endif                                                                
                                                                      
  return the_object;                                                  
}                                                                     
 8004574:	b9 80 08 00 	mv r1,r12                                      
 8004578:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800457c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8004580:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8004584:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8004588:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800458c:	37 9c 00 14 	addi sp,sp,20                                  
 8004590:	c3 a0 00 00 	ret                                            
     *  If the list is empty then we are out of objects and need to   
     *  extend information base.                                      
     */                                                               
                                                                      
    if ( !the_object ) {                                              
      _Objects_Extend_information( information );                     
 8004594:	b9 60 08 00 	mv r1,r11                                      
 8004598:	f8 00 00 06 	calli 80045b0 <_Objects_Extend_information>    
      the_object =  (Objects_Control *) _Chain_Get( &information->Inactive );
 800459c:	b9 a0 08 00 	mv r1,r13                                      
 80045a0:	fb ff fc da 	calli 8003908 <_Chain_Get>                     
 80045a4:	b8 20 60 00 	mv r12,r1                                      
    }                                                                 
                                                                      
    if ( the_object ) {                                               
 80045a8:	44 2e ff d4 	be r1,r14,80044f8 <_Objects_Allocate+0x28>     
 80045ac:	e3 ff ff e3 	bi 8004538 <_Objects_Allocate+0x68>            
                                                                      

080045b0 <_Objects_Extend_information>: */ void _Objects_Extend_information( Objects_Information *information ) {
 80045b0:	37 9c ff c8 	addi sp,sp,-56                                 
 80045b4:	5b 8b 00 2c 	sw (sp+44),r11                                 
 80045b8:	5b 8c 00 28 	sw (sp+40),r12                                 
 80045bc:	5b 8d 00 24 	sw (sp+36),r13                                 
 80045c0:	5b 8e 00 20 	sw (sp+32),r14                                 
 80045c4:	5b 8f 00 1c 	sw (sp+28),r15                                 
 80045c8:	5b 90 00 18 	sw (sp+24),r16                                 
 80045cc:	5b 91 00 14 	sw (sp+20),r17                                 
 80045d0:	5b 92 00 10 	sw (sp+16),r18                                 
 80045d4:	5b 93 00 0c 	sw (sp+12),r19                                 
 80045d8:	5b 94 00 08 	sw (sp+8),r20                                  
 80045dc:	5b 9d 00 04 	sw (sp+4),ra                                   
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
 80045e0:	28 2c 00 34 	lw r12,(r1+52)                                 
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
 80045e4:	b8 20 58 00 	mv r11,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 );      
 80045e8:	2c 30 00 0a 	lhu r16,(r1+10)                                
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
 80045ec:	45 80 00 aa 	be r12,r0,8004894 <_Objects_Extend_information+0x2e4>
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
 80045f0:	2c 2f 00 14 	lhu r15,(r1+20)                                
 80045f4:	2c 31 00 10 	lhu r17,(r1+16)                                
 80045f8:	b9 e0 10 00 	mv r2,r15                                      
 80045fc:	ba 20 08 00 	mv r1,r17                                      
 8004600:	f8 00 37 7e 	calli 80123f8 <__udivsi3>                      
 8004604:	20 2e ff ff 	andi r14,r1,0xffff                             
                                                                      
    for ( ; block < block_count; block++ ) {                          
 8004608:	45 c0 00 a9 	be r14,r0,80048ac <_Objects_Extend_information+0x2fc><== NEVER TAKEN
      if ( information->object_blocks[ block ] == NULL ) {            
 800460c:	29 81 00 00 	lw r1,(r12+0)                                  
 8004610:	44 20 00 ac 	be r1,r0,80048c0 <_Objects_Extend_information+0x310><== NEVER TAKEN
 8004614:	b9 80 18 00 	mv r3,r12                                      
 8004618:	b9 e0 08 00 	mv r1,r15                                      
  /*                                                                  
   *  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 );      
 800461c:	ba 00 68 00 	mv r13,r16                                     
  index_base    = minimum_index;                                      
  block         = 0;                                                  
 8004620:	34 0c 00 00 	mvi r12,0                                      
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
 8004624:	35 8c 00 01 	addi r12,r12,1                                 
      if ( information->object_blocks[ block ] == NULL ) {            
        do_extend = false;                                            
        break;                                                        
      } else                                                          
        index_base += information->allocation_size;                   
 8004628:	b5 af 68 00 	add r13,r13,r15                                
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
 800462c:	55 cc 00 81 	bgu r14,r12,8004830 <_Objects_Extend_information+0x280>
                                                                      
  /*                                                                  
   *  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;                                               
 8004630:	34 12 00 01 	mvi r18,1                                      
      } else                                                          
        index_base += information->allocation_size;                   
    }                                                                 
  }                                                                   
                                                                      
  maximum = (uint32_t) information->maximum + information->allocation_size;
 8004634:	b6 21 88 00 	add r17,r17,r1                                 
  /*                                                                  
   *  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 ) {                           
 8004638:	38 02 ff ff 	mvu r2,0xffff                                  
 800463c:	56 22 00 70 	bgu r17,r2,80047fc <_Objects_Extend_information+0x24c>
                                                                      
  /*                                                                  
   * 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;      
 8004640:	29 62 00 18 	lw r2,(r11+24)                                 
 8004644:	f8 00 37 08 	calli 8012264 <__mulsi3>                       
  if ( information->auto_extend ) {                                   
 8004648:	41 62 00 12 	lbu r2,(r11+18)                                
 800464c:	44 40 00 7e 	be r2,r0,8004844 <_Objects_Extend_information+0x294>
    new_object_block = _Workspace_Allocate( block_size );             
 8004650:	f8 00 0a 3f 	calli 8006f4c <_Workspace_Allocate>            
 8004654:	b8 20 78 00 	mv r15,r1                                      
    if ( !new_object_block )                                          
 8004658:	44 20 00 69 	be r1,r0,80047fc <_Objects_Extend_information+0x24c>
  }                                                                   
                                                                      
  /*                                                                  
   *  Do we need to grow the tables?                                  
   */                                                                 
  if ( do_extend ) {                                                  
 800465c:	46 40 00 41 	be r18,r0,8004760 <_Objects_Extend_information+0x1b0>
     */                                                               
                                                                      
    /*                                                                
     *  Up the block count and maximum                                
     */                                                               
    block_count++;                                                    
 8004660:	35 c1 00 01 	addi r1,r14,1                                  
                                                                      
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
 8004664:	b4 21 98 00 	add r19,r1,r1                                  
 8004668:	b6 61 08 00 	add r1,r19,r1                                  
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
 800466c:	b6 21 08 00 	add r1,r17,r1                                  
                                                                      
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
 8004670:	b4 30 08 00 	add r1,r1,r16                                  
    block_count++;                                                    
                                                                      
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
 8004674:	b4 21 08 00 	add r1,r1,r1                                   
 8004678:	b4 21 08 00 	add r1,r1,r1                                   
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
    object_blocks = (void**) _Workspace_Allocate( block_size );       
 800467c:	f8 00 0a 34 	calli 8006f4c <_Workspace_Allocate>            
 8004680:	b8 20 90 00 	mv r18,r1                                      
                                                                      
    if ( !object_blocks ) {                                           
 8004684:	44 20 00 94 	be r1,r0,80048d4 <_Objects_Extend_information+0x324>
     *  Take the block count down. Saves all the (block_count - 1)    
     *  in the copies.                                                
     */                                                               
    block_count--;                                                    
                                                                      
    if ( information->maximum > minimum_index ) {                     
 8004688:	2d 62 00 10 	lhu r2,(r11+16)                                
    }                                                                 
                                                                      
    /*                                                                
     *  Break the block into the various sections.                    
     */                                                               
    inactive_per_block = (uint32_t *) _Addresses_Add_offset(          
 800468c:	b6 73 a0 00 	add r20,r19,r19                                
 8004690:	b4 34 98 00 	add r19,r1,r20                                 
 8004694:	b6 74 a0 00 	add r20,r19,r20                                
     *  Take the block count down. Saves all the (block_count - 1)    
     *  in the copies.                                                
     */                                                               
    block_count--;                                                    
                                                                      
    if ( information->maximum > minimum_index ) {                     
 8004698:	54 50 00 6e 	bgu r2,r16,8004850 <_Objects_Extend_information+0x2a0>
    } else {                                                          
                                                                      
      /*                                                              
       *  Deal with the special case of the 0 to minimum_index        
       */                                                             
      for ( index = 0; index < minimum_index; index++ ) {             
 800469c:	ba 80 20 00 	mv r4,r20                                      
 80046a0:	34 03 00 00 	mvi r3,0                                       
 80046a4:	46 00 00 05 	be r16,r0,80046b8 <_Objects_Extend_information+0x108><== NEVER TAKEN
        local_table[ index ] = NULL;                                  
 80046a8:	58 80 00 00 	sw (r4+0),r0                                   
    } else {                                                          
                                                                      
      /*                                                              
       *  Deal with the special case of the 0 to minimum_index        
       */                                                             
      for ( index = 0; index < minimum_index; index++ ) {             
 80046ac:	34 63 00 01 	addi r3,r3,1                                   
 80046b0:	34 84 00 04 	addi r4,r4,4                                   
 80046b4:	56 03 ff fd 	bgu r16,r3,80046a8 <_Objects_Extend_information+0xf8><== NEVER TAKEN
 80046b8:	b5 ce 70 00 	add r14,r14,r14                                
 80046bc:	b5 ce 70 00 	add r14,r14,r14                                
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
 80046c0:	2d 65 00 14 	lhu r5,(r11+20)                                
    }                                                                 
                                                                      
    /*                                                                
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
 80046c4:	b6 4e 08 00 	add r1,r18,r14                                 
 80046c8:	58 20 00 00 	sw (r1+0),r0                                   
    inactive_per_block[block_count] = 0;                              
 80046cc:	b6 6e 70 00 	add r14,r19,r14                                
 80046d0:	59 c0 00 00 	sw (r14+0),r0                                  
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
 80046d4:	b5 a5 28 00 	add r5,r13,r5                                  
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
 80046d8:	51 a5 00 09 	bgeu r13,r5,80046fc <_Objects_Extend_information+0x14c><== NEVER TAKEN
 *    information     - object information table                      
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
 80046dc:	b5 ad 20 00 	add r4,r13,r13                                 
 80046e0:	b4 84 20 00 	add r4,r4,r4                                   
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
 80046e4:	b6 84 20 00 	add r4,r20,r4                                  
 *    information     - object information table                      
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
 80046e8:	b9 a0 18 00 	mv r3,r13                                      
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
          index++ ) {                                                 
      local_table[ index ] = NULL;                                    
 80046ec:	58 80 00 00 	sw (r4+0),r0                                   
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
          index++ ) {                                                 
 80046f0:	34 63 00 01 	addi r3,r3,1                                   
 80046f4:	34 84 00 04 	addi r4,r4,4                                   
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
 80046f8:	54 a3 ff fd 	bgu r5,r3,80046ec <_Objects_Extend_information+0x13c>
          index < ( information->allocation_size + index_base );      
          index++ ) {                                                 
      local_table[ index ] = NULL;                                    
    }                                                                 
                                                                      
    _ISR_Disable( level );                                            
 80046fc:	90 00 70 00 	rcsr r14,IE                                    
 8004700:	34 01 ff fe 	mvi r1,-2                                      
 8004704:	a1 c1 08 00 	and r1,r14,r1                                  
 8004708:	d0 01 00 00 	wcsr IE,r1                                     
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
 800470c:	29 61 00 00 	lw r1,(r11+0)                                  
    old_tables = information->object_blocks;                          
                                                                      
    information->object_blocks = object_blocks;                       
    information->inactive_per_block = inactive_per_block;             
    information->local_table = local_table;                           
    information->maximum = (Objects_Maximum) maximum;                 
 8004710:	22 31 ff ff 	andi r17,r17,0xffff                            
 8004714:	0d 71 00 10 	sh (r11+16),r17                                
      local_table[ index ] = NULL;                                    
    }                                                                 
                                                                      
    _ISR_Disable( level );                                            
                                                                      
    old_tables = information->object_blocks;                          
 8004718:	29 70 00 34 	lw r16,(r11+52)                                
                                                                      
    information->object_blocks = object_blocks;                       
    information->inactive_per_block = inactive_per_block;             
 800471c:	59 73 00 30 	sw (r11+48),r19                                
                                                                      
    _ISR_Disable( level );                                            
                                                                      
    old_tables = information->object_blocks;                          
                                                                      
    information->object_blocks = object_blocks;                       
 8004720:	59 72 00 34 	sw (r11+52),r18                                
    information->inactive_per_block = inactive_per_block;             
    information->local_table = local_table;                           
 8004724:	59 74 00 1c 	sw (r11+28),r20                                
 8004728:	34 02 00 18 	mvi r2,24                                      
 800472c:	f8 00 36 59 	calli 8012090 <__ashlsi3>                      
 8004730:	78 12 00 01 	mvhi r18,0x1                                   
 8004734:	b8 32 90 00 	or r18,r1,r18                                  
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |    
 8004738:	2d 61 00 04 	lhu r1,(r11+4)                                 
 800473c:	34 02 00 1b 	mvi r2,27                                      
 8004740:	f8 00 36 54 	calli 8012090 <__ashlsi3>                      
 8004744:	ba 41 08 00 	or r1,r18,r1                                   
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
 8004748:	b8 31 88 00 	or r17,r1,r17                                  
    information->maximum = (Objects_Maximum) maximum;                 
    information->maximum_id = _Objects_Build_id(                      
 800474c:	59 71 00 0c 	sw (r11+12),r17                                
        information->the_class,                                       
        _Objects_Local_node,                                          
        information->maximum                                          
      );                                                              
                                                                      
    _ISR_Enable( level );                                             
 8004750:	d0 0e 00 00 	wcsr IE,r14                                    
                                                                      
    if ( old_tables )                                                 
 8004754:	46 00 00 03 	be r16,r0,8004760 <_Objects_Extend_information+0x1b0>
      _Workspace_Free( old_tables );                                  
 8004758:	ba 00 08 00 	mv r1,r16                                      
 800475c:	f8 00 0a 07 	calli 8006f78 <_Workspace_Free>                
  }                                                                   
                                                                      
  /*                                                                  
   *  Assign the new object block to the object block table.          
   */                                                                 
  information->object_blocks[ block ] = new_object_block;             
 8004760:	29 61 00 34 	lw r1,(r11+52)                                 
 8004764:	b5 8c 60 00 	add r12,r12,r12                                
                                                                      
  /*                                                                  
   *  Initialize objects .. add to a local chain first.               
   */                                                                 
  _Chain_Initialize(                                                  
 8004768:	2d 63 00 14 	lhu r3,(r11+20)                                
 800476c:	29 64 00 18 	lw r4,(r11+24)                                 
  }                                                                   
                                                                      
  /*                                                                  
   *  Assign the new object block to the object block table.          
   */                                                                 
  information->object_blocks[ block ] = new_object_block;             
 8004770:	b5 8c 60 00 	add r12,r12,r12                                
 8004774:	b4 2c 08 00 	add r1,r1,r12                                  
                                                                      
  /*                                                                  
   *  Initialize objects .. add to a local chain first.               
   */                                                                 
  _Chain_Initialize(                                                  
 8004778:	37 90 00 30 	addi r16,sp,48                                 
  }                                                                   
                                                                      
  /*                                                                  
   *  Assign the new object block to the object block table.          
   */                                                                 
  information->object_blocks[ block ] = new_object_block;             
 800477c:	58 2f 00 00 	sw (r1+0),r15                                  
                                                                      
  /*                                                                  
   *  Initialize objects .. add to a local chain first.               
   */                                                                 
  _Chain_Initialize(                                                  
 8004780:	b9 e0 10 00 	mv r2,r15                                      
 8004784:	ba 00 08 00 	mv r1,r16                                      
 8004788:	f8 00 15 9b 	calli 8009df4 <_Chain_Initialize>              
 800478c:	78 12 00 01 	mvhi r18,0x1                                   
        information->the_class,                                       
        _Objects_Local_node,                                          
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
 8004790:	35 71 00 20 	addi r17,r11,32                                
  /*                                                                  
   *  Move from the local chain, initialise, then append to the inactive chain
   */                                                                 
  index = index_base;                                                 
                                                                      
  while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
 8004794:	e0 00 00 0e 	bi 80047cc <_Objects_Extend_information+0x21c> 
 8004798:	29 61 00 00 	lw r1,(r11+0)                                  
 800479c:	f8 00 36 3d 	calli 8012090 <__ashlsi3>                      
 80047a0:	b8 32 78 00 	or r15,r1,r18                                  
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |    
 80047a4:	2d 61 00 04 	lhu r1,(r11+4)                                 
 80047a8:	34 02 00 1b 	mvi r2,27                                      
 80047ac:	f8 00 36 39 	calli 8012090 <__ashlsi3>                      
 80047b0:	b9 e1 10 00 	or r2,r15,r1                                   
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
 80047b4:	b8 4d 10 00 	or r2,r2,r13                                   
                                                                      
    the_object->id = _Objects_Build_id(                               
 80047b8:	59 c2 00 08 	sw (r14+8),r2                                  
        information->the_class,                                       
        _Objects_Local_node,                                          
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
 80047bc:	ba 20 08 00 	mv r1,r17                                      
 80047c0:	b9 c0 10 00 	mv r2,r14                                      
 80047c4:	fb ff fc 3b 	calli 80038b0 <_Chain_Append>                  
                                                                      
    index++;                                                          
 80047c8:	35 ad 00 01 	addi r13,r13,1                                 
  /*                                                                  
   *  Move from the local chain, initialise, then append to the inactive chain
   */                                                                 
  index = index_base;                                                 
                                                                      
  while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
 80047cc:	ba 00 08 00 	mv r1,r16                                      
 80047d0:	fb ff fc 4e 	calli 8003908 <_Chain_Get>                     
 80047d4:	b8 20 70 00 	mv r14,r1                                      
 80047d8:	34 02 00 18 	mvi r2,24                                      
 80047dc:	5c 20 ff ef 	bne r1,r0,8004798 <_Objects_Extend_information+0x1e8>
    _Chain_Append( &information->Inactive, &the_object->Node );       
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
 80047e0:	29 63 00 30 	lw r3,(r11+48)                                 
  information->inactive =                                             
    (Objects_Maximum)(information->inactive + information->allocation_size);
 80047e4:	2d 62 00 2c 	lhu r2,(r11+44)                                
    _Chain_Append( &information->Inactive, &the_object->Node );       
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
 80047e8:	2d 61 00 14 	lhu r1,(r11+20)                                
 80047ec:	b4 6c 60 00 	add r12,r3,r12                                 
 80047f0:	59 81 00 00 	sw (r12+0),r1                                  
  information->inactive =                                             
    (Objects_Maximum)(information->inactive + information->allocation_size);
 80047f4:	b4 22 08 00 	add r1,r1,r2                                   
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
  information->inactive =                                             
 80047f8:	0d 61 00 2c 	sh (r11+44),r1                                 
    (Objects_Maximum)(information->inactive + information->allocation_size);
}                                                                     
 80047fc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004800:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 8004804:	2b 8c 00 28 	lw r12,(sp+40)                                 
 8004808:	2b 8d 00 24 	lw r13,(sp+36)                                 
 800480c:	2b 8e 00 20 	lw r14,(sp+32)                                 
 8004810:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 8004814:	2b 90 00 18 	lw r16,(sp+24)                                 
 8004818:	2b 91 00 14 	lw r17,(sp+20)                                 
 800481c:	2b 92 00 10 	lw r18,(sp+16)                                 
 8004820:	2b 93 00 0c 	lw r19,(sp+12)                                 
 8004824:	2b 94 00 08 	lw r20,(sp+8)                                  
 8004828:	37 9c 00 38 	addi sp,sp,56                                  
 800482c:	c3 a0 00 00 	ret                                            
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
      if ( information->object_blocks[ block ] == NULL ) {            
 8004830:	28 62 00 04 	lw r2,(r3+4)                                   
 8004834:	34 63 00 04 	addi r3,r3,4                                   
 8004838:	5c 40 ff 7b 	bne r2,r0,8004624 <_Objects_Extend_information+0x74>
        do_extend = false;                                            
 800483c:	34 12 00 00 	mvi r18,0                                      
 8004840:	e3 ff ff 7d 	bi 8004634 <_Objects_Extend_information+0x84>  
  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 );
 8004844:	f8 00 09 d6 	calli 8006f9c <_Workspace_Allocate_or_fatal_error>
 8004848:	b8 20 78 00 	mv r15,r1                                      
 800484c:	e3 ff ff 84 	bi 800465c <_Objects_Extend_information+0xac>  
      /*                                                              
       *  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,                                          
 8004850:	29 62 00 34 	lw r2,(r11+52)                                 
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
 8004854:	b5 ce 70 00 	add r14,r14,r14                                
 8004858:	b5 ce 70 00 	add r14,r14,r14                                
      /*                                                              
       *  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,                                          
 800485c:	b9 c0 18 00 	mv r3,r14                                      
 8004860:	f8 00 24 0f 	calli 800d89c <memcpy>                         
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
      memcpy( inactive_per_block,                                     
 8004864:	29 62 00 30 	lw r2,(r11+48)                                 
 8004868:	b9 c0 18 00 	mv r3,r14                                      
 800486c:	ba 60 08 00 	mv r1,r19                                      
 8004870:	f8 00 24 0b 	calli 800d89c <memcpy>                         
              information->inactive_per_block,                        
              block_count * sizeof(uint32_t) );                       
      memcpy( local_table,                                            
              information->local_table,                               
              (information->maximum + minimum_index) * sizeof(Objects_Control *) );
 8004874:	2d 63 00 10 	lhu r3,(r11+16)                                
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
      memcpy( inactive_per_block,                                     
              information->inactive_per_block,                        
              block_count * sizeof(uint32_t) );                       
      memcpy( local_table,                                            
 8004878:	29 62 00 1c 	lw r2,(r11+28)                                 
 800487c:	ba 80 08 00 	mv r1,r20                                      
              information->local_table,                               
              (information->maximum + minimum_index) * sizeof(Objects_Control *) );
 8004880:	b6 03 18 00 	add r3,r16,r3                                  
 8004884:	b4 63 18 00 	add r3,r3,r3                                   
 8004888:	b4 63 18 00 	add r3,r3,r3                                   
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
      memcpy( inactive_per_block,                                     
              information->inactive_per_block,                        
              block_count * sizeof(uint32_t) );                       
      memcpy( local_table,                                            
 800488c:	f8 00 24 04 	calli 800d89c <memcpy>                         
 8004890:	e3 ff ff 8c 	bi 80046c0 <_Objects_Extend_information+0x110> 
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
 8004894:	2c 31 00 10 	lhu r17,(r1+16)                                
  /*                                                                  
   *  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 );      
 8004898:	ba 00 68 00 	mv r13,r16                                     
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
 800489c:	2c 21 00 14 	lhu r1,(r1+20)                                 
                                                                      
  /*                                                                  
   *  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;                                               
 80048a0:	34 12 00 01 	mvi r18,1                                      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
 80048a4:	34 0e 00 00 	mvi r14,0                                      
 80048a8:	e3 ff ff 63 	bi 8004634 <_Objects_Extend_information+0x84>  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
 80048ac:	b9 e0 08 00 	mv r1,r15                                      <== 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 );      
 80048b0:	ba 00 68 00 	mv r13,r16                                     <== 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;                                               
 80048b4:	34 12 00 01 	mvi r18,1                                      <== NOT EXECUTED
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
 80048b8:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
 80048bc:	e3 ff ff 5e 	bi 8004634 <_Objects_Extend_information+0x84>  <== NOT EXECUTED
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
      if ( information->object_blocks[ block ] == NULL ) {            
 80048c0:	b9 e0 08 00 	mv r1,r15                                      <== 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 );      
 80048c4:	ba 00 68 00 	mv r13,r16                                     <== NOT EXECUTED
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
      if ( information->object_blocks[ block ] == NULL ) {            
        do_extend = false;                                            
 80048c8:	34 12 00 00 	mvi r18,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;                                                  
 80048cc:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
 80048d0:	e3 ff ff 59 	bi 8004634 <_Objects_Extend_information+0x84>  <== NOT EXECUTED
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
    object_blocks = (void**) _Workspace_Allocate( block_size );       
                                                                      
    if ( !object_blocks ) {                                           
      _Workspace_Free( new_object_block );                            
 80048d4:	b9 e0 08 00 	mv r1,r15                                      
 80048d8:	f8 00 09 a8 	calli 8006f78 <_Workspace_Free>                
      return;                                                         
 80048dc:	e3 ff ff c8 	bi 80047fc <_Objects_Extend_information+0x24c> 
                                                                      

080049c8 <_Objects_Get_information>: Objects_Information *_Objects_Get_information( Objects_APIs the_api, uint16_t the_class ) {
 80049c8:	37 9c ff f0 	addi sp,sp,-16                                 
 80049cc:	5b 8b 00 10 	sw (sp+16),r11                                 
 80049d0:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80049d4:	5b 8d 00 08 	sw (sp+8),r13                                  
 80049d8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80049dc:	20 4c ff ff 	andi r12,r2,0xffff                             
 80049e0:	b8 20 68 00 	mv r13,r1                                      
  Objects_Information *info;                                          
  int the_class_api_maximum;                                          
                                                                      
  if ( !the_class )                                                   
    return NULL;                                                      
 80049e4:	34 0b 00 00 	mvi r11,0                                      
)                                                                     
{                                                                     
  Objects_Information *info;                                          
  int the_class_api_maximum;                                          
                                                                      
  if ( !the_class )                                                   
 80049e8:	5d 80 00 08 	bne r12,r0,8004a08 <_Objects_Get_information+0x40>
    if ( info->maximum == 0 )                                         
      return NULL;                                                    
  #endif                                                              
                                                                      
  return info;                                                        
}                                                                     
 80049ec:	b9 60 08 00 	mv r1,r11                                      
 80049f0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80049f4:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80049f8:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80049fc:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8004a00:	37 9c 00 10 	addi sp,sp,16                                  
 8004a04:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  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 );      
 8004a08:	f8 00 16 a0 	calli 800a488 <_Objects_API_maximum_class>     
  if ( the_class_api_maximum == 0 )                                   
 8004a0c:	44 20 ff f8 	be r1,r0,80049ec <_Objects_Get_information+0x24>
    return NULL;                                                      
                                                                      
  if ( the_class > (uint32_t) the_class_api_maximum )                 
 8004a10:	55 81 ff f7 	bgu r12,r1,80049ec <_Objects_Get_information+0x24>
    return NULL;                                                      
                                                                      
  if ( !_Objects_Information_table[ the_api ] )                       
 8004a14:	78 01 08 01 	mvhi r1,0x801                                  
 8004a18:	b5 ad 68 00 	add r13,r13,r13                                
 8004a1c:	38 21 48 44 	ori r1,r1,0x4844                               
 8004a20:	b5 ad 68 00 	add r13,r13,r13                                
 8004a24:	b4 2d 08 00 	add r1,r1,r13                                  
 8004a28:	28 21 00 00 	lw r1,(r1+0)                                   
 8004a2c:	44 20 ff f0 	be r1,r0,80049ec <_Objects_Get_information+0x24><== NEVER TAKEN
    return NULL;                                                      
                                                                      
  info = _Objects_Information_table[ the_api ][ the_class ];          
 8004a30:	b5 8c 60 00 	add r12,r12,r12                                
 8004a34:	b5 8c 60 00 	add r12,r12,r12                                
 8004a38:	b4 2c 08 00 	add r1,r1,r12                                  
 8004a3c:	28 2b 00 00 	lw r11,(r1+0)                                  
  if ( !info )                                                        
 8004a40:	45 60 ff eb 	be r11,r0,80049ec <_Objects_Get_information+0x24><== 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 )                                         
 8004a44:	2d 61 00 10 	lhu r1,(r11+16)                                
      return NULL;                                                    
 8004a48:	7c 21 00 00 	cmpnei r1,r1,0                                 
 8004a4c:	c8 01 08 00 	sub r1,r0,r1                                   
 8004a50:	a1 61 58 00 	and r11,r11,r1                                 
 8004a54:	e3 ff ff e6 	bi 80049ec <_Objects_Get_information+0x24>     
                                                                      

08006a0c <_Objects_Get_name_as_string>: char *_Objects_Get_name_as_string( Objects_Id id, size_t length, char *name ) {
 8006a0c:	37 9c ff e0 	addi sp,sp,-32                                 
 8006a10:	5b 8b 00 14 	sw (sp+20),r11                                 
 8006a14:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006a18:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8006a1c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8006a20:	5b 9d 00 04 	sw (sp+4),ra                                   
 8006a24:	b8 40 60 00 	mv r12,r2                                      
 8006a28:	b8 60 58 00 	mv r11,r3                                      
  char                   lname[5];                                    
  Objects_Control       *the_object;                                  
  Objects_Locations      location;                                    
  Objects_Id             tmpId;                                       
                                                                      
  if ( length == 0 )                                                  
 8006a2c:	5c 40 00 0a 	bne r2,r0,8006a54 <_Objects_Get_name_as_string+0x48>
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:                                              
      /* not supported */                                             
#endif                                                                
    case OBJECTS_ERROR:                                               
      return NULL;                                                    
 8006a30:	34 0b 00 00 	mvi r11,0                                      
                                                                      
      _Thread_Enable_dispatch();                                      
      return name;                                                    
  }                                                                   
  return NULL;                  /* unreachable path */                
}                                                                     
 8006a34:	b9 60 08 00 	mv r1,r11                                      
 8006a38:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006a3c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8006a40:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006a44:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8006a48:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8006a4c:	37 9c 00 20 	addi sp,sp,32                                  
 8006a50:	c3 a0 00 00 	ret                                            
  Objects_Id             tmpId;                                       
                                                                      
  if ( length == 0 )                                                  
    return NULL;                                                      
                                                                      
  if ( name == NULL )                                                 
 8006a54:	44 60 ff f8 	be r3,r0,8006a34 <_Objects_Get_name_as_string+0x28>
    return NULL;                                                      
                                                                      
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
 8006a58:	b8 20 68 00 	mv r13,r1                                      
 8006a5c:	5c 20 00 05 	bne r1,r0,8006a70 <_Objects_Get_name_as_string+0x64>
 8006a60:	78 01 08 02 	mvhi r1,0x802                                  
 8006a64:	38 21 ab a8 	ori r1,r1,0xaba8                               
 8006a68:	28 21 00 0c 	lw r1,(r1+12)                                  
 8006a6c:	28 2d 00 08 	lw r13,(r1+8)                                  
                                                                      
  information = _Objects_Get_information_id( tmpId );                 
 8006a70:	b9 a0 08 00 	mv r1,r13                                      
 8006a74:	fb ff ff 94 	calli 80068c4 <_Objects_Get_information_id>    
 8006a78:	b8 20 70 00 	mv r14,r1                                      
  if ( !information )                                                 
 8006a7c:	44 20 ff ed 	be r1,r0,8006a30 <_Objects_Get_name_as_string+0x24>
    return NULL;                                                      
                                                                      
  the_object = _Objects_Get( information, tmpId, &location );         
 8006a80:	b9 a0 10 00 	mv r2,r13                                      
 8006a84:	37 83 00 20 	addi r3,sp,32                                  
 8006a88:	f8 00 00 36 	calli 8006b60 <_Objects_Get>                   
  switch ( location ) {                                               
 8006a8c:	2b 82 00 20 	lw r2,(sp+32)                                  
 8006a90:	5c 40 ff e8 	bne r2,r0,8006a30 <_Objects_Get_name_as_string+0x24>
      return NULL;                                                    
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)             
        if ( information->is_string ) {                               
 8006a94:	41 c3 00 38 	lbu r3,(r14+56)                                
 8006a98:	44 62 00 1c 	be r3,r2,8006b08 <_Objects_Get_name_as_string+0xfc>
          s = the_object->name.name_p;                                
 8006a9c:	28 27 00 0c 	lw r7,(r1+12)                                  
        lname[ 4 ] = '\0';                                            
        s = lname;                                                    
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
 8006aa0:	b9 60 10 00 	mv r2,r11                                      
 8006aa4:	44 e0 00 16 	be r7,r0,8006afc <_Objects_Get_name_as_string+0xf0>
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
 8006aa8:	35 8c ff ff 	addi r12,r12,-1                                
 8006aac:	b9 60 10 00 	mv r2,r11                                      
 8006ab0:	45 80 00 13 	be r12,r0,8006afc <_Objects_Get_name_as_string+0xf0><== NEVER TAKEN
 8006ab4:	40 e1 00 00 	lbu r1,(r7+0)                                  
 8006ab8:	44 20 00 11 	be r1,r0,8006afc <_Objects_Get_name_as_string+0xf0>
 8006abc:	78 04 08 02 	mvhi r4,0x802                                  
 8006ac0:	34 03 00 00 	mvi r3,0                                       
 8006ac4:	38 84 22 00 	ori r4,r4,0x2200                               
          *d = (isprint((unsigned char)*s)) ? *s : '*';               
 8006ac8:	28 85 00 00 	lw r5,(r4+0)                                   
        s = lname;                                                    
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
 8006acc:	34 63 00 01 	addi r3,r3,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(                                    
 8006ad0:	b4 e3 30 00 	add r6,r7,r3                                   
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
          *d = (isprint((unsigned char)*s)) ? *s : '*';               
 8006ad4:	b4 a1 28 00 	add r5,r5,r1                                   
 8006ad8:	40 a5 00 01 	lbu r5,(r5+1)                                  
 8006adc:	20 a5 00 97 	andi r5,r5,0x97                                
 8006ae0:	5c a0 00 02 	bne r5,r0,8006ae8 <_Objects_Get_name_as_string+0xdc>
 8006ae4:	34 01 00 2a 	mvi r1,42                                      
 8006ae8:	30 41 00 00 	sb (r2+0),r1                                   
        s = lname;                                                    
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
 8006aec:	34 42 00 01 	addi r2,r2,1                                   
 8006af0:	50 6c 00 03 	bgeu r3,r12,8006afc <_Objects_Get_name_as_string+0xf0>
 8006af4:	40 c1 00 00 	lbu r1,(r6+0)                                  
 8006af8:	5c 20 ff f4 	bne r1,r0,8006ac8 <_Objects_Get_name_as_string+0xbc>
          *d = (isprint((unsigned char)*s)) ? *s : '*';               
        }                                                             
      }                                                               
      *d = '\0';                                                      
 8006afc:	30 40 00 00 	sb (r2+0),r0                                   
                                                                      
      _Thread_Enable_dispatch();                                      
 8006b00:	f8 00 03 43 	calli 800780c <_Thread_Enable_dispatch>        
      return name;                                                    
 8006b04:	e3 ff ff cc 	bi 8006a34 <_Objects_Get_name_as_string+0x28>  
        if ( information->is_string ) {                               
          s = the_object->name.name_p;                                
        } else                                                        
      #endif                                                          
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
 8006b08:	28 2d 00 0c 	lw r13,(r1+12)                                 
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
 8006b0c:	34 02 00 18 	mvi r2,24                                      
 8006b10:	b9 a0 08 00 	mv r1,r13                                      
 8006b14:	fb ff e9 a6 	calli 80011ac <__lshrsi3>                      
 8006b18:	33 81 00 18 	sb (sp+24),r1                                  
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
 8006b1c:	34 02 00 10 	mvi r2,16                                      
 8006b20:	b9 a0 08 00 	mv r1,r13                                      
 8006b24:	fb ff e9 a2 	calli 80011ac <__lshrsi3>                      
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
 8006b28:	01 a2 00 01 	srui r2,r13,1                                  
      #endif                                                          
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
 8006b2c:	33 81 00 19 	sb (sp+25),r1                                  
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
 8006b30:	00 42 00 01 	srui r2,r2,1                                   
        lname[ 3 ] = (u32_name >>  0) & 0xff;                         
 8006b34:	33 8d 00 1b 	sb (sp+27),r13                                 
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
 8006b38:	00 42 00 01 	srui r2,r2,1                                   
        lname[ 3 ] = (u32_name >>  0) & 0xff;                         
        lname[ 4 ] = '\0';                                            
 8006b3c:	33 80 00 1c 	sb (sp+28),r0                                  
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
 8006b40:	00 42 00 01 	srui r2,r2,1                                   
        lname[ 3 ] = (u32_name >>  0) & 0xff;                         
        lname[ 4 ] = '\0';                                            
        s = lname;                                                    
 8006b44:	37 87 00 18 	addi r7,sp,24                                  
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
 8006b48:	00 42 00 01 	srui r2,r2,1                                   
 8006b4c:	00 42 00 01 	srui r2,r2,1                                   
 8006b50:	00 42 00 01 	srui r2,r2,1                                   
 8006b54:	00 42 00 01 	srui r2,r2,1                                   
 8006b58:	33 82 00 1a 	sb (sp+26),r2                                  
 8006b5c:	e3 ff ff d3 	bi 8006aa8 <_Objects_Get_name_as_string+0x9c>  
                                                                      

08017654 <_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;
 8017654:	28 25 00 08 	lw r5,(r1+8)                                   
                                                                      
  if ( information->maximum >= index ) {                              
 8017658:	2c 24 00 10 	lhu r4,(r1+16)                                 
                                                                      
  /*                                                                  
   * 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;                           
 801765c:	c8 45 10 00 	sub r2,r2,r5                                   
 8017660:	34 42 00 01 	addi r2,r2,1                                   
                                                                      
  if ( information->maximum >= index ) {                              
 8017664:	54 44 00 09 	bgu r2,r4,8017688 <_Objects_Get_no_protection+0x34>
    if ( (the_object = information->local_table[ index ]) != NULL ) { 
 8017668:	28 24 00 1c 	lw r4,(r1+28)                                  
 801766c:	b4 42 08 00 	add r1,r2,r2                                   
 8017670:	b4 21 08 00 	add r1,r1,r1                                   
 8017674:	b4 81 08 00 	add r1,r4,r1                                   
 8017678:	28 21 00 00 	lw r1,(r1+0)                                   
 801767c:	44 20 00 03 	be r1,r0,8017688 <_Objects_Get_no_protection+0x34><== NEVER TAKEN
      *location = OBJECTS_LOCAL;                                      
 8017680:	58 60 00 00 	sw (r3+0),r0                                   
      return the_object;                                              
 8017684:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  This isn't supported or required yet for Global objects so      
   *  if it isn't local, we don't find it.                            
   */                                                                 
  *location = OBJECTS_ERROR;                                          
 8017688:	34 01 00 01 	mvi r1,1                                       
 801768c:	58 61 00 00 	sw (r3+0),r1                                   
  return NULL;                                                        
 8017690:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8017694:	c3 a0 00 00 	ret                                            
                                                                      

08006558 <_Objects_Id_to_name>: */ Objects_Name_or_id_lookup_errors _Objects_Id_to_name ( Objects_Id id, Objects_Name *name ) {
 8006558:	37 9c ff e8 	addi sp,sp,-24                                 
 800655c:	5b 8b 00 14 	sw (sp+20),r11                                 
 8006560:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006564:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8006568:	5b 8e 00 08 	sw (sp+8),r14                                  
 800656c:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Caller is trusted for name != NULL.                             
   */                                                                 
                                                                      
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
 8006570:	b8 20 58 00 	mv r11,r1                                      
 */                                                                   
Objects_Name_or_id_lookup_errors _Objects_Id_to_name (                
  Objects_Id      id,                                                 
  Objects_Name   *name                                                
)                                                                     
{                                                                     
 8006574:	b8 40 70 00 	mv r14,r2                                      
                                                                      
  /*                                                                  
   *  Caller is trusted for name != NULL.                             
   */                                                                 
                                                                      
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
 8006578:	5c 20 00 05 	bne r1,r0,800658c <_Objects_Id_to_name+0x34>   
 800657c:	78 01 08 02 	mvhi r1,0x802                                  
 8006580:	38 21 0d c0 	ori r1,r1,0xdc0                                
 8006584:	28 21 00 0c 	lw r1,(r1+12)                                  
 8006588:	28 2b 00 08 	lw r11,(r1+8)                                  
 */                                                                   
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(                   
  Objects_Id id                                                       
)                                                                     
{                                                                     
  return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
 800658c:	b9 60 08 00 	mv r1,r11                                      
 8006590:	34 02 00 18 	mvi r2,24                                      
 8006594:	f8 00 58 36 	calli 801c66c <__lshrsi3>                      
 8006598:	20 23 00 07 	andi r3,r1,0x7                                 
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(                      
  uint32_t   the_api                                                  
)                                                                     
{                                                                     
  if ( !the_api || the_api > OBJECTS_APIS_LAST )                      
 800659c:	34 64 ff ff 	addi r4,r3,-1                                  
 80065a0:	34 01 00 02 	mvi r1,2                                       
                                                                      
  the_api = _Objects_Get_API( tmpId );                                
  if ( !_Objects_Is_api_valid( the_api ) )                            
    return OBJECTS_INVALID_ID;                                        
 80065a4:	34 0c 00 03 	mvi r12,3                                      
 80065a8:	54 81 00 12 	bgu r4,r1,80065f0 <_Objects_Id_to_name+0x98>   
                                                                      
  if ( !_Objects_Information_table[ the_api ] )                       
 80065ac:	78 04 08 02 	mvhi r4,0x802                                  
 80065b0:	b4 63 18 00 	add r3,r3,r3                                   
 80065b4:	38 84 08 8c 	ori r4,r4,0x88c                                
 80065b8:	b4 63 18 00 	add r3,r3,r3                                   
 80065bc:	b4 83 18 00 	add r3,r4,r3                                   
 80065c0:	28 6d 00 00 	lw r13,(r3+0)                                  
 80065c4:	45 a0 00 0b 	be r13,r0,80065f0 <_Objects_Id_to_name+0x98>   
 */                                                                   
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(                     
  Objects_Id id                                                       
)                                                                     
{                                                                     
  return (uint32_t)                                                   
 80065c8:	b9 60 08 00 	mv r1,r11                                      
 80065cc:	34 02 00 1b 	mvi r2,27                                      
 80065d0:	f8 00 58 27 	calli 801c66c <__lshrsi3>                      
    return OBJECTS_INVALID_ID;                                        
                                                                      
  the_class = _Objects_Get_class( tmpId );                            
                                                                      
  information = _Objects_Information_table[ the_api ][ the_class ];   
 80065d4:	b4 21 18 00 	add r3,r1,r1                                   
 80065d8:	b4 63 18 00 	add r3,r3,r3                                   
 80065dc:	b5 a3 18 00 	add r3,r13,r3                                  
 80065e0:	28 63 00 00 	lw r3,(r3+0)                                   
  if ( !information )                                                 
 80065e4:	44 60 00 03 	be r3,r0,80065f0 <_Objects_Id_to_name+0x98>    <== NEVER TAKEN
    return OBJECTS_INVALID_ID;                                        
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    if ( information->is_string )                                     
 80065e8:	40 6d 00 38 	lbu r13,(r3+56)                                
 80065ec:	45 a0 00 09 	be r13,r0,8006610 <_Objects_Id_to_name+0xb8>   <== ALWAYS TAKEN
    return OBJECTS_INVALID_ID;                                        
                                                                      
  *name = the_object->name;                                           
  _Thread_Enable_dispatch();                                          
  return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;                        
}                                                                     
 80065f0:	b9 80 08 00 	mv r1,r12                                      
 80065f4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80065f8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80065fc:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006600:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8006604:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8006608:	37 9c 00 18 	addi sp,sp,24                                  
 800660c:	c3 a0 00 00 	ret                                            
  #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 ); 
 8006610:	b8 60 08 00 	mv r1,r3                                       
 8006614:	b9 60 10 00 	mv r2,r11                                      
 8006618:	37 83 00 18 	addi r3,sp,24                                  
 800661c:	fb ff ff a9 	calli 80064c0 <_Objects_Get>                   
  if ( !the_object )                                                  
 8006620:	44 2d ff f4 	be r1,r13,80065f0 <_Objects_Id_to_name+0x98>   
    return OBJECTS_INVALID_ID;                                        
                                                                      
  *name = the_object->name;                                           
 8006624:	28 21 00 0c 	lw r1,(r1+12)                                  
  _Thread_Enable_dispatch();                                          
  return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;                        
 8006628:	34 0c 00 00 	mvi r12,0                                      
                                                                      
  the_object = _Objects_Get( information, tmpId, &ignored_location ); 
  if ( !the_object )                                                  
    return OBJECTS_INVALID_ID;                                        
                                                                      
  *name = the_object->name;                                           
 800662c:	59 c1 00 00 	sw (r14+0),r1                                  
  _Thread_Enable_dispatch();                                          
 8006630:	f8 00 03 77 	calli 800740c <_Thread_Enable_dispatch>        
  return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;                        
}                                                                     
 8006634:	b9 80 08 00 	mv r1,r12                                      
 8006638:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800663c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8006640:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006644:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8006648:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800664c:	37 9c 00 18 	addi sp,sp,24                                  
 8006650:	c3 a0 00 00 	ret                                            
                                                                      

08004b5c <_Objects_Initialize_information>: , bool supports_global, Objects_Thread_queue_Extract_callout extract #endif ) {
 8004b5c:	37 9c ff e8 	addi sp,sp,-24                                 
 8004b60:	5b 8b 00 18 	sw (sp+24),r11                                 
 8004b64:	5b 8c 00 14 	sw (sp+20),r12                                 
 8004b68:	5b 8d 00 10 	sw (sp+16),r13                                 
 8004b6c:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8004b70:	5b 8f 00 08 	sw (sp+8),r15                                  
 8004b74:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004b78:	b8 40 68 00 	mv r13,r2                                      
  information->maximum = 0;                                           
                                                                      
  /*                                                                  
   *  Register this Object Class in the Object Information Table.     
   */                                                                 
  _Objects_Information_table[ the_api ][ the_class ] = information;   
 8004b7c:	b5 ad 40 00 	add r8,r13,r13                                 
 8004b80:	78 02 08 01 	mvhi r2,0x801                                  
 8004b84:	38 42 48 44 	ori r2,r2,0x4844                               
 8004b88:	b5 08 40 00 	add r8,r8,r8                                   
 8004b8c:	b4 48 40 00 	add r8,r2,r8                                   
 8004b90:	29 02 00 00 	lw r2,(r8+0)                                   
  ,                                                                   
  bool                 supports_global,                               
  Objects_Thread_queue_Extract_callout extract                        
#endif                                                                
)                                                                     
{                                                                     
 8004b94:	20 6c ff ff 	andi r12,r3,0xffff                             
  information->maximum = 0;                                           
                                                                      
  /*                                                                  
   *  Register this Object Class in the Object Information Table.     
   */                                                                 
  _Objects_Information_table[ the_api ][ the_class ] = information;   
 8004b98:	b5 8c 40 00 	add r8,r12,r12                                 
  ,                                                                   
  bool                 supports_global,                               
  Objects_Thread_queue_Extract_callout extract                        
#endif                                                                
)                                                                     
{                                                                     
 8004b9c:	20 a5 ff ff 	andi r5,r5,0xffff                              
  information->maximum = 0;                                           
                                                                      
  /*                                                                  
   *  Register this Object Class in the Object Information Table.     
   */                                                                 
  _Objects_Information_table[ the_api ][ the_class ] = information;   
 8004ba0:	b5 08 40 00 	add r8,r8,r8                                   
  uint32_t                maximum_per_allocation;                     
  #if defined(RTEMS_MULTIPROCESSING)                                  
    uint32_t              index;                                      
  #endif                                                              
                                                                      
  information->the_api            = the_api;                          
 8004ba4:	58 2d 00 00 	sw (r1+0),r13                                  
  information->the_class          = the_class;                        
 8004ba8:	0c 2c 00 04 	sh (r1+4),r12                                  
  information->size               = size;                             
 8004bac:	58 25 00 18 	sw (r1+24),r5                                  
  information->local_table        = 0;                                
 8004bb0:	58 20 00 1c 	sw (r1+28),r0                                  
  information->inactive_per_block = 0;                                
 8004bb4:	58 20 00 30 	sw (r1+48),r0                                  
  information->object_blocks      = 0;                                
 8004bb8:	58 20 00 34 	sw (r1+52),r0                                  
  information->inactive           = 0;                                
 8004bbc:	0c 20 00 2c 	sh (r1+44),r0                                  
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    information->is_string        = is_string;                        
 8004bc0:	30 26 00 38 	sb (r1+56),r6                                  
                                                                      
  /*                                                                  
   *  Set the maximum value to 0. It will be updated when objects are 
   *  added to the inactive set from _Objects_Extend_information()    
   */                                                                 
  information->maximum = 0;                                           
 8004bc4:	0c 20 00 10 	sh (r1+16),r0                                  
                                                                      
  /*                                                                  
   *  Register this Object Class in the Object Information Table.     
   */                                                                 
  _Objects_Information_table[ the_api ][ the_class ] = information;   
 8004bc8:	b4 48 40 00 	add r8,r2,r8                                   
  ,                                                                   
  bool                 supports_global,                               
  Objects_Thread_queue_Extract_callout extract                        
#endif                                                                
)                                                                     
{                                                                     
 8004bcc:	b8 20 58 00 	mv r11,r1                                      
  information->maximum = 0;                                           
                                                                      
  /*                                                                  
   *  Register this Object Class in the Object Information Table.     
   */                                                                 
  _Objects_Information_table[ the_api ][ the_class ] = information;   
 8004bd0:	59 01 00 00 	sw (r8+0),r1                                   
                                                                      
  /*                                                                  
   *  Are we operating in limited or unlimited (e.g. auto-extend) mode.
   */                                                                 
  information->auto_extend =                                          
        (maximum & OBJECTS_UNLIMITED_OBJECTS) ? true : false;         
 8004bd4:	34 02 00 1f 	mvi r2,31                                      
 8004bd8:	b8 80 08 00 	mv r1,r4                                       
  ,                                                                   
  bool                 supports_global,                               
  Objects_Thread_queue_Extract_callout extract                        
#endif                                                                
)                                                                     
{                                                                     
 8004bdc:	b8 80 70 00 	mv r14,r4                                      
 8004be0:	b8 e0 78 00 	mv r15,r7                                      
                                                                      
  /*                                                                  
   *  Are we operating in limited or unlimited (e.g. auto-extend) mode.
   */                                                                 
  information->auto_extend =                                          
        (maximum & OBJECTS_UNLIMITED_OBJECTS) ? true : false;         
 8004be4:	f8 00 35 79 	calli 80121c8 <__lshrsi3>                      
  maximum_per_allocation = maximum & ~OBJECTS_UNLIMITED_OBJECTS;      
 8004be8:	78 03 08 01 	mvhi r3,0x801                                  
 8004bec:	38 63 36 14 	ori r3,r3,0x3614                               
                                                                      
  /*                                                                  
   *  Are we operating in limited or unlimited (e.g. auto-extend) mode.
   */                                                                 
  information->auto_extend =                                          
        (maximum & OBJECTS_UNLIMITED_OBJECTS) ? true : false;         
 8004bf0:	20 22 00 ff 	andi r2,r1,0xff                                
  maximum_per_allocation = maximum & ~OBJECTS_UNLIMITED_OBJECTS;      
 8004bf4:	28 61 00 00 	lw r1,(r3+0)                                   
  _Objects_Information_table[ the_api ][ the_class ] = information;   
                                                                      
  /*                                                                  
   *  Are we operating in limited or unlimited (e.g. auto-extend) mode.
   */                                                                 
  information->auto_extend =                                          
 8004bf8:	31 62 00 12 	sb (r11+18),r2                                 
        (maximum & OBJECTS_UNLIMITED_OBJECTS) ? true : false;         
  maximum_per_allocation = maximum & ~OBJECTS_UNLIMITED_OBJECTS;      
 8004bfc:	a1 c1 70 00 	and r14,r14,r1                                 
                                                                      
  /*                                                                  
   *  Unlimited and maximum of zero is illogical.                     
   */                                                                 
  if ( information->auto_extend && maximum_per_allocation == 0) {     
 8004c00:	44 40 00 02 	be r2,r0,8004c08 <_Objects_Initialize_information+0xac>
 8004c04:	45 c0 00 29 	be r14,r0,8004ca8 <_Objects_Initialize_information+0x14c><== NEVER TAKEN
  information->allocation_size = maximum_per_allocation;              
                                                                      
  /*                                                                  
   *  Provide a null local table entry for the case of any empty table.
   */                                                                 
  information->local_table = &null_local_table;                       
 8004c08:	78 01 08 01 	mvhi r1,0x801                                  
 8004c0c:	38 21 46 b4 	ori r1,r1,0x46b4                               
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
 8004c10:	34 02 00 18 	mvi r2,24                                      
 8004c14:	59 61 00 1c 	sw (r11+28),r1                                 
  }                                                                   
                                                                      
  /*                                                                  
   *  The allocation unit is the maximum value                        
   */                                                                 
  information->allocation_size = maximum_per_allocation;              
 8004c18:	0d 6e 00 14 	sh (r11+20),r14                                
 8004c1c:	b9 a0 08 00 	mv r1,r13                                      
 8004c20:	f8 00 35 1c 	calli 8012090 <__ashlsi3>                      
 8004c24:	78 0d 00 01 	mvhi r13,0x1                                   
 8004c28:	b8 2d 68 00 	or r13,r1,r13                                  
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |    
 8004c2c:	34 02 00 1b 	mvi r2,27                                      
 8004c30:	b9 80 08 00 	mv r1,r12                                      
 8004c34:	f8 00 35 17 	calli 8012090 <__ashlsi3>                      
  information->local_table = &null_local_table;                       
                                                                      
  /*                                                                  
   *  Calculate minimum and maximum Id's                              
   */                                                                 
  minimum_index = (maximum_per_allocation == 0) ? 0 : 1;              
 8004c38:	7d c2 00 00 	cmpnei r2,r14,0                                
 8004c3c:	b9 a1 08 00 	or r1,r13,r1                                   
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
 8004c40:	b8 22 08 00 	or r1,r1,r2                                    
  information->minimum_id =                                           
 8004c44:	59 61 00 08 	sw (r11+8),r1                                  
  /*                                                                  
   *  Calculate the maximum name length                               
   */                                                                 
  name_length = maximum_name_length;                                  
                                                                      
  if ( name_length & (OBJECTS_NAME_ALIGNMENT-1) )                     
 8004c48:	21 e1 00 03 	andi r1,r15,0x3                                
 8004c4c:	b9 e0 38 00 	mv r7,r15                                      
 8004c50:	5c 20 00 12 	bne r1,r0,8004c98 <_Objects_Initialize_information+0x13c>
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 );                        
 8004c54:	35 62 00 24 	addi r2,r11,36                                 
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 8004c58:	35 61 00 20 	addi r1,r11,32                                 
    name_length = (name_length + OBJECTS_NAME_ALIGNMENT) &            
                  ~(OBJECTS_NAME_ALIGNMENT-1);                        
                                                                      
  information->name_length = name_length;                             
 8004c5c:	0d 67 00 3a 	sh (r11+58),r7                                 
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 8004c60:	59 62 00 20 	sw (r11+32),r2                                 
  head->previous = NULL;                                              
 8004c64:	59 60 00 24 	sw (r11+36),r0                                 
  tail->previous = head;                                              
 8004c68:	59 61 00 28 	sw (r11+40),r1                                 
  _Chain_Initialize_empty( &information->Inactive );                  
                                                                      
  /*                                                                  
   *  Initialize objects .. if there are any                          
   */                                                                 
  if ( maximum_per_allocation ) {                                     
 8004c6c:	45 c0 00 03 	be r14,r0,8004c78 <_Objects_Initialize_information+0x11c>
    /*                                                                
     *  Always have the maximum size available so the current performance
     *  figures are create are met.  If the user moves past the maximum
     *  number then a performance hit is taken.                       
     */                                                               
    _Objects_Extend_information( information );                       
 8004c70:	b9 60 08 00 	mv r1,r11                                      
 8004c74:	fb ff fe 4f 	calli 80045b0 <_Objects_Extend_information>    
	_Chain_Initialize_empty( &information->global_table[ index ] );      
     }                                                                
     else                                                             
       information->global_table = NULL;                              
  #endif                                                              
}                                                                     
 8004c78:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004c7c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8004c80:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8004c84:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8004c88:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8004c8c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8004c90:	37 9c 00 18 	addi sp,sp,24                                  
 8004c94:	c3 a0 00 00 	ret                                            
   *  Calculate the maximum name length                               
   */                                                                 
  name_length = maximum_name_length;                                  
                                                                      
  if ( name_length & (OBJECTS_NAME_ALIGNMENT-1) )                     
    name_length = (name_length + OBJECTS_NAME_ALIGNMENT) &            
 8004c98:	35 e7 00 04 	addi r7,r15,4                                  
 8004c9c:	34 01 ff fc 	mvi r1,-4                                      
 8004ca0:	a0 e1 38 00 	and r7,r7,r1                                   
 8004ca4:	e3 ff ff ec 	bi 8004c54 <_Objects_Initialize_information+0xf8>
                                                                      
  /*                                                                  
   *  Unlimited and maximum of zero is illogical.                     
   */                                                                 
  if ( information->auto_extend && maximum_per_allocation == 0) {     
    _Internal_error_Occurred(                                         
 8004ca8:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8004cac:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8004cb0:	34 03 00 13 	mvi r3,19                                      <== NOT EXECUTED
 8004cb4:	fb ff fd d4 	calli 8004404 <_Internal_error_Occurred>       <== NOT EXECUTED
                                                                      

08004d34 <_Objects_Shrink_information>: */ void _Objects_Shrink_information( Objects_Information *information ) {
 8004d34:	37 9c ff ec 	addi sp,sp,-20                                 
 8004d38:	5b 8b 00 14 	sw (sp+20),r11                                 
 8004d3c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8004d40:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8004d44:	5b 8e 00 08 	sw (sp+8),r14                                  
 8004d48:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   * Search the list to find block or chunk with all objects inactive.
   */                                                                 
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
 8004d4c:	2c 2c 00 0a 	lhu r12,(r1+10)                                
  block_count = (information->maximum - index_base) /                 
 8004d50:	2c 2d 00 14 	lhu r13,(r1+20)                                
 */                                                                   
                                                                      
void _Objects_Shrink_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
 8004d54:	b8 20 70 00 	mv r14,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) /                 
 8004d58:	2c 21 00 10 	lhu r1,(r1+16)                                 
 8004d5c:	b9 a0 10 00 	mv r2,r13                                      
 8004d60:	c8 2c 08 00 	sub r1,r1,r12                                  
 8004d64:	f8 00 35 a5 	calli 80123f8 <__udivsi3>                      
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
 8004d68:	44 20 00 09 	be r1,r0,8004d8c <_Objects_Shrink_information+0x58><== NEVER TAKEN
    if ( information->inactive_per_block[ block ] ==                  
 8004d6c:	29 c5 00 30 	lw r5,(r14+48)                                 
 8004d70:	34 0b 00 04 	mvi r11,4                                      
 8004d74:	34 03 00 00 	mvi r3,0                                       
 8004d78:	28 a2 00 00 	lw r2,(r5+0)                                   
 8004d7c:	45 a2 00 11 	be r13,r2,8004dc0 <_Objects_Shrink_information+0x8c><== 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++ ) {                   
 8004d80:	34 63 00 01 	addi r3,r3,1                                   
 *    the_block       - the block to remove                           
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _Objects_Shrink_information(                                     
 8004d84:	b4 ab 10 00 	add r2,r5,r11                                  
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
 8004d88:	54 23 00 08 	bgu r1,r3,8004da8 <_Objects_Shrink_information+0x74>
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
  }                                                                   
}                                                                     
 8004d8c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004d90:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8004d94:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8004d98:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8004d9c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8004da0:	37 9c 00 14 	addi sp,sp,20                                  
 8004da4:	c3 a0 00 00 	ret                                            
  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 ] ==                  
 8004da8:	28 42 00 00 	lw r2,(r2+0)                                   
      information->inactive -= information->allocation_size;          
                                                                      
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
 8004dac:	35 64 00 04 	addi r4,r11,4                                  
 8004db0:	b5 8d 60 00 	add r12,r12,r13                                
  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 ] ==                  
 8004db4:	45 a2 00 04 	be r13,r2,8004dc4 <_Objects_Shrink_information+0x90>
 8004db8:	b8 80 58 00 	mv r11,r4                                      
 8004dbc:	e3 ff ff f1 	bi 8004d80 <_Objects_Shrink_information+0x4c>  
 8004dc0:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
         information->allocation_size ) {                             
                                                                      
      /*                                                              
       *  Assume the Inactive chain is never empty at this point      
       */                                                             
      the_object = (Objects_Control *) _Chain_First( &information->Inactive );
 8004dc4:	29 c1 00 20 	lw r1,(r14+32)                                 
                                                                      
      do {                                                            
         index = _Objects_Get_index( the_object->id );                
 8004dc8:	2c 22 00 0a 	lhu r2,(r1+10)                                 
         /*                                                           
          *  Get the next node before the node is extracted           
          */                                                          
         extract_me = the_object;                                     
         the_object = (Objects_Control *) the_object->Node.next;      
 8004dcc:	28 2d 00 00 	lw r13,(r1+0)                                  
         if ((index >= index_base) &&                                 
 8004dd0:	55 82 00 05 	bgu r12,r2,8004de4 <_Objects_Shrink_information+0xb0>
             (index < (index_base + information->allocation_size))) { 
 8004dd4:	2d c3 00 14 	lhu r3,(r14+20)                                
 8004dd8:	b5 83 18 00 	add r3,r12,r3                                  
         /*                                                           
          *  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) &&                                 
 8004ddc:	50 43 00 02 	bgeu r2,r3,8004de4 <_Objects_Shrink_information+0xb0>
             (index < (index_base + information->allocation_size))) { 
           _Chain_Extract( &extract_me->Node );                       
 8004de0:	fb ff fa c0 	calli 80038e0 <_Chain_Extract>                 
         }                                                            
       }                                                              
       while ( the_object );                                          
 8004de4:	45 a0 00 03 	be r13,r0,8004df0 <_Objects_Shrink_information+0xbc>
         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;      
 8004de8:	b9 a0 08 00 	mv r1,r13                                      
 8004dec:	e3 ff ff f7 	bi 8004dc8 <_Objects_Shrink_information+0x94>  
       while ( the_object );                                          
      /*                                                              
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
 8004df0:	29 c1 00 34 	lw r1,(r14+52)                                 
 8004df4:	b4 2b 08 00 	add r1,r1,r11                                  
 8004df8:	28 21 00 00 	lw r1,(r1+0)                                   
 8004dfc:	f8 00 08 5f 	calli 8006f78 <_Workspace_Free>                
      information->object_blocks[ block ] = NULL;                     
 8004e00:	29 c2 00 34 	lw r2,(r14+52)                                 
      information->inactive_per_block[ block ] = 0;                   
 8004e04:	29 c4 00 30 	lw r4,(r14+48)                                 
                                                                      
      information->inactive -= information->allocation_size;          
 8004e08:	2d c3 00 2c 	lhu r3,(r14+44)                                
 8004e0c:	2d c1 00 14 	lhu r1,(r14+20)                                
      /*                                                              
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
      information->object_blocks[ block ] = NULL;                     
 8004e10:	b4 4b 10 00 	add r2,r2,r11                                  
 8004e14:	58 40 00 00 	sw (r2+0),r0                                   
      information->inactive_per_block[ block ] = 0;                   
 8004e18:	b4 8b 58 00 	add r11,r4,r11                                 
 8004e1c:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
      information->inactive -= information->allocation_size;          
 8004e20:	c8 61 08 00 	sub r1,r3,r1                                   
 8004e24:	0d c1 00 2c 	sh (r14+44),r1                                 
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
  }                                                                   
}                                                                     
 8004e28:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004e2c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8004e30:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8004e34:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8004e38:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8004e3c:	37 9c 00 14 	addi sp,sp,20                                  
 8004e40:	c3 a0 00 00 	ret                                            
                                                                      

08009018 <_POSIX_Message_queue_Receive_support>: size_t msg_len, unsigned int *msg_prio, bool wait, Watchdog_Interval timeout ) {
 8009018:	37 9c ff dc 	addi sp,sp,-36                                 
 800901c:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8009020:	5b 8c 00 18 	sw (sp+24),r12                                 
 8009024:	5b 8d 00 14 	sw (sp+20),r13                                 
 8009028:	5b 8e 00 10 	sw (sp+16),r14                                 
 800902c:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8009030:	5b 90 00 08 	sw (sp+8),r16                                  
 8009034:	5b 9d 00 04 	sw (sp+4),ra                                   
 8009038:	b8 20 60 00 	mv r12,r1                                      
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(             
 800903c:	78 01 08 02 	mvhi r1,0x802                                  
 8009040:	b8 40 78 00 	mv r15,r2                                      
 8009044:	b8 60 58 00 	mv r11,r3                                      
 8009048:	b9 80 10 00 	mv r2,r12                                      
 800904c:	38 21 a2 1c 	ori r1,r1,0xa21c                               
 8009050:	37 83 00 24 	addi r3,sp,36                                  
 8009054:	b8 80 68 00 	mv r13,r4                                      
 8009058:	b8 c0 70 00 	mv r14,r6                                      
 800905c:	20 b0 00 ff 	andi r16,r5,0xff                               
 8009060:	f8 00 0d 2c 	calli 800c510 <_Objects_Get>                   
  Objects_Locations                location;                          
  size_t                           length_out;                        
  bool                             do_wait;                           
                                                                      
  the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );        
  switch ( location ) {                                               
 8009064:	2b 82 00 24 	lw r2,(sp+36)                                  
 8009068:	44 40 00 0e 	be r2,r0,80090a0 <_POSIX_Message_queue_Receive_support+0x88>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EBADF );                      
 800906c:	f8 00 30 8d 	calli 80152a0 <__errno>                        
 8009070:	34 02 00 09 	mvi r2,9                                       
 8009074:	58 22 00 00 	sw (r1+0),r2                                   
 8009078:	34 01 ff ff 	mvi r1,-1                                      
}                                                                     
 800907c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009080:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8009084:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8009088:	2b 8d 00 14 	lw r13,(sp+20)                                 
 800908c:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8009090:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8009094:	2b 90 00 08 	lw r16,(sp+8)                                  
 8009098:	37 9c 00 24 	addi sp,sp,36                                  
 800909c:	c3 a0 00 00 	ret                                            
                                                                      
  the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );        
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) {             
 80090a0:	28 28 00 14 	lw r8,(r1+20)                                  
 80090a4:	34 07 00 01 	mvi r7,1                                       
 80090a8:	21 09 00 03 	andi r9,r8,0x3                                 
 80090ac:	45 27 00 2e 	be r9,r7,8009164 <_POSIX_Message_queue_Receive_support+0x14c>
        _Thread_Enable_dispatch();                                    
        rtems_set_errno_and_return_minus_one( EBADF );                
      }                                                               
                                                                      
      the_mq = the_mq_fd->Queue;                                      
 80090b0:	28 27 00 10 	lw r7,(r1+16)                                  
                                                                      
      if ( msg_len < the_mq->Message_queue.maximum_message_size ) {   
 80090b4:	28 e1 00 68 	lw r1,(r7+104)                                 
 80090b8:	51 61 00 07 	bgeu r11,r1,80090d4 <_POSIX_Message_queue_Receive_support+0xbc>
        _Thread_Enable_dispatch();                                    
 80090bc:	f8 00 10 b3 	calli 800d388 <_Thread_Enable_dispatch>        
        rtems_set_errno_and_return_minus_one( EMSGSIZE );             
 80090c0:	f8 00 30 78 	calli 80152a0 <__errno>                        
 80090c4:	34 02 00 7a 	mvi r2,122                                     
 80090c8:	58 22 00 00 	sw (r1+0),r2                                   
 80090cc:	34 01 ff ff 	mvi r1,-1                                      
 80090d0:	e3 ff ff eb 	bi 800907c <_POSIX_Message_queue_Receive_support+0x64>
      /*                                                              
       *  Now if something goes wrong, we return a "length" of -1     
       *  to indicate an error.                                       
       */                                                             
                                                                      
      length_out = -1;                                                
 80090d4:	34 01 ff ff 	mvi r1,-1                                      
 80090d8:	5b 81 00 20 	sw (sp+32),r1                                  
                                                                      
      /*                                                              
       *  A timed receive with a bad time will do a poll regardless.  
       */                                                             
      if ( wait )                                                     
 80090dc:	34 05 00 00 	mvi r5,0                                       
 80090e0:	5e 00 00 16 	bne r16,r0,8009138 <_POSIX_Message_queue_Receive_support+0x120><== ALWAYS TAKEN
        timeout                                                       
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      *msg_prio =                                                     
        _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
 80090e4:	78 0b 08 02 	mvhi r11,0x802                                 
        do_wait = wait;                                               
                                                                      
      /*                                                              
       *  Now perform the actual message receive                      
       */                                                             
      _CORE_message_queue_Seize(                                      
 80090e8:	34 e1 00 1c 	addi r1,r7,28                                  
 80090ec:	b9 80 10 00 	mv r2,r12                                      
 80090f0:	b9 e0 18 00 	mv r3,r15                                      
 80090f4:	37 84 00 20 	addi r4,sp,32                                  
 80090f8:	b9 c0 30 00 	mv r6,r14                                      
        timeout                                                       
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      *msg_prio =                                                     
        _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
 80090fc:	39 6b a2 88 	ori r11,r11,0xa288                             
        do_wait = wait;                                               
                                                                      
      /*                                                              
       *  Now perform the actual message receive                      
       */                                                             
      _CORE_message_queue_Seize(                                      
 8009100:	f8 00 07 d1 	calli 800b044 <_CORE_message_queue_Seize>      
        &length_out,                                                  
        do_wait,                                                      
        timeout                                                       
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
 8009104:	f8 00 10 a1 	calli 800d388 <_Thread_Enable_dispatch>        
      *msg_prio =                                                     
        _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
 8009108:	29 6c 00 0c 	lw r12,(r11+12)                                
RTEMS_INLINE_ROUTINE unsigned int _POSIX_Message_queue_Priority_from_core(
  CORE_message_queue_Submit_types priority                            
)                                                                     
{                                                                     
  /* absolute value without a library dependency */                   
  return ((priority >= 0) ? priority : -priority);                    
 800910c:	34 02 00 1f 	mvi r2,31                                      
 8009110:	29 81 00 24 	lw r1,(r12+36)                                 
 8009114:	f8 00 6e 11 	calli 8024958 <__ashrsi3>                      
 8009118:	29 83 00 24 	lw r3,(r12+36)                                 
                                                                      
      if ( !_Thread_Executing->Wait.return_code )                     
 800911c:	29 82 00 34 	lw r2,(r12+52)                                 
 8009120:	98 23 18 00 	xor r3,r1,r3                                   
 8009124:	c8 61 08 00 	sub r1,r3,r1                                   
        do_wait,                                                      
        timeout                                                       
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      *msg_prio =                                                     
 8009128:	59 a1 00 00 	sw (r13+0),r1                                  
        _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
                                                                      
      if ( !_Thread_Executing->Wait.return_code )                     
 800912c:	5c 40 00 06 	bne r2,r0,8009144 <_POSIX_Message_queue_Receive_support+0x12c>
        return length_out;                                            
 8009130:	2b 81 00 20 	lw r1,(sp+32)                                  
 8009134:	e3 ff ff d2 	bi 800907c <_POSIX_Message_queue_Receive_support+0x64>
                                                                      
      /*                                                              
       *  A timed receive with a bad time will do a poll regardless.  
       */                                                             
      if ( wait )                                                     
        do_wait = (the_mq_fd->oflag & O_NONBLOCK) ? false : true;     
 8009138:	21 05 40 00 	andi r5,r8,0x4000                              
      length_out = -1;                                                
                                                                      
      /*                                                              
       *  A timed receive with a bad time will do a poll regardless.  
       */                                                             
      if ( wait )                                                     
 800913c:	64 a5 00 00 	cmpei r5,r5,0                                  
 8009140:	e3 ff ff e9 	bi 80090e4 <_POSIX_Message_queue_Receive_support+0xcc>
        _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
                                                                      
      if ( !_Thread_Executing->Wait.return_code )                     
        return length_out;                                            
                                                                      
      rtems_set_errno_and_return_minus_one(                           
 8009144:	f8 00 30 57 	calli 80152a0 <__errno>                        
 8009148:	b8 20 60 00 	mv r12,r1                                      
 800914c:	29 61 00 0c 	lw r1,(r11+12)                                 
 8009150:	28 21 00 34 	lw r1,(r1+52)                                  
 8009154:	f8 00 00 c2 	calli 800945c <_POSIX_Message_queue_Translate_core_message_queue_return_code>
 8009158:	59 81 00 00 	sw (r12+0),r1                                  
 800915c:	34 01 ff ff 	mvi r1,-1                                      
 8009160:	e3 ff ff c7 	bi 800907c <_POSIX_Message_queue_Receive_support+0x64>
  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();                                    
 8009164:	f8 00 10 89 	calli 800d388 <_Thread_Enable_dispatch>        
        rtems_set_errno_and_return_minus_one( EBADF );                
 8009168:	f8 00 30 4e 	calli 80152a0 <__errno>                        
 800916c:	34 02 00 09 	mvi r2,9                                       
 8009170:	58 22 00 00 	sw (r1+0),r2                                   
 8009174:	34 01 ff ff 	mvi r1,-1                                      
 8009178:	e3 ff ff c1 	bi 800907c <_POSIX_Message_queue_Receive_support+0x64>
                                                                      

08008b9c <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch>: #include <rtems/posix/pthread.h> void _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch( Thread_Control *the_thread ) {
 8008b9c:	37 9c ff fc 	addi sp,sp,-4                                  
 8008ba0:	5b 9d 00 04 	sw (sp+4),ra                                   
  POSIX_API_Control *thread_support;                                  
                                                                      
  thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];    
 8008ba4:	28 22 01 20 	lw r2,(r1+288)                                 
                                                                      
  if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
 8008ba8:	28 43 00 d8 	lw r3,(r2+216)                                 
 8008bac:	5c 60 00 04 	bne r3,r0,8008bbc <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x20><== NEVER TAKEN
 8008bb0:	28 44 00 dc 	lw r4,(r2+220)                                 
 8008bb4:	34 03 00 01 	mvi r3,1                                       
 8008bb8:	44 83 00 05 	be r4,r3,8008bcc <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x30>
       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();                                        
 8008bbc:	fb ff f3 30 	calli 800587c <_Thread_Enable_dispatch>        
                                                                      
}                                                                     
 8008bc0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008bc4:	37 9c 00 04 	addi sp,sp,4                                   
 8008bc8:	c3 a0 00 00 	ret                                            
  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 &&
 8008bcc:	28 42 00 e0 	lw r2,(r2+224)                                 
 8008bd0:	44 40 ff fb 	be r2,r0,8008bbc <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x20>
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )             
{                                                                     
  RTEMS_COMPILER_MEMORY_BARRIER();                                    
  _Thread_Dispatch_disable_level -= 1;                                
 8008bd4:	78 03 08 01 	mvhi r3,0x801                                  
 8008bd8:	38 63 68 58 	ori r3,r3,0x6858                               
 8008bdc:	28 64 00 00 	lw r4,(r3+0)                                   
       thread_support->cancelation_requested ) {                      
    _Thread_Unnest_dispatch();                                        
    _POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED );               
 8008be0:	34 02 ff ff 	mvi r2,-1                                      
 8008be4:	34 84 ff ff 	addi r4,r4,-1                                  
 8008be8:	58 64 00 00 	sw (r3+0),r4                                   
 8008bec:	f8 00 02 89 	calli 8009610 <_POSIX_Thread_Exit>             
 8008bf0:	e3 ff ff f4 	bi 8008bc0 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x24>
                                                                      

0800a6d8 <_POSIX_Thread_Translate_sched_param>: int policy, struct sched_param *param, Thread_CPU_budget_algorithms *budget_algorithm, Thread_CPU_budget_algorithm_callout *budget_callout ) {
 800a6d8:	37 9c ff e8 	addi sp,sp,-24                                 
 800a6dc:	5b 8b 00 18 	sw (sp+24),r11                                 
 800a6e0:	5b 8c 00 14 	sw (sp+20),r12                                 
 800a6e4:	5b 8d 00 10 	sw (sp+16),r13                                 
 800a6e8:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800a6ec:	5b 8f 00 08 	sw (sp+8),r15                                  
 800a6f0:	5b 9d 00 04 	sw (sp+4),ra                                   
 800a6f4:	b8 20 68 00 	mv r13,r1                                      
  if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )           
 800a6f8:	28 41 00 00 	lw r1,(r2+0)                                   
  int                                  policy,                        
  struct sched_param                  *param,                         
  Thread_CPU_budget_algorithms        *budget_algorithm,              
  Thread_CPU_budget_algorithm_callout *budget_callout                 
)                                                                     
{                                                                     
 800a6fc:	b8 40 60 00 	mv r12,r2                                      
 800a700:	b8 60 70 00 	mv r14,r3                                      
 800a704:	b8 80 78 00 	mv r15,r4                                      
  if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )           
 800a708:	fb ff ff ec 	calli 800a6b8 <_POSIX_Priority_Is_valid>       
    return EINVAL;                                                    
 800a70c:	34 0b 00 16 	mvi r11,22                                     
  struct sched_param                  *param,                         
  Thread_CPU_budget_algorithms        *budget_algorithm,              
  Thread_CPU_budget_algorithm_callout *budget_callout                 
)                                                                     
{                                                                     
  if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )           
 800a710:	44 20 00 0c 	be r1,r0,800a740 <_POSIX_Thread_Translate_sched_param+0x68><== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;               
 800a714:	59 c0 00 00 	sw (r14+0),r0                                  
  *budget_callout = NULL;                                             
 800a718:	59 e0 00 00 	sw (r15+0),r0                                  
                                                                      
  if ( policy == SCHED_OTHER ) {                                      
 800a71c:	45 a0 00 12 	be r13,r0,800a764 <_POSIX_Thread_Translate_sched_param+0x8c>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;  
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_FIFO ) {                                       
 800a720:	34 01 00 01 	mvi r1,1                                       
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;             
    return 0;                                                         
 800a724:	34 0b 00 00 	mvi r11,0                                      
  if ( policy == SCHED_OTHER ) {                                      
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;  
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_FIFO ) {                                       
 800a728:	45 a1 00 06 	be r13,r1,800a740 <_POSIX_Thread_Translate_sched_param+0x68>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;             
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_RR ) {                                         
 800a72c:	34 01 00 02 	mvi r1,2                                       
 800a730:	45 a1 00 2b 	be r13,r1,800a7dc <_POSIX_Thread_Translate_sched_param+0x104>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_SPORADIC ) {                                   
 800a734:	34 01 00 04 	mvi r1,4                                       
    *budget_algorithm  = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;         
    *budget_callout = _POSIX_Threads_Sporadic_budget_callout;         
    return 0;                                                         
  }                                                                   
                                                                      
  return EINVAL;                                                      
 800a738:	34 0b 00 16 	mvi r11,22                                     
  if ( policy == SCHED_RR ) {                                         
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_SPORADIC ) {                                   
 800a73c:	45 a1 00 0e 	be r13,r1,800a774 <_POSIX_Thread_Translate_sched_param+0x9c>
    *budget_callout = _POSIX_Threads_Sporadic_budget_callout;         
    return 0;                                                         
  }                                                                   
                                                                      
  return EINVAL;                                                      
}                                                                     
 800a740:	b9 60 08 00 	mv r1,r11                                      
 800a744:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a748:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800a74c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800a750:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800a754:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800a758:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800a75c:	37 9c 00 18 	addi sp,sp,24                                  
 800a760:	c3 a0 00 00 	ret                                            
                                                                      
  *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;               
  *budget_callout = NULL;                                             
                                                                      
  if ( policy == SCHED_OTHER ) {                                      
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;  
 800a764:	34 01 00 01 	mvi r1,1                                       
 800a768:	59 c1 00 00 	sw (r14+0),r1                                  
    return 0;                                                         
 800a76c:	34 0b 00 00 	mvi r11,0                                      
 800a770:	e3 ff ff f4 	bi 800a740 <_POSIX_Thread_Translate_sched_param+0x68>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_SPORADIC ) {                                   
    if ( (param->sched_ss_repl_period.tv_sec == 0) &&                 
 800a774:	29 81 00 08 	lw r1,(r12+8)                                  
 800a778:	5c 20 00 03 	bne r1,r0,800a784 <_POSIX_Thread_Translate_sched_param+0xac>
 800a77c:	29 82 00 0c 	lw r2,(r12+12)                                 
 800a780:	44 41 ff f0 	be r2,r1,800a740 <_POSIX_Thread_Translate_sched_param+0x68>
         (param->sched_ss_repl_period.tv_nsec == 0) )                 
      return EINVAL;                                                  
                                                                      
    if ( (param->sched_ss_init_budget.tv_sec == 0) &&                 
 800a784:	29 81 00 10 	lw r1,(r12+16)                                 
 800a788:	5c 20 00 04 	bne r1,r0,800a798 <_POSIX_Thread_Translate_sched_param+0xc0>
 800a78c:	29 82 00 14 	lw r2,(r12+20)                                 
         (param->sched_ss_init_budget.tv_nsec == 0) )                 
      return EINVAL;                                                  
 800a790:	34 0b 00 16 	mvi r11,22                                     
  if ( policy == SCHED_SPORADIC ) {                                   
    if ( (param->sched_ss_repl_period.tv_sec == 0) &&                 
         (param->sched_ss_repl_period.tv_nsec == 0) )                 
      return EINVAL;                                                  
                                                                      
    if ( (param->sched_ss_init_budget.tv_sec == 0) &&                 
 800a794:	44 41 ff eb 	be r2,r1,800a740 <_POSIX_Thread_Translate_sched_param+0x68>
         (param->sched_ss_init_budget.tv_nsec == 0) )                 
      return EINVAL;                                                  
                                                                      
    if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) <         
 800a798:	35 81 00 08 	addi r1,r12,8                                  
 800a79c:	fb ff f4 34 	calli 800786c <_Timespec_To_ticks>             
 800a7a0:	b8 20 68 00 	mv r13,r1                                      
	 _Timespec_To_ticks( ¶m->sched_ss_init_budget ) )                
 800a7a4:	35 81 00 10 	addi r1,r12,16                                 
 800a7a8:	fb ff f4 31 	calli 800786c <_Timespec_To_ticks>             
      return EINVAL;                                                  
 800a7ac:	34 0b 00 16 	mvi r11,22                                     
                                                                      
    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 ) <         
 800a7b0:	54 2d ff e4 	bgu r1,r13,800a740 <_POSIX_Thread_Translate_sched_param+0x68>
	 _Timespec_To_ticks( ¶m->sched_ss_init_budget ) )                
      return EINVAL;                                                  
                                                                      
    if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) )  
 800a7b4:	29 81 00 04 	lw r1,(r12+4)                                  
 800a7b8:	fb ff ff c0 	calli 800a6b8 <_POSIX_Priority_Is_valid>       
 800a7bc:	44 20 ff e1 	be r1,r0,800a740 <_POSIX_Thread_Translate_sched_param+0x68>
      return EINVAL;                                                  
                                                                      
    *budget_algorithm  = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;         
    *budget_callout = _POSIX_Threads_Sporadic_budget_callout;         
 800a7c0:	78 01 08 00 	mvhi r1,0x800                                  
      return EINVAL;                                                  
                                                                      
    if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) )  
      return EINVAL;                                                  
                                                                      
    *budget_algorithm  = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;         
 800a7c4:	34 02 00 03 	mvi r2,3                                       
 800a7c8:	59 c2 00 00 	sw (r14+0),r2                                  
    *budget_callout = _POSIX_Threads_Sporadic_budget_callout;         
 800a7cc:	38 21 3b b4 	ori r1,r1,0x3bb4                               
 800a7d0:	59 e1 00 00 	sw (r15+0),r1                                  
    return 0;                                                         
 800a7d4:	34 0b 00 00 	mvi r11,0                                      
 800a7d8:	e3 ff ff da 	bi 800a740 <_POSIX_Thread_Translate_sched_param+0x68>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;             
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_RR ) {                                         
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
 800a7dc:	59 cd 00 00 	sw (r14+0),r13                                 
    return 0;                                                         
 800a7e0:	e3 ff ff d8 	bi 800a740 <_POSIX_Thread_Translate_sched_param+0x68>
                                                                      

0800934c <_POSIX_Threads_Exitted_extension>: * This method is invoked each time a thread exits. */ void _POSIX_Threads_Exitted_extension( Thread_Control *executing ) {
 800934c:	37 9c ff f8 	addi sp,sp,-8                                  
 8009350:	5b 8b 00 08 	sw (sp+8),r11                                  
 8009354:	5b 9d 00 04 	sw (sp+4),ra                                   
 8009358:	b8 20 58 00 	mv r11,r1                                      
 */                                                                   
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(                   
  Objects_Id id                                                       
)                                                                     
{                                                                     
  return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
 800935c:	28 21 00 08 	lw r1,(r1+8)                                   
 8009360:	34 02 00 18 	mvi r2,24                                      
 8009364:	f8 00 23 99 	calli 80121c8 <__lshrsi3>                      
 8009368:	20 21 00 07 	andi r1,r1,0x7                                 
  /*                                                                  
   *  If the executing thread was not created with the POSIX API, then this
   *  API do not get to define its exit behavior.                     
   */                                                                 
  if ( _Objects_Get_API( executing->Object.id ) == OBJECTS_POSIX_API )
 800936c:	34 02 00 03 	mvi r2,3                                       
 8009370:	44 22 00 05 	be r1,r2,8009384 <_POSIX_Threads_Exitted_extension+0x38>
    pthread_exit( executing->Wait.return_argument );                  
}                                                                     
 8009374:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009378:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800937c:	37 9c 00 08 	addi sp,sp,8                                   
 8009380:	c3 a0 00 00 	ret                                            
  /*                                                                  
   *  If the executing thread was not created with the POSIX API, then this
   *  API do not get to define its exit behavior.                     
   */                                                                 
  if ( _Objects_Get_API( executing->Object.id ) == OBJECTS_POSIX_API )
    pthread_exit( executing->Wait.return_argument );                  
 8009384:	29 61 00 28 	lw r1,(r11+40)                                 
 8009388:	f8 00 0c e5 	calli 800c71c <pthread_exit>                   
}                                                                     
 800938c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8009390:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8009394:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 8009398:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0800380c <_POSIX_Threads_Initialize_user_threads_body>: * * Output parameters: NONE */ void _POSIX_Threads_Initialize_user_threads_body(void) {
 800380c:	37 9c ff a8 	addi sp,sp,-88                                 
 8003810:	5b 8b 00 14 	sw (sp+20),r11                                 
 8003814:	5b 8c 00 10 	sw (sp+16),r12                                 
 8003818:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800381c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8003820:	5b 9d 00 04 	sw (sp+4),ra                                   
  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;
 8003824:	78 01 08 01 	mvhi r1,0x801                                  
 8003828:	38 21 f0 a8 	ori r1,r1,0xf0a8                               
  maximum      = Configuration_POSIX_API.number_of_initialization_threads;
 800382c:	28 2e 00 30 	lw r14,(r1+48)                                 
  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;
 8003830:	28 2c 00 34 	lw r12,(r1+52)                                 
  maximum      = Configuration_POSIX_API.number_of_initialization_threads;
                                                                      
  if ( !user_threads || maximum == 0 )                                
 8003834:	65 c2 00 00 	cmpei r2,r14,0                                 
 8003838:	65 81 00 00 	cmpei r1,r12,0                                 
 800383c:	b8 41 08 00 	or r1,r2,r1                                    
 8003840:	5c 20 00 15 	bne r1,r0,8003894 <_POSIX_Threads_Initialize_user_threads_body+0x88><== NEVER TAKEN
 8003844:	34 0d 00 00 	mvi r13,0                                      
 8003848:	37 8b 00 18 	addi r11,sp,24                                 
                                                                      
  for ( index=0 ; index < maximum ; index++ ) {                       
    /*                                                                
     * There is no way for these calls to fail in this situation.     
     */                                                               
    (void) pthread_attr_init( &attr );                                
 800384c:	b9 60 08 00 	mv r1,r11                                      
 8003850:	f8 00 1b e5 	calli 800a7e4 <pthread_attr_init>              
    (void) pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
 8003854:	34 02 00 02 	mvi r2,2                                       
 8003858:	b9 60 08 00 	mv r1,r11                                      
 800385c:	f8 00 1c 19 	calli 800a8c0 <pthread_attr_setinheritsched>   
    (void) pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size);
 8003860:	29 82 00 04 	lw r2,(r12+4)                                  
 8003864:	b9 60 08 00 	mv r1,r11                                      
 8003868:	f8 00 1c 22 	calli 800a8f0 <pthread_attr_setstacksize>      
                                                                      
    status = pthread_create(                                          
 800386c:	29 83 00 00 	lw r3,(r12+0)                                  
 8003870:	37 81 00 58 	addi r1,sp,88                                  
 8003874:	b9 60 10 00 	mv r2,r11                                      
 8003878:	34 04 00 00 	mvi r4,0                                       
 800387c:	fb ff fe db 	calli 80033e8 <pthread_create>                 
 8003880:	b8 20 18 00 	mv r3,r1                                       
      &thread_id,                                                     
      &attr,                                                          
      user_threads[ index ].thread_entry,                             
      NULL                                                            
    );                                                                
    if ( status )                                                     
 8003884:	5c 20 00 0b 	bne r1,r0,80038b0 <_POSIX_Threads_Initialize_user_threads_body+0xa4><== NEVER TAKEN
   *                                                                  
   *  Setting the attributes explicitly is critical, since we don't want
   *  to inherit the idle tasks attributes.                           
   */                                                                 
                                                                      
  for ( index=0 ; index < maximum ; index++ ) {                       
 8003888:	35 ad 00 01 	addi r13,r13,1                                 
 800388c:	35 8c 00 08 	addi r12,r12,8                                 
 8003890:	55 cd ff ef 	bgu r14,r13,800384c <_POSIX_Threads_Initialize_user_threads_body+0x40><== NEVER TAKEN
      NULL                                                            
    );                                                                
    if ( status )                                                     
      _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status );
  }                                                                   
}                                                                     
 8003894:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003898:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800389c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80038a0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80038a4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80038a8:	37 9c 00 58 	addi sp,sp,88                                  
 80038ac:	c3 a0 00 00 	ret                                            
      &attr,                                                          
      user_threads[ index ].thread_entry,                             
      NULL                                                            
    );                                                                
    if ( status )                                                     
      _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status );
 80038b0:	34 01 00 02 	mvi r1,2                                       <== NOT EXECUTED
 80038b4:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 80038b8:	f8 00 07 5f 	calli 8005634 <_Internal_error_Occurred>       <== NOT EXECUTED
                                                                      

08009594 <_POSIX_Threads_Sporadic_budget_TSR>: */ void _POSIX_Threads_Sporadic_budget_TSR( Objects_Id id __attribute__((unused)), void *argument ) {
 8009594:	37 9c ff f4 	addi sp,sp,-12                                 
 8009598:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800959c:	5b 8c 00 08 	sw (sp+8),r12                                  
 80095a0:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control     *the_thread;                                     
  POSIX_API_Control  *api;                                            
                                                                      
  the_thread = argument;                                              
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
 80095a4:	28 4c 01 20 	lw r12,(r2+288)                                
 */                                                                   
void _POSIX_Threads_Sporadic_budget_TSR(                              
  Objects_Id      id __attribute__((unused)),                         
  void           *argument                                            
)                                                                     
{                                                                     
 80095a8:	b8 40 58 00 	mv r11,r2                                      
  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 );
 80095ac:	35 81 00 98 	addi r1,r12,152                                
 80095b0:	f8 00 05 5c 	calli 800ab20 <_Timespec_To_ticks>             
                                                                      
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(        
  int priority                                                        
)                                                                     
{                                                                     
  return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
 80095b4:	78 03 08 01 	mvhi r3,0x801                                  
 80095b8:	38 63 40 c0 	ori r3,r3,0x40c0                               
 80095bc:	29 84 00 88 	lw r4,(r12+136)                                
 80095c0:	40 62 00 00 	lbu r2,(r3+0)                                  
   */                                                                 
  #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 ) {                            
 80095c4:	29 63 00 1c 	lw r3,(r11+28)                                 
  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;                                
 80095c8:	59 61 00 78 	sw (r11+120),r1                                
 80095cc:	c8 44 10 00 	sub r2,r2,r4                                   
                                                                      
  new_priority = _POSIX_Priority_To_core( api->schedparam.sched_priority );
  the_thread->real_priority = new_priority;                           
 80095d0:	59 62 00 18 	sw (r11+24),r2                                 
   */                                                                 
  #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 ) {                            
 80095d4:	5c 60 00 06 	bne r3,r0,80095ec <_POSIX_Threads_Sporadic_budget_TSR+0x58><== NEVER TAKEN
    /*                                                                
     *  If this would make them less important, then do not change it.
     */                                                               
    if ( the_thread->current_priority > new_priority ) {              
 80095d8:	29 61 00 14 	lw r1,(r11+20)                                 
 80095dc:	50 41 00 04 	bgeu r2,r1,80095ec <_POSIX_Threads_Sporadic_budget_TSR+0x58>
      _Thread_Change_priority( the_thread, new_priority, true );      
 80095e0:	b9 60 08 00 	mv r1,r11                                      
 80095e4:	34 03 00 01 	mvi r3,1                                       
 80095e8:	fb ff ef 5a 	calli 8005350 <_Thread_Change_priority>        
      #endif                                                          
    }                                                                 
  }                                                                   
                                                                      
  /* ticks is guaranteed to be at least one */                        
  ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_repl_period );
 80095ec:	35 81 00 90 	addi r1,r12,144                                
 80095f0:	f8 00 05 4c 	calli 800ab20 <_Timespec_To_ticks>             
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 80095f4:	59 81 00 b4 	sw (r12+180),r1                                
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 80095f8:	78 01 08 01 	mvhi r1,0x801                                  
 80095fc:	35 82 00 a8 	addi r2,r12,168                                
 8009600:	38 21 49 88 	ori r1,r1,0x4988                               
 8009604:	fb ff f5 5a 	calli 8006b6c <_Watchdog_Insert>               
                                                                      
  _Watchdog_Insert_ticks( &api->Sporadic_timer, ticks );              
}                                                                     
 8009608:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800960c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8009610:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8009614:	37 9c 00 0c 	addi sp,sp,12                                  
 8009618:	c3 a0 00 00 	ret                                            
                                                                      

0800961c <_POSIX_Threads_Sporadic_budget_callout>: * _POSIX_Threads_Sporadic_budget_callout */ void _POSIX_Threads_Sporadic_budget_callout( Thread_Control *the_thread ) {
 800961c:	37 9c ff fc 	addi sp,sp,-4                                  
 8009620:	5b 9d 00 04 	sw (sp+4),ra                                   
  POSIX_API_Control *api;                                             
  uint32_t           new_priority;                                    
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
 8009624:	28 22 01 20 	lw r2,(r1+288)                                 
 8009628:	78 04 08 01 	mvhi r4,0x801                                  
 800962c:	38 84 40 c0 	ori r4,r4,0x40c0                               
 8009630:	28 42 00 8c 	lw r2,(r2+140)                                 
 8009634:	40 84 00 00 	lbu r4,(r4+0)                                  
   */                                                                 
  #if 0                                                               
    printk( "callout %d %d %d\n", the_thread->resource_count,         
	the_thread->current_priority, new_priority );                        
  #endif                                                              
  if ( the_thread->resource_count == 0 ) {                            
 8009638:	28 25 00 1c 	lw r5,(r1+28)                                  
 800963c:	c8 82 10 00 	sub r2,r4,r2                                   
                                                                      
  /*                                                                  
   *  This will prevent the thread from consuming its entire "budget" 
   *  while at low priority.                                          
   */                                                                 
  the_thread->cpu_time_budget = 0xFFFFFFFF; /* XXX should be based on MAX_U32 */
 8009640:	34 04 ff ff 	mvi r4,-1                                      
 8009644:	58 24 00 78 	sw (r1+120),r4                                 
                                                                      
  new_priority = _POSIX_Priority_To_core(api->schedparam.sched_ss_low_priority);
  the_thread->real_priority = new_priority;                           
 8009648:	58 22 00 18 	sw (r1+24),r2                                  
   */                                                                 
  #if 0                                                               
    printk( "callout %d %d %d\n", the_thread->resource_count,         
	the_thread->current_priority, new_priority );                        
  #endif                                                              
  if ( the_thread->resource_count == 0 ) {                            
 800964c:	5c a0 00 05 	bne r5,r0,8009660 <_POSIX_Threads_Sporadic_budget_callout+0x44><== NEVER TAKEN
    /*                                                                
     *  Make sure we are actually lowering it. If they have lowered it
     *  to logically lower than sched_ss_low_priority, then we do not want to
     *  change it.                                                    
     */                                                               
    if ( the_thread->current_priority < new_priority ) {              
 8009650:	28 23 00 14 	lw r3,(r1+20)                                  
 8009654:	50 62 00 03 	bgeu r3,r2,8009660 <_POSIX_Threads_Sporadic_budget_callout+0x44><== NEVER TAKEN
      _Thread_Change_priority( the_thread, new_priority, true );      
 8009658:	34 03 00 01 	mvi r3,1                                       
 800965c:	fb ff ef 3d 	calli 8005350 <_Thread_Change_priority>        
      #if 0                                                           
        printk( "lower priority\n" );                                 
      #endif                                                          
    }                                                                 
  }                                                                   
}                                                                     
 8009660:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009664:	37 9c 00 04 	addi sp,sp,4                                   
 8009668:	c3 a0 00 00 	ret                                            
                                                                      

0800c200 <_POSIX_Threads_cancel_run>: #include <rtems/posix/threadsup.h> void _POSIX_Threads_cancel_run( Thread_Control *the_thread ) {
 800c200:	37 9c ff ec 	addi sp,sp,-20                                 
 800c204:	5b 8b 00 14 	sw (sp+20),r11                                 
 800c208:	5b 8c 00 10 	sw (sp+16),r12                                 
 800c20c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800c210:	5b 8e 00 08 	sw (sp+8),r14                                  
 800c214:	5b 9d 00 04 	sw (sp+4),ra                                   
  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 ];    
 800c218:	28 2c 01 20 	lw r12,(r1+288)                                
                                                                      
  handler_stack = &thread_support->Cancellation_Handlers;             
                                                                      
  thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;       
 800c21c:	34 01 00 01 	mvi r1,1                                       
                                                                      
  while ( !_Chain_Is_empty( handler_stack ) ) {                       
 800c220:	29 82 00 e4 	lw r2,(r12+228)                                
                                                                      
  thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];    
                                                                      
  handler_stack = &thread_support->Cancellation_Handlers;             
                                                                      
  thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;       
 800c224:	59 81 00 d8 	sw (r12+216),r1                                
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 800c228:	35 8d 00 e8 	addi r13,r12,232                               
                                                                      
  while ( !_Chain_Is_empty( handler_stack ) ) {                       
 800c22c:	44 4d 00 12 	be r2,r13,800c274 <_POSIX_Threads_cancel_run+0x74>
    _ISR_Disable( level );                                            
 800c230:	34 0e ff fe 	mvi r14,-2                                     
 800c234:	90 00 08 00 	rcsr r1,IE                                     
 800c238:	a0 2e 10 00 	and r2,r1,r14                                  
 800c23c:	d0 02 00 00 	wcsr IE,r2                                     
      handler = (POSIX_Cancel_Handler_control *)                      
 800c240:	29 8b 00 ec 	lw r11,(r12+236)                               
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
 800c244:	29 63 00 00 	lw r3,(r11+0)                                  
  previous       = the_node->previous;                                
 800c248:	29 62 00 04 	lw r2,(r11+4)                                  
  next->previous = previous;                                          
 800c24c:	58 62 00 04 	sw (r3+4),r2                                   
  previous->next = next;                                              
 800c250:	58 43 00 00 	sw (r2+0),r3                                   
           _Chain_Tail( handler_stack )->previous;                    
      _Chain_Extract_unprotected( &handler->Node );                   
    _ISR_Enable( level );                                             
 800c254:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
    (*handler->routine)( handler->arg );                              
 800c258:	29 62 00 08 	lw r2,(r11+8)                                  
 800c25c:	29 61 00 0c 	lw r1,(r11+12)                                 
 800c260:	d8 40 00 00 	call r2                                        
                                                                      
    _Workspace_Free( handler );                                       
 800c264:	b9 60 08 00 	mv r1,r11                                      
 800c268:	fb ff eb 44 	calli 8006f78 <_Workspace_Free>                
                                                                      
  handler_stack = &thread_support->Cancellation_Handlers;             
                                                                      
  thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;       
                                                                      
  while ( !_Chain_Is_empty( handler_stack ) ) {                       
 800c26c:	29 81 00 e4 	lw r1,(r12+228)                                
 800c270:	5c 2d ff f1 	bne r1,r13,800c234 <_POSIX_Threads_cancel_run+0x34><== NEVER TAKEN
                                                                      
    (*handler->routine)( handler->arg );                              
                                                                      
    _Workspace_Free( handler );                                       
  }                                                                   
}                                                                     
 800c274:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c278:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800c27c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800c280:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800c284:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800c288:	37 9c 00 14 	addi sp,sp,20                                  
 800c28c:	c3 a0 00 00 	ret                                            
                                                                      

080034c8 <_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) {
 80034c8:	37 9c ff f8 	addi sp,sp,-8                                  
 80034cc:	5b 8b 00 08 	sw (sp+8),r11                                  
 80034d0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80034d4:	b8 40 58 00 	mv r11,r2                                      
  bool                 activated;                                     
                                                                      
  ptimer = (POSIX_Timer_Control *)data;                               
                                                                      
  /* Increment the number of expirations. */                          
  ptimer->overrun = ptimer->overrun + 1;                              
 80034d8:	28 42 00 68 	lw r2,(r2+104)                                 
                                                                      
  /* The timer must be reprogrammed */                                
  if ( ( ptimer->timer_data.it_interval.tv_sec  != 0 ) ||             
 80034dc:	29 61 00 54 	lw r1,(r11+84)                                 
  bool                 activated;                                     
                                                                      
  ptimer = (POSIX_Timer_Control *)data;                               
                                                                      
  /* Increment the number of expirations. */                          
  ptimer->overrun = ptimer->overrun + 1;                              
 80034e0:	34 42 00 01 	addi r2,r2,1                                   
 80034e4:	59 62 00 68 	sw (r11+104),r2                                
                                                                      
  /* The timer must be reprogrammed */                                
  if ( ( ptimer->timer_data.it_interval.tv_sec  != 0 ) ||             
 80034e8:	5c 20 00 0d 	bne r1,r0,800351c <_POSIX_Timer_TSR+0x54>      
 80034ec:	29 62 00 58 	lw r2,(r11+88)                                 
 80034f0:	5c 41 00 0b 	bne r2,r1,800351c <_POSIX_Timer_TSR+0x54>      <== 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;                     
 80034f4:	34 01 00 04 	mvi r1,4                                       <== NOT EXECUTED
 80034f8:	31 61 00 3c 	sb (r11+60),r1                                 <== 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 ) ) {
 80034fc:	29 61 00 38 	lw r1,(r11+56)                                 
 8003500:	29 62 00 44 	lw r2,(r11+68)                                 
 8003504:	f8 00 19 f0 	calli 8009cc4 <pthread_kill>                   
  }                                                                   
                                                                      
  /* After the signal handler returns, the count of expirations of the
   * timer must be set to 0.                                          
   */                                                                 
  ptimer->overrun = 0;                                                
 8003508:	59 60 00 68 	sw (r11+104),r0                                
}                                                                     
 800350c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003510:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8003514:	37 9c 00 08 	addi sp,sp,8                                   
 8003518:	c3 a0 00 00 	ret                                            
  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(                           
 800351c:	29 62 00 64 	lw r2,(r11+100)                                
 8003520:	29 63 00 08 	lw r3,(r11+8)                                  
 8003524:	78 04 08 00 	mvhi r4,0x800                                  
 8003528:	35 61 00 10 	addi r1,r11,16                                 
 800352c:	38 84 34 c8 	ori r4,r4,0x34c8                               
 8003530:	b9 60 28 00 	mv r5,r11                                      
 8003534:	f8 00 1b 45 	calli 800a248 <_POSIX_Timer_Insert_helper>     
      ptimer->ticks,                                                  
      ptimer->Object.id,                                              
      _POSIX_Timer_TSR,                                               
      ptimer                                                          
    );                                                                
    if ( !activated )                                                 
 8003538:	44 20 ff f5 	be r1,r0,800350c <_POSIX_Timer_TSR+0x44>       <== NEVER TAKEN
      return;                                                         
                                                                      
    /* Store the time when the timer was started again */             
    _TOD_Get( &ptimer->time );                                        
 800353c:	35 61 00 6c 	addi r1,r11,108                                
 8003540:	f8 00 04 af 	calli 80047fc <_TOD_Get>                       
                                                                      
    /* The state really did not change but just to be safe */         
    ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;                     
 8003544:	34 01 00 03 	mvi r1,3                                       
 8003548:	31 61 00 3c 	sb (r11+60),r1                                 
 800354c:	e3 ff ff ec 	bi 80034fc <_POSIX_Timer_TSR+0x34>             
                                                                      

0800c368 <_POSIX_signals_Check_signal>: bool _POSIX_signals_Check_signal( POSIX_API_Control *api, int signo, bool is_global ) {
 800c368:	37 9c ff a0 	addi sp,sp,-96                                 
 800c36c:	5b 8b 00 2c 	sw (sp+44),r11                                 
 800c370:	5b 8c 00 28 	sw (sp+40),r12                                 
 800c374:	5b 8d 00 24 	sw (sp+36),r13                                 
 800c378:	5b 8e 00 20 	sw (sp+32),r14                                 
 800c37c:	5b 8f 00 1c 	sw (sp+28),r15                                 
 800c380:	5b 90 00 18 	sw (sp+24),r16                                 
 800c384:	5b 91 00 14 	sw (sp+20),r17                                 
 800c388:	5b 92 00 10 	sw (sp+16),r18                                 
 800c38c:	5b 93 00 0c 	sw (sp+12),r19                                 
 800c390:	5b 94 00 08 	sw (sp+8),r20                                  
 800c394:	5b 9d 00 04 	sw (sp+4),ra                                   
  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,   
 800c398:	37 8e 00 58 	addi r14,sp,88                                 
bool    _POSIX_signals_Check_signal(                                  
  POSIX_API_Control  *api,                                            
  int                 signo,                                          
  bool                is_global                                       
)                                                                     
{                                                                     
 800c39c:	20 64 00 ff 	andi r4,r3,0xff                                
  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,   
 800c3a0:	34 05 00 01 	mvi r5,1                                       
 800c3a4:	b9 c0 18 00 	mv r3,r14                                      
bool    _POSIX_signals_Check_signal(                                  
  POSIX_API_Control  *api,                                            
  int                 signo,                                          
  bool                is_global                                       
)                                                                     
{                                                                     
 800c3a8:	b8 20 68 00 	mv r13,r1                                      
 800c3ac:	b8 40 58 00 	mv r11,r2                                      
  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,   
 800c3b0:	f8 00 00 57 	calli 800c50c <_POSIX_signals_Clear_signals>   
                                       is_global, true ) )            
    return false;                                                     
 800c3b4:	34 06 00 00 	mvi r6,0                                       
{                                                                     
  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,   
 800c3b8:	44 20 00 42 	be r1,r0,800c4c0 <_POSIX_signals_Check_signal+0x158>
  #endif                                                              
                                                                      
  /*                                                                  
   *  Just to prevent sending a signal which is currently being ignored.
   */                                                                 
  if ( _POSIX_signals_Vectors[ signo ].sa_handler == SIG_IGN )        
 800c3bc:	b5 6b 20 00 	add r4,r11,r11                                 
 800c3c0:	b4 8b 20 00 	add r4,r4,r11                                  
 800c3c4:	78 05 08 01 	mvhi r5,0x801                                  
 800c3c8:	b4 84 20 00 	add r4,r4,r4                                   
 800c3cc:	38 a5 4d c8 	ori r5,r5,0x4dc8                               
 800c3d0:	b4 84 20 00 	add r4,r4,r4                                   
 800c3d4:	b4 a4 28 00 	add r5,r5,r4                                   
 800c3d8:	28 a7 00 08 	lw r7,(r5+8)                                   
 800c3dc:	34 01 00 01 	mvi r1,1                                       
 800c3e0:	44 e1 00 38 	be r7,r1,800c4c0 <_POSIX_signals_Check_signal+0x158><== NEVER TAKEN
  /*                                                                  
   *  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,  
 800c3e4:	78 0c 08 01 	mvhi r12,0x801                                 
 800c3e8:	39 8c 4d 78 	ori r12,r12,0x4d78                             
 800c3ec:	29 84 00 0c 	lw r4,(r12+12)                                 
    return false;                                                     
                                                                      
  /*                                                                  
   *  Block the signals requested in sa_mask                          
   */                                                                 
  saved_signals_blocked = api->signals_blocked;                       
 800c3f0:	29 af 00 d0 	lw r15,(r13+208)                               
  api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask;    
 800c3f4:	28 a1 00 04 	lw r1,(r5+4)                                   
  /*                                                                  
   *  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,  
 800c3f8:	28 94 00 20 	lw r20,(r4+32)                                 
 800c3fc:	28 93 00 24 	lw r19,(r4+36)                                 
 800c400:	28 92 00 28 	lw r18,(r4+40)                                 
 800c404:	28 91 00 2c 	lw r17,(r4+44)                                 
 800c408:	28 90 00 30 	lw r16,(r4+48)                                 
 800c40c:	28 8a 00 34 	lw r10,(r4+52)                                 
 800c410:	28 89 00 38 	lw r9,(r4+56)                                  
 800c414:	28 88 00 3c 	lw r8,(r4+60)                                  
 800c418:	28 86 00 40 	lw r6,(r4+64)                                  
 800c41c:	28 83 00 44 	lw r3,(r4+68)                                  
          sizeof( Thread_Wait_information ));                         
                                                                      
  /*                                                                  
   *  Here, the signal handler function executes                      
   */                                                                 
  switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {               
 800c420:	28 a2 00 00 	lw r2,(r5+0)                                   
                                                                      
  /*                                                                  
   *  Block the signals requested in sa_mask                          
   */                                                                 
  saved_signals_blocked = api->signals_blocked;                       
  api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask;    
 800c424:	b8 2f 08 00 	or r1,r1,r15                                   
 800c428:	59 a1 00 d0 	sw (r13+208),r1                                
  /*                                                                  
   *  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,  
 800c42c:	5b 94 00 30 	sw (sp+48),r20                                 
 800c430:	5b 93 00 34 	sw (sp+52),r19                                 
 800c434:	5b 92 00 38 	sw (sp+56),r18                                 
 800c438:	5b 91 00 3c 	sw (sp+60),r17                                 
 800c43c:	5b 90 00 40 	sw (sp+64),r16                                 
 800c440:	5b 8a 00 44 	sw (sp+68),r10                                 
 800c444:	5b 89 00 48 	sw (sp+72),r9                                  
 800c448:	5b 88 00 4c 	sw (sp+76),r8                                  
 800c44c:	5b 86 00 50 	sw (sp+80),r6                                  
 800c450:	5b 83 00 54 	sw (sp+84),r3                                  
          sizeof( Thread_Wait_information ));                         
                                                                      
  /*                                                                  
   *  Here, the signal handler function executes                      
   */                                                                 
  switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {               
 800c454:	34 01 00 02 	mvi r1,2                                       
 800c458:	44 41 00 28 	be r2,r1,800c4f8 <_POSIX_signals_Check_signal+0x190>
        &siginfo_struct,                                              
        NULL        /* context is undefined per 1003.1b-1993, p. 66 */
      );                                                              
      break;                                                          
    default:                                                          
      (*_POSIX_signals_Vectors[ signo ].sa_handler)( signo );         
 800c45c:	b9 60 08 00 	mv r1,r11                                      
 800c460:	d8 e0 00 00 	call r7                                        
  }                                                                   
                                                                      
  /*                                                                  
   *  Restore the blocking information                                
   */                                                                 
  memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,  
 800c464:	2b 81 00 30 	lw r1,(sp+48)                                  
 800c468:	29 82 00 0c 	lw r2,(r12+12)                                 
  /*                                                                  
   *  Restore the previous set of blocked signals                     
   */                                                                 
  api->signals_blocked = saved_signals_blocked;                       
                                                                      
  return true;                                                        
 800c46c:	34 06 00 01 	mvi r6,1                                       
  }                                                                   
                                                                      
  /*                                                                  
   *  Restore the blocking information                                
   */                                                                 
  memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,  
 800c470:	58 41 00 20 	sw (r2+32),r1                                  
 800c474:	2b 81 00 34 	lw r1,(sp+52)                                  
 800c478:	58 41 00 24 	sw (r2+36),r1                                  
 800c47c:	2b 81 00 38 	lw r1,(sp+56)                                  
 800c480:	58 41 00 28 	sw (r2+40),r1                                  
 800c484:	2b 81 00 3c 	lw r1,(sp+60)                                  
 800c488:	58 41 00 2c 	sw (r2+44),r1                                  
 800c48c:	2b 81 00 40 	lw r1,(sp+64)                                  
 800c490:	58 41 00 30 	sw (r2+48),r1                                  
 800c494:	2b 81 00 44 	lw r1,(sp+68)                                  
 800c498:	58 41 00 34 	sw (r2+52),r1                                  
 800c49c:	2b 81 00 48 	lw r1,(sp+72)                                  
 800c4a0:	58 41 00 38 	sw (r2+56),r1                                  
 800c4a4:	2b 81 00 4c 	lw r1,(sp+76)                                  
 800c4a8:	58 41 00 3c 	sw (r2+60),r1                                  
 800c4ac:	2b 81 00 50 	lw r1,(sp+80)                                  
 800c4b0:	58 41 00 40 	sw (r2+64),r1                                  
 800c4b4:	2b 81 00 54 	lw r1,(sp+84)                                  
 800c4b8:	58 41 00 44 	sw (r2+68),r1                                  
          sizeof( Thread_Wait_information ));                         
                                                                      
  /*                                                                  
   *  Restore the previous set of blocked signals                     
   */                                                                 
  api->signals_blocked = saved_signals_blocked;                       
 800c4bc:	59 af 00 d0 	sw (r13+208),r15                               
                                                                      
  return true;                                                        
}                                                                     
 800c4c0:	b8 c0 08 00 	mv r1,r6                                       
 800c4c4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c4c8:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 800c4cc:	2b 8c 00 28 	lw r12,(sp+40)                                 
 800c4d0:	2b 8d 00 24 	lw r13,(sp+36)                                 
 800c4d4:	2b 8e 00 20 	lw r14,(sp+32)                                 
 800c4d8:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 800c4dc:	2b 90 00 18 	lw r16,(sp+24)                                 
 800c4e0:	2b 91 00 14 	lw r17,(sp+20)                                 
 800c4e4:	2b 92 00 10 	lw r18,(sp+16)                                 
 800c4e8:	2b 93 00 0c 	lw r19,(sp+12)                                 
 800c4ec:	2b 94 00 08 	lw r20,(sp+8)                                  
 800c4f0:	37 9c 00 60 	addi sp,sp,96                                  
 800c4f4:	c3 a0 00 00 	ret                                            
  /*                                                                  
   *  Here, the signal handler function executes                      
   */                                                                 
  switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {               
    case SA_SIGINFO:                                                  
      (*_POSIX_signals_Vectors[ signo ].sa_sigaction)(                
 800c4f8:	b9 60 08 00 	mv r1,r11                                      
 800c4fc:	b9 c0 10 00 	mv r2,r14                                      
 800c500:	34 03 00 00 	mvi r3,0                                       
 800c504:	d8 e0 00 00 	call r7                                        
        signo,                                                        
        &siginfo_struct,                                              
        NULL        /* context is undefined per 1003.1b-1993, p. 66 */
      );                                                              
      break;                                                          
 800c508:	e3 ff ff d7 	bi 800c464 <_POSIX_signals_Check_signal+0xfc>  
                                                                      

0800ccdc <_POSIX_signals_Clear_process_signals>: */ void _POSIX_signals_Clear_process_signals( int signo ) {
 800ccdc:	37 9c ff f4 	addi sp,sp,-12                                 
 800cce0:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800cce4:	5b 8c 00 08 	sw (sp+8),r12                                  
 800cce8:	5b 9d 00 04 	sw (sp+4),ra                                   
 800ccec:	b8 20 10 00 	mv r2,r1                                       
  clear_signal = true;                                                
  mask         = signo_to_mask( signo );                              
                                                                      
  ISR_Level  level;                                                   
                                                                      
  _ISR_Disable( level );                                              
 800ccf0:	90 00 60 00 	rcsr r12,IE                                    
 800ccf4:	34 01 ff fe 	mvi r1,-2                                      
 800ccf8:	a1 81 08 00 	and r1,r12,r1                                  
 800ccfc:	d0 01 00 00 	wcsr IE,r1                                     
    if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {   
 800cd00:	b4 42 20 00 	add r4,r2,r2                                   
 800cd04:	b4 82 20 00 	add r4,r4,r2                                   
 800cd08:	78 01 08 01 	mvhi r1,0x801                                  
 800cd0c:	b4 84 18 00 	add r3,r4,r4                                   
 800cd10:	38 21 4d c8 	ori r1,r1,0x4dc8                               
 800cd14:	b4 63 18 00 	add r3,r3,r3                                   
 800cd18:	b4 23 18 00 	add r3,r1,r3                                   
 800cd1c:	28 63 00 00 	lw r3,(r3+0)                                   
 800cd20:	34 01 00 02 	mvi r1,2                                       
 800cd24:	44 61 00 10 	be r3,r1,800cd64 <_POSIX_signals_Clear_process_signals+0x88>
 800cd28:	34 42 ff ff 	addi r2,r2,-1                                  
      if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) )     
       clear_signal = false;                                          
    }                                                                 
    if ( clear_signal ) {                                             
      _POSIX_signals_Pending &= ~mask;                                
 800cd2c:	78 0b 08 01 	mvhi r11,0x801                                 
 800cd30:	34 01 00 01 	mvi r1,1                                       
 800cd34:	f8 00 14 d7 	calli 8012090 <__ashlsi3>                      
 800cd38:	39 6b 4f bc 	ori r11,r11,0x4fbc                             
 800cd3c:	29 62 00 00 	lw r2,(r11+0)                                  
 800cd40:	a4 20 08 00 	not r1,r1                                      
 800cd44:	a0 22 08 00 	and r1,r1,r2                                   
 800cd48:	59 61 00 00 	sw (r11+0),r1                                  
    }                                                                 
  _ISR_Enable( level );                                               
 800cd4c:	d0 0c 00 00 	wcsr IE,r12                                    
}                                                                     
 800cd50:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800cd54:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800cd58:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800cd5c:	37 9c 00 0c 	addi sp,sp,12                                  
 800cd60:	c3 a0 00 00 	ret                                            
 800cd64:	78 01 08 01 	mvhi r1,0x801                                  
 800cd68:	b4 84 20 00 	add r4,r4,r4                                   
 800cd6c:	38 21 4f c0 	ori r1,r1,0x4fc0                               
 800cd70:	b4 84 20 00 	add r4,r4,r4                                   
 800cd74:	b4 24 20 00 	add r4,r1,r4                                   
                                                                      
  ISR_Level  level;                                                   
                                                                      
  _ISR_Disable( level );                                              
    if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {   
      if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) )     
 800cd78:	28 81 00 00 	lw r1,(r4+0)                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 800cd7c:	34 84 00 04 	addi r4,r4,4                                   
 800cd80:	44 24 ff ea 	be r1,r4,800cd28 <_POSIX_signals_Clear_process_signals+0x4c><== ALWAYS TAKEN
       clear_signal = false;                                          
    }                                                                 
    if ( clear_signal ) {                                             
      _POSIX_signals_Pending &= ~mask;                                
    }                                                                 
  _ISR_Enable( level );                                               
 800cd84:	d0 0c 00 00 	wcsr IE,r12                                    <== NOT EXECUTED
}                                                                     
 800cd88:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800cd8c:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 800cd90:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 800cd94:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 800cd98:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0800419c <_POSIX_signals_Get_lowest>: #include <rtems/score/isr.h> int _POSIX_signals_Get_lowest( sigset_t set ) {
 800419c:	37 9c ff f0 	addi sp,sp,-16                                 
 80041a0:	5b 8b 00 10 	sw (sp+16),r11                                 
 80041a4:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80041a8:	5b 8d 00 08 	sw (sp+8),r13                                  
 80041ac:	5b 9d 00 04 	sw (sp+4),ra                                   
  int signo;                                                          
                                                                      
  for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {            
 80041b0:	34 0b 00 1b 	mvi r11,27                                     
#include <rtems/score/isr.h>                                          
                                                                      
int _POSIX_signals_Get_lowest(                                        
  sigset_t   set                                                      
)                                                                     
{                                                                     
 80041b4:	b8 20 60 00 	mv r12,r1                                      
  int signo;                                                          
                                                                      
  for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {            
 80041b8:	34 0d 00 20 	mvi r13,32                                     
 80041bc:	35 62 ff ff 	addi r2,r11,-1                                 
 80041c0:	34 01 00 01 	mvi r1,1                                       
 80041c4:	f8 00 66 ff 	calli 801ddc0 <__ashlsi3>                      
    if ( set & signo_to_mask( signo ) ) {                             
 80041c8:	a0 2c 08 00 	and r1,r1,r12                                  
 80041cc:	5c 20 00 0d 	bne r1,r0,8004200 <_POSIX_signals_Get_lowest+0x64><== NEVER TAKEN
  sigset_t   set                                                      
)                                                                     
{                                                                     
  int signo;                                                          
                                                                      
  for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {            
 80041d0:	35 6b 00 01 	addi r11,r11,1                                 
 80041d4:	5d 6d ff fa 	bne r11,r13,80041bc <_POSIX_signals_Get_lowest+0x20>
 80041d8:	34 0b 00 01 	mvi r11,1                                      
   */                                                                 
                                                                      
  #if (SIGHUP != 1)                                                   
    #error "Assumption that SIGHUP==1 violated!!"                     
  #endif                                                              
  for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {        
 80041dc:	34 0d 00 1b 	mvi r13,27                                     
 80041e0:	e0 00 00 03 	bi 80041ec <_POSIX_signals_Get_lowest+0x50>    
 80041e4:	35 6b 00 01 	addi r11,r11,1                                 
 80041e8:	45 6d 00 06 	be r11,r13,8004200 <_POSIX_signals_Get_lowest+0x64><== NEVER TAKEN
 80041ec:	35 62 ff ff 	addi r2,r11,-1                                 
 80041f0:	34 01 00 01 	mvi r1,1                                       
 80041f4:	f8 00 66 f3 	calli 801ddc0 <__ashlsi3>                      
    if ( set & signo_to_mask( signo ) ) {                             
 80041f8:	a0 2c 10 00 	and r2,r1,r12                                  
 80041fc:	44 40 ff fa 	be r2,r0,80041e4 <_POSIX_signals_Get_lowest+0x48>
   *  a return 0.  This routine will NOT be called unless a signal    
   *  is pending in the set passed in.                                
   */                                                                 
found_it:                                                             
  return signo;                                                       
}                                                                     
 8004200:	b9 60 08 00 	mv r1,r11                                      
 8004204:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004208:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800420c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004210:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8004214:	37 9c 00 10 	addi sp,sp,16                                  
 8004218:	c3 a0 00 00 	ret                                            
                                                                      

08026324 <_POSIX_signals_Unblock_thread>: bool _POSIX_signals_Unblock_thread( Thread_Control *the_thread, int signo, siginfo_t *info ) {
 8026324:	37 9c ff ec 	addi sp,sp,-20                                 
 8026328:	5b 8b 00 14 	sw (sp+20),r11                                 
 802632c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8026330:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8026334:	5b 8e 00 08 	sw (sp+8),r14                                  
 8026338:	5b 9d 00 04 	sw (sp+4),ra                                   
 802633c:	b8 20 58 00 	mv r11,r1                                      
 8026340:	b8 40 70 00 	mv r14,r2                                      
 8026344:	34 01 00 01 	mvi r1,1                                       
 8026348:	34 42 ff ff 	addi r2,r2,-1                                  
 802634c:	b8 60 68 00 	mv r13,r3                                      
 8026350:	fb ff 6f 84 	calli 8002160 <__ashlsi3>                      
                                                                      
  /*                                                                  
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
 8026354:	78 02 08 02 	mvhi r2,0x802                                  
 8026358:	38 42 7b b0 	ori r2,r2,0x7bb0                               
 802635c:	29 64 00 10 	lw r4,(r11+16)                                 
 8026360:	28 43 00 00 	lw r3,(r2+0)                                   
{                                                                     
  POSIX_API_Control  *api;                                            
  sigset_t            mask;                                           
  siginfo_t          *the_info = NULL;                                
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
 8026364:	29 65 01 20 	lw r5,(r11+288)                                
                                                                      
  /*                                                                  
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
 8026368:	a0 83 10 00 	and r2,r4,r3                                   
 802636c:	44 43 00 21 	be r2,r3,80263f0 <_POSIX_signals_Unblock_thread+0xcc>
  }                                                                   
                                                                      
  /*                                                                  
   *  Thread is not waiting due to a sigwait.                         
   */                                                                 
  if ( ~api->signals_blocked & mask ) {                               
 8026370:	28 a2 00 d0 	lw r2,(r5+208)                                 
    } else if ( the_thread->current_state == STATES_READY ) {         
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
        _Thread_Dispatch_necessary = true;                            
    }                                                                 
  }                                                                   
  return false;                                                       
 8026374:	34 0c 00 00 	mvi r12,0                                      
  }                                                                   
                                                                      
  /*                                                                  
   *  Thread is not waiting due to a sigwait.                         
   */                                                                 
  if ( ~api->signals_blocked & mask ) {                               
 8026378:	a4 40 10 00 	not r2,r2                                      
 802637c:	a0 22 08 00 	and r1,r1,r2                                   
 8026380:	44 20 00 14 	be r1,r0,80263d0 <_POSIX_signals_Unblock_thread+0xac>
 8026384:	78 01 10 00 	mvhi r1,0x1000                                 
 8026388:	a0 81 08 00 	and r1,r4,r1                                   
     *      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 ) ) {
 802638c:	44 20 00 31 	be r1,r0,8026450 <_POSIX_signals_Unblock_thread+0x12c>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_ON_THREAD_QUEUE);              
 8026390:	78 03 08 02 	mvhi r3,0x802                                  
      the_thread->Wait.return_code = EINTR;                           
 8026394:	34 01 00 04 	mvi r1,4                                       
 8026398:	38 63 79 58 	ori r3,r3,0x7958                               
 802639c:	59 61 00 34 	sw (r11+52),r1                                 
 80263a0:	28 61 00 00 	lw r1,(r3+0)                                   
 80263a4:	a0 81 08 00 	and r1,r4,r1                                   
      /*                                                              
       *  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) )
 80263a8:	5c 20 00 3a 	bne r1,r0,8026490 <_POSIX_signals_Unblock_thread+0x16c>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_delaying (                       
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_DELAYING);                             
 80263ac:	20 84 00 08 	andi r4,r4,0x8                                 
         _Thread_queue_Extract_with_proxy( the_thread );              
       else if ( _States_Is_delaying(the_thread->current_state) ) {   
 80263b0:	44 8c 00 08 	be r4,r12,80263d0 <_POSIX_signals_Unblock_thread+0xac><== NEVER TAKEN
          (void) _Watchdog_Remove( &the_thread->Timer );              
 80263b4:	35 61 00 48 	addi r1,r11,72                                 
 80263b8:	fb ff 9e ba 	calli 800dea0 <_Watchdog_Remove>               
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
 80263bc:	78 03 08 02 	mvhi r3,0x802                                  
 80263c0:	38 63 77 bc 	ori r3,r3,0x77bc                               
 80263c4:	28 62 00 00 	lw r2,(r3+0)                                   
 80263c8:	b9 60 08 00 	mv r1,r11                                      
 80263cc:	fb ff 98 81 	calli 800c5d0 <_Thread_Clear_state>            
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
        _Thread_Dispatch_necessary = true;                            
    }                                                                 
  }                                                                   
  return false;                                                       
}                                                                     
 80263d0:	b9 80 08 00 	mv r1,r12                                      
 80263d4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80263d8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80263dc:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80263e0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80263e4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80263e8:	37 9c 00 14 	addi sp,sp,20                                  
 80263ec:	c3 a0 00 00 	ret                                            
   *  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) ) {
 80263f0:	29 62 00 30 	lw r2,(r11+48)                                 
 80263f4:	a0 22 10 00 	and r2,r1,r2                                   
 80263f8:	44 40 00 20 	be r2,r0,8026478 <_POSIX_signals_Unblock_thread+0x154>
      the_thread->Wait.return_code = EINTR;                           
 80263fc:	34 01 00 04 	mvi r1,4                                       
 8026400:	59 61 00 34 	sw (r11+52),r1                                 
                                                                      
      the_info = (siginfo_t *) the_thread->Wait.return_argument;      
 8026404:	29 61 00 28 	lw r1,(r11+40)                                 
                                                                      
      if ( !info ) {                                                  
 8026408:	45 a0 00 25 	be r13,r0,802649c <_POSIX_signals_Unblock_thread+0x178>
        the_info->si_signo = signo;                                   
        the_info->si_code = SI_USER;                                  
        the_info->si_value.sival_int = 0;                             
      } else {                                                        
        *the_info = *info;                                            
 802640c:	29 a2 00 00 	lw r2,(r13+0)                                  
 8026410:	58 22 00 00 	sw (r1+0),r2                                   
 8026414:	29 a2 00 04 	lw r2,(r13+4)                                  
 8026418:	58 22 00 04 	sw (r1+4),r2                                   
 802641c:	29 a2 00 08 	lw r2,(r13+8)                                  
 8026420:	58 22 00 08 	sw (r1+8),r2                                   
      }                                                               
                                                                      
      _Thread_queue_Extract_with_proxy( the_thread );                 
 8026424:	b9 60 08 00 	mv r1,r11                                      
 8026428:	fb ff 9b b2 	calli 800d2f0 <_Thread_queue_Extract_with_proxy>
      return true;                                                    
 802642c:	34 0c 00 01 	mvi r12,1                                      
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
        _Thread_Dispatch_necessary = true;                            
    }                                                                 
  }                                                                   
  return false;                                                       
}                                                                     
 8026430:	b9 80 08 00 	mv r1,r12                                      
 8026434:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8026438:	2b 8b 00 14 	lw r11,(sp+20)                                 
 802643c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8026440:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8026444:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8026448:	37 9c 00 14 	addi sp,sp,20                                  
 802644c:	c3 a0 00 00 	ret                                            
       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 ) {         
 8026450:	5c 8c ff e0 	bne r4,r12,80263d0 <_POSIX_signals_Unblock_thread+0xac><== NEVER TAKEN
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
 8026454:	78 01 08 02 	mvhi r1,0x802                                  
 8026458:	38 21 ae f0 	ori r1,r1,0xaef0                               
 802645c:	28 22 00 08 	lw r2,(r1+8)                                   
 8026460:	44 4c ff dc 	be r2,r12,80263d0 <_POSIX_signals_Unblock_thread+0xac>
 8026464:	28 22 00 0c 	lw r2,(r1+12)                                  
 8026468:	5d 62 ff da 	bne r11,r2,80263d0 <_POSIX_signals_Unblock_thread+0xac><== NEVER TAKEN
        _Thread_Dispatch_necessary = true;                            
 802646c:	34 02 00 01 	mvi r2,1                                       
 8026470:	30 22 00 18 	sb (r1+24),r2                                  
 8026474:	e3 ff ff d7 	bi 80263d0 <_POSIX_signals_Unblock_thread+0xac>
   *  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) ) {
 8026478:	28 a2 00 d0 	lw r2,(r5+208)                                 
                                                                      
    /*                                                                
     *  This should only be reached via pthread_kill().               
     */                                                               
                                                                      
    return false;                                                     
 802647c:	34 0c 00 00 	mvi r12,0                                      
   *  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) ) {
 8026480:	a4 40 10 00 	not r2,r2                                      
 8026484:	a0 22 08 00 	and r1,r1,r2                                   
 8026488:	5c 2c ff dd 	bne r1,r12,80263fc <_POSIX_signals_Unblock_thread+0xd8>
 802648c:	e3 ff ff d1 	bi 80263d0 <_POSIX_signals_Unblock_thread+0xac>
      /*                                                              
       *  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 );              
 8026490:	b9 60 08 00 	mv r1,r11                                      
 8026494:	fb ff 9b 97 	calli 800d2f0 <_Thread_queue_Extract_with_proxy>
 8026498:	e3 ff ff ce 	bi 80263d0 <_POSIX_signals_Unblock_thread+0xac>
                                                                      
      the_info = (siginfo_t *) the_thread->Wait.return_argument;      
                                                                      
      if ( !info ) {                                                  
        the_info->si_signo = signo;                                   
        the_info->si_code = SI_USER;                                  
 802649c:	34 02 00 01 	mvi r2,1                                       
      the_thread->Wait.return_code = EINTR;                           
                                                                      
      the_info = (siginfo_t *) the_thread->Wait.return_argument;      
                                                                      
      if ( !info ) {                                                  
        the_info->si_signo = signo;                                   
 80264a0:	58 2e 00 00 	sw (r1+0),r14                                  
        the_info->si_code = SI_USER;                                  
 80264a4:	58 22 00 04 	sw (r1+4),r2                                   
        the_info->si_value.sival_int = 0;                             
 80264a8:	58 20 00 08 	sw (r1+8),r0                                   
 80264ac:	e3 ff ff de 	bi 8026424 <_POSIX_signals_Unblock_thread+0x100>
                                                                      

08003194 <_RTEMS_tasks_Initialize_user_tasks_body>: * * Output parameters: NONE */ void _RTEMS_tasks_Initialize_user_tasks_body( void ) {
 8003194:	37 9c ff e8 	addi sp,sp,-24                                 
 8003198:	5b 8b 00 14 	sw (sp+20),r11                                 
 800319c:	5b 8c 00 10 	sw (sp+16),r12                                 
 80031a0:	5b 8d 00 0c 	sw (sp+12),r13                                 
 80031a4:	5b 8e 00 08 	sw (sp+8),r14                                  
 80031a8:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_initialization_tasks_table *user_tasks;                       
                                                                      
  /*                                                                  
   *  Move information into local variables                           
   */                                                                 
  user_tasks = Configuration_RTEMS_API.User_initialization_tasks_table;
 80031ac:	78 01 08 01 	mvhi r1,0x801                                  
 80031b0:	38 21 40 8c 	ori r1,r1,0x408c                               
 80031b4:	28 2b 00 2c 	lw r11,(r1+44)                                 
  maximum    = Configuration_RTEMS_API.number_of_initialization_tasks;
 80031b8:	28 2e 00 28 	lw r14,(r1+40)                                 
                                                                      
  /*                                                                  
   *  Verify that we have a set of user tasks to iterate              
   */                                                                 
  if ( !user_tasks )                                                  
 80031bc:	45 60 00 15 	be r11,r0,8003210 <_RTEMS_tasks_Initialize_user_tasks_body+0x7c>
    return;                                                           
                                                                      
  /*                                                                  
   *  Now iterate over the initialization tasks and create/start them.
   */                                                                 
  for ( index=0 ; index < maximum ; index++ ) {                       
 80031c0:	45 c0 00 14 	be r14,r0,8003210 <_RTEMS_tasks_Initialize_user_tasks_body+0x7c><== NEVER TAKEN
 80031c4:	34 0c 00 00 	mvi r12,0                                      
    return_value = rtems_task_create(                                 
 80031c8:	29 61 00 00 	lw r1,(r11+0)                                  
 80031cc:	29 62 00 08 	lw r2,(r11+8)                                  
 80031d0:	29 63 00 04 	lw r3,(r11+4)                                  
 80031d4:	29 64 00 14 	lw r4,(r11+20)                                 
 80031d8:	29 65 00 0c 	lw r5,(r11+12)                                 
 80031dc:	37 86 00 18 	addi r6,sp,24                                  
 80031e0:	fb ff ff 52 	calli 8002f28 <rtems_task_create>              
 80031e4:	b8 20 68 00 	mv r13,r1                                      
      user_tasks[ index ].stack_size,                                 
      user_tasks[ index ].mode_set,                                   
      user_tasks[ index ].attribute_set,                              
      &id                                                             
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
 80031e8:	5c 20 00 11 	bne r1,r0,800322c <_RTEMS_tasks_Initialize_user_tasks_body+0x98><== NEVER TAKEN
      _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
                                                                      
    return_value = rtems_task_start(                                  
 80031ec:	29 63 00 18 	lw r3,(r11+24)                                 
 80031f0:	2b 81 00 18 	lw r1,(sp+24)                                  
 80031f4:	29 62 00 10 	lw r2,(r11+16)                                 
 80031f8:	f8 00 00 14 	calli 8003248 <rtems_task_start>               
 80031fc:	b8 20 18 00 	mv r3,r1                                       
      id,                                                             
      user_tasks[ index ].entry_point,                                
      user_tasks[ index ].argument                                    
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
 8003200:	5c 2d 00 0f 	bne r1,r13,800323c <_RTEMS_tasks_Initialize_user_tasks_body+0xa8><== NEVER TAKEN
    return;                                                           
                                                                      
  /*                                                                  
   *  Now iterate over the initialization tasks and create/start them.
   */                                                                 
  for ( index=0 ; index < maximum ; index++ ) {                       
 8003204:	35 8c 00 01 	addi r12,r12,1                                 
 8003208:	35 6b 00 1c 	addi r11,r11,28                                
 800320c:	55 cc ff ef 	bgu r14,r12,80031c8 <_RTEMS_tasks_Initialize_user_tasks_body+0x34><== NEVER TAKEN
      user_tasks[ index ].argument                                    
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
      _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
  }                                                                   
}                                                                     
 8003210:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003214:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8003218:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800321c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8003220:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8003224:	37 9c 00 18 	addi sp,sp,24                                  
 8003228:	c3 a0 00 00 	ret                                            
      user_tasks[ index ].mode_set,                                   
      user_tasks[ index ].attribute_set,                              
      &id                                                             
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
      _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
 800322c:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 8003230:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8003234:	b9 a0 18 00 	mv r3,r13                                      <== NOT EXECUTED
 8003238:	f8 00 04 73 	calli 8004404 <_Internal_error_Occurred>       <== NOT EXECUTED
      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 );
 800323c:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 8003240:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8003244:	f8 00 04 70 	calli 8004404 <_Internal_error_Occurred>       <== NOT EXECUTED
                                                                      

08009a80 <_RTEMS_tasks_Switch_extension>: /* * Per Task Variables */ tvp = executing->task_variables;
 8009a80:	28 21 01 28 	lw r1,(r1+296)                                 
  while (tvp) {                                                       
 8009a84:	44 20 00 08 	be r1,r0,8009aa4 <_RTEMS_tasks_Switch_extension+0x24>
    tvp->tval = *tvp->ptr;                                            
 8009a88:	28 23 00 04 	lw r3,(r1+4)                                   
    *tvp->ptr = tvp->gval;                                            
 8009a8c:	28 24 00 08 	lw r4,(r1+8)                                   
   *  Per Task Variables                                              
   */                                                                 
                                                                      
  tvp = executing->task_variables;                                    
  while (tvp) {                                                       
    tvp->tval = *tvp->ptr;                                            
 8009a90:	28 65 00 00 	lw r5,(r3+0)                                   
 8009a94:	58 25 00 0c 	sw (r1+12),r5                                  
    *tvp->ptr = tvp->gval;                                            
    tvp = (rtems_task_variable_t *)tvp->next;                         
 8009a98:	28 21 00 00 	lw r1,(r1+0)                                   
   */                                                                 
                                                                      
  tvp = executing->task_variables;                                    
  while (tvp) {                                                       
    tvp->tval = *tvp->ptr;                                            
    *tvp->ptr = tvp->gval;                                            
 8009a9c:	58 64 00 00 	sw (r3+0),r4                                   
  /*                                                                  
   *  Per Task Variables                                              
   */                                                                 
                                                                      
  tvp = executing->task_variables;                                    
  while (tvp) {                                                       
 8009aa0:	5c 20 ff fa 	bne r1,r0,8009a88 <_RTEMS_tasks_Switch_extension+0x8><== NEVER TAKEN
    tvp->tval = *tvp->ptr;                                            
    *tvp->ptr = tvp->gval;                                            
    tvp = (rtems_task_variable_t *)tvp->next;                         
  }                                                                   
                                                                      
  tvp = heir->task_variables;                                         
 8009aa4:	28 41 01 28 	lw r1,(r2+296)                                 
  while (tvp) {                                                       
 8009aa8:	44 20 00 08 	be r1,r0,8009ac8 <_RTEMS_tasks_Switch_extension+0x48>
    tvp->gval = *tvp->ptr;                                            
 8009aac:	28 22 00 04 	lw r2,(r1+4)                                   
    *tvp->ptr = tvp->tval;                                            
 8009ab0:	28 23 00 0c 	lw r3,(r1+12)                                  
    tvp = (rtems_task_variable_t *)tvp->next;                         
  }                                                                   
                                                                      
  tvp = heir->task_variables;                                         
  while (tvp) {                                                       
    tvp->gval = *tvp->ptr;                                            
 8009ab4:	28 44 00 00 	lw r4,(r2+0)                                   
 8009ab8:	58 24 00 08 	sw (r1+8),r4                                   
    *tvp->ptr = tvp->tval;                                            
    tvp = (rtems_task_variable_t *)tvp->next;                         
 8009abc:	28 21 00 00 	lw r1,(r1+0)                                   
  }                                                                   
                                                                      
  tvp = heir->task_variables;                                         
  while (tvp) {                                                       
    tvp->gval = *tvp->ptr;                                            
    *tvp->ptr = tvp->tval;                                            
 8009ac0:	58 43 00 00 	sw (r2+0),r3                                   
    *tvp->ptr = tvp->gval;                                            
    tvp = (rtems_task_variable_t *)tvp->next;                         
  }                                                                   
                                                                      
  tvp = heir->task_variables;                                         
  while (tvp) {                                                       
 8009ac4:	5c 20 ff fa 	bne r1,r0,8009aac <_RTEMS_tasks_Switch_extension+0x2c><== NEVER TAKEN
 8009ac8:	c3 a0 00 00 	ret                                            
                                                                      

08004878 <_Rate_monotonic_Timeout>: void _Rate_monotonic_Timeout( Objects_Id id, void *ignored ) {
 8004878:	37 9c ff f4 	addi sp,sp,-12                                 
 800487c:	5b 8b 00 08 	sw (sp+8),r11                                  
 8004880:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004884:	b8 20 10 00 	mv r2,r1                                       
 8004888:	78 01 08 02 	mvhi r1,0x802                                  
 800488c:	38 21 18 90 	ori r1,r1,0x1890                               
 8004890:	37 83 00 0c 	addi r3,sp,12                                  
 8004894:	f8 00 09 30 	calli 8006d54 <_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 ) {                                               
 8004898:	2b 82 00 0c 	lw r2,(sp+12)                                  
 800489c:	b8 20 58 00 	mv r11,r1                                      
 80048a0:	44 40 00 05 	be r2,r0,80048b4 <_Rate_monotonic_Timeout+0x3c><== ALWAYS TAKEN
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
}                                                                     
 80048a4:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80048a8:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 80048ac:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 80048b0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
   */                                                                 
  the_period = _Rate_monotonic_Get( id, &location );                  
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      the_thread = the_period->owner;                                 
 80048b4:	28 21 00 40 	lw r1,(r1+64)                                  
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_period (             
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_FOR_PERIOD);                   
 80048b8:	28 23 00 10 	lw r3,(r1+16)                                  
 80048bc:	20 63 40 00 	andi r3,r3,0x4000                              
      if ( _States_Is_waiting_for_period( the_thread->current_state ) &&
 80048c0:	44 62 00 04 	be r3,r2,80048d0 <_Rate_monotonic_Timeout+0x58>
 80048c4:	28 23 00 20 	lw r3,(r1+32)                                  
 80048c8:	29 62 00 08 	lw r2,(r11+8)                                  
 80048cc:	44 62 00 1a 	be r3,r2,8004934 <_Rate_monotonic_Timeout+0xbc>
        _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 ) {
 80048d0:	29 62 00 38 	lw r2,(r11+56)                                 
 80048d4:	34 01 00 01 	mvi r1,1                                       
 80048d8:	44 41 00 0c 	be r2,r1,8004908 <_Rate_monotonic_Timeout+0x90><== NEVER TAKEN
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
      } else                                                          
        the_period->state = RATE_MONOTONIC_EXPIRED;                   
 80048dc:	34 01 00 04 	mvi r1,4                                       
 80048e0:	59 61 00 38 	sw (r11+56),r1                                 
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )             
{                                                                     
  RTEMS_COMPILER_MEMORY_BARRIER();                                    
  _Thread_Dispatch_disable_level -= 1;                                
 80048e4:	78 01 08 02 	mvhi r1,0x802                                  
 80048e8:	38 21 19 b8 	ori r1,r1,0x19b8                               
 80048ec:	28 22 00 00 	lw r2,(r1+0)                                   
 80048f0:	34 42 ff ff 	addi r2,r2,-1                                  
 80048f4:	58 22 00 00 	sw (r1+0),r2                                   
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
}                                                                     
 80048f8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80048fc:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8004900:	37 9c 00 0c 	addi sp,sp,12                                  
 8004904:	c3 a0 00 00 	ret                                            
                                                                      
        _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;    
 8004908:	34 02 00 03 	mvi r2,3                                       <== NOT EXECUTED
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
 800490c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
                                                                      
        _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;    
 8004910:	59 62 00 38 	sw (r11+56),r2                                 <== NOT EXECUTED
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
 8004914:	fb ff fe 00 	calli 8004114 <_Rate_monotonic_Initiate_statistics>
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8004918:	29 62 00 3c 	lw r2,(r11+60)                                 
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 800491c:	78 01 08 02 	mvhi r1,0x802                                  
 8004920:	38 21 1a 98 	ori r1,r1,0x1a98                               
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8004924:	59 62 00 1c 	sw (r11+28),r2                                 
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8004928:	35 62 00 10 	addi r2,r11,16                                 
 800492c:	f8 00 11 fd 	calli 8009120 <_Watchdog_Insert>               
 8004930:	e3 ff ff ed 	bi 80048e4 <_Rate_monotonic_Timeout+0x6c>      
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
 8004934:	78 03 08 01 	mvhi r3,0x801                                  
 8004938:	38 63 f0 ec 	ori r3,r3,0xf0ec                               
 800493c:	28 62 00 00 	lw r2,(r3+0)                                   
 8004940:	f8 00 0b a4 	calli 80077d0 <_Thread_Clear_state>            
      the_thread = the_period->owner;                                 
      if ( _States_Is_waiting_for_period( the_thread->current_state ) &&
            the_thread->Wait.id == the_period->Object.id ) {          
        _Thread_Unblock( the_thread );                                
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
 8004944:	b9 60 08 00 	mv r1,r11                                      
 8004948:	e3 ff ff f3 	bi 8004914 <_Rate_monotonic_Timeout+0x9c>      
                                                                      

080041c0 <_Rate_monotonic_Update_statistics>: void _Rate_monotonic_Update_statistics( Rate_monotonic_Control *the_period ) {
 80041c0:	37 9c ff e0 	addi sp,sp,-32                                 
 80041c4:	5b 8b 00 10 	sw (sp+16),r11                                 
 80041c8:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80041cc:	5b 8d 00 08 	sw (sp+8),r13                                  
 80041d0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80041d4:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  /*                                                                  
   *  Update the counts.                                              
   */                                                                 
  stats = &the_period->Statistics;                                    
  stats->count++;                                                     
 80041d8:	28 21 00 54 	lw r1,(r1+84)                                  
                                                                      
  if ( the_period->state == RATE_MONOTONIC_EXPIRED )                  
 80041dc:	29 62 00 38 	lw r2,(r11+56)                                 
                                                                      
  /*                                                                  
   *  Update the counts.                                              
   */                                                                 
  stats = &the_period->Statistics;                                    
  stats->count++;                                                     
 80041e0:	34 21 00 01 	addi r1,r1,1                                   
 80041e4:	59 61 00 54 	sw (r11+84),r1                                 
                                                                      
  if ( the_period->state == RATE_MONOTONIC_EXPIRED )                  
 80041e8:	34 01 00 04 	mvi r1,4                                       
 80041ec:	44 41 00 36 	be r2,r1,80042c4 <_Rate_monotonic_Update_statistics+0x104>
                                                                      
  /*                                                                  
   *  Grab status for time statistics.                                
   */                                                                 
  valid_status =                                                      
    _Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
 80041f0:	37 8c 00 14 	addi r12,sp,20                                 
 80041f4:	37 8d 00 1c 	addi r13,sp,28                                 
    stats->missed_count++;                                            
                                                                      
  /*                                                                  
   *  Grab status for time statistics.                                
   */                                                                 
  valid_status =                                                      
 80041f8:	b9 60 08 00 	mv r1,r11                                      
 80041fc:	b9 80 10 00 	mv r2,r12                                      
 8004200:	b9 a0 18 00 	mv r3,r13                                      
 8004204:	fb ff ff 8a 	calli 800402c <_Rate_monotonic_Get_status>     
    _Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
  if (!valid_status)                                                  
 8004208:	5c 20 00 07 	bne r1,r0,8004224 <_Rate_monotonic_Update_statistics+0x64><== ALWAYS TAKEN
      stats->min_wall_time = since_last_period;                       
                                                                      
    if ( since_last_period > stats->max_wall_time )                   
      stats->max_wall_time = since_last_period;                       
  #endif                                                              
}                                                                     
 800420c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004210:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8004214:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004218:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800421c:	37 9c 00 20 	addi sp,sp,32                                  
 8004220:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  Update CPU time                                                 
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_cpu_time, &executed );           
 8004224:	b9 a0 10 00 	mv r2,r13                                      
 8004228:	35 61 00 6c 	addi r1,r11,108                                
 800422c:	f8 00 11 bf 	calli 8008928 <_Timespec_Add_to>               
                                                                      
    if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )    
 8004230:	b9 a0 08 00 	mv r1,r13                                      
 8004234:	35 62 00 5c 	addi r2,r11,92                                 
 8004238:	f8 00 12 a8 	calli 8008cd8 <_Timespec_Less_than>            
 800423c:	44 20 00 05 	be r1,r0,8004250 <_Rate_monotonic_Update_statistics+0x90>
      stats->min_cpu_time = executed;                                 
 8004240:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8004244:	59 61 00 5c 	sw (r11+92),r1                                 
 8004248:	2b 81 00 20 	lw r1,(sp+32)                                  
 800424c:	59 61 00 60 	sw (r11+96),r1                                 
                                                                      
    if ( _Timestamp_Greater_than( &executed, &stats->max_cpu_time ) ) 
 8004250:	b9 a0 08 00 	mv r1,r13                                      
 8004254:	35 62 00 64 	addi r2,r11,100                                
 8004258:	f8 00 12 95 	calli 8008cac <_Timespec_Greater_than>         
 800425c:	44 20 00 05 	be r1,r0,8004270 <_Rate_monotonic_Update_statistics+0xb0>
      stats->max_cpu_time = executed;                                 
 8004260:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8004264:	59 61 00 64 	sw (r11+100),r1                                
 8004268:	2b 81 00 20 	lw r1,(sp+32)                                  
 800426c:	59 61 00 68 	sw (r11+104),r1                                
                                                                      
  /*                                                                  
   *  Update Wall time                                                
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_wall_time, &since_last_period ); 
 8004270:	b9 80 10 00 	mv r2,r12                                      
 8004274:	35 61 00 84 	addi r1,r11,132                                
 8004278:	f8 00 11 ac 	calli 8008928 <_Timespec_Add_to>               
                                                                      
    if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
 800427c:	b9 80 08 00 	mv r1,r12                                      
 8004280:	35 62 00 74 	addi r2,r11,116                                
 8004284:	f8 00 12 95 	calli 8008cd8 <_Timespec_Less_than>            
 8004288:	5c 20 00 13 	bne r1,r0,80042d4 <_Rate_monotonic_Update_statistics+0x114>
      stats->min_wall_time = since_last_period;                       
                                                                      
    if ( _Timestamp_Greater_than( &since_last_period, &stats->max_wall_time ) )
 800428c:	b9 80 08 00 	mv r1,r12                                      
 8004290:	35 62 00 7c 	addi r2,r11,124                                
 8004294:	f8 00 12 86 	calli 8008cac <_Timespec_Greater_than>         
 8004298:	44 20 ff dd 	be r1,r0,800420c <_Rate_monotonic_Update_statistics+0x4c>
      stats->max_wall_time = since_last_period;                       
 800429c:	2b 81 00 14 	lw r1,(sp+20)                                  
 80042a0:	59 61 00 7c 	sw (r11+124),r1                                
 80042a4:	2b 81 00 18 	lw r1,(sp+24)                                  
 80042a8:	59 61 00 80 	sw (r11+128),r1                                
      stats->min_wall_time = since_last_period;                       
                                                                      
    if ( since_last_period > stats->max_wall_time )                   
      stats->max_wall_time = since_last_period;                       
  #endif                                                              
}                                                                     
 80042ac:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80042b0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80042b4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80042b8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80042bc:	37 9c 00 20 	addi sp,sp,32                                  
 80042c0:	c3 a0 00 00 	ret                                            
   */                                                                 
  stats = &the_period->Statistics;                                    
  stats->count++;                                                     
                                                                      
  if ( the_period->state == RATE_MONOTONIC_EXPIRED )                  
    stats->missed_count++;                                            
 80042c4:	29 61 00 58 	lw r1,(r11+88)                                 
 80042c8:	34 21 00 01 	addi r1,r1,1                                   
 80042cc:	59 61 00 58 	sw (r11+88),r1                                 
 80042d0:	e3 ff ff c8 	bi 80041f0 <_Rate_monotonic_Update_statistics+0x30>
   */                                                                 
  #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;                       
 80042d4:	2b 81 00 14 	lw r1,(sp+20)                                  
 80042d8:	59 61 00 74 	sw (r11+116),r1                                
 80042dc:	2b 81 00 18 	lw r1,(sp+24)                                  
 80042e0:	59 61 00 78 	sw (r11+120),r1                                
 80042e4:	e3 ff ff ea 	bi 800428c <_Rate_monotonic_Update_statistics+0xcc>
                                                                      

0800a518 <_Scheduler_priority_Block>: RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_extract( Thread_Control *the_thread ) { Chain_Control *ready = the_thread->scheduler.priority->ready_chain;
 800a518:	28 43 00 8c 	lw r3,(r2+140)                                 
 800a51c:	28 63 00 00 	lw r3,(r3+0)                                   
                                                                      
  if ( _Chain_Has_only_one_node( ready ) ) {                          
 800a520:	28 65 00 00 	lw r5,(r3+0)                                   
 800a524:	28 64 00 08 	lw r4,(r3+8)                                   
 800a528:	44 a4 00 35 	be r5,r4,800a5fc <_Scheduler_priority_Block+0xe4>
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
 800a52c:	28 44 00 00 	lw r4,(r2+0)                                   
  previous       = the_node->previous;                                
 800a530:	28 43 00 04 	lw r3,(r2+4)                                   
  next->previous = previous;                                          
 800a534:	58 83 00 04 	sw (r4+4),r3                                   
  previous->next = next;                                              
 800a538:	58 64 00 00 	sw (r3+0),r4                                   
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_heir (                           
  const Thread_Control *the_thread                                    
)                                                                     
{                                                                     
  return ( the_thread == _Thread_Heir );                              
 800a53c:	78 03 08 01 	mvhi r3,0x801                                  
 800a540:	38 63 4d 78 	ori r3,r3,0x4d78                               
{                                                                     
  _Scheduler_priority_Ready_queue_extract(the_thread);                
                                                                      
  /* TODO: flash critical section */                                  
                                                                      
  if ( _Thread_Is_heir( the_thread ) )                                
 800a544:	28 64 00 10 	lw r4,(r3+16)                                  
 800a548:	44 44 00 07 	be r2,r4,800a564 <_Scheduler_priority_Block+0x4c>
     _Scheduler_priority_Schedule_body(the_scheduler);                
                                                                      
  if ( _Thread_Is_executing( the_thread ) )                           
 800a54c:	28 61 00 0c 	lw r1,(r3+12)                                  
 800a550:	44 41 00 02 	be r2,r1,800a558 <_Scheduler_priority_Block+0x40>
 800a554:	c3 a0 00 00 	ret                                            
    _Thread_Dispatch_necessary = true;                                
 800a558:	34 01 00 01 	mvi r1,1                                       
 800a55c:	30 61 00 18 	sb (r3+24),r1                                  
 800a560:	c3 a0 00 00 	ret                                            
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 );         
 800a564:	78 04 08 01 	mvhi r4,0x801                                  
 800a568:	38 84 4d 98 	ori r4,r4,0x4d98                               
 800a56c:	2c 84 00 00 	lhu r4,(r4+0)                                  
  Scheduler_Control *the_scheduler,                                   
  Thread_Control   *the_thread                                        
)                                                                     
{                                                                     
  _Scheduler_priority_Block_body(the_scheduler, the_thread);          
}                                                                     
 800a570:	28 27 00 00 	lw r7,(r1+0)                                   
 800a574:	34 01 00 ff 	mvi r1,255                                     
 800a578:	20 84 ff ff 	andi r4,r4,0xffff                              
 800a57c:	54 81 00 3d 	bgu r4,r1,800a670 <_Scheduler_priority_Block+0x158>
 800a580:	78 05 08 01 	mvhi r5,0x801                                  
 800a584:	38 a5 34 b0 	ori r5,r5,0x34b0                               
 800a588:	b4 a4 20 00 	add r4,r5,r4                                   
 800a58c:	40 84 00 00 	lbu r4,(r4+0)                                  
 800a590:	34 84 00 08 	addi r4,r4,8                                   
  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );        
 800a594:	78 06 08 01 	mvhi r6,0x801                                  
 800a598:	38 c6 4d a0 	ori r6,r6,0x4da0                               
 800a59c:	b4 84 20 00 	add r4,r4,r4                                   
 800a5a0:	b4 c4 30 00 	add r6,r6,r4                                   
 800a5a4:	2c c1 00 00 	lhu r1,(r6+0)                                  
 800a5a8:	34 06 00 ff 	mvi r6,255                                     
 800a5ac:	54 26 00 26 	bgu r1,r6,800a644 <_Scheduler_priority_Block+0x12c>
 800a5b0:	b4 a1 08 00 	add r1,r5,r1                                   
 800a5b4:	40 25 00 00 	lbu r5,(r1+0)                                  
 800a5b8:	34 a5 00 08 	addi r5,r5,8                                   
                                                                      
  return (_Priority_Bits_index( major ) << 4) +                       
 800a5bc:	b4 84 08 00 	add r1,r4,r4                                   
 800a5c0:	b4 21 08 00 	add r1,r1,r1                                   
 800a5c4:	b4 21 08 00 	add r1,r1,r1                                   
 800a5c8:	b4 a1 08 00 	add r1,r5,r1                                   
  Chain_Control       *the_ready_queue                                
)                                                                     
{                                                                     
  Priority_Control index = _Priority_bit_map_Get_highest();           
                                                                      
  if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )                
 800a5cc:	b4 21 20 00 	add r4,r1,r1                                   
 800a5d0:	b4 81 08 00 	add r1,r4,r1                                   
 800a5d4:	b4 21 08 00 	add r1,r1,r1                                   
 800a5d8:	b4 21 08 00 	add r1,r1,r1                                   
 800a5dc:	b4 e1 08 00 	add r1,r7,r1                                   
 800a5e0:	28 25 00 00 	lw r5,(r1+0)                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 800a5e4:	34 21 00 04 	addi r1,r1,4                                   
    return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
                                                                      
  return NULL;                                                        
 800a5e8:	34 04 00 00 	mvi r4,0                                       
  Chain_Control       *the_ready_queue                                
)                                                                     
{                                                                     
  Priority_Control index = _Priority_bit_map_Get_highest();           
                                                                      
  if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )                
 800a5ec:	44 a1 00 02 	be r5,r1,800a5f4 <_Scheduler_priority_Block+0xdc><== NEVER TAKEN
    return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
 800a5f0:	b8 a0 20 00 	mv r4,r5                                       
                                                                      
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(          
  Scheduler_Control     *the_scheduler                                
)                                                                     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
 800a5f4:	58 64 00 10 	sw (r3+16),r4                                  
 800a5f8:	e3 ff ff d5 	bi 800a54c <_Scheduler_priority_Block+0x34>    
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 );                        
 800a5fc:	34 64 00 04 	addi r4,r3,4                                   
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
 800a600:	58 60 00 04 	sw (r3+4),r0                                   
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800a604:	58 64 00 00 	sw (r3+0),r4                                   
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800a608:	58 63 00 08 	sw (r3+8),r3                                   
{                                                                     
  Chain_Control         *ready  = the_thread->scheduler.priority->ready_chain;
                                                                      
  if ( _Chain_Has_only_one_node( ready ) ) {                          
    _Chain_Initialize_empty( ready );                                 
    _Priority_bit_map_Remove( &the_thread->scheduler.priority->Priority_map );
 800a60c:	28 43 00 8c 	lw r3,(r2+140)                                 
                                                                      
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove (                  
  Priority_bit_map_Information *the_priority_map                      
)                                                                     
{                                                                     
  *the_priority_map->minor &= the_priority_map->block_minor;          
 800a610:	28 65 00 04 	lw r5,(r3+4)                                   
 800a614:	2c 66 00 0e 	lhu r6,(r3+14)                                 
 800a618:	2c a4 00 00 	lhu r4,(r5+0)                                  
 800a61c:	a0 86 20 00 	and r4,r4,r6                                   
 800a620:	0c a4 00 00 	sh (r5+0),r4                                   
  if ( *the_priority_map->minor == 0 )                                
 800a624:	5c 80 ff c6 	bne r4,r0,800a53c <_Scheduler_priority_Block+0x24>
    _Priority_Major_bit_map &= the_priority_map->block_major;         
 800a628:	78 04 08 01 	mvhi r4,0x801                                  
 800a62c:	38 84 4d 98 	ori r4,r4,0x4d98                               
 800a630:	2c 85 00 00 	lhu r5,(r4+0)                                  
 800a634:	2c 63 00 0c 	lhu r3,(r3+12)                                 
 800a638:	a0 65 18 00 	and r3,r3,r5                                   
 800a63c:	0c 83 00 00 	sh (r4+0),r3                                   
 800a640:	e3 ff ff bf 	bi 800a53c <_Scheduler_priority_Block+0x24>    
{                                                                     
  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 );        
 800a644:	00 21 00 01 	srui r1,r1,1                                   
 800a648:	00 21 00 01 	srui r1,r1,1                                   
 800a64c:	00 21 00 01 	srui r1,r1,1                                   
 800a650:	00 21 00 01 	srui r1,r1,1                                   
 800a654:	00 21 00 01 	srui r1,r1,1                                   
 800a658:	00 21 00 01 	srui r1,r1,1                                   
 800a65c:	00 21 00 01 	srui r1,r1,1                                   
 800a660:	00 21 00 01 	srui r1,r1,1                                   
 800a664:	b4 a1 08 00 	add r1,r5,r1                                   
 800a668:	40 25 00 00 	lbu r5,(r1+0)                                  
 800a66c:	e3 ff ff d4 	bi 800a5bc <_Scheduler_priority_Block+0xa4>    
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 );         
 800a670:	00 84 00 01 	srui r4,r4,1                                   
 800a674:	78 05 08 01 	mvhi r5,0x801                                  
 800a678:	00 84 00 01 	srui r4,r4,1                                   
 800a67c:	38 a5 34 b0 	ori r5,r5,0x34b0                               
 800a680:	00 84 00 01 	srui r4,r4,1                                   
 800a684:	00 84 00 01 	srui r4,r4,1                                   
 800a688:	00 84 00 01 	srui r4,r4,1                                   
 800a68c:	00 84 00 01 	srui r4,r4,1                                   
 800a690:	00 84 00 01 	srui r4,r4,1                                   
 800a694:	00 84 00 01 	srui r4,r4,1                                   
 800a698:	b4 a4 20 00 	add r4,r5,r4                                   
 800a69c:	40 84 00 00 	lbu r4,(r4+0)                                  
 800a6a0:	e3 ff ff bd 	bi 800a594 <_Scheduler_priority_Block+0x7c>    
                                                                      

08005040 <_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 );
 8005040:	78 02 08 01 	mvhi r2,0x801                                  
 8005044:	38 42 4d 98 	ori r2,r2,0x4d98                               
 8005048:	2c 42 00 00 	lhu r2,(r2+0)                                  
void _Scheduler_priority_Schedule(                                    
  Scheduler_Control     *the_scheduler                                
)                                                                     
{                                                                     
  _Scheduler_priority_Schedule_body( the_scheduler );                 
}                                                                     
 800504c:	28 25 00 00 	lw r5,(r1+0)                                   
 8005050:	34 01 00 ff 	mvi r1,255                                     
 8005054:	20 42 ff ff 	andi r2,r2,0xffff                              
 8005058:	54 41 00 2d 	bgu r2,r1,800510c <_Scheduler_priority_Schedule+0xcc>
 800505c:	78 03 08 01 	mvhi r3,0x801                                  
 8005060:	38 63 34 b0 	ori r3,r3,0x34b0                               
 8005064:	b4 62 10 00 	add r2,r3,r2                                   
 8005068:	40 42 00 00 	lbu r2,(r2+0)                                  
 800506c:	34 42 00 08 	addi r2,r2,8                                   
  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );        
 8005070:	78 04 08 01 	mvhi r4,0x801                                  
 8005074:	38 84 4d a0 	ori r4,r4,0x4da0                               
 8005078:	b4 42 10 00 	add r2,r2,r2                                   
 800507c:	b4 82 20 00 	add r4,r4,r2                                   
 8005080:	2c 81 00 00 	lhu r1,(r4+0)                                  
 8005084:	34 04 00 ff 	mvi r4,255                                     
 8005088:	54 24 00 16 	bgu r1,r4,80050e0 <_Scheduler_priority_Schedule+0xa0>
 800508c:	b4 61 08 00 	add r1,r3,r1                                   
 8005090:	40 23 00 00 	lbu r3,(r1+0)                                  
 8005094:	34 63 00 08 	addi r3,r3,8                                   
                                                                      
  return (_Priority_Bits_index( major ) << 4) +                       
 8005098:	b4 42 08 00 	add r1,r2,r2                                   
 800509c:	b4 21 08 00 	add r1,r1,r1                                   
 80050a0:	b4 21 08 00 	add r1,r1,r1                                   
 80050a4:	b4 61 08 00 	add r1,r3,r1                                   
  Chain_Control       *the_ready_queue                                
)                                                                     
{                                                                     
  Priority_Control index = _Priority_bit_map_Get_highest();           
                                                                      
  if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )                
 80050a8:	b4 21 10 00 	add r2,r1,r1                                   
 80050ac:	b4 41 08 00 	add r1,r2,r1                                   
 80050b0:	b4 21 08 00 	add r1,r1,r1                                   
 80050b4:	b4 21 08 00 	add r1,r1,r1                                   
 80050b8:	b4 a1 08 00 	add r1,r5,r1                                   
 80050bc:	28 23 00 00 	lw r3,(r1+0)                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 80050c0:	34 21 00 04 	addi r1,r1,4                                   
    return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
                                                                      
  return NULL;                                                        
 80050c4:	34 02 00 00 	mvi r2,0                                       
  Chain_Control       *the_ready_queue                                
)                                                                     
{                                                                     
  Priority_Control index = _Priority_bit_map_Get_highest();           
                                                                      
  if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )                
 80050c8:	44 61 00 02 	be r3,r1,80050d0 <_Scheduler_priority_Schedule+0x90><== NEVER TAKEN
    return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
 80050cc:	b8 60 10 00 	mv r2,r3                                       
                                                                      
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(          
  Scheduler_Control     *the_scheduler                                
)                                                                     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
 80050d0:	78 01 08 01 	mvhi r1,0x801                                  
 80050d4:	38 21 4d 78 	ori r1,r1,0x4d78                               
 80050d8:	58 22 00 10 	sw (r1+16),r2                                  
 80050dc:	c3 a0 00 00 	ret                                            
{                                                                     
  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 );        
 80050e0:	00 21 00 01 	srui r1,r1,1                                   
 80050e4:	00 21 00 01 	srui r1,r1,1                                   
 80050e8:	00 21 00 01 	srui r1,r1,1                                   
 80050ec:	00 21 00 01 	srui r1,r1,1                                   
 80050f0:	00 21 00 01 	srui r1,r1,1                                   
 80050f4:	00 21 00 01 	srui r1,r1,1                                   
 80050f8:	00 21 00 01 	srui r1,r1,1                                   
 80050fc:	00 21 00 01 	srui r1,r1,1                                   
 8005100:	b4 61 08 00 	add r1,r3,r1                                   
 8005104:	40 23 00 00 	lbu r3,(r1+0)                                  
 8005108:	e3 ff ff e4 	bi 8005098 <_Scheduler_priority_Schedule+0x58> 
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 );         
 800510c:	00 42 00 01 	srui r2,r2,1                                   
 8005110:	78 03 08 01 	mvhi r3,0x801                                  
 8005114:	00 42 00 01 	srui r2,r2,1                                   
 8005118:	38 63 34 b0 	ori r3,r3,0x34b0                               
 800511c:	00 42 00 01 	srui r2,r2,1                                   
 8005120:	00 42 00 01 	srui r2,r2,1                                   
 8005124:	00 42 00 01 	srui r2,r2,1                                   
 8005128:	00 42 00 01 	srui r2,r2,1                                   
 800512c:	00 42 00 01 	srui r2,r2,1                                   
 8005130:	00 42 00 01 	srui r2,r2,1                                   
 8005134:	b4 62 10 00 	add r2,r3,r2                                   
 8005138:	40 42 00 00 	lbu r2,(r2+0)                                  
 800513c:	e3 ff ff cd 	bi 8005070 <_Scheduler_priority_Schedule+0x30> 
                                                                      

08003d7c <_TOD_Get>: */ void _TOD_Get( struct timespec *time ) {
 8003d7c:	37 9c ff e4 	addi sp,sp,-28                                 
 8003d80:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8003d84:	5b 8c 00 08 	sw (sp+8),r12                                  
 8003d88:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003d8c:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  /* assume time checked for NULL by caller */                        
                                                                      
  /* _TOD_Now is the native current time */                           
  nanoseconds = 0;                                                    
  _ISR_Disable( level );                                              
 8003d90:	90 00 60 00 	rcsr r12,IE                                    
 8003d94:	34 01 ff fe 	mvi r1,-2                                      
 8003d98:	a1 81 08 00 	and r1,r12,r1                                  
 8003d9c:	d0 01 00 00 	wcsr IE,r1                                     
    now = _TOD_Now;                                                   
 8003da0:	78 02 08 01 	mvhi r2,0x801                                  
 8003da4:	38 42 49 50 	ori r2,r2,0x4950                               
    if ( _Watchdog_Nanoseconds_since_tick_handler )                   
 8003da8:	78 03 08 01 	mvhi r3,0x801                                  
  /* assume time checked for NULL by caller */                        
                                                                      
  /* _TOD_Now is the native current time */                           
  nanoseconds = 0;                                                    
  _ISR_Disable( level );                                              
    now = _TOD_Now;                                                   
 8003dac:	28 44 00 00 	lw r4,(r2+0)                                   
    if ( _Watchdog_Nanoseconds_since_tick_handler )                   
 8003db0:	38 63 4a 24 	ori r3,r3,0x4a24                               
  /* assume time checked for NULL by caller */                        
                                                                      
  /* _TOD_Now is the native current time */                           
  nanoseconds = 0;                                                    
  _ISR_Disable( level );                                              
    now = _TOD_Now;                                                   
 8003db4:	28 42 00 04 	lw r2,(r2+4)                                   
    if ( _Watchdog_Nanoseconds_since_tick_handler )                   
 8003db8:	28 61 00 00 	lw r1,(r3+0)                                   
  /* assume time checked for NULL by caller */                        
                                                                      
  /* _TOD_Now is the native current time */                           
  nanoseconds = 0;                                                    
  _ISR_Disable( level );                                              
    now = _TOD_Now;                                                   
 8003dbc:	5b 84 00 10 	sw (sp+16),r4                                  
 8003dc0:	5b 82 00 14 	sw (sp+20),r2                                  
  long              nanoseconds;                                      
                                                                      
  /* assume time checked for NULL by caller */                        
                                                                      
  /* _TOD_Now is the native current time */                           
  nanoseconds = 0;                                                    
 8003dc4:	34 03 00 00 	mvi r3,0                                       
  _ISR_Disable( level );                                              
    now = _TOD_Now;                                                   
    if ( _Watchdog_Nanoseconds_since_tick_handler )                   
 8003dc8:	44 20 00 03 	be r1,r0,8003dd4 <_TOD_Get+0x58>               <== ALWAYS TAKEN
      nanoseconds = (*_Watchdog_Nanoseconds_since_tick_handler)();    
 8003dcc:	d8 20 00 00 	call r1                                        <== NOT EXECUTED
 8003dd0:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
  _ISR_Enable( level );                                               
 8003dd4:	d0 0c 00 00 	wcsr IE,r12                                    
                                                                      
  _Timestamp_Set( &offset, 0, nanoseconds );                          
  _Timestamp_Add_to( &now, &offset );                                 
 8003dd8:	37 82 00 18 	addi r2,sp,24                                  
 8003ddc:	37 81 00 10 	addi r1,sp,16                                  
    now = _TOD_Now;                                                   
    if ( _Watchdog_Nanoseconds_since_tick_handler )                   
      nanoseconds = (*_Watchdog_Nanoseconds_since_tick_handler)();    
  _ISR_Enable( level );                                               
                                                                      
  _Timestamp_Set( &offset, 0, nanoseconds );                          
 8003de0:	5b 80 00 18 	sw (sp+24),r0                                  
 8003de4:	5b 83 00 1c 	sw (sp+28),r3                                  
  _Timestamp_Add_to( &now, &offset );                                 
 8003de8:	f8 00 0a 28 	calli 8006688 <_Timespec_Add_to>               
  _Timestamp_To_timespec( &now, time );                               
 8003dec:	2b 81 00 14 	lw r1,(sp+20)                                  
 8003df0:	2b 82 00 10 	lw r2,(sp+16)                                  
 8003df4:	59 61 00 04 	sw (r11+4),r1                                  
 8003df8:	59 62 00 00 	sw (r11+0),r2                                  
}                                                                     
 8003dfc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003e00:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8003e04:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003e08:	37 9c 00 1c 	addi sp,sp,28                                  
 8003e0c:	c3 a0 00 00 	ret                                            
                                                                      

08009ffc <_TOD_Get_uptime>: */ void _TOD_Get_uptime( Timestamp_Control *uptime ) {
 8009ffc:	37 9c ff e4 	addi sp,sp,-28                                 
 800a000:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800a004:	5b 8c 00 08 	sw (sp+8),r12                                  
 800a008:	5b 9d 00 04 	sw (sp+4),ra                                   
 800a00c:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  /* assume time checked for NULL by caller */                        
                                                                      
  /* _TOD_Uptime is in native timestamp format */                     
  nanoseconds = 0;                                                    
  _ISR_Disable( level );                                              
 800a010:	90 00 60 00 	rcsr r12,IE                                    
 800a014:	34 01 ff fe 	mvi r1,-2                                      
 800a018:	a1 81 08 00 	and r1,r12,r1                                  
 800a01c:	d0 01 00 00 	wcsr IE,r1                                     
    up = _TOD_Uptime;                                                 
 800a020:	78 02 08 01 	mvhi r2,0x801                                  
 800a024:	38 42 49 24 	ori r2,r2,0x4924                               
    if ( _Watchdog_Nanoseconds_since_tick_handler )                   
 800a028:	78 03 08 01 	mvhi r3,0x801                                  
  /* assume time checked for NULL by caller */                        
                                                                      
  /* _TOD_Uptime is in native timestamp format */                     
  nanoseconds = 0;                                                    
  _ISR_Disable( level );                                              
    up = _TOD_Uptime;                                                 
 800a02c:	28 44 00 00 	lw r4,(r2+0)                                   
    if ( _Watchdog_Nanoseconds_since_tick_handler )                   
 800a030:	38 63 4a 24 	ori r3,r3,0x4a24                               
  /* assume time checked for NULL by caller */                        
                                                                      
  /* _TOD_Uptime is in native timestamp format */                     
  nanoseconds = 0;                                                    
  _ISR_Disable( level );                                              
    up = _TOD_Uptime;                                                 
 800a034:	28 42 00 04 	lw r2,(r2+4)                                   
    if ( _Watchdog_Nanoseconds_since_tick_handler )                   
 800a038:	28 61 00 00 	lw r1,(r3+0)                                   
  /* assume time checked for NULL by caller */                        
                                                                      
  /* _TOD_Uptime is in native timestamp format */                     
  nanoseconds = 0;                                                    
  _ISR_Disable( level );                                              
    up = _TOD_Uptime;                                                 
 800a03c:	5b 84 00 10 	sw (sp+16),r4                                  
 800a040:	5b 82 00 14 	sw (sp+20),r2                                  
  long              nanoseconds;                                      
                                                                      
  /* assume time checked for NULL by caller */                        
                                                                      
  /* _TOD_Uptime is in native timestamp format */                     
  nanoseconds = 0;                                                    
 800a044:	34 03 00 00 	mvi r3,0                                       
  _ISR_Disable( level );                                              
    up = _TOD_Uptime;                                                 
    if ( _Watchdog_Nanoseconds_since_tick_handler )                   
 800a048:	44 20 00 03 	be r1,r0,800a054 <_TOD_Get_uptime+0x58>        <== ALWAYS TAKEN
      nanoseconds = (*_Watchdog_Nanoseconds_since_tick_handler)();    
 800a04c:	d8 20 00 00 	call r1                                        <== NOT EXECUTED
 800a050:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
  _ISR_Enable( level );                                               
 800a054:	d0 0c 00 00 	wcsr IE,r12                                    
                                                                      
  _Timestamp_Set( &offset, 0, nanoseconds );                          
  _Timestamp_Add_to( &up, &offset );                                  
 800a058:	37 82 00 18 	addi r2,sp,24                                  
 800a05c:	37 81 00 10 	addi r1,sp,16                                  
    up = _TOD_Uptime;                                                 
    if ( _Watchdog_Nanoseconds_since_tick_handler )                   
      nanoseconds = (*_Watchdog_Nanoseconds_since_tick_handler)();    
  _ISR_Enable( level );                                               
                                                                      
  _Timestamp_Set( &offset, 0, nanoseconds );                          
 800a060:	5b 80 00 18 	sw (sp+24),r0                                  
 800a064:	5b 83 00 1c 	sw (sp+28),r3                                  
  _Timestamp_Add_to( &up, &offset );                                  
 800a068:	fb ff f1 88 	calli 8006688 <_Timespec_Add_to>               
  *uptime = up;                                                       
 800a06c:	2b 81 00 14 	lw r1,(sp+20)                                  
 800a070:	2b 82 00 10 	lw r2,(sp+16)                                  
 800a074:	59 61 00 04 	sw (r11+4),r1                                  
 800a078:	59 62 00 00 	sw (r11+0),r2                                  
}                                                                     
 800a07c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a080:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800a084:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800a088:	37 9c 00 1c 	addi sp,sp,28                                  
 800a08c:	c3 a0 00 00 	ret                                            
                                                                      

08003e4c <_TOD_Tickle_ticks>: * * Output parameters: NONE */ void _TOD_Tickle_ticks( void ) {
 8003e4c:	37 9c ff ec 	addi sp,sp,-20                                 
 8003e50:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8003e54:	5b 8c 00 08 	sw (sp+8),r12                                  
 8003e58:	5b 9d 00 04 	sw (sp+4),ra                                   
  Timestamp_Control tick;                                             
  uint32_t          seconds;                                          
                                                                      
  /* Convert the tick quantum to a timestamp */                       
  _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
 8003e5c:	78 01 08 01 	mvhi r1,0x801                                  
 8003e60:	38 21 40 c4 	ori r1,r1,0x40c4                               
 8003e64:	28 21 00 0c 	lw r1,(r1+12)                                  
                                                                      
  /* Update the counter of ticks since boot */                        
  _Watchdog_Ticks_since_boot += 1;                                    
 8003e68:	78 03 08 01 	mvhi r3,0x801                                  
 8003e6c:	38 63 49 d8 	ori r3,r3,0x49d8                               
{                                                                     
  Timestamp_Control tick;                                             
  uint32_t          seconds;                                          
                                                                      
  /* Convert the tick quantum to a timestamp */                       
  _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
 8003e70:	b4 21 08 00 	add r1,r1,r1                                   
 8003e74:	b4 21 08 00 	add r1,r1,r1                                   
 8003e78:	b4 21 08 00 	add r1,r1,r1                                   
 8003e7c:	b4 21 10 00 	add r2,r1,r1                                   
 8003e80:	b4 42 10 00 	add r2,r2,r2                                   
 8003e84:	b4 22 08 00 	add r1,r1,r2                                   
 8003e88:	b4 21 10 00 	add r2,r1,r1                                   
 8003e8c:	b4 42 10 00 	add r2,r2,r2                                   
 8003e90:	b4 22 08 00 	add r1,r1,r2                                   
                                                                      
  /* Update the counter of ticks since boot */                        
  _Watchdog_Ticks_since_boot += 1;                                    
 8003e94:	28 65 00 00 	lw r5,(r3+0)                                   
{                                                                     
  Timestamp_Control tick;                                             
  uint32_t          seconds;                                          
                                                                      
  /* Convert the tick quantum to a timestamp */                       
  _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
 8003e98:	b4 21 20 00 	add r4,r1,r1                                   
 8003e9c:	b4 84 20 00 	add r4,r4,r4                                   
 8003ea0:	b4 24 20 00 	add r4,r1,r4                                   
                                                                      
  /* Update the counter of ticks since boot */                        
  _Watchdog_Ticks_since_boot += 1;                                    
                                                                      
  /* Update the timespec format uptime */                             
  _Timestamp_Add_to( &_TOD_Uptime, &tick );                           
 8003ea4:	37 8b 00 10 	addi r11,sp,16                                 
                                                                      
  /* Convert the tick quantum to a timestamp */                       
  _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
                                                                      
  /* Update the counter of ticks since boot */                        
  _Watchdog_Ticks_since_boot += 1;                                    
 8003ea8:	34 a5 00 01 	addi r5,r5,1                                   
                                                                      
  /* Update the timespec format uptime */                             
  _Timestamp_Add_to( &_TOD_Uptime, &tick );                           
 8003eac:	78 01 08 01 	mvhi r1,0x801                                  
 8003eb0:	b9 60 10 00 	mv r2,r11                                      
                                                                      
  /* Convert the tick quantum to a timestamp */                       
  _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
                                                                      
  /* Update the counter of ticks since boot */                        
  _Watchdog_Ticks_since_boot += 1;                                    
 8003eb4:	58 65 00 00 	sw (r3+0),r5                                   
                                                                      
  /* Update the timespec format uptime */                             
  _Timestamp_Add_to( &_TOD_Uptime, &tick );                           
 8003eb8:	38 21 49 24 	ori r1,r1,0x4924                               
{                                                                     
  Timestamp_Control tick;                                             
  uint32_t          seconds;                                          
                                                                      
  /* Convert the tick quantum to a timestamp */                       
  _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
 8003ebc:	5b 84 00 14 	sw (sp+20),r4                                  
 8003ec0:	5b 80 00 10 	sw (sp+16),r0                                  
                                                                      
  /* Update the counter of ticks since boot */                        
  _Watchdog_Ticks_since_boot += 1;                                    
                                                                      
  /* Update the timespec format uptime */                             
  _Timestamp_Add_to( &_TOD_Uptime, &tick );                           
 8003ec4:	f8 00 09 f1 	calli 8006688 <_Timespec_Add_to>               
  /* we do not care how much the uptime changed */                    
                                                                      
  /* Update the timespec format TOD */                                
  seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick );            
 8003ec8:	78 01 08 01 	mvhi r1,0x801                                  
 8003ecc:	b9 60 10 00 	mv r2,r11                                      
 8003ed0:	38 21 49 50 	ori r1,r1,0x4950                               
 8003ed4:	f8 00 09 ed 	calli 8006688 <_Timespec_Add_to>               
 8003ed8:	b8 20 58 00 	mv r11,r1                                      
  while ( seconds ) {                                                 
 8003edc:	44 20 00 07 	be r1,r0,8003ef8 <_TOD_Tickle_ticks+0xac>      
 8003ee0:	78 0c 08 01 	mvhi r12,0x801                                 
 8003ee4:	39 8c 49 7c 	ori r12,r12,0x497c                             
    _Watchdog_Tickle_seconds();                                       
    seconds--;                                                        
 8003ee8:	35 6b ff ff 	addi r11,r11,-1                                
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_seconds( void )            
{                                                                     
                                                                      
  _Watchdog_Tickle( &_Watchdog_Seconds_chain );                       
 8003eec:	b9 80 08 00 	mv r1,r12                                      
 8003ef0:	f8 00 0b bd 	calli 8006de4 <_Watchdog_Tickle>               
  _Timestamp_Add_to( &_TOD_Uptime, &tick );                           
  /* we do not care how much the uptime changed */                    
                                                                      
  /* Update the timespec format TOD */                                
  seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick );            
  while ( seconds ) {                                                 
 8003ef4:	5d 60 ff fd 	bne r11,r0,8003ee8 <_TOD_Tickle_ticks+0x9c>    <== NEVER TAKEN
    _Watchdog_Tickle_seconds();                                       
    seconds--;                                                        
  }                                                                   
}                                                                     
 8003ef8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003efc:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8003f00:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003f04:	37 9c 00 14 	addi sp,sp,20                                  
 8003f08:	c3 a0 00 00 	ret                                            
                                                                      

08004440 <_TOD_Validate>: */ bool _TOD_Validate( const rtems_time_of_day *the_tod ) {
 8004440:	37 9c ff f4 	addi sp,sp,-12                                 
 8004444:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8004448:	5b 8c 00 08 	sw (sp+8),r12                                  
 800444c:	5b 9d 00 04 	sw (sp+4),ra                                   
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
	    rtems_configuration_get_microseconds_per_tick();                 
 8004450:	78 02 08 02 	mvhi r2,0x802                                  
 8004454:	38 42 20 c4 	ori r2,r2,0x20c4                               
 */                                                                   
                                                                      
bool _TOD_Validate(                                                   
  const rtems_time_of_day *the_tod                                    
)                                                                     
{                                                                     
 8004458:	b8 20 58 00 	mv r11,r1                                      
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
	    rtems_configuration_get_microseconds_per_tick();                 
 800445c:	28 42 00 0c 	lw r2,(r2+12)                                  
      (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;                                                    
 8004460:	34 0c 00 00 	mvi r12,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)                                  ||                  
 8004464:	44 20 00 22 	be r1,r0,80044ec <_TOD_Validate+0xac>          <== NEVER TAKEN
)                                                                     
{                                                                     
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
 8004468:	78 03 08 01 	mvhi r3,0x801                                  
 800446c:	38 63 f1 c0 	ori r3,r3,0xf1c0                               
 8004470:	28 61 00 00 	lw r1,(r3+0)                                   
 8004474:	f8 00 65 97 	calli 801dad0 <__udivsi3>                      
	    rtems_configuration_get_microseconds_per_tick();                 
  if ((!the_tod)                                  ||                  
 8004478:	29 62 00 18 	lw r2,(r11+24)                                 
 800447c:	50 41 00 1c 	bgeu r2,r1,80044ec <_TOD_Validate+0xac>        
      (the_tod->ticks  >= ticks_per_second)       ||                  
 8004480:	29 62 00 14 	lw r2,(r11+20)                                 
 8004484:	34 01 00 3b 	mvi r1,59                                      
 8004488:	54 41 00 19 	bgu r2,r1,80044ec <_TOD_Validate+0xac>         
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                  
 800448c:	29 62 00 10 	lw r2,(r11+16)                                 
 8004490:	54 41 00 17 	bgu r2,r1,80044ec <_TOD_Validate+0xac>         
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                  
 8004494:	29 62 00 0c 	lw r2,(r11+12)                                 
 8004498:	34 01 00 17 	mvi r1,23                                      
 800449c:	54 41 00 14 	bgu r2,r1,80044ec <_TOD_Validate+0xac>         
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
 80044a0:	29 61 00 04 	lw r1,(r11+4)                                  
	    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)      ||                  
 80044a4:	44 20 00 12 	be r1,r0,80044ec <_TOD_Validate+0xac>          <== NEVER TAKEN
      (the_tod->month  == 0)                      ||                  
 80044a8:	34 02 00 0c 	mvi r2,12                                      
 80044ac:	54 22 00 10 	bgu r1,r2,80044ec <_TOD_Validate+0xac>         
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
 80044b0:	29 62 00 00 	lw r2,(r11+0)                                  
      (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)    ||                  
 80044b4:	34 03 07 c3 	mvi r3,1987                                    
 80044b8:	50 62 00 0d 	bgeu r3,r2,80044ec <_TOD_Validate+0xac>        
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
      (the_tod->day    == 0) )                                        
 80044bc:	29 63 00 08 	lw r3,(r11+8)                                  
      (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)          ||                  
 80044c0:	44 60 00 0b 	be r3,r0,80044ec <_TOD_Validate+0xac>          <== NEVER TAKEN
      (the_tod->day    == 0) )                                        
     return false;                                                    
                                                                      
  if ( (the_tod->year % 4) == 0 )                                     
 80044c4:	20 42 00 03 	andi r2,r2,0x3                                 
 80044c8:	5c 40 00 02 	bne r2,r0,80044d0 <_TOD_Validate+0x90>         
    days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];       
 80044cc:	34 21 00 0d 	addi r1,r1,13                                  
  else                                                                
    days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ];       
 80044d0:	78 02 08 01 	mvhi r2,0x801                                  
 80044d4:	b4 21 08 00 	add r1,r1,r1                                   
 80044d8:	38 42 fa 70 	ori r2,r2,0xfa70                               
 80044dc:	b4 21 08 00 	add r1,r1,r1                                   
 80044e0:	b4 41 08 00 	add r1,r2,r1                                   
 80044e4:	28 2c 00 00 	lw r12,(r1+0)                                  
 *    false - if the the_tod is invalid                               
 *                                                                    
 *  NOTE: This routine only works for leap-years through 2099.        
 */                                                                   
                                                                      
bool _TOD_Validate(                                                   
 80044e8:	f1 83 60 00 	cmpgeu r12,r12,r3                              
                                                                      
  if ( the_tod->day > days_in_month )                                 
    return false;                                                     
                                                                      
  return true;                                                        
}                                                                     
 80044ec:	b9 80 08 00 	mv r1,r12                                      
 80044f0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80044f4:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80044f8:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80044fc:	37 9c 00 0c 	addi sp,sp,12                                  
 8004500:	c3 a0 00 00 	ret                                            
                                                                      

08005350 <_Thread_Change_priority>: void _Thread_Change_priority( Thread_Control *the_thread, Priority_Control new_priority, bool prepend_it ) {
 8005350:	37 9c ff ec 	addi sp,sp,-20                                 
 8005354:	5b 8b 00 14 	sw (sp+20),r11                                 
 8005358:	5b 8c 00 10 	sw (sp+16),r12                                 
 800535c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8005360:	5b 8e 00 08 	sw (sp+8),r14                                  
 8005364:	5b 9d 00 04 	sw (sp+4),ra                                   
 8005368:	b8 20 58 00 	mv r11,r1                                      
*/                                                                    
                                                                      
  /*                                                                  
   * Save original state                                              
   */                                                                 
  original_state = the_thread->current_state;                         
 800536c:	28 2d 00 10 	lw r13,(r1+16)                                 
void _Thread_Change_priority(                                         
  Thread_Control   *the_thread,                                       
  Priority_Control  new_priority,                                     
  bool              prepend_it                                        
)                                                                     
{                                                                     
 8005370:	b8 40 60 00 	mv r12,r2                                      
 8005374:	20 6e 00 ff 	andi r14,r3,0xff                               
  /*                                                                  
   * 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 );                                
 8005378:	f8 00 04 1b 	calli 80063e4 <_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 )                  
 800537c:	29 61 00 14 	lw r1,(r11+20)                                 
 8005380:	44 2c 00 04 	be r1,r12,8005390 <_Thread_Change_priority+0x40>
    _Thread_Set_priority( the_thread, new_priority );                 
 8005384:	b9 60 08 00 	mv r1,r11                                      
 8005388:	b9 80 10 00 	mv r2,r12                                      
 800538c:	f8 00 03 ed 	calli 8006340 <_Thread_Set_priority>           
                                                                      
  _ISR_Disable( level );                                              
 8005390:	90 00 60 00 	rcsr r12,IE                                    
 8005394:	34 02 ff fe 	mvi r2,-2                                      
 8005398:	a1 82 10 00 	and r2,r12,r2                                  
 800539c:	d0 02 00 00 	wcsr IE,r2                                     
                                                                      
  /*                                                                  
   *  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;                                  
 80053a0:	29 61 00 10 	lw r1,(r11+16)                                 
  if ( state != STATES_TRANSIENT ) {                                  
 80053a4:	34 04 00 04 	mvi r4,4                                       
 80053a8:	44 24 00 23 	be r1,r4,8005434 <_Thread_Change_priority+0xe4>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_transient (                      
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_TRANSIENT);                            
 80053ac:	21 ad 00 04 	andi r13,r13,0x4                               
    /* Only clear the transient state if it wasn't set already */     
    if ( ! _States_Is_transient( original_state ) )                   
 80053b0:	45 a0 00 0e 	be r13,r0,80053e8 <_Thread_Change_priority+0x98><== ALWAYS TAKEN
      the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
    _ISR_Enable( level );                                             
 80053b4:	d0 0c 00 00 	wcsr IE,r12                                    <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_ON_THREAD_QUEUE);              
 80053b8:	78 03 08 01 	mvhi r3,0x801                                  <== NOT EXECUTED
 80053bc:	38 63 36 18 	ori r3,r3,0x3618                               <== NOT EXECUTED
 80053c0:	28 62 00 00 	lw r2,(r3+0)                                   <== NOT EXECUTED
 80053c4:	a0 22 08 00 	and r1,r1,r2                                   <== NOT EXECUTED
    if ( _States_Is_waiting_on_thread_queue( state ) ) {              
 80053c8:	5c 20 00 11 	bne r1,r0,800540c <_Thread_Change_priority+0xbc><== NOT EXECUTED
                                                                      
  if ( !_Thread_Is_executing_also_the_heir() &&                       
       _Thread_Executing->is_preemptible )                            
    _Thread_Dispatch_necessary = true;                                
  _ISR_Enable( level );                                               
}                                                                     
 80053cc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80053d0:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80053d4:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80053d8:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80053dc:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80053e0:	37 9c 00 14 	addi sp,sp,20                                  
 80053e4:	c3 a0 00 00 	ret                                            
RTEMS_INLINE_ROUTINE States_Control _States_Clear (                   
  States_Control states_to_clear,                                     
  States_Control current_state                                        
)                                                                     
{                                                                     
   return (current_state & ~states_to_clear);                         
 80053e8:	34 02 ff fb 	mvi r2,-5                                      
 80053ec:	a0 22 10 00 	and r2,r1,r2                                   
   */                                                                 
  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 );
 80053f0:	59 62 00 10 	sw (r11+16),r2                                 
    _ISR_Enable( level );                                             
 80053f4:	d0 0c 00 00 	wcsr IE,r12                                    
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_ON_THREAD_QUEUE);              
 80053f8:	78 03 08 01 	mvhi r3,0x801                                  
 80053fc:	38 63 36 18 	ori r3,r3,0x3618                               
 8005400:	28 62 00 00 	lw r2,(r3+0)                                   
 8005404:	a0 22 08 00 	and r1,r1,r2                                   
    if ( _States_Is_waiting_on_thread_queue( state ) ) {              
 8005408:	44 20 ff f1 	be r1,r0,80053cc <_Thread_Change_priority+0x7c>
      _Thread_queue_Requeue( the_thread->Wait.queue, the_thread );    
 800540c:	29 61 00 44 	lw r1,(r11+68)                                 
 8005410:	b9 60 10 00 	mv r2,r11                                      
 8005414:	f8 00 03 8e 	calli 800624c <_Thread_queue_Requeue>          
                                                                      
  if ( !_Thread_Is_executing_also_the_heir() &&                       
       _Thread_Executing->is_preemptible )                            
    _Thread_Dispatch_necessary = true;                                
  _ISR_Enable( level );                                               
}                                                                     
 8005418:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800541c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8005420:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8005424:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8005428:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800542c:	37 9c 00 14 	addi sp,sp,20                                  
 8005430:	c3 a0 00 00 	ret                                            
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_transient (                      
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_TRANSIENT);                            
 8005434:	21 ad 00 04 	andi r13,r13,0x4                               
    }                                                                 
    return;                                                           
  }                                                                   
                                                                      
  /* Only clear the transient state if it wasn't set already */       
  if ( ! _States_Is_transient( original_state ) ) {                   
 8005438:	5d a0 00 16 	bne r13,r0,8005490 <_Thread_Change_priority+0x140><== NEVER TAKEN
     *  Ready Queue with interrupts off.                              
     *                                                                
     *  FIXME: hard-coded for priority scheduling. Might be ok since this
     *  function is specific to priority scheduling?                  
     */                                                               
    the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
 800543c:	59 60 00 10 	sw (r11+16),r0                                 
                                                                      
    if ( prepend_it )                                                 
 8005440:	45 cd 00 2b 	be r14,r13,80054ec <_Thread_Change_priority+0x19c>
                                                                      
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue_first(
  Thread_Control                   *the_thread                        
)                                                                     
{                                                                     
  _Priority_bit_map_Add( &the_thread->scheduler.priority->Priority_map );
 8005444:	29 61 00 8c 	lw r1,(r11+140)                                
 8005448:	78 03 08 01 	mvhi r3,0x801                                  
 800544c:	38 63 4d 98 	ori r3,r3,0x4d98                               
                                                                      
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add (                     
  Priority_bit_map_Information *the_priority_map                      
)                                                                     
{                                                                     
  *the_priority_map->minor |= the_priority_map->ready_minor;          
 8005450:	28 25 00 04 	lw r5,(r1+4)                                   
 8005454:	2c 26 00 0a 	lhu r6,(r1+10)                                 
                                                                      
  _Chain_Prepend_unprotected( the_thread->scheduler.priority->ready_chain,
 8005458:	28 24 00 00 	lw r4,(r1+0)                                   
 800545c:	2c a7 00 00 	lhu r7,(r5+0)                                  
 8005460:	b8 e6 30 00 	or r6,r7,r6                                    
 8005464:	0c a6 00 00 	sh (r5+0),r6                                   
  _Priority_Major_bit_map  |= the_priority_map->ready_major;          
 8005468:	2c 26 00 08 	lhu r6,(r1+8)                                  
 800546c:	2c 65 00 00 	lhu r5,(r3+0)                                  
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
 8005470:	28 81 00 00 	lw r1,(r4+0)                                   
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
 8005474:	59 64 00 04 	sw (r11+4),r4                                  
 8005478:	b8 c5 28 00 	or r5,r6,r5                                    
 800547c:	20 a5 ff ff 	andi r5,r5,0xffff                              
 8005480:	0c 65 00 00 	sh (r3+0),r5                                   
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
 8005484:	58 8b 00 00 	sw (r4+0),r11                                  
  the_node->next        = before_node;                                
 8005488:	59 61 00 00 	sw (r11+0),r1                                  
  before_node->previous = the_node;                                   
 800548c:	58 2b 00 04 	sw (r1+4),r11                                  
      _Scheduler_priority_Ready_queue_enqueue_first( the_thread );    
    else                                                              
      _Scheduler_priority_Ready_queue_enqueue( the_thread );          
  }                                                                   
                                                                      
  _ISR_Flash( level );                                                
 8005490:	d0 0c 00 00 	wcsr IE,r12                                    
 8005494:	d0 02 00 00 	wcsr IE,r2                                     
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_Schedule(                        
    Scheduler_Control *the_scheduler                                  
)                                                                     
{                                                                     
  the_scheduler->Operations.schedule( the_scheduler );                
 8005498:	78 01 08 01 	mvhi r1,0x801                                  
 800549c:	38 21 49 2c 	ori r1,r1,0x492c                               
 80054a0:	28 22 00 04 	lw r2,(r1+4)                                   
 80054a4:	d8 40 00 00 	call r2                                        
 *  is also the heir thread, and false otherwise.                     
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing_also_the_heir( void )  
{                                                                     
  return ( _Thread_Executing == _Thread_Heir );                       
 80054a8:	78 01 08 01 	mvhi r1,0x801                                  
 80054ac:	38 21 4d 78 	ori r1,r1,0x4d78                               
 80054b0:	28 22 00 0c 	lw r2,(r1+12)                                  
   *  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(&_Scheduler);                                   
                                                                      
  if ( !_Thread_Is_executing_also_the_heir() &&                       
 80054b4:	28 23 00 10 	lw r3,(r1+16)                                  
 80054b8:	44 43 00 05 	be r2,r3,80054cc <_Thread_Change_priority+0x17c>
 80054bc:	40 42 00 74 	lbu r2,(r2+116)                                
 80054c0:	44 40 00 03 	be r2,r0,80054cc <_Thread_Change_priority+0x17c>
       _Thread_Executing->is_preemptible )                            
    _Thread_Dispatch_necessary = true;                                
 80054c4:	34 02 00 01 	mvi r2,1                                       
 80054c8:	30 22 00 18 	sb (r1+24),r2                                  
  _ISR_Enable( level );                                               
 80054cc:	d0 0c 00 00 	wcsr IE,r12                                    
}                                                                     
 80054d0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80054d4:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80054d8:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80054dc:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80054e0:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80054e4:	37 9c 00 14 	addi sp,sp,20                                  
 80054e8:	c3 a0 00 00 	ret                                            
                                                                      
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue(    
  Thread_Control                  *the_thread                         
)                                                                     
{                                                                     
  _Priority_bit_map_Add( &the_thread->scheduler.priority->Priority_map );
 80054ec:	29 61 00 8c 	lw r1,(r11+140)                                
 80054f0:	78 03 08 01 	mvhi r3,0x801                                  
 80054f4:	38 63 4d 98 	ori r3,r3,0x4d98                               
                                                                      
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add (                     
  Priority_bit_map_Information *the_priority_map                      
)                                                                     
{                                                                     
  *the_priority_map->minor |= the_priority_map->ready_minor;          
 80054f8:	28 25 00 04 	lw r5,(r1+4)                                   
 80054fc:	2c 27 00 0a 	lhu r7,(r1+10)                                 
                                                                      
  _Chain_Append_unprotected( the_thread->scheduler.priority->ready_chain,
 8005500:	28 24 00 00 	lw r4,(r1+0)                                   
 8005504:	2c a8 00 00 	lhu r8,(r5+0)                                  
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(                  
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 8005508:	34 86 00 04 	addi r6,r4,4                                   
 800550c:	b9 07 38 00 	or r7,r8,r7                                    
 8005510:	0c a7 00 00 	sh (r5+0),r7                                   
  _Priority_Major_bit_map  |= the_priority_map->ready_major;          
 8005514:	2c 27 00 08 	lhu r7,(r1+8)                                  
 8005518:	2c 65 00 00 	lhu r5,(r3+0)                                  
  Chain_Node *old_last = tail->previous;                              
 800551c:	28 81 00 08 	lw r1,(r4+8)                                   
                                                                      
  the_node->next = tail;                                              
  tail->previous = the_node;                                          
 8005520:	58 8b 00 08 	sw (r4+8),r11                                  
 8005524:	b8 e5 20 00 	or r4,r7,r5                                    
 8005528:	20 84 ff ff 	andi r4,r4,0xffff                              
 800552c:	0c 64 00 00 	sh (r3+0),r4                                   
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
 8005530:	59 66 00 00 	sw (r11+0),r6                                  
  tail->previous = the_node;                                          
  old_last->next = the_node;                                          
 8005534:	58 2b 00 00 	sw (r1+0),r11                                  
  the_node->previous = old_last;                                      
 8005538:	59 61 00 04 	sw (r11+4),r1                                  
 800553c:	e3 ff ff d5 	bi 8005490 <_Thread_Change_priority+0x140>     
                                                                      

0800c81c <_Thread_Delay_ended>: void _Thread_Delay_ended( Objects_Id id, void *ignored __attribute__((unused)) ) {
 800c81c:	37 9c ff f8 	addi sp,sp,-8                                  
 800c820:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control    *the_thread;                                      
  Objects_Locations  location;                                        
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 800c824:	37 82 00 08 	addi r2,sp,8                                   
 800c828:	f8 00 00 8a 	calli 800ca50 <_Thread_Get>                    
  switch ( location ) {                                               
 800c82c:	2b 82 00 08 	lw r2,(sp+8)                                   
 800c830:	5c 40 00 0a 	bne r2,r0,800c858 <_Thread_Delay_ended+0x3c>   <== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
      break;                                                          
    case OBJECTS_LOCAL:                                               
      _Thread_Clear_state(                                            
 800c834:	78 03 08 02 	mvhi r3,0x802                                  
 800c838:	38 63 79 60 	ori r3,r3,0x7960                               
 800c83c:	28 62 00 00 	lw r2,(r3+0)                                   
 800c840:	fb ff ff 64 	calli 800c5d0 <_Thread_Clear_state>            
 800c844:	78 01 08 02 	mvhi r1,0x802                                  
 800c848:	38 21 aa 20 	ori r1,r1,0xaa20                               
 800c84c:	28 22 00 00 	lw r2,(r1+0)                                   
 800c850:	34 42 ff ff 	addi r2,r2,-1                                  
 800c854:	58 22 00 00 	sw (r1+0),r2                                   
          | STATES_INTERRUPTIBLE_BY_SIGNAL                            
      );                                                              
      _Thread_Unnest_dispatch();                                      
      break;                                                          
  }                                                                   
}                                                                     
 800c858:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c85c:	37 9c 00 08 	addi sp,sp,8                                   
 800c860:	c3 a0 00 00 	ret                                            
                                                                      

08005714 <_Thread_Dispatch>: * dispatch thread * no dispatch thread */ void _Thread_Dispatch( void ) {
 8005714:	37 9c ff bc 	addi sp,sp,-68                                 
 8005718:	5b 8b 00 34 	sw (sp+52),r11                                 
 800571c:	5b 8c 00 30 	sw (sp+48),r12                                 
 8005720:	5b 8d 00 2c 	sw (sp+44),r13                                 
 8005724:	5b 8e 00 28 	sw (sp+40),r14                                 
 8005728:	5b 8f 00 24 	sw (sp+36),r15                                 
 800572c:	5b 90 00 20 	sw (sp+32),r16                                 
 8005730:	5b 91 00 1c 	sw (sp+28),r17                                 
 8005734:	5b 92 00 18 	sw (sp+24),r18                                 
 8005738:	5b 93 00 14 	sw (sp+20),r19                                 
 800573c:	5b 94 00 10 	sw (sp+16),r20                                 
 8005740:	5b 95 00 0c 	sw (sp+12),r21                                 
 8005744:	5b 96 00 08 	sw (sp+8),r22                                  
 8005748:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control   *executing;                                        
  Thread_Control   *heir;                                             
  ISR_Level         level;                                            
                                                                      
  executing   = _Thread_Executing;                                    
 800574c:	78 01 08 01 	mvhi r1,0x801                                  
 8005750:	38 21 4d 78 	ori r1,r1,0x4d78                               
 8005754:	28 2c 00 0c 	lw r12,(r1+12)                                 
  _ISR_Disable( level );                                              
 8005758:	90 00 08 00 	rcsr r1,IE                                     
 800575c:	34 02 ff fe 	mvi r2,-2                                      
 8005760:	a0 22 10 00 	and r2,r1,r2                                   
 8005764:	d0 02 00 00 	wcsr IE,r2                                     
  while ( _Thread_Dispatch_necessary == true ) {                      
 8005768:	78 0e 08 01 	mvhi r14,0x801                                 
 800576c:	39 ce 4d 78 	ori r14,r14,0x4d78                             
 8005770:	41 c2 00 18 	lbu r2,(r14+24)                                
 8005774:	78 10 08 01 	mvhi r16,0x801                                 
  Thread_Control   *executing;                                        
  Thread_Control   *heir;                                             
  ISR_Level         level;                                            
                                                                      
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
 8005778:	b8 20 20 00 	mv r4,r1                                       
  while ( _Thread_Dispatch_necessary == true ) {                      
 800577c:	20 42 00 ff 	andi r2,r2,0xff                                
 8005780:	3a 10 48 a8 	ori r16,r16,0x48a8                             
 8005784:	44 40 00 40 	be r2,r0,8005884 <_Thread_Dispatch+0x170>      
    heir = _Thread_Heir;                                              
 8005788:	29 cb 00 10 	lw r11,(r14+16)                                
    _Thread_Dispatch_disable_level = 1;                               
 800578c:	34 02 00 01 	mvi r2,1                                       
 8005790:	5a 02 00 00 	sw (r16+0),r2                                  
    _Thread_Dispatch_necessary = false;                               
 8005794:	31 c0 00 18 	sb (r14+24),r0                                 
    _Thread_Executing = heir;                                         
 8005798:	59 cb 00 0c 	sw (r14+12),r11                                
    /*                                                                
     *  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 )                                          
 800579c:	45 8b 00 3a 	be r12,r11,8005884 <_Thread_Dispatch+0x170>    
 80057a0:	78 0f 08 01 	mvhi r15,0x801                                 
 80057a4:	78 14 08 01 	mvhi r20,0x801                                 
#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;            
 80057a8:	78 15 08 01 	mvhi r21,0x801                                 
 80057ac:	37 92 00 40 	addi r18,sp,64                                 
 80057b0:	39 ef 49 74 	ori r15,r15,0x4974                             
 80057b4:	37 91 00 38 	addi r17,sp,56                                 
 80057b8:	3a 94 49 4c 	ori r20,r20,0x494c                             
     */                                                               
#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 )
 80057bc:	34 13 00 01 	mvi r19,1                                      
      heir->cpu_time_budget = _Thread_Ticks_per_timeslice;            
 80057c0:	3a b5 48 40 	ori r21,r21,0x4840                             
#endif                                                                
#endif                                                                
                                                                      
    executing = _Thread_Executing;                                    
                                                                      
    _ISR_Disable( level );                                            
 80057c4:	34 16 ff fe 	mvi r22,-2                                     
  Thread_Control   *heir;                                             
  ISR_Level         level;                                            
                                                                      
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
  while ( _Thread_Dispatch_necessary == true ) {                      
 80057c8:	b9 c0 68 00 	mv r13,r14                                     
 80057cc:	e0 00 00 29 	bi 8005870 <_Thread_Dispatch+0x15c>            
    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;            
                                                                      
    _ISR_Enable( level );                                             
 80057d0:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
    #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                        
      {                                                               
        Timestamp_Control uptime, ran;                                
        _TOD_Get_uptime( &uptime );                                   
 80057d4:	ba 40 08 00 	mv r1,r18                                      
 80057d8:	f8 00 12 09 	calli 8009ffc <_TOD_Get_uptime>                
        _Timestamp_Subtract(                                          
 80057dc:	ba 20 18 00 	mv r3,r17                                      
 80057e0:	b9 e0 08 00 	mv r1,r15                                      
 80057e4:	ba 40 10 00 	mv r2,r18                                      
 80057e8:	f8 00 03 bf 	calli 80066e4 <_Timespec_Subtract>             
          &_Thread_Time_of_last_context_switch,                       
          &uptime,                                                    
          &ran                                                        
        );                                                            
        _Timestamp_Add_to( &executing->cpu_time_used, &ran );         
 80057ec:	ba 20 10 00 	mv r2,r17                                      
 80057f0:	35 81 00 84 	addi r1,r12,132                                
 80057f4:	f8 00 03 a5 	calli 8006688 <_Timespec_Add_to>               
        _Thread_Time_of_last_context_switch = uptime;                 
 80057f8:	2b 83 00 40 	lw r3,(sp+64)                                  
    #endif                                                            
                                                                      
    /*                                                                
     * Switch libc's task specific data.                              
     */                                                               
    if ( _Thread_libc_reent ) {                                       
 80057fc:	2a 84 00 00 	lw r4,(r20+0)                                  
      executing->libc_reent = *_Thread_libc_reent;                    
      *_Thread_libc_reent = heir->libc_reent;                         
    }                                                                 
                                                                      
    _User_extensions_Thread_switch( executing, heir );                
 8005800:	b9 80 08 00 	mv r1,r12                                      
          &_Thread_Time_of_last_context_switch,                       
          &uptime,                                                    
          &ran                                                        
        );                                                            
        _Timestamp_Add_to( &executing->cpu_time_used, &ran );         
        _Thread_Time_of_last_context_switch = uptime;                 
 8005804:	59 e3 00 00 	sw (r15+0),r3                                  
 8005808:	2b 83 00 44 	lw r3,(sp+68)                                  
    if ( _Thread_libc_reent ) {                                       
      executing->libc_reent = *_Thread_libc_reent;                    
      *_Thread_libc_reent = heir->libc_reent;                         
    }                                                                 
                                                                      
    _User_extensions_Thread_switch( executing, heir );                
 800580c:	b9 60 10 00 	mv r2,r11                                      
          &_Thread_Time_of_last_context_switch,                       
          &uptime,                                                    
          &ran                                                        
        );                                                            
        _Timestamp_Add_to( &executing->cpu_time_used, &ran );         
        _Thread_Time_of_last_context_switch = uptime;                 
 8005810:	59 e3 00 04 	sw (r15+4),r3                                  
    #endif                                                            
                                                                      
    /*                                                                
     * Switch libc's task specific data.                              
     */                                                               
    if ( _Thread_libc_reent ) {                                       
 8005814:	44 80 00 05 	be r4,r0,8005828 <_Thread_Dispatch+0x114>      <== NEVER TAKEN
      executing->libc_reent = *_Thread_libc_reent;                    
 8005818:	28 83 00 00 	lw r3,(r4+0)                                   
 800581c:	59 83 01 18 	sw (r12+280),r3                                
      *_Thread_libc_reent = heir->libc_reent;                         
 8005820:	29 63 01 18 	lw r3,(r11+280)                                
 8005824:	58 83 00 00 	sw (r4+0),r3                                   
    }                                                                 
                                                                      
    _User_extensions_Thread_switch( executing, heir );                
 8005828:	f8 00 04 b6 	calli 8006b00 <_User_extensions_Thread_switch> 
    if ( executing->fp_context != NULL )                              
      _Context_Save_fp( &executing->fp_context );                     
#endif                                                                
#endif                                                                
                                                                      
    _Context_Switch( &executing->Registers, &heir->Registers );       
 800582c:	35 81 00 c4 	addi r1,r12,196                                
 8005830:	35 62 00 c4 	addi r2,r11,196                                
 8005834:	f8 00 05 e9 	calli 8006fd8 <_CPU_Context_switch>            
    if ( executing->fp_context != NULL )                              
      _Context_Restore_fp( &executing->fp_context );                  
#endif                                                                
#endif                                                                
                                                                      
    executing = _Thread_Executing;                                    
 8005838:	29 cc 00 0c 	lw r12,(r14+12)                                
                                                                      
    _ISR_Disable( level );                                            
 800583c:	90 00 20 00 	rcsr r4,IE                                     
 8005840:	a0 96 08 00 	and r1,r4,r22                                  
 8005844:	d0 01 00 00 	wcsr IE,r1                                     
  Thread_Control   *heir;                                             
  ISR_Level         level;                                            
                                                                      
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
  while ( _Thread_Dispatch_necessary == true ) {                      
 8005848:	41 a2 00 18 	lbu r2,(r13+24)                                
 800584c:	b9 a0 70 00 	mv r14,r13                                     
#endif                                                                
#endif                                                                
                                                                      
    executing = _Thread_Executing;                                    
                                                                      
    _ISR_Disable( level );                                            
 8005850:	b8 80 08 00 	mv r1,r4                                       
  Thread_Control   *heir;                                             
  ISR_Level         level;                                            
                                                                      
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
  while ( _Thread_Dispatch_necessary == true ) {                      
 8005854:	20 42 00 ff 	andi r2,r2,0xff                                
 8005858:	44 40 00 0b 	be r2,r0,8005884 <_Thread_Dispatch+0x170>      <== ALWAYS TAKEN
    heir = _Thread_Heir;                                              
 800585c:	29 ab 00 10 	lw r11,(r13+16)                                <== NOT EXECUTED
    _Thread_Dispatch_disable_level = 1;                               
 8005860:	5a 13 00 00 	sw (r16+0),r19                                 <== NOT EXECUTED
    _Thread_Dispatch_necessary = false;                               
 8005864:	31 a0 00 18 	sb (r13+24),r0                                 <== NOT EXECUTED
    _Thread_Executing = heir;                                         
 8005868:	59 ab 00 0c 	sw (r13+12),r11                                <== NOT EXECUTED
    /*                                                                
     *  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 )                                          
 800586c:	45 6c 00 06 	be r11,r12,8005884 <_Thread_Dispatch+0x170>    <== NOT EXECUTED
     */                                                               
#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 )
 8005870:	29 62 00 7c 	lw r2,(r11+124)                                
 8005874:	5c 53 ff d7 	bne r2,r19,80057d0 <_Thread_Dispatch+0xbc>     
      heir->cpu_time_budget = _Thread_Ticks_per_timeslice;            
 8005878:	2a a2 00 00 	lw r2,(r21+0)                                  
 800587c:	59 62 00 78 	sw (r11+120),r2                                
 8005880:	e3 ff ff d4 	bi 80057d0 <_Thread_Dispatch+0xbc>             
                                                                      
    _ISR_Disable( level );                                            
  }                                                                   
                                                                      
post_switch:                                                          
  _Thread_Dispatch_disable_level = 0;                                 
 8005884:	5a 00 00 00 	sw (r16+0),r0                                  
                                                                      
  _ISR_Enable( level );                                               
 8005888:	d0 04 00 00 	wcsr IE,r4                                     
                                                                      
  _API_extensions_Run_postswitch();                                   
 800588c:	fb ff f7 a1 	calli 8003710 <_API_extensions_Run_postswitch> 
}                                                                     
 8005890:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005894:	2b 8b 00 34 	lw r11,(sp+52)                                 
 8005898:	2b 8c 00 30 	lw r12,(sp+48)                                 
 800589c:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 80058a0:	2b 8e 00 28 	lw r14,(sp+40)                                 
 80058a4:	2b 8f 00 24 	lw r15,(sp+36)                                 
 80058a8:	2b 90 00 20 	lw r16,(sp+32)                                 
 80058ac:	2b 91 00 1c 	lw r17,(sp+28)                                 
 80058b0:	2b 92 00 18 	lw r18,(sp+24)                                 
 80058b4:	2b 93 00 14 	lw r19,(sp+20)                                 
 80058b8:	2b 94 00 10 	lw r20,(sp+16)                                 
 80058bc:	2b 95 00 0c 	lw r21,(sp+12)                                 
 80058c0:	2b 96 00 08 	lw r22,(sp+8)                                  
 80058c4:	37 9c 00 44 	addi sp,sp,68                                  
 80058c8:	c3 a0 00 00 	ret                                            
                                                                      

0800cb2c <_Thread_Handler>: * * Output parameters: NONE */ void _Thread_Handler( void ) {
 800cb2c:	37 9c ff f4 	addi sp,sp,-12                                 
 800cb30:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800cb34:	5b 8c 00 08 	sw (sp+8),r12                                  
 800cb38:	5b 9d 00 04 	sw (sp+4),ra                                   
  #if defined(EXECUTE_GLOBAL_CONSTRUCTORS)                            
    static char doneConstructors;                                     
    char doneCons;                                                    
  #endif                                                              
                                                                      
  executing = _Thread_Executing;                                      
 800cb3c:	78 01 08 01 	mvhi r1,0x801                                  
 800cb40:	38 21 4d 78 	ori r1,r1,0x4d78                               
 800cb44:	28 2b 00 0c 	lw r11,(r1+12)                                 
  /*                                                                  
   * have to put level into a register for those cpu's that use       
   * inline asm here                                                  
   */                                                                 
                                                                      
  level = executing->Start.isr_level;                                 
 800cb48:	29 61 00 ac 	lw r1,(r11+172)                                
  _ISR_Set_level(level);                                              
 800cb4c:	64 21 00 00 	cmpei r1,r1,0                                  
 800cb50:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
  #if defined(EXECUTE_GLOBAL_CONSTRUCTORS)                            
    doneCons = doneConstructors;                                      
 800cb54:	78 02 08 01 	mvhi r2,0x801                                  
 800cb58:	38 42 46 bc 	ori r2,r2,0x46bc                               
 800cb5c:	40 4c 00 00 	lbu r12,(r2+0)                                 
    doneConstructors = 1;                                             
 800cb60:	34 03 00 01 	mvi r3,1                                       
  /*                                                                  
   * Take care that 'begin' extensions get to complete before         
   * 'switch' extensions can run.  This means must keep dispatch      
   * disabled until all 'begin' extensions complete.                  
   */                                                                 
  _User_extensions_Thread_begin( executing );                         
 800cb64:	b9 60 08 00 	mv r1,r11                                      
  level = executing->Start.isr_level;                                 
  _ISR_Set_level(level);                                              
                                                                      
  #if defined(EXECUTE_GLOBAL_CONSTRUCTORS)                            
    doneCons = doneConstructors;                                      
    doneConstructors = 1;                                             
 800cb68:	30 43 00 00 	sb (r2+0),r3                                   
  /*                                                                  
   * Take care that 'begin' extensions get to complete before         
   * 'switch' extensions can run.  This means must keep dispatch      
   * disabled until all 'begin' extensions complete.                  
   */                                                                 
  _User_extensions_Thread_begin( executing );                         
 800cb6c:	fb ff e7 39 	calli 8006850 <_User_extensions_Thread_begin>  
                                                                      
  /*                                                                  
   *  At this point, the dispatch disable level BETTER be 1.          
   */                                                                 
  _Thread_Enable_dispatch();                                          
 800cb70:	fb ff e3 57 	calli 80058cc <_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 (!doneCons) /* && (volatile void *)_init) */ {                 
 800cb74:	45 80 00 0b 	be r12,r0,800cba0 <_Thread_Handler+0x74>       
      INIT_NAME ();                                                   
    }                                                                 
  #endif                                                              
                                                                      
  if ( executing->Start.prototype == THREAD_START_NUMERIC ) {         
 800cb78:	29 61 00 94 	lw r1,(r11+148)                                
 800cb7c:	44 20 00 0c 	be r1,r0,800cbac <_Thread_Handler+0x80>        
      (*(Thread_Entry_numeric) executing->Start.entry_point)(         
        executing->Start.numeric_argument                             
      );                                                              
  }                                                                   
  #if defined(RTEMS_POSIX_API)                                        
    else if ( executing->Start.prototype == THREAD_START_POINTER ) {  
 800cb80:	34 02 00 01 	mvi r2,1                                       
 800cb84:	44 22 00 0f 	be r1,r2,800cbc0 <_Thread_Handler+0x94>        <== ALWAYS TAKEN
   *  was placed in return_argument.  This assumed that if it returned
   *  anything (which is not supporting in all APIs), then it would be
   *  able to fit in a (void *).                                      
   */                                                                 
                                                                      
  _User_extensions_Thread_exitted( executing );                       
 800cb88:	b9 60 08 00 	mv r1,r11                                      
 800cb8c:	fb ff e7 49 	calli 80068b0 <_User_extensions_Thread_exitted>
                                                                      
  _Internal_error_Occurred(                                           
 800cb90:	34 01 00 00 	mvi r1,0                                       
 800cb94:	34 02 00 01 	mvi r2,1                                       
 800cb98:	34 03 00 05 	mvi r3,5                                       
 800cb9c:	fb ff de 1a 	calli 8004404 <_Internal_error_Occurred>       
     *  _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 (!doneCons) /* && (volatile void *)_init) */ {                 
      INIT_NAME ();                                                   
 800cba0:	fb ff cd 18 	calli 8000000 <RamBase>                        
    }                                                                 
  #endif                                                              
                                                                      
  if ( executing->Start.prototype == THREAD_START_NUMERIC ) {         
 800cba4:	29 61 00 94 	lw r1,(r11+148)                                
 800cba8:	5c 20 ff f6 	bne r1,r0,800cb80 <_Thread_Handler+0x54>       
    executing->Wait.return_argument =                                 
      (*(Thread_Entry_numeric) executing->Start.entry_point)(         
 800cbac:	29 62 00 90 	lw r2,(r11+144)                                
 800cbb0:	29 61 00 9c 	lw r1,(r11+156)                                
 800cbb4:	d8 40 00 00 	call r2                                        
      INIT_NAME ();                                                   
    }                                                                 
  #endif                                                              
                                                                      
  if ( executing->Start.prototype == THREAD_START_NUMERIC ) {         
    executing->Wait.return_argument =                                 
 800cbb8:	59 61 00 28 	sw (r11+40),r1                                 
 800cbbc:	e3 ff ff f3 	bi 800cb88 <_Thread_Handler+0x5c>              
      );                                                              
  }                                                                   
  #if defined(RTEMS_POSIX_API)                                        
    else if ( executing->Start.prototype == THREAD_START_POINTER ) {  
      executing->Wait.return_argument =                               
        (*(Thread_Entry_pointer) executing->Start.entry_point)(       
 800cbc0:	29 62 00 90 	lw r2,(r11+144)                                
 800cbc4:	29 61 00 98 	lw r1,(r11+152)                                
 800cbc8:	d8 40 00 00 	call r2                                        
        executing->Start.numeric_argument                             
      );                                                              
  }                                                                   
  #if defined(RTEMS_POSIX_API)                                        
    else if ( executing->Start.prototype == THREAD_START_POINTER ) {  
      executing->Wait.return_argument =                               
 800cbcc:	59 61 00 28 	sw (r11+40),r1                                 
 800cbd0:	e3 ff ff ee 	bi 800cb88 <_Thread_Handler+0x5c>              
                                                                      

0800a9c4 <_Thread_Resume>: void _Thread_Resume( Thread_Control *the_thread, bool force ) {
 800a9c4:	37 9c ff f8 	addi sp,sp,-8                                  
 800a9c8:	5b 8b 00 08 	sw (sp+8),r11                                  
 800a9cc:	5b 9d 00 04 	sw (sp+4),ra                                   
 800a9d0:	b8 20 10 00 	mv r2,r1                                       
                                                                      
  ISR_Level       level;                                              
  States_Control  current_state;                                      
                                                                      
  _ISR_Disable( level );                                              
 800a9d4:	90 00 58 00 	rcsr r11,IE                                    
 800a9d8:	34 01 ff fe 	mvi r1,-2                                      
 800a9dc:	a1 61 08 00 	and r1,r11,r1                                  
 800a9e0:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
  current_state = the_thread->current_state;                          
 800a9e4:	28 41 00 10 	lw r1,(r2+16)                                  
  if ( current_state & STATES_SUSPENDED ) {                           
 800a9e8:	20 23 00 02 	andi r3,r1,0x2                                 
 800a9ec:	44 60 00 05 	be r3,r0,800aa00 <_Thread_Resume+0x3c>         <== NEVER TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Clear (                   
  States_Control states_to_clear,                                     
  States_Control current_state                                        
)                                                                     
{                                                                     
   return (current_state & ~states_to_clear);                         
 800a9f0:	34 03 ff fd 	mvi r3,-3                                      
 800a9f4:	a0 23 08 00 	and r1,r1,r3                                   
    current_state =                                                   
    the_thread->current_state = _States_Clear(STATES_SUSPENDED, current_state);
 800a9f8:	58 41 00 10 	sw (r2+16),r1                                  
                                                                      
    if ( _States_Is_ready( current_state ) ) {                        
 800a9fc:	44 20 00 06 	be r1,r0,800aa14 <_Thread_Resume+0x50>         
      _Scheduler_Unblock( &_Scheduler, the_thread );                  
    }                                                                 
  }                                                                   
                                                                      
  _ISR_Enable( level );                                               
 800aa00:	d0 0b 00 00 	wcsr IE,r11                                    
}                                                                     
 800aa04:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800aa08:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800aa0c:	37 9c 00 08 	addi sp,sp,8                                   
 800aa10:	c3 a0 00 00 	ret                                            
RTEMS_INLINE_ROUTINE void _Scheduler_Unblock(                         
    Scheduler_Control *the_scheduler,                                 
    Thread_Control    *the_thread                                     
)                                                                     
{                                                                     
  the_scheduler->Operations.unblock( the_scheduler, the_thread );     
 800aa14:	78 01 08 01 	mvhi r1,0x801                                  
 800aa18:	38 21 a9 f4 	ori r1,r1,0xa9f4                               
 800aa1c:	28 23 00 10 	lw r3,(r1+16)                                  
 800aa20:	d8 60 00 00 	call r3                                        
    if ( _States_Is_ready( current_state ) ) {                        
      _Scheduler_Unblock( &_Scheduler, the_thread );                  
    }                                                                 
  }                                                                   
                                                                      
  _ISR_Enable( level );                                               
 800aa24:	d0 0b 00 00 	wcsr IE,r11                                    
}                                                                     
 800aa28:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800aa2c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800aa30:	37 9c 00 08 	addi sp,sp,8                                   
 800aa34:	c3 a0 00 00 	ret                                            
                                                                      

080065e4 <_Thread_Tickle_timeslice>: * * Output parameters: NONE */ void _Thread_Tickle_timeslice( void ) {
 80065e4:	37 9c ff f8 	addi sp,sp,-8                                  
 80065e8:	5b 8b 00 08 	sw (sp+8),r11                                  
 80065ec:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control *executing;                                          
                                                                      
  executing = _Thread_Executing;                                      
 80065f0:	78 01 08 01 	mvhi r1,0x801                                  
 80065f4:	38 21 4d 78 	ori r1,r1,0x4d78                               
 80065f8:	28 2b 00 0c 	lw r11,(r1+12)                                 
  /*                                                                  
   *  If the thread is not preemptible or is not ready, then          
   *  just return.                                                    
   */                                                                 
                                                                      
  if ( !executing->is_preemptible )                                   
 80065fc:	41 61 00 74 	lbu r1,(r11+116)                               
 8006600:	44 20 00 09 	be r1,r0,8006624 <_Thread_Tickle_timeslice+0x40>
    return;                                                           
                                                                      
  if ( !_States_Is_ready( executing->current_state ) )                
 8006604:	29 61 00 10 	lw r1,(r11+16)                                 
 8006608:	5c 20 00 07 	bne r1,r0,8006624 <_Thread_Tickle_timeslice+0x40><== NEVER TAKEN
                                                                      
  /*                                                                  
   *  The cpu budget algorithm determines what happens next.          
   */                                                                 
                                                                      
  switch ( executing->budget_algorithm ) {                            
 800660c:	29 61 00 7c 	lw r1,(r11+124)                                
 8006610:	44 20 00 05 	be r1,r0,8006624 <_Thread_Tickle_timeslice+0x40>
 8006614:	34 02 00 02 	mvi r2,2                                       
 8006618:	50 41 00 0f 	bgeu r2,r1,8006654 <_Thread_Tickle_timeslice+0x70>
 800661c:	34 02 00 03 	mvi r2,3                                       
 8006620:	44 22 00 05 	be r1,r2,8006634 <_Thread_Tickle_timeslice+0x50><== ALWAYS TAKEN
	if ( --executing->cpu_time_budget == 0 )                             
	  (*executing->budget_callout)( executing );                         
	break;                                                               
    #endif                                                            
  }                                                                   
}                                                                     
 8006624:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006628:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800662c:	37 9c 00 08 	addi sp,sp,8                                   
 8006630:	c3 a0 00 00 	ret                                            
      }                                                               
      break;                                                          
                                                                      
    #if defined(RTEMS_SCORE_THREAD_ENABLE_SCHEDULER_CALLOUT)          
      case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:                       
	if ( --executing->cpu_time_budget == 0 )                             
 8006634:	29 61 00 78 	lw r1,(r11+120)                                
 8006638:	34 21 ff ff 	addi r1,r1,-1                                  
 800663c:	59 61 00 78 	sw (r11+120),r1                                
 8006640:	5c 20 ff f9 	bne r1,r0,8006624 <_Thread_Tickle_timeslice+0x40>
	  (*executing->budget_callout)( executing );                         
 8006644:	29 62 00 80 	lw r2,(r11+128)                                
 8006648:	b9 60 08 00 	mv r1,r11                                      
 800664c:	d8 40 00 00 	call r2                                        
 8006650:	e3 ff ff f5 	bi 8006624 <_Thread_Tickle_timeslice+0x40>     
                                                                      
    case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE:                 
    #if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE)          
      case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE:             
    #endif                                                            
      if ( (int)(--executing->cpu_time_budget) <= 0 ) {               
 8006654:	29 61 00 78 	lw r1,(r11+120)                                
 8006658:	34 21 ff ff 	addi r1,r1,-1                                  
 800665c:	59 61 00 78 	sw (r11+120),r1                                
 8006660:	48 20 ff f1 	bg r1,r0,8006624 <_Thread_Tickle_timeslice+0x40>
 *  always operates on the scheduler that 'owns' the currently executing
 *  thread.                                                           
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void )                    
{                                                                     
  _Scheduler.Operations.yield( &_Scheduler );                         
 8006664:	78 01 08 01 	mvhi r1,0x801                                  
 8006668:	38 21 49 2c 	ori r1,r1,0x492c                               
 800666c:	28 22 00 08 	lw r2,(r1+8)                                   
 8006670:	d8 40 00 00 	call r2                                        
         *  executing thread's timeslice is reset.  Otherwise, the    
         *  currently executing thread is placed at the rear of the   
         *  FIFO for this priority and a new heir is selected.        
         */                                                           
        _Scheduler_Yield( );                                          
        executing->cpu_time_budget = _Thread_Ticks_per_timeslice;     
 8006674:	78 01 08 01 	mvhi r1,0x801                                  
 8006678:	38 21 48 40 	ori r1,r1,0x4840                               
 800667c:	28 21 00 00 	lw r1,(r1+0)                                   
 8006680:	59 61 00 78 	sw (r11+120),r1                                
 8006684:	e3 ff ff e8 	bi 8006624 <_Thread_Tickle_timeslice+0x40>     
                                                                      

0800a6a4 <_Thread_blocking_operation_Cancel>: Thread_blocking_operation_States sync_state __attribute__((unused)), #endif Thread_Control *the_thread, ISR_Level level ) {
 800a6a4:	37 9c ff f8 	addi sp,sp,-8                                  <== NOT EXECUTED
 800a6a8:	5b 8b 00 08 	sw (sp+8),r11                                  <== NOT EXECUTED
 800a6ac:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 800a6b0:	b8 40 58 00 	mv r11,r2                                      <== NOT EXECUTED
                                                                      
  /*                                                                  
   *  If the sync state is timed out, this is very likely not needed. 
   *  But better safe than sorry when it comes to critical sections.  
   */                                                                 
  if ( _Watchdog_Is_active( &the_thread->Timer ) ) {                  
 800a6b4:	28 42 00 50 	lw r2,(r2+80)                                  <== NOT EXECUTED
  #endif                                                              
                                                                      
  /*                                                                  
   * The thread is not waiting on anything after this completes.      
   */                                                                 
  the_thread->Wait.queue = NULL;                                      
 800a6b8:	59 60 00 44 	sw (r11+68),r0                                 <== NOT EXECUTED
                                                                      
  /*                                                                  
   *  If the sync state is timed out, this is very likely not needed. 
   *  But better safe than sorry when it comes to critical sections.  
   */                                                                 
  if ( _Watchdog_Is_active( &the_thread->Timer ) ) {                  
 800a6bc:	34 01 00 02 	mvi r1,2                                       <== NOT EXECUTED
 800a6c0:	44 41 00 0b 	be r2,r1,800a6ec <_Thread_blocking_operation_Cancel+0x48><== NOT EXECUTED
    _Watchdog_Deactivate( &the_thread->Timer );                       
    _ISR_Enable( level );                                             
    (void) _Watchdog_Remove( &the_thread->Timer );                    
  } else                                                              
    _ISR_Enable( level );                                             
 800a6c4:	d0 03 00 00 	wcsr IE,r3                                     <== NOT EXECUTED
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
 800a6c8:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 800a6cc:	38 21 36 20 	ori r1,r1,0x3620                               <== NOT EXECUTED
 800a6d0:	28 22 00 00 	lw r2,(r1+0)                                   <== NOT EXECUTED
 800a6d4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800a6d8:	f8 00 00 0b 	calli 800a704 <_Thread_Clear_state>            <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)                                    
  if ( !_Objects_Is_local_id( the_thread->Object.id ) )               
    _Thread_MP_Free_proxy( the_thread );                              
#endif                                                                
                                                                      
}                                                                     
 800a6dc:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800a6e0:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 800a6e4:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 800a6e8:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(                       
  Watchdog_Control *the_watchdog                                      
)                                                                     
{                                                                     
                                                                      
  the_watchdog->state = WATCHDOG_REMOVE_IT;                           
 800a6ec:	34 01 00 03 	mvi r1,3                                       <== NOT EXECUTED
 800a6f0:	59 61 00 50 	sw (r11+80),r1                                 <== NOT EXECUTED
   *  If the sync state is timed out, this is very likely not needed. 
   *  But better safe than sorry when it comes to critical sections.  
   */                                                                 
  if ( _Watchdog_Is_active( &the_thread->Timer ) ) {                  
    _Watchdog_Deactivate( &the_thread->Timer );                       
    _ISR_Enable( level );                                             
 800a6f4:	d0 03 00 00 	wcsr IE,r3                                     <== NOT EXECUTED
    (void) _Watchdog_Remove( &the_thread->Timer );                    
 800a6f8:	35 61 00 48 	addi r1,r11,72                                 <== NOT EXECUTED
 800a6fc:	fb ff f1 85 	calli 8006d10 <_Watchdog_Remove>               <== NOT EXECUTED
 800a700:	e3 ff ff f2 	bi 800a6c8 <_Thread_blocking_operation_Cancel+0x24><== NOT EXECUTED
                                                                      

08005d00 <_Thread_queue_Dequeue>: */ Thread_Control *_Thread_queue_Dequeue( Thread_queue_Control *the_thread_queue ) {
 8005d00:	37 9c ff f8 	addi sp,sp,-8                                  
 8005d04:	5b 8b 00 08 	sw (sp+8),r11                                  
 8005d08:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control *(*dequeue_p)( Thread_queue_Control * );             
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  Thread_blocking_operation_States  sync_state;                       
                                                                      
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 8005d0c:	28 23 00 34 	lw r3,(r1+52)                                  
 */                                                                   
                                                                      
Thread_Control *_Thread_queue_Dequeue(                                
  Thread_queue_Control *the_thread_queue                              
)                                                                     
{                                                                     
 8005d10:	b8 20 58 00 	mv r11,r1                                      
  Thread_blocking_operation_States  sync_state;                       
                                                                      
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
    dequeue_p = _Thread_queue_Dequeue_priority;                       
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    dequeue_p = _Thread_queue_Dequeue_fifo;                           
 8005d14:	78 02 08 00 	mvhi r2,0x800                                  
  Thread_Control *(*dequeue_p)( Thread_queue_Control * );             
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  Thread_blocking_operation_States  sync_state;                       
                                                                      
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 8005d18:	34 01 00 01 	mvi r1,1                                       
    dequeue_p = _Thread_queue_Dequeue_priority;                       
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    dequeue_p = _Thread_queue_Dequeue_fifo;                           
 8005d1c:	38 42 a7 c8 	ori r2,r2,0xa7c8                               
  Thread_Control *(*dequeue_p)( Thread_queue_Control * );             
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  Thread_blocking_operation_States  sync_state;                       
                                                                      
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 8005d20:	44 61 00 0d 	be r3,r1,8005d54 <_Thread_queue_Dequeue+0x54>  
    dequeue_p = _Thread_queue_Dequeue_priority;                       
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    dequeue_p = _Thread_queue_Dequeue_fifo;                           
                                                                      
  the_thread = (*dequeue_p)( the_thread_queue );                      
 8005d24:	b9 60 08 00 	mv r1,r11                                      
 8005d28:	d8 40 00 00 	call r2                                        
  _ISR_Disable( level );                                              
 8005d2c:	90 00 10 00 	rcsr r2,IE                                     
 8005d30:	34 03 ff fe 	mvi r3,-2                                      
 8005d34:	a0 43 18 00 	and r3,r2,r3                                   
 8005d38:	d0 03 00 00 	wcsr IE,r3                                     
    if ( !the_thread ) {                                              
 8005d3c:	44 20 00 0f 	be r1,r0,8005d78 <_Thread_queue_Dequeue+0x78>  
           (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
        the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
        the_thread = _Thread_Executing;                               
      }                                                               
    }                                                                 
  _ISR_Enable( level );                                               
 8005d40:	d0 02 00 00 	wcsr IE,r2                                     
  return the_thread;                                                  
}                                                                     
 8005d44:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005d48:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8005d4c:	37 9c 00 08 	addi sp,sp,8                                   
 8005d50:	c3 a0 00 00 	ret                                            
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  Thread_blocking_operation_States  sync_state;                       
                                                                      
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
    dequeue_p = _Thread_queue_Dequeue_priority;                       
 8005d54:	78 02 08 00 	mvhi r2,0x800                                  
 8005d58:	38 42 5d a0 	ori r2,r2,0x5da0                               
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    dequeue_p = _Thread_queue_Dequeue_fifo;                           
                                                                      
  the_thread = (*dequeue_p)( the_thread_queue );                      
 8005d5c:	b9 60 08 00 	mv r1,r11                                      
 8005d60:	d8 40 00 00 	call r2                                        
  _ISR_Disable( level );                                              
 8005d64:	90 00 10 00 	rcsr r2,IE                                     
 8005d68:	34 03 ff fe 	mvi r3,-2                                      
 8005d6c:	a0 43 18 00 	and r3,r2,r3                                   
 8005d70:	d0 03 00 00 	wcsr IE,r3                                     
    if ( !the_thread ) {                                              
 8005d74:	5c 20 ff f3 	bne r1,r0,8005d40 <_Thread_queue_Dequeue+0x40> 
      sync_state = the_thread_queue->sync_state;                      
      if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||       
 8005d78:	29 64 00 30 	lw r4,(r11+48)                                 
 8005d7c:	34 03 00 01 	mvi r3,1                                       
 8005d80:	34 84 ff ff 	addi r4,r4,-1                                  
 8005d84:	54 83 ff ef 	bgu r4,r3,8005d40 <_Thread_queue_Dequeue+0x40> <== ALWAYS TAKEN
           (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
        the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
        the_thread = _Thread_Executing;                               
 8005d88:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 8005d8c:	38 21 4d 78 	ori r1,r1,0x4d78                               <== NOT EXECUTED
  _ISR_Disable( level );                                              
    if ( !the_thread ) {                                              
      sync_state = the_thread_queue->sync_state;                      
      if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||       
           (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
        the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
 8005d90:	34 03 00 03 	mvi r3,3                                       <== NOT EXECUTED
        the_thread = _Thread_Executing;                               
 8005d94:	28 21 00 0c 	lw r1,(r1+12)                                  <== NOT EXECUTED
  _ISR_Disable( level );                                              
    if ( !the_thread ) {                                              
      sync_state = the_thread_queue->sync_state;                      
      if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||       
           (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
        the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
 8005d98:	59 63 00 30 	sw (r11+48),r3                                 <== NOT EXECUTED
 8005d9c:	e3 ff ff e9 	bi 8005d40 <_Thread_queue_Dequeue+0x40>        <== NOT EXECUTED
                                                                      

0800a894 <_Thread_queue_Enqueue_fifo>: ) { Thread_blocking_operation_States sync_state; ISR_Level level; _ISR_Disable( level );
 800a894:	90 00 20 00 	rcsr r4,IE                                     
 800a898:	34 05 ff fe 	mvi r5,-2                                      
 800a89c:	a0 85 28 00 	and r5,r4,r5                                   
 800a8a0:	d0 05 00 00 	wcsr IE,r5                                     
                                                                      
    sync_state = the_thread_queue->sync_state;                        
 800a8a4:	28 25 00 30 	lw r5,(r1+48)                                  
    the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
    if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) {   
 800a8a8:	34 06 00 01 	mvi r6,1                                       
  ISR_Level                        level;                             
                                                                      
  _ISR_Disable( level );                                              
                                                                      
    sync_state = the_thread_queue->sync_state;                        
    the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
 800a8ac:	58 20 00 30 	sw (r1+48),r0                                  
    if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) {   
 800a8b0:	44 a6 00 04 	be r5,r6,800a8c0 <_Thread_queue_Enqueue_fifo+0x2c><== ALWAYS TAKEN
   *  For example, the blocking thread could have been given          
   *  the mutex by an ISR or timed out.                               
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
 800a8b4:	58 64 00 00 	sw (r3+0),r4                                   <== NOT EXECUTED
  return sync_state;                                                  
}                                                                     
 800a8b8:	b8 a0 08 00 	mv r1,r5                                       <== NOT EXECUTED
 800a8bc:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 800a8c0:	28 23 00 08 	lw r3,(r1+8)                                   
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(                  
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 800a8c4:	34 26 00 04 	addi r6,r1,4                                   
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
 800a8c8:	58 46 00 00 	sw (r2+0),r6                                   
  tail->previous = the_node;                                          
 800a8cc:	58 22 00 08 	sw (r1+8),r2                                   
  old_last->next = the_node;                                          
 800a8d0:	58 62 00 00 	sw (r3+0),r2                                   
  the_node->previous = old_last;                                      
 800a8d4:	58 43 00 04 	sw (r2+4),r3                                   
    if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) {   
      _Chain_Append_unprotected(                                      
        &the_thread_queue->Queues.Fifo,                               
        &the_thread->Object.Node                                      
      );                                                              
      the_thread->Wait.queue = the_thread_queue;                      
 800a8d8:	58 41 00 44 	sw (r2+68),r1                                  
                                                                      
      the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
      _ISR_Enable( level );                                           
 800a8dc:	d0 04 00 00 	wcsr IE,r4                                     
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return sync_state;                                                  
}                                                                     
 800a8e0:	b8 a0 08 00 	mv r1,r5                                       
 800a8e4:	c3 a0 00 00 	ret                                            
                                                                      

08005fac <_Thread_queue_Enqueue_priority>: Thread_blocking_operation_States _Thread_queue_Enqueue_priority ( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread, ISR_Level *level_p ) {
 8005fac:	37 9c ff f4 	addi sp,sp,-12                                 
 8005fb0:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8005fb4:	5b 8c 00 08 	sw (sp+8),r12                                  
 8005fb8:	5b 8d 00 04 	sw (sp+4),r13                                  
  Priority_Control     priority;                                      
  States_Control       block_state;                                   
                                                                      
  _Chain_Initialize_empty( &the_thread->Wait.Block2n );               
                                                                      
  priority     = the_thread->current_priority;                        
 8005fbc:	28 45 00 14 	lw r5,(r2+20)                                  
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 );                        
 8005fc0:	34 47 00 3c 	addi r7,r2,60                                  
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 8005fc4:	34 46 00 38 	addi r6,r2,56                                  
                                                                      
RTEMS_INLINE_ROUTINE uint32_t   _Thread_queue_Header_number (         
  Priority_Control the_priority                                       
)                                                                     
{                                                                     
  return (the_priority / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER);      
 8005fc8:	00 a4 00 01 	srui r4,r5,1                                   
 8005fcc:	78 0c 08 01 	mvhi r12,0x801                                 
 8005fd0:	00 84 00 01 	srui r4,r4,1                                   
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 8005fd4:	58 47 00 38 	sw (r2+56),r7                                  
 8005fd8:	00 84 00 01 	srui r4,r4,1                                   
  head->previous = NULL;                                              
  tail->previous = head;                                              
 8005fdc:	58 46 00 40 	sw (r2+64),r6                                  
 8005fe0:	00 84 00 01 	srui r4,r4,1                                   
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
 8005fe4:	58 40 00 3c 	sw (r2+60),r0                                  
 8005fe8:	00 84 00 01 	srui r4,r4,1                                   
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_queue_Is_reverse_search (           
  Priority_Control the_priority                                       
)                                                                     
{                                                                     
  return ( the_priority & TASK_QUEUE_DATA_REVERSE_SEARCH_MASK );      
 8005fec:	20 a8 00 20 	andi r8,r5,0x20                                
                                                                      
RTEMS_INLINE_ROUTINE uint32_t   _Thread_queue_Header_number (         
  Priority_Control the_priority                                       
)                                                                     
{                                                                     
  return (the_priority / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER);      
 8005ff0:	00 84 00 01 	srui r4,r4,1                                   
  header_index = _Thread_queue_Header_number( priority );             
  header       = &the_thread_queue->Queues.Priority[ header_index ];  
  block_state  = the_thread_queue->state;                             
 8005ff4:	28 27 00 38 	lw r7,(r1+56)                                  
 8005ff8:	b4 84 30 00 	add r6,r4,r4                                   
 8005ffc:	39 8c 40 c0 	ori r12,r12,0x40c0                             
                                                                      
  if ( _Thread_queue_Is_reverse_search( priority ) )                  
 8006000:	5d 00 00 18 	bne r8,r0,8006060 <_Thread_queue_Enqueue_priority+0xb4>
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 8006004:	b4 c4 20 00 	add r4,r6,r4                                   
 8006008:	b4 84 20 00 	add r4,r4,r4                                   
 800600c:	b4 84 20 00 	add r4,r4,r4                                   
 8006010:	b4 24 60 00 	add r12,r1,r4                                  
  if ( _Thread_queue_Is_reverse_search( priority ) )                  
    goto restart_reverse_search;                                      
                                                                      
restart_forward_search:                                               
  search_priority = PRIORITY_MINIMUM - 1;                             
  _ISR_Disable( level );                                              
 8006014:	34 0d ff fe 	mvi r13,-2                                     
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  Chain_Control *the_chain,                                           
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Tail(the_chain));                        
 8006018:	35 8b 00 04 	addi r11,r12,4                                 
 800601c:	90 00 40 00 	rcsr r8,IE                                     
 8006020:	a1 0d 50 00 	and r10,r8,r13                                 
 8006024:	d0 0a 00 00 	wcsr IE,r10                                    
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 8006028:	29 84 00 00 	lw r4,(r12+0)                                  
                                                                      
restart_forward_search:                                               
  search_priority = PRIORITY_MINIMUM - 1;                             
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) _Chain_First( header );          
  while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {  
 800602c:	5c 8b 00 04 	bne r4,r11,800603c <_Thread_queue_Enqueue_priority+0x90>
 8006030:	e0 00 00 24 	bi 80060c0 <_Thread_queue_Enqueue_priority+0x114>
    if ( !_States_Are_set( search_thread->current_state, block_state) ) {
      _ISR_Enable( level );                                           
      goto restart_forward_search;                                    
    }                                                                 
    search_thread =                                                   
       (Thread_Control *)search_thread->Object.Node.next;             
 8006034:	28 84 00 00 	lw r4,(r4+0)                                   
                                                                      
restart_forward_search:                                               
  search_priority = PRIORITY_MINIMUM - 1;                             
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) _Chain_First( header );          
  while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {  
 8006038:	44 8b 00 23 	be r4,r11,80060c4 <_Thread_queue_Enqueue_priority+0x118>
    search_priority = search_thread->current_priority;                
 800603c:	28 86 00 14 	lw r6,(r4+20)                                  
    if ( priority <= search_priority )                                
 8006040:	50 c5 00 21 	bgeu r6,r5,80060c4 <_Thread_queue_Enqueue_priority+0x118>
      break;                                                          
    search_priority = search_thread->current_priority;                
    if ( priority <= search_priority )                                
      break;                                                          
#endif                                                                
    _ISR_Flash( level );                                              
 8006044:	d0 08 00 00 	wcsr IE,r8                                     
 8006048:	d0 0a 00 00 	wcsr IE,r10                                    
RTEMS_INLINE_ROUTINE bool _States_Are_set (                           
  States_Control the_states,                                          
  States_Control mask                                                 
)                                                                     
{                                                                     
   return ( (the_states & mask) != STATES_READY);                     
 800604c:	28 89 00 10 	lw r9,(r4+16)                                  
 8006050:	a0 e9 48 00 	and r9,r7,r9                                   
    if ( !_States_Are_set( search_thread->current_state, block_state) ) {
 8006054:	5d 20 ff f8 	bne r9,r0,8006034 <_Thread_queue_Enqueue_priority+0x88><== ALWAYS TAKEN
      _ISR_Enable( level );                                           
 8006058:	d0 08 00 00 	wcsr IE,r8                                     <== NOT EXECUTED
      goto restart_forward_search;                                    
 800605c:	e3 ff ff f0 	bi 800601c <_Thread_queue_Enqueue_priority+0x70><== NOT EXECUTED
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 8006060:	b4 c4 20 00 	add r4,r6,r4                                   
 8006064:	b4 84 20 00 	add r4,r4,r4                                   
 8006068:	b4 84 20 00 	add r4,r4,r4                                   
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
restart_reverse_search:                                               
  search_priority     = PRIORITY_MAXIMUM + 1;                         
                                                                      
  _ISR_Disable( level );                                              
 800606c:	34 0d ff fe 	mvi r13,-2                                     
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 8006070:	b4 24 50 00 	add r10,r1,r4                                  
  the_thread->Wait.queue = the_thread_queue;                          
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
restart_reverse_search:                                               
  search_priority     = PRIORITY_MAXIMUM + 1;                         
 8006074:	41 86 00 00 	lbu r6,(r12+0)                                 
 8006078:	34 c6 00 01 	addi r6,r6,1                                   
                                                                      
  _ISR_Disable( level );                                              
 800607c:	90 00 40 00 	rcsr r8,IE                                     
 8006080:	a1 0d 58 00 	and r11,r8,r13                                 
 8006084:	d0 0b 00 00 	wcsr IE,r11                                    
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 8006088:	29 44 00 08 	lw r4,(r10+8)                                  
restart_reverse_search:                                               
  search_priority     = PRIORITY_MAXIMUM + 1;                         
                                                                      
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) _Chain_Last( header );           
  while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {  
 800608c:	5c 8a 00 04 	bne r4,r10,800609c <_Thread_queue_Enqueue_priority+0xf0>
 8006090:	e0 00 00 18 	bi 80060f0 <_Thread_queue_Enqueue_priority+0x144>
    if ( !_States_Are_set( search_thread->current_state, block_state) ) {
      _ISR_Enable( level );                                           
      goto restart_reverse_search;                                    
    }                                                                 
    search_thread = (Thread_Control *)                                
                         search_thread->Object.Node.previous;         
 8006094:	28 84 00 04 	lw r4,(r4+4)                                   
restart_reverse_search:                                               
  search_priority     = PRIORITY_MAXIMUM + 1;                         
                                                                      
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) _Chain_Last( header );           
  while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {  
 8006098:	44 8a 00 16 	be r4,r10,80060f0 <_Thread_queue_Enqueue_priority+0x144>
    search_priority = search_thread->current_priority;                
 800609c:	28 86 00 14 	lw r6,(r4+20)                                  
    if ( priority >= search_priority )                                
 80060a0:	50 a6 00 14 	bgeu r5,r6,80060f0 <_Thread_queue_Enqueue_priority+0x144>
      break;                                                          
    search_priority = search_thread->current_priority;                
    if ( priority >= search_priority )                                
      break;                                                          
#endif                                                                
    _ISR_Flash( level );                                              
 80060a4:	d0 08 00 00 	wcsr IE,r8                                     
 80060a8:	d0 0b 00 00 	wcsr IE,r11                                    
 80060ac:	28 89 00 10 	lw r9,(r4+16)                                  
 80060b0:	a0 e9 48 00 	and r9,r7,r9                                   
    if ( !_States_Are_set( search_thread->current_state, block_state) ) {
 80060b4:	5d 20 ff f8 	bne r9,r0,8006094 <_Thread_queue_Enqueue_priority+0xe8><== ALWAYS TAKEN
      _ISR_Enable( level );                                           
 80060b8:	d0 08 00 00 	wcsr IE,r8                                     <== NOT EXECUTED
      goto restart_reverse_search;                                    
 80060bc:	e3 ff ff ee 	bi 8006074 <_Thread_queue_Enqueue_priority+0xc8><== NOT EXECUTED
                                                                      
  if ( _Thread_queue_Is_reverse_search( priority ) )                  
    goto restart_reverse_search;                                      
                                                                      
restart_forward_search:                                               
  search_priority = PRIORITY_MINIMUM - 1;                             
 80060c0:	34 06 ff ff 	mvi r6,-1                                      
    }                                                                 
    search_thread =                                                   
       (Thread_Control *)search_thread->Object.Node.next;             
  }                                                                   
                                                                      
  if ( the_thread_queue->sync_state !=                                
 80060c4:	28 27 00 30 	lw r7,(r1+48)                                  
 80060c8:	34 0a 00 01 	mvi r10,1                                      
 80060cc:	b9 00 48 00 	mv r9,r8                                       
 80060d0:	44 ea 00 1b 	be r7,r10,800613c <_Thread_queue_Enqueue_priority+0x190><== ALWAYS TAKEN
   *  For example, the blocking thread could have been given          
   *  the mutex by an ISR or timed out.                               
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
 80060d4:	58 69 00 00 	sw (r3+0),r9                                   <== NOT EXECUTED
  return the_thread_queue->sync_state;                                
}                                                                     
 80060d8:	b8 e0 08 00 	mv r1,r7                                       
 80060dc:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80060e0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80060e4:	2b 8d 00 04 	lw r13,(sp+4)                                  
 80060e8:	37 9c 00 0c 	addi sp,sp,12                                  
 80060ec:	c3 a0 00 00 	ret                                            
    }                                                                 
    search_thread = (Thread_Control *)                                
                         search_thread->Object.Node.previous;         
  }                                                                   
                                                                      
  if ( the_thread_queue->sync_state !=                                
 80060f0:	28 27 00 30 	lw r7,(r1+48)                                  
 80060f4:	34 0a 00 01 	mvi r10,1                                      
 80060f8:	b9 00 48 00 	mv r9,r8                                       
 80060fc:	5c ea ff f6 	bne r7,r10,80060d4 <_Thread_queue_Enqueue_priority+0x128><== NEVER TAKEN
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
 8006100:	58 20 00 30 	sw (r1+48),r0                                  
                                                                      
  if ( priority == search_priority )                                  
 8006104:	44 a6 00 1d 	be r5,r6,8006178 <_Thread_queue_Enqueue_priority+0x1cc>
    goto equal_priority;                                              
                                                                      
  search_node = (Chain_Node *) search_thread;                         
  next_node   = search_node->next;                                    
 8006108:	28 83 00 00 	lw r3,(r4+0)                                   
  the_node    = (Chain_Node *) the_thread;                            
                                                                      
  the_node->next          = next_node;                                
  the_node->previous      = search_node;                              
 800610c:	58 44 00 04 	sw (r2+4),r4                                   
                                                                      
  search_node = (Chain_Node *) search_thread;                         
  next_node   = search_node->next;                                    
  the_node    = (Chain_Node *) the_thread;                            
                                                                      
  the_node->next          = next_node;                                
 8006110:	58 43 00 00 	sw (r2+0),r3                                   
  the_node->previous      = search_node;                              
  search_node->next       = the_node;                                 
 8006114:	58 82 00 00 	sw (r4+0),r2                                   
  next_node->previous    = the_node;                                  
 8006118:	58 62 00 04 	sw (r3+4),r2                                   
  the_thread->Wait.queue = the_thread_queue;                          
 800611c:	58 41 00 44 	sw (r2+68),r1                                  
  _ISR_Enable( level );                                               
 8006120:	d0 08 00 00 	wcsr IE,r8                                     
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 8006124:	b8 e0 08 00 	mv r1,r7                                       
 8006128:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800612c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8006130:	2b 8d 00 04 	lw r13,(sp+4)                                  
 8006134:	37 9c 00 0c 	addi sp,sp,12                                  
 8006138:	c3 a0 00 00 	ret                                            
                                                                      
  if ( the_thread_queue->sync_state !=                                
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
 800613c:	58 20 00 30 	sw (r1+48),r0                                  
                                                                      
  if ( priority == search_priority )                                  
 8006140:	44 a6 00 0e 	be r5,r6,8006178 <_Thread_queue_Enqueue_priority+0x1cc>
    goto equal_priority;                                              
                                                                      
  search_node   = (Chain_Node *) search_thread;                       
  previous_node = search_node->previous;                              
 8006144:	28 83 00 04 	lw r3,(r4+4)                                   
  the_node      = (Chain_Node *) the_thread;                          
                                                                      
  the_node->next         = search_node;                               
 8006148:	58 44 00 00 	sw (r2+0),r4                                   
  the_node->previous     = previous_node;                             
 800614c:	58 43 00 04 	sw (r2+4),r3                                   
  previous_node->next    = the_node;                                  
 8006150:	58 62 00 00 	sw (r3+0),r2                                   
  search_node->previous  = the_node;                                  
 8006154:	58 82 00 04 	sw (r4+4),r2                                   
  the_thread->Wait.queue = the_thread_queue;                          
 8006158:	58 41 00 44 	sw (r2+68),r1                                  
  _ISR_Enable( level );                                               
 800615c:	d0 08 00 00 	wcsr IE,r8                                     
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 8006160:	b8 e0 08 00 	mv r1,r7                                       
 8006164:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8006168:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800616c:	2b 8d 00 04 	lw r13,(sp+4)                                  
 8006170:	37 9c 00 0c 	addi sp,sp,12                                  
 8006174:	c3 a0 00 00 	ret                                            
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
equal_priority:               /* add at end of priority group */      
  search_node   = _Chain_Tail( &search_thread->Wait.Block2n );        
  previous_node = search_node->previous;                              
 8006178:	28 83 00 40 	lw r3,(r4+64)                                  
  the_thread->Wait.queue = the_thread_queue;                          
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
equal_priority:               /* add at end of priority group */      
  search_node   = _Chain_Tail( &search_thread->Wait.Block2n );        
 800617c:	34 85 00 3c 	addi r5,r4,60                                  
  previous_node = search_node->previous;                              
  the_node      = (Chain_Node *) the_thread;                          
                                                                      
  the_node->next         = search_node;                               
 8006180:	58 45 00 00 	sw (r2+0),r5                                   
  the_node->previous     = previous_node;                             
 8006184:	58 43 00 04 	sw (r2+4),r3                                   
  previous_node->next    = the_node;                                  
 8006188:	58 62 00 00 	sw (r3+0),r2                                   
  search_node->previous  = the_node;                                  
 800618c:	58 82 00 40 	sw (r4+64),r2                                  
  the_thread->Wait.queue = the_thread_queue;                          
 8006190:	58 41 00 44 	sw (r2+68),r1                                  
  _ISR_Enable( level );                                               
 8006194:	d0 08 00 00 	wcsr IE,r8                                     
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
 8006198:	34 07 00 01 	mvi r7,1                                       
 800619c:	e3 ff ff cf 	bi 80060d8 <_Thread_queue_Enqueue_priority+0x12c>
                                                                      

08005ed0 <_Thread_queue_Enqueue_with_handler>: void _Thread_queue_Enqueue_with_handler( Thread_queue_Control *the_thread_queue, Watchdog_Interval timeout, Thread_queue_Timeout_callout handler ) {
 8005ed0:	37 9c ff e8 	addi sp,sp,-24                                 
 8005ed4:	5b 8b 00 14 	sw (sp+20),r11                                 
 8005ed8:	5b 8c 00 10 	sw (sp+16),r12                                 
 8005edc:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8005ee0:	5b 8e 00 08 	sw (sp+8),r14                                  
 8005ee4:	5b 9d 00 04 	sw (sp+4),ra                                   
    Thread_queue_Control *,                                           
    Thread_Control *,                                                 
    ISR_Level *                                                       
  );                                                                  
                                                                      
  the_thread = _Thread_Executing;                                     
 8005ee8:	78 04 08 01 	mvhi r4,0x801                                  
 8005eec:	38 84 4d 78 	ori r4,r4,0x4d78                               
 8005ef0:	28 8b 00 0c 	lw r11,(r4+12)                                 
void _Thread_queue_Enqueue_with_handler(                              
  Thread_queue_Control         *the_thread_queue,                     
  Watchdog_Interval             timeout,                              
  Thread_queue_Timeout_callout  handler                               
)                                                                     
{                                                                     
 8005ef4:	b8 40 68 00 	mv r13,r2                                      
  else                                                                
#endif                                                                
  /*                                                                  
   *  Set the blocking state for this thread queue in the thread.     
   */                                                                 
  _Thread_Set_state( the_thread, the_thread_queue->state );           
 8005ef8:	28 22 00 38 	lw r2,(r1+56)                                  
void _Thread_queue_Enqueue_with_handler(                              
  Thread_queue_Control         *the_thread_queue,                     
  Watchdog_Interval             timeout,                              
  Thread_queue_Timeout_callout  handler                               
)                                                                     
{                                                                     
 8005efc:	b8 20 60 00 	mv r12,r1                                      
  else                                                                
#endif                                                                
  /*                                                                  
   *  Set the blocking state for this thread queue in the thread.     
   */                                                                 
  _Thread_Set_state( the_thread, the_thread_queue->state );           
 8005f00:	b9 60 08 00 	mv r1,r11                                      
void _Thread_queue_Enqueue_with_handler(                              
  Thread_queue_Control         *the_thread_queue,                     
  Watchdog_Interval             timeout,                              
  Thread_queue_Timeout_callout  handler                               
)                                                                     
{                                                                     
 8005f04:	b8 60 70 00 	mv r14,r3                                      
  else                                                                
#endif                                                                
  /*                                                                  
   *  Set the blocking state for this thread queue in the thread.     
   */                                                                 
  _Thread_Set_state( the_thread, the_thread_queue->state );           
 8005f08:	f8 00 01 1b 	calli 8006374 <_Thread_Set_state>              
                                                                      
  /*                                                                  
   *  If the thread wants to timeout, then schedule its timer.        
   */                                                                 
  if ( timeout ) {                                                    
 8005f0c:	5d a0 00 16 	bne r13,r0,8005f64 <_Thread_queue_Enqueue_with_handler+0x94>
  }                                                                   
                                                                      
  /*                                                                  
   *  Now enqueue the thread per the discipline for this thread queue.
   */                                                                 
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 8005f10:	29 82 00 34 	lw r2,(r12+52)                                 
    enqueue_p = _Thread_queue_Enqueue_priority;                       
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    enqueue_p = _Thread_queue_Enqueue_fifo;                           
 8005f14:	78 04 08 00 	mvhi r4,0x800                                  
  }                                                                   
                                                                      
  /*                                                                  
   *  Now enqueue the thread per the discipline for this thread queue.
   */                                                                 
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 8005f18:	34 01 00 01 	mvi r1,1                                       
    enqueue_p = _Thread_queue_Enqueue_priority;                       
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    enqueue_p = _Thread_queue_Enqueue_fifo;                           
 8005f1c:	38 84 a8 94 	ori r4,r4,0xa894                               
  }                                                                   
                                                                      
  /*                                                                  
   *  Now enqueue the thread per the discipline for this thread queue.
   */                                                                 
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 8005f20:	44 41 00 20 	be r2,r1,8005fa0 <_Thread_queue_Enqueue_with_handler+0xd0>
    enqueue_p = _Thread_queue_Enqueue_priority;                       
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    enqueue_p = _Thread_queue_Enqueue_fifo;                           
                                                                      
  sync_state = (*enqueue_p)( the_thread_queue, the_thread, &level );  
 8005f24:	b9 60 10 00 	mv r2,r11                                      
 8005f28:	b9 80 08 00 	mv r1,r12                                      
 8005f2c:	37 83 00 18 	addi r3,sp,24                                  
 8005f30:	d8 80 00 00 	call r4                                        
  if ( sync_state != THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )     
 8005f34:	34 02 00 01 	mvi r2,1                                       
 8005f38:	44 22 00 04 	be r1,r2,8005f48 <_Thread_queue_Enqueue_with_handler+0x78><== ALWAYS TAKEN
    _Thread_blocking_operation_Cancel( sync_state, the_thread, level );
 8005f3c:	2b 83 00 18 	lw r3,(sp+24)                                  <== NOT EXECUTED
 8005f40:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8005f44:	f8 00 11 d8 	calli 800a6a4 <_Thread_blocking_operation_Cancel><== NOT EXECUTED
}                                                                     
 8005f48:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005f4c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8005f50:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8005f54:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8005f58:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8005f5c:	37 9c 00 18 	addi sp,sp,24                                  
 8005f60:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  If the thread wants to timeout, then schedule its timer.        
   */                                                                 
  if ( timeout ) {                                                    
    _Watchdog_Initialize(                                             
 8005f64:	29 61 00 08 	lw r1,(r11+8)                                  
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8005f68:	35 62 00 48 	addi r2,r11,72                                 
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 8005f6c:	59 60 00 50 	sw (r11+80),r0                                 
  the_watchdog->routine   = routine;                                  
  the_watchdog->id        = id;                                       
 8005f70:	59 61 00 68 	sw (r11+104),r1                                
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8005f74:	78 01 08 01 	mvhi r1,0x801                                  
 8005f78:	38 21 49 88 	ori r1,r1,0x4988                               
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
 8005f7c:	59 6e 00 64 	sw (r11+100),r14                               
  the_watchdog->id        = id;                                       
  the_watchdog->user_data = user_data;                                
 8005f80:	59 60 00 6c 	sw (r11+108),r0                                
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8005f84:	59 6d 00 54 	sw (r11+84),r13                                
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8005f88:	f8 00 02 f9 	calli 8006b6c <_Watchdog_Insert>               
  }                                                                   
                                                                      
  /*                                                                  
   *  Now enqueue the thread per the discipline for this thread queue.
   */                                                                 
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 8005f8c:	29 82 00 34 	lw r2,(r12+52)                                 
    enqueue_p = _Thread_queue_Enqueue_priority;                       
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    enqueue_p = _Thread_queue_Enqueue_fifo;                           
 8005f90:	78 04 08 00 	mvhi r4,0x800                                  
  }                                                                   
                                                                      
  /*                                                                  
   *  Now enqueue the thread per the discipline for this thread queue.
   */                                                                 
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 8005f94:	34 01 00 01 	mvi r1,1                                       
    enqueue_p = _Thread_queue_Enqueue_priority;                       
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    enqueue_p = _Thread_queue_Enqueue_fifo;                           
 8005f98:	38 84 a8 94 	ori r4,r4,0xa894                               
  }                                                                   
                                                                      
  /*                                                                  
   *  Now enqueue the thread per the discipline for this thread queue.
   */                                                                 
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 8005f9c:	5c 41 ff e2 	bne r2,r1,8005f24 <_Thread_queue_Enqueue_with_handler+0x54>
    enqueue_p = _Thread_queue_Enqueue_priority;                       
 8005fa0:	78 04 08 00 	mvhi r4,0x800                                  
 8005fa4:	38 84 5f ac 	ori r4,r4,0x5fac                               
 8005fa8:	e3 ff ff df 	bi 8005f24 <_Thread_queue_Enqueue_with_handler+0x54>
                                                                      

0800aa74 <_Thread_queue_Process_timeout>: #include <rtems/score/tqdata.h> void _Thread_queue_Process_timeout( Thread_Control *the_thread ) {
 800aa74:	37 9c ff fc 	addi sp,sp,-4                                  
 800aa78:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_queue_Control *the_thread_queue = the_thread->Wait.queue;    
 800aa7c:	28 23 00 44 	lw r3,(r1+68)                                  
#include <rtems/score/tqdata.h>                                       
                                                                      
void _Thread_queue_Process_timeout(                                   
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
 800aa80:	b8 20 20 00 	mv r4,r1                                       
   *  If it is not satisfied, then it is "nothing happened" and       
   *  this is the "timeout" transition.  After a request is satisfied,
   *  a timeout is not allowed to occur.                              
   */                                                                 
                                                                      
  if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SYNCHRONIZED &&
 800aa84:	28 62 00 30 	lw r2,(r3+48)                                  
 800aa88:	44 40 00 05 	be r2,r0,800aa9c <_Thread_queue_Process_timeout+0x28><== ALWAYS TAKEN
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (                      
  const Thread_Control *the_thread                                    
)                                                                     
{                                                                     
  return ( the_thread == _Thread_Executing );                         
 800aa8c:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 800aa90:	38 21 4d 78 	ori r1,r1,0x4d78                               <== NOT EXECUTED
 800aa94:	28 21 00 0c 	lw r1,(r1+12)                                  <== NOT EXECUTED
 800aa98:	44 81 00 09 	be r4,r1,800aabc <_Thread_queue_Process_timeout+0x48><== NOT EXECUTED
    if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) {
      the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
      the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
    }                                                                 
  } else {                                                            
    the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
 800aa9c:	28 65 00 3c 	lw r5,(r3+60)                                  
    _Thread_queue_Extract( the_thread->Wait.queue, the_thread );      
 800aaa0:	b8 60 08 00 	mv r1,r3                                       
 800aaa4:	b8 80 10 00 	mv r2,r4                                       
    if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) {
      the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
      the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
    }                                                                 
  } else {                                                            
    the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
 800aaa8:	58 85 00 34 	sw (r4+52),r5                                  
    _Thread_queue_Extract( the_thread->Wait.queue, the_thread );      
 800aaac:	fb ff ff 8f 	calli 800a8e8 <_Thread_queue_Extract>          
  }                                                                   
}                                                                     
 800aab0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800aab4:	37 9c 00 04 	addi sp,sp,4                                   
 800aab8:	c3 a0 00 00 	ret                                            
   *  a timeout is not allowed to occur.                              
   */                                                                 
                                                                      
  if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SYNCHRONIZED &&
       _Thread_Is_executing( the_thread ) ) {                         
    if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) {
 800aabc:	34 01 00 03 	mvi r1,3                                       <== NOT EXECUTED
 800aac0:	44 41 ff fc 	be r2,r1,800aab0 <_Thread_queue_Process_timeout+0x3c><== NOT EXECUTED
      the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
 800aac4:	28 61 00 3c 	lw r1,(r3+60)                                  <== NOT EXECUTED
 800aac8:	58 81 00 34 	sw (r4+52),r1                                  <== NOT EXECUTED
      the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
 800aacc:	34 01 00 02 	mvi r1,2                                       <== NOT EXECUTED
 800aad0:	58 61 00 30 	sw (r3+48),r1                                  <== NOT EXECUTED
 800aad4:	e3 ff ff f7 	bi 800aab0 <_Thread_queue_Process_timeout+0x3c><== NOT EXECUTED
                                                                      

0800624c <_Thread_queue_Requeue>: void _Thread_queue_Requeue( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread ) {
 800624c:	37 9c ff ec 	addi sp,sp,-20                                 
 8006250:	5b 8b 00 10 	sw (sp+16),r11                                 
 8006254:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8006258:	5b 8d 00 08 	sw (sp+8),r13                                  
 800625c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8006260:	b8 20 58 00 	mv r11,r1                                      
 8006264:	b8 40 60 00 	mv r12,r2                                      
  /*                                                                  
   * Just in case the thread really wasn't blocked on a thread queue  
   * when we get here.                                                
   */                                                                 
  if ( !the_thread_queue )                                            
 8006268:	44 20 00 04 	be r1,r0,8006278 <_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 ) {
 800626c:	28 22 00 34 	lw r2,(r1+52)                                  
 8006270:	34 01 00 01 	mvi r1,1                                       
 8006274:	44 41 00 07 	be r2,r1,8006290 <_Thread_queue_Requeue+0x44>  <== ALWAYS TAKEN
      _Thread_queue_Extract_priority_helper( tq, the_thread, true );  
      (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
    }                                                                 
    _ISR_Enable( level );                                             
  }                                                                   
}                                                                     
 8006278:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800627c:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 8006280:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 8006284:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 8006288:	37 9c 00 14 	addi sp,sp,20                                  <== NOT EXECUTED
 800628c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
    Thread_queue_Control *tq = the_thread_queue;                      
    ISR_Level             level;                                      
    ISR_Level             level_ignored;                              
                                                                      
    _ISR_Disable( level );                                            
 8006290:	90 00 68 00 	rcsr r13,IE                                    
 8006294:	34 01 ff fe 	mvi r1,-2                                      
 8006298:	a1 a1 08 00 	and r1,r13,r1                                  
 800629c:	d0 01 00 00 	wcsr IE,r1                                     
 80062a0:	78 03 08 01 	mvhi r3,0x801                                  
 80062a4:	38 63 36 18 	ori r3,r3,0x3618                               
 80062a8:	29 82 00 10 	lw r2,(r12+16)                                 
 80062ac:	28 61 00 00 	lw r1,(r3+0)                                   
 80062b0:	a0 41 08 00 	and r1,r2,r1                                   
    if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
 80062b4:	5c 20 00 08 	bne r1,r0,80062d4 <_Thread_queue_Requeue+0x88> <== ALWAYS TAKEN
      _Thread_queue_Enter_critical_section( tq );                     
      _Thread_queue_Extract_priority_helper( tq, the_thread, true );  
      (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
    }                                                                 
    _ISR_Enable( level );                                             
 80062b8:	d0 0d 00 00 	wcsr IE,r13                                    <== NOT EXECUTED
  }                                                                   
}                                                                     
 80062bc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80062c0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80062c4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80062c8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80062cc:	37 9c 00 14 	addi sp,sp,20                                  
 80062d0:	c3 a0 00 00 	ret                                            
                                                                      
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;
 80062d4:	34 01 00 01 	mvi r1,1                                       
 80062d8:	59 61 00 30 	sw (r11+48),r1                                 
    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 );  
 80062dc:	b9 80 10 00 	mv r2,r12                                      
 80062e0:	b9 60 08 00 	mv r1,r11                                      
 80062e4:	34 03 00 01 	mvi r3,1                                       
 80062e8:	f8 00 11 8e 	calli 800a920 <_Thread_queue_Extract_priority_helper>
      (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
 80062ec:	b9 60 08 00 	mv r1,r11                                      
 80062f0:	b9 80 10 00 	mv r2,r12                                      
 80062f4:	37 83 00 14 	addi r3,sp,20                                  
 80062f8:	fb ff ff 2d 	calli 8005fac <_Thread_queue_Enqueue_priority> 
    }                                                                 
    _ISR_Enable( level );                                             
 80062fc:	d0 0d 00 00 	wcsr IE,r13                                    
 8006300:	e3 ff ff ef 	bi 80062bc <_Thread_queue_Requeue+0x70>        
                                                                      

08006304 <_Thread_queue_Timeout>: void _Thread_queue_Timeout( Objects_Id id, void *ignored __attribute__((unused)) ) {
 8006304:	37 9c ff f8 	addi sp,sp,-8                                  
 8006308:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control       *the_thread;                                   
  Objects_Locations     location;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 800630c:	37 82 00 08 	addi r2,sp,8                                   
 8006310:	fb ff fd 7c 	calli 8005900 <_Thread_Get>                    
  switch ( location ) {                                               
 8006314:	2b 82 00 08 	lw r2,(sp+8)                                   
 8006318:	5c 40 00 07 	bne r2,r0,8006334 <_Thread_queue_Timeout+0x30> <== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
      break;                                                          
    case OBJECTS_LOCAL:                                               
      _Thread_queue_Process_timeout( the_thread );                    
 800631c:	f8 00 11 d6 	calli 800aa74 <_Thread_queue_Process_timeout>  
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )             
{                                                                     
  RTEMS_COMPILER_MEMORY_BARRIER();                                    
  _Thread_Dispatch_disable_level -= 1;                                
 8006320:	78 01 08 01 	mvhi r1,0x801                                  
 8006324:	38 21 48 a8 	ori r1,r1,0x48a8                               
 8006328:	28 22 00 00 	lw r2,(r1+0)                                   
 800632c:	34 42 ff ff 	addi r2,r2,-1                                  
 8006330:	58 22 00 00 	sw (r1+0),r2                                   
      _Thread_Unnest_dispatch();                                      
      break;                                                          
  }                                                                   
}                                                                     
 8006334:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006338:	37 9c 00 08 	addi sp,sp,8                                   
 800633c:	c3 a0 00 00 	ret                                            
                                                                      

080144a4 <_Timer_server_Body>: * @a arg points to the corresponding timer server control block. */ static rtems_task _Timer_server_Body( rtems_task_argument arg ) {
 80144a4:	37 9c ff a4 	addi sp,sp,-92                                 
 80144a8:	5b 8b 00 44 	sw (sp+68),r11                                 
 80144ac:	5b 8c 00 40 	sw (sp+64),r12                                 
 80144b0:	5b 8d 00 3c 	sw (sp+60),r13                                 
 80144b4:	5b 8e 00 38 	sw (sp+56),r14                                 
 80144b8:	5b 8f 00 34 	sw (sp+52),r15                                 
 80144bc:	5b 90 00 30 	sw (sp+48),r16                                 
 80144c0:	5b 91 00 2c 	sw (sp+44),r17                                 
 80144c4:	5b 92 00 28 	sw (sp+40),r18                                 
 80144c8:	5b 93 00 24 	sw (sp+36),r19                                 
 80144cc:	5b 94 00 20 	sw (sp+32),r20                                 
 80144d0:	5b 95 00 1c 	sw (sp+28),r21                                 
 80144d4:	5b 96 00 18 	sw (sp+24),r22                                 
 80144d8:	5b 97 00 14 	sw (sp+20),r23                                 
 80144dc:	5b 98 00 10 	sw (sp+16),r24                                 
 80144e0:	5b 99 00 0c 	sw (sp+12),r25                                 
 80144e4:	5b 9b 00 08 	sw (sp+8),fp                                   
 80144e8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80144ec:	78 14 08 04 	mvhi r20,0x804                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 80144f0:	37 96 00 54 	addi r22,sp,84                                 
 80144f4:	37 95 00 58 	addi r21,sp,88                                 
 80144f8:	37 8e 00 48 	addi r14,sp,72                                 
 80144fc:	37 92 00 4c 	addi r18,sp,76                                 
 8014500:	78 13 08 04 	mvhi r19,0x804                                 
 8014504:	78 17 08 04 	mvhi r23,0x804                                 
 8014508:	b8 20 58 00 	mv r11,r1                                      
 801450c:	5b 95 00 54 	sw (sp+84),r21                                 
  head->previous = NULL;                                              
 8014510:	5b 80 00 58 	sw (sp+88),r0                                  
  tail->previous = head;                                              
 8014514:	5b 96 00 5c 	sw (sp+92),r22                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 8014518:	5b 92 00 48 	sw (sp+72),r18                                 
  head->previous = NULL;                                              
 801451c:	5b 80 00 4c 	sw (sp+76),r0                                  
  tail->previous = head;                                              
 8014520:	5b 8e 00 50 	sw (sp+80),r14                                 
 8014524:	3a 94 0d e0 	ori r20,r20,0xde0                              
 8014528:	34 30 00 30 	addi r16,r1,48                                 
 801452c:	3a 73 0d 58 	ori r19,r19,0xd58                              
 8014530:	34 2f 00 68 	addi r15,r1,104                                
 8014534:	3a f7 0c b0 	ori r23,r23,0xcb0                              
 8014538:	34 3b 00 08 	addi fp,r1,8                                   
 801453c:	34 39 00 40 	addi r25,r1,64                                 
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
 8014540:	34 0d 00 03 	mvi r13,3                                      
     *  of zero it will be processed in the next iteration of the timer server
     *  body loop.                                                    
     */                                                               
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
 8014544:	34 11 ff fe 	mvi r17,-2                                     
        _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;                                              
 8014548:	34 18 00 01 	mvi r24,1                                      
  Chain_Control *tmp;                                                 
  /*                                                                  
   *  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;                                    
 801454c:	59 76 00 78 	sw (r11+120),r22                               
static void _Timer_server_Process_interval_watchdogs(                 
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot;            
 8014550:	2a 82 00 00 	lw r2,(r20+0)                                  
                                                                      
  /*                                                                  
   *  We assume adequate unsigned arithmetic here.                    
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
 8014554:	29 63 00 3c 	lw r3,(r11+60)                                 
                                                                      
  watchdogs->last_snapshot = snapshot;                                
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
 8014558:	ba 00 08 00 	mv r1,r16                                      
  /*                                                                  
   *  We assume adequate unsigned arithmetic here.                    
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
                                                                      
  watchdogs->last_snapshot = snapshot;                                
 801455c:	59 62 00 3c 	sw (r11+60),r2                                 
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
 8014560:	c8 43 10 00 	sub r2,r2,r3                                   
 8014564:	b9 c0 18 00 	mv r3,r14                                      
 8014568:	f8 00 15 a6 	calli 8019c00 <_Watchdog_Adjust_to_chain>      
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
  Watchdog_Interval last_snapshot = watchdogs->last_snapshot;         
 801456c:	29 64 00 74 	lw r4,(r11+116)                                
static void _Timer_server_Process_tod_watchdogs(                      
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
 8014570:	2a 6c 00 00 	lw r12,(r19+0)                                 
  /*                                                                  
   *  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 ) {                                   
 8014574:	50 8c 00 31 	bgeu r4,r12,8014638 <_Timer_server_Body+0x194> 
    /*                                                                
     *  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 );
 8014578:	b9 e0 08 00 	mv r1,r15                                      
 801457c:	c9 84 10 00 	sub r2,r12,r4                                  
 8014580:	b9 c0 18 00 	mv r3,r14                                      
 8014584:	f8 00 15 9f 	calli 8019c00 <_Watchdog_Adjust_to_chain>      
      */                                                              
     delta = last_snapshot - snapshot;                                
     _Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta ); 
  }                                                                   
                                                                      
  watchdogs->last_snapshot = snapshot;                                
 8014588:	59 6c 00 74 	sw (r11+116),r12                               
static void _Timer_server_Insert_timer(                               
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
 801458c:	34 0c 00 01 	mvi r12,1                                      
}                                                                     
                                                                      
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{                                                                     
  while ( true ) {                                                    
    Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
 8014590:	29 61 00 78 	lw r1,(r11+120)                                
 8014594:	f8 00 03 50 	calli 80152d4 <_Chain_Get>                     
 8014598:	b8 20 10 00 	mv r2,r1                                       
                                                                      
    if ( timer == NULL ) {                                            
 801459c:	44 20 00 0b 	be r1,r0,80145c8 <_Timer_server_Body+0x124>    <== ALWAYS TAKEN
static void _Timer_server_Insert_timer(                               
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
 80145a0:	28 24 00 38 	lw r4,(r1+56)                                  <== NOT EXECUTED
 80145a4:	44 8c 00 2b 	be r4,r12,8014650 <_Timer_server_Body+0x1ac>   <== NOT EXECUTED
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
 80145a8:	5c 8d ff fa 	bne r4,r13,8014590 <_Timer_server_Body+0xec>   <== NOT EXECUTED
    _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );     
 80145ac:	34 42 00 10 	addi r2,r2,16                                  <== NOT EXECUTED
 80145b0:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
 80145b4:	f8 00 15 b9 	calli 8019c98 <_Watchdog_Insert>               <== NOT EXECUTED
}                                                                     
                                                                      
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{                                                                     
  while ( true ) {                                                    
    Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
 80145b8:	29 61 00 78 	lw r1,(r11+120)                                <== NOT EXECUTED
 80145bc:	f8 00 03 46 	calli 80152d4 <_Chain_Get>                     <== NOT EXECUTED
 80145c0:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
                                                                      
    if ( timer == NULL ) {                                            
 80145c4:	5c 20 ff f7 	bne r1,r0,80145a0 <_Timer_server_Body+0xfc>    <== NOT EXECUTED
     *  of zero it will be processed in the next iteration of the timer server
     *  body loop.                                                    
     */                                                               
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
 80145c8:	90 00 10 00 	rcsr r2,IE                                     
 80145cc:	a0 51 18 00 	and r3,r2,r17                                  
 80145d0:	d0 03 00 00 	wcsr IE,r3                                     
      tmp = ts->insert_chain;                                         
      if ( _Chain_Is_empty( insert_chain ) ) {                        
 80145d4:	2b 84 00 54 	lw r4,(sp+84)                                  
     *  body loop.                                                    
     */                                                               
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
      tmp = ts->insert_chain;                                         
 80145d8:	29 63 00 78 	lw r3,(r11+120)                                
      if ( _Chain_Is_empty( insert_chain ) ) {                        
 80145dc:	34 03 00 01 	mvi r3,1                                       
 80145e0:	44 95 00 20 	be r4,r21,8014660 <_Timer_server_Body+0x1bc>   <== ALWAYS TAKEN
        ts->insert_chain = NULL;                                      
        do_loop          = false;                                     
      }                                                               
    _ISR_Enable( level );                                             
 80145e4:	d0 02 00 00 	wcsr IE,r2                                     
   *  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;                                    
                                                                      
  while ( do_loop ) {                                                 
 80145e8:	5c 60 ff da 	bne r3,r0,8014550 <_Timer_server_Body+0xac>    <== NEVER TAKEN
  _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 ) ) {                          
 80145ec:	2b 82 00 48 	lw r2,(sp+72)                                  
 80145f0:	5c 52 00 0b 	bne r2,r18,801461c <_Timer_server_Body+0x178>  
 80145f4:	e0 00 00 1e 	bi 801466c <_Timer_server_Body+0x1c8>          
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
 80145f8:	28 43 00 00 	lw r3,(r2+0)                                   
                                                                      
  head->next = new_first;                                             
  new_first->previous = head;                                         
 80145fc:	58 6e 00 04 	sw (r3+4),r14                                  
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
                                                                      
  head->next = new_first;                                             
 8014600:	5b 83 00 48 	sw (sp+72),r3                                  
         *  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;                        
 8014604:	58 40 00 08 	sw (r2+8),r0                                   
          _ISR_Enable( level );                                       
 8014608:	d0 04 00 00 	wcsr IE,r4                                     
        /*                                                            
         *  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 );    
 801460c:	28 43 00 1c 	lw r3,(r2+28)                                  
 8014610:	28 41 00 20 	lw r1,(r2+32)                                  
 8014614:	28 42 00 24 	lw r2,(r2+36)                                  
 8014618:	d8 60 00 00 	call r3                                        
                                                                      
        /*                                                            
         *  It is essential that interrupts are disable here since an interrupt
         *  service routine may remove a watchdog from the chain.     
         */                                                           
        _ISR_Disable( level );                                        
 801461c:	90 00 20 00 	rcsr r4,IE                                     
 8014620:	a0 91 10 00 	and r2,r4,r17                                  
 8014624:	d0 02 00 00 	wcsr IE,r2                                     
      initialized = false;                                            
    }                                                                 
  #endif                                                              
                                                                      
  return status;                                                      
}                                                                     
 8014628:	2b 82 00 48 	lw r2,(sp+72)                                  
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
 801462c:	5c 52 ff f3 	bne r2,r18,80145f8 <_Timer_server_Body+0x154>  
        watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
        if ( watchdog != NULL ) {                                     
          watchdog->state = WATCHDOG_INACTIVE;                        
          _ISR_Enable( level );                                       
        } else {                                                      
          _ISR_Enable( level );                                       
 8014630:	d0 04 00 00 	wcsr IE,r4                                     
 8014634:	e3 ff ff c6 	bi 801454c <_Timer_server_Body+0xa8>           
     *  TOD has been set forward.                                     
     */                                                               
    delta = snapshot - last_snapshot;                                 
    _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
                                                                      
  } else if ( snapshot < last_snapshot ) {                            
 8014638:	51 84 ff d4 	bgeu r12,r4,8014588 <_Timer_server_Body+0xe4>  
     /*                                                               
      *  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 ); 
 801463c:	b9 e0 08 00 	mv r1,r15                                      
 8014640:	34 02 00 01 	mvi r2,1                                       
 8014644:	c8 8c 18 00 	sub r3,r4,r12                                  
 8014648:	f8 00 15 30 	calli 8019b08 <_Watchdog_Adjust>               
 801464c:	e3 ff ff cf 	bi 8014588 <_Timer_server_Body+0xe4>           
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
 8014650:	ba 00 08 00 	mv r1,r16                                      <== NOT EXECUTED
 8014654:	34 42 00 10 	addi r2,r2,16                                  <== NOT EXECUTED
 8014658:	f8 00 15 90 	calli 8019c98 <_Watchdog_Insert>               <== NOT EXECUTED
 801465c:	e3 ff ff cd 	bi 8014590 <_Timer_server_Body+0xec>           <== NOT EXECUTED
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
      tmp = ts->insert_chain;                                         
      if ( _Chain_Is_empty( insert_chain ) ) {                        
        ts->insert_chain = NULL;                                      
 8014660:	59 60 00 78 	sw (r11+120),r0                                
        do_loop          = false;                                     
 8014664:	34 03 00 00 	mvi r3,0                                       
 8014668:	e3 ff ff df 	bi 80145e4 <_Timer_server_Body+0x140>          
         *  the active flag of the timer server is true.              
         */                                                           
        (*watchdog->routine)( watchdog->id, watchdog->user_data );    
      }                                                               
    } else {                                                          
      ts->active = false;                                             
 801466c:	31 60 00 7c 	sb (r11+124),r0                                
 8014670:	2a e1 00 00 	lw r1,(r23+0)                                  
 8014674:	34 21 00 01 	addi r1,r1,1                                   
 8014678:	5a e1 00 00 	sw (r23+0),r1                                  
                                                                      
      /*                                                              
       *  Block until there is something to do.                       
       */                                                             
      _Thread_Disable_dispatch();                                     
        _Thread_Set_state( ts->thread, STATES_DELAYING );             
 801467c:	29 61 00 00 	lw r1,(r11+0)                                  
 8014680:	34 02 00 08 	mvi r2,8                                       
 8014684:	f8 00 12 d4 	calli 80191d4 <_Thread_Set_state>              
        _Timer_server_Reset_interval_system_watchdog( ts );           
 8014688:	b9 60 08 00 	mv r1,r11                                      
 801468c:	fb ff ff 44 	calli 801439c <_Timer_server_Reset_interval_system_watchdog>
        _Timer_server_Reset_tod_system_watchdog( ts );                
 8014690:	b9 60 08 00 	mv r1,r11                                      
 8014694:	fb ff ff 63 	calli 8014420 <_Timer_server_Reset_tod_system_watchdog>
      _Thread_Enable_dispatch();                                      
 8014698:	f8 00 0f d7 	calli 80185f4 <_Thread_Enable_dispatch>        
                                                                      
static void _Timer_server_Stop_interval_system_watchdog(              
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );        
 801469c:	bb 60 08 00 	mv r1,fp                                       
        _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;                                              
 80146a0:	31 78 00 7c 	sb (r11+124),r24                               
                                                                      
static void _Timer_server_Stop_interval_system_watchdog(              
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );        
 80146a4:	f8 00 15 e6 	calli 8019e3c <_Watchdog_Remove>               
                                                                      
static void _Timer_server_Stop_tod_system_watchdog(                   
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );             
 80146a8:	bb 20 08 00 	mv r1,r25                                      
 80146ac:	f8 00 15 e4 	calli 8019e3c <_Watchdog_Remove>               
 80146b0:	e3 ff ff a7 	bi 801454c <_Timer_server_Body+0xa8>           
                                                                      

080146b4 <_Timer_server_Schedule_operation_method>: static void _Timer_server_Schedule_operation_method( Timer_server_Control *ts, Timer_Control *timer ) {
 80146b4:	37 9c ff f8 	addi sp,sp,-8                                  
 80146b8:	5b 8b 00 08 	sw (sp+8),r11                                  
 80146bc:	5b 9d 00 04 	sw (sp+4),ra                                   
 80146c0:	b8 20 58 00 	mv r11,r1                                      
  if ( ts->insert_chain == NULL ) {                                   
 80146c4:	28 21 00 78 	lw r1,(r1+120)                                 
                                                                      
static void _Timer_server_Schedule_operation_method(                  
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
 80146c8:	b8 40 18 00 	mv r3,r2                                       
  if ( ts->insert_chain == NULL ) {                                   
 80146cc:	44 20 00 07 	be r1,r0,80146e8 <_Timer_server_Schedule_operation_method+0x34><== ALWAYS TAKEN
     *  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 );           
 80146d0:	29 61 00 78 	lw r1,(r11+120)                                <== NOT EXECUTED
 80146d4:	f8 00 02 ea 	calli 801527c <_Chain_Append>                  <== NOT EXECUTED
  }                                                                   
}                                                                     
 80146d8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80146dc:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 80146e0:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 80146e4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
 80146e8:	78 01 08 04 	mvhi r1,0x804                                  
 80146ec:	38 21 0c b0 	ori r1,r1,0xcb0                                
 80146f0:	28 22 00 00 	lw r2,(r1+0)                                   
 80146f4:	34 42 00 01 	addi r2,r2,1                                   
 80146f8:	58 22 00 00 	sw (r1+0),r2                                   
   *  being inserted.  This could result in an integer overflow.      
   */                                                                 
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
 80146fc:	28 61 00 38 	lw r1,(r3+56)                                  
 8014700:	34 02 00 01 	mvi r2,1                                       
 8014704:	44 22 00 28 	be r1,r2,80147a4 <_Timer_server_Schedule_operation_method+0xf0>
    _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 ) {       
 8014708:	34 02 00 03 	mvi r2,3                                       
 801470c:	44 22 00 06 	be r1,r2,8014724 <_Timer_server_Schedule_operation_method+0x70>
    if ( !ts->active ) {                                              
      _Timer_server_Reset_tod_system_watchdog( ts );                  
    }                                                                 
  }                                                                   
                                                                      
  _Thread_Enable_dispatch();                                          
 8014710:	f8 00 0f b9 	calli 80185f4 <_Thread_Enable_dispatch>        
     *  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 );           
  }                                                                   
}                                                                     
 8014714:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8014718:	2b 8b 00 08 	lw r11,(sp+8)                                  
 801471c:	37 9c 00 08 	addi sp,sp,8                                   
 8014720:	c3 a0 00 00 	ret                                            
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
    /*                                                                
     *  We have to advance the last known seconds value of the server and update
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
 8014724:	90 00 38 00 	rcsr r7,IE                                     
 8014728:	34 01 ff fe 	mvi r1,-2                                      
 801472c:	a0 e1 08 00 	and r1,r7,r1                                   
 8014730:	d0 01 00 00 	wcsr IE,r1                                     
      initialized = false;                                            
    }                                                                 
  #endif                                                              
                                                                      
  return status;                                                      
}                                                                     
 8014734:	29 62 00 68 	lw r2,(r11+104)                                
    /*                                                                
     *  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();        
 8014738:	78 01 08 04 	mvhi r1,0x804                                  
    last_snapshot = ts->TOD_watchdogs.last_snapshot;                  
 801473c:	29 64 00 74 	lw r4,(r11+116)                                
    /*                                                                
     *  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();        
 8014740:	38 21 0d 58 	ori r1,r1,0xd58                                
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8014744:	35 65 00 6c 	addi r5,r11,108                                
 8014748:	28 21 00 00 	lw r1,(r1+0)                                   
    last_snapshot = ts->TOD_watchdogs.last_snapshot;                  
    if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {             
 801474c:	44 45 00 0a 	be r2,r5,8014774 <_Timer_server_Schedule_operation_method+0xc0>
      first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain );   
      delta_interval = first_watchdog->delta_interval;                
 8014750:	28 46 00 10 	lw r6,(r2+16)                                  
        }                                                             
      } else {                                                        
        /*                                                            
         *  Someone put us in the past.                               
         */                                                           
        delta = last_snapshot - snapshot;                             
 8014754:	b4 c4 28 00 	add r5,r6,r4                                   
        delta_interval += delta;                                      
 8014758:	c8 a1 28 00 	sub r5,r5,r1                                   
    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;                
      if ( snapshot > last_snapshot ) {                               
 801475c:	50 81 00 05 	bgeu r4,r1,8014770 <_Timer_server_Schedule_operation_method+0xbc>
        /*                                                            
         *  We advanced in time.                                      
         */                                                           
        delta = snapshot - last_snapshot;                             
 8014760:	c8 24 20 00 	sub r4,r1,r4                                   
        if (delta_interval > delta) {                                 
          delta_interval -= delta;                                    
        } else {                                                      
          delta_interval = 0;                                         
 8014764:	34 05 00 00 	mvi r5,0                                       
      if ( snapshot > last_snapshot ) {                               
        /*                                                            
         *  We advanced in time.                                      
         */                                                           
        delta = snapshot - last_snapshot;                             
        if (delta_interval > delta) {                                 
 8014768:	50 86 00 02 	bgeu r4,r6,8014770 <_Timer_server_Schedule_operation_method+0xbc><== NEVER TAKEN
          delta_interval -= delta;                                    
 801476c:	c8 c4 28 00 	sub r5,r6,r4                                   
         *  Someone put us in the past.                               
         */                                                           
        delta = last_snapshot - snapshot;                             
        delta_interval += delta;                                      
      }                                                               
      first_watchdog->delta_interval = delta_interval;                
 8014770:	58 45 00 10 	sw (r2+16),r5                                  
    }                                                                 
    ts->TOD_watchdogs.last_snapshot = snapshot;                       
 8014774:	59 61 00 74 	sw (r11+116),r1                                
    _ISR_Enable( level );                                             
 8014778:	d0 07 00 00 	wcsr IE,r7                                     
                                                                      
    _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );     
 801477c:	35 61 00 68 	addi r1,r11,104                                
 8014780:	34 62 00 10 	addi r2,r3,16                                  
 8014784:	f8 00 15 45 	calli 8019c98 <_Watchdog_Insert>               
                                                                      
    if ( !ts->active ) {                                              
 8014788:	41 61 00 7c 	lbu r1,(r11+124)                               
 801478c:	20 21 00 ff 	andi r1,r1,0xff                                
 8014790:	5c 20 ff e0 	bne r1,r0,8014710 <_Timer_server_Schedule_operation_method+0x5c>
      _Timer_server_Reset_tod_system_watchdog( ts );                  
 8014794:	b9 60 08 00 	mv r1,r11                                      
 8014798:	fb ff ff 22 	calli 8014420 <_Timer_server_Reset_tod_system_watchdog>
    }                                                                 
  }                                                                   
                                                                      
  _Thread_Enable_dispatch();                                          
 801479c:	f8 00 0f 96 	calli 80185f4 <_Thread_Enable_dispatch>        
 80147a0:	e3 ff ff dd 	bi 8014714 <_Timer_server_Schedule_operation_method+0x60>
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
    /*                                                                
     *  We have to advance the last known ticks value of the server and update
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
 80147a4:	90 00 20 00 	rcsr r4,IE                                     
 80147a8:	34 01 ff fe 	mvi r1,-2                                      
 80147ac:	a0 81 08 00 	and r1,r4,r1                                   
 80147b0:	d0 01 00 00 	wcsr IE,r1                                     
    snapshot = _Watchdog_Ticks_since_boot;                            
 80147b4:	78 01 08 04 	mvhi r1,0x804                                  
 80147b8:	38 21 0d e0 	ori r1,r1,0xde0                                
      initialized = false;                                            
    }                                                                 
  #endif                                                              
                                                                      
  return status;                                                      
}                                                                     
 80147bc:	29 62 00 30 	lw r2,(r11+48)                                 
    /*                                                                
     *  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;                            
 80147c0:	28 21 00 00 	lw r1,(r1+0)                                   
    last_snapshot = ts->Interval_watchdogs.last_snapshot;             
 80147c4:	29 66 00 3c 	lw r6,(r11+60)                                 
 80147c8:	35 65 00 34 	addi r5,r11,52                                 
    if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {        
 80147cc:	44 45 00 07 	be r2,r5,80147e8 <_Timer_server_Schedule_operation_method+0x134>
      /*                                                              
       *  We assume adequate unsigned arithmetic here.                
       */                                                             
      delta = snapshot - last_snapshot;                               
                                                                      
      delta_interval = first_watchdog->delta_interval;                
 80147d0:	28 47 00 10 	lw r7,(r2+16)                                  
      first_watchdog = _Watchdog_First( &ts->Interval_watchdogs.Chain );
                                                                      
      /*                                                              
       *  We assume adequate unsigned arithmetic here.                
       */                                                             
      delta = snapshot - last_snapshot;                               
 80147d4:	c8 26 30 00 	sub r6,r1,r6                                   
                                                                      
      delta_interval = first_watchdog->delta_interval;                
      if (delta_interval > delta) {                                   
        delta_interval -= delta;                                      
      } else {                                                        
        delta_interval = 0;                                           
 80147d8:	34 05 00 00 	mvi r5,0                                       
       *  We assume adequate unsigned arithmetic here.                
       */                                                             
      delta = snapshot - last_snapshot;                               
                                                                      
      delta_interval = first_watchdog->delta_interval;                
      if (delta_interval > delta) {                                   
 80147dc:	50 c7 00 02 	bgeu r6,r7,80147e4 <_Timer_server_Schedule_operation_method+0x130>
        delta_interval -= delta;                                      
 80147e0:	c8 e6 28 00 	sub r5,r7,r6                                   
      } else {                                                        
        delta_interval = 0;                                           
      }                                                               
      first_watchdog->delta_interval = delta_interval;                
 80147e4:	58 45 00 10 	sw (r2+16),r5                                  
    }                                                                 
    ts->Interval_watchdogs.last_snapshot = snapshot;                  
 80147e8:	59 61 00 3c 	sw (r11+60),r1                                 
    _ISR_Enable( level );                                             
 80147ec:	d0 04 00 00 	wcsr IE,r4                                     
                                                                      
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
 80147f0:	35 61 00 30 	addi r1,r11,48                                 
 80147f4:	34 62 00 10 	addi r2,r3,16                                  
 80147f8:	f8 00 15 28 	calli 8019c98 <_Watchdog_Insert>               
                                                                      
    if ( !ts->active ) {                                              
 80147fc:	41 61 00 7c 	lbu r1,(r11+124)                               
 8014800:	20 21 00 ff 	andi r1,r1,0xff                                
 8014804:	5c 20 ff c3 	bne r1,r0,8014710 <_Timer_server_Schedule_operation_method+0x5c>
      _Timer_server_Reset_interval_system_watchdog( ts );             
 8014808:	b9 60 08 00 	mv r1,r11                                      
 801480c:	fb ff fe e4 	calli 801439c <_Timer_server_Reset_interval_system_watchdog>
    if ( !ts->active ) {                                              
      _Timer_server_Reset_tod_system_watchdog( ts );                  
    }                                                                 
  }                                                                   
                                                                      
  _Thread_Enable_dispatch();                                          
 8014810:	f8 00 0f 79 	calli 80185f4 <_Thread_Enable_dispatch>        
 8014814:	e3 ff ff c0 	bi 8014714 <_Timer_server_Schedule_operation_method+0x60>
                                                                      

08006908 <_User_extensions_Fatal>: void _User_extensions_Fatal ( Internal_errors_Source the_source, bool is_internal, Internal_errors_t the_error ) {
 8006908:	37 9c ff e8 	addi sp,sp,-24                                 
 800690c:	5b 8b 00 18 	sw (sp+24),r11                                 
 8006910:	5b 8c 00 14 	sw (sp+20),r12                                 
 8006914:	5b 8d 00 10 	sw (sp+16),r13                                 
 8006918:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800691c:	5b 8f 00 08 	sw (sp+8),r15                                  
 8006920:	5b 9d 00 04 	sw (sp+4),ra                                   
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.fatal != NULL )                      
      (*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
  }                                                                   
}                                                                     
 8006924:	78 0c 08 01 	mvhi r12,0x801                                 
 8006928:	39 8c 4a 28 	ori r12,r12,0x4a28                             
 800692c:	29 8b 00 08 	lw r11,(r12+8)                                 
void _User_extensions_Fatal (                                         
  Internal_errors_Source  the_source,                                 
  bool                    is_internal,                                
  Internal_errors_t       the_error                                   
)                                                                     
{                                                                     
 8006930:	b8 20 78 00 	mv r15,r1                                      
 8006934:	b8 60 70 00 	mv r14,r3                                      
 8006938:	20 4d 00 ff 	andi r13,r2,0xff                               
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
 800693c:	45 6c 00 09 	be r11,r12,8006960 <_User_extensions_Fatal+0x58><== NEVER TAKEN
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.fatal != NULL )                      
 8006940:	29 64 00 30 	lw r4,(r11+48)                                 
      (*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
 8006944:	b9 e0 08 00 	mv r1,r15                                      
 8006948:	b9 a0 10 00 	mv r2,r13                                      
 800694c:	b9 c0 18 00 	mv r3,r14                                      
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.fatal != NULL )                      
 8006950:	44 80 00 02 	be r4,r0,8006958 <_User_extensions_Fatal+0x50> 
      (*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
 8006954:	d8 80 00 00 	call r4                                        
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
 8006958:	29 6b 00 04 	lw r11,(r11+4)                                 
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
 800695c:	5d 6c ff f9 	bne r11,r12,8006940 <_User_extensions_Fatal+0x38>
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.fatal != NULL )                      
      (*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
  }                                                                   
}                                                                     
 8006960:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006964:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8006968:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800696c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8006970:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8006974:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8006978:	37 9c 00 18 	addi sp,sp,24                                  
 800697c:	c3 a0 00 00 	ret                                            
                                                                      

0800673c <_User_extensions_Handler_initialization>: #include <rtems/score/userext.h> #include <rtems/score/wkspace.h> #include <string.h> void _User_extensions_Handler_initialization(void) {
 800673c:	37 9c ff ec 	addi sp,sp,-20                                 
 8006740:	5b 8b 00 14 	sw (sp+20),r11                                 
 8006744:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006748:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800674c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8006750:	5b 9d 00 04 	sw (sp+4),ra                                   
  User_extensions_Control *extension;                                 
  uint32_t                 i;                                         
  uint32_t                 number_of_extensions;                      
  User_extensions_Table   *initial_extensions;                        
                                                                      
  number_of_extensions = Configuration.number_of_initial_extensions;  
 8006754:	78 03 08 01 	mvhi r3,0x801                                  
 8006758:	38 63 40 c4 	ori r3,r3,0x40c4                               
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800675c:	78 02 08 01 	mvhi r2,0x801                                  
 8006760:	78 05 08 01 	mvhi r5,0x801                                  
 8006764:	78 01 08 01 	mvhi r1,0x801                                  
 8006768:	78 04 08 01 	mvhi r4,0x801                                  
  initial_extensions   = Configuration.User_extension_table;          
 800676c:	28 6b 00 40 	lw r11,(r3+64)                                 
 8006770:	38 42 4a 28 	ori r2,r2,0x4a28                               
 8006774:	38 21 48 ac 	ori r1,r1,0x48ac                               
 8006778:	38 a5 4a 2c 	ori r5,r5,0x4a2c                               
 800677c:	38 84 48 b0 	ori r4,r4,0x48b0                               
 8006780:	58 45 00 00 	sw (r2+0),r5                                   
  head->previous = NULL;                                              
 8006784:	58 40 00 04 	sw (r2+4),r0                                   
  tail->previous = head;                                              
 8006788:	58 42 00 08 	sw (r2+8),r2                                   
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800678c:	58 24 00 00 	sw (r1+0),r4                                   
  head->previous = NULL;                                              
 8006790:	58 20 00 04 	sw (r1+4),r0                                   
  tail->previous = head;                                              
 8006794:	58 21 00 08 	sw (r1+8),r1                                   
  User_extensions_Control *extension;                                 
  uint32_t                 i;                                         
  uint32_t                 number_of_extensions;                      
  User_extensions_Table   *initial_extensions;                        
                                                                      
  number_of_extensions = Configuration.number_of_initial_extensions;  
 8006798:	28 6e 00 3c 	lw r14,(r3+60)                                 
  initial_extensions   = Configuration.User_extension_table;          
                                                                      
  _Chain_Initialize_empty( &_User_extensions_List );                  
  _Chain_Initialize_empty( &_User_extensions_Switches_list );         
                                                                      
  if ( initial_extensions ) {                                         
 800679c:	45 60 00 26 	be r11,r0,8006834 <_User_extensions_Handler_initialization+0xf8><== NEVER TAKEN
    extension = (User_extensions_Control *)                           
      _Workspace_Allocate_or_fatal_error(                             
        number_of_extensions * sizeof( User_extensions_Control )      
 80067a0:	b5 ce 68 00 	add r13,r14,r14                                
 80067a4:	b5 ae 68 00 	add r13,r13,r14                                
 80067a8:	b5 ad 68 00 	add r13,r13,r13                                
 80067ac:	b5 ad 68 00 	add r13,r13,r13                                
 80067b0:	b5 ae 68 00 	add r13,r13,r14                                
 80067b4:	b5 ad 68 00 	add r13,r13,r13                                
 80067b8:	b5 ad 68 00 	add r13,r13,r13                                
  _Chain_Initialize_empty( &_User_extensions_List );                  
  _Chain_Initialize_empty( &_User_extensions_Switches_list );         
                                                                      
  if ( initial_extensions ) {                                         
    extension = (User_extensions_Control *)                           
      _Workspace_Allocate_or_fatal_error(                             
 80067bc:	b9 a0 08 00 	mv r1,r13                                      
 80067c0:	f8 00 01 f7 	calli 8006f9c <_Workspace_Allocate_or_fatal_error>
        number_of_extensions * sizeof( User_extensions_Control )      
      );                                                              
                                                                      
    memset (                                                          
 80067c4:	34 02 00 00 	mvi r2,0                                       
 80067c8:	b9 a0 18 00 	mv r3,r13                                      
  _Chain_Initialize_empty( &_User_extensions_List );                  
  _Chain_Initialize_empty( &_User_extensions_Switches_list );         
                                                                      
  if ( initial_extensions ) {                                         
    extension = (User_extensions_Control *)                           
      _Workspace_Allocate_or_fatal_error(                             
 80067cc:	b8 20 60 00 	mv r12,r1                                      
        number_of_extensions * sizeof( User_extensions_Control )      
      );                                                              
                                                                      
    memset (                                                          
 80067d0:	f8 00 1c 74 	calli 800d9a0 <memset>                         
      extension,                                                      
      0,                                                              
      number_of_extensions * sizeof( User_extensions_Control )        
    );                                                                
                                                                      
    for ( i = 0 ; i < number_of_extensions ; i++ ) {                  
 80067d4:	45 c0 00 18 	be r14,r0,8006834 <_User_extensions_Handler_initialization+0xf8><== NEVER TAKEN
 80067d8:	34 0d 00 00 	mvi r13,0                                      
RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(        
  User_extensions_Control     *extension,                             
  const User_extensions_Table *extension_table                        
)                                                                     
{                                                                     
  extension->Callouts = *extension_table;                             
 80067dc:	29 62 00 00 	lw r2,(r11+0)                                  
                                                                      
  _User_extensions_Add_set( extension );                              
 80067e0:	b9 80 08 00 	mv r1,r12                                      
 80067e4:	35 ad 00 01 	addi r13,r13,1                                 
RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(        
  User_extensions_Control     *extension,                             
  const User_extensions_Table *extension_table                        
)                                                                     
{                                                                     
  extension->Callouts = *extension_table;                             
 80067e8:	59 82 00 14 	sw (r12+20),r2                                 
 80067ec:	29 62 00 04 	lw r2,(r11+4)                                  
 80067f0:	59 82 00 18 	sw (r12+24),r2                                 
 80067f4:	29 62 00 08 	lw r2,(r11+8)                                  
 80067f8:	59 82 00 1c 	sw (r12+28),r2                                 
 80067fc:	29 62 00 0c 	lw r2,(r11+12)                                 
 8006800:	59 82 00 20 	sw (r12+32),r2                                 
 8006804:	29 62 00 10 	lw r2,(r11+16)                                 
 8006808:	59 82 00 24 	sw (r12+36),r2                                 
 800680c:	29 62 00 14 	lw r2,(r11+20)                                 
 8006810:	59 82 00 28 	sw (r12+40),r2                                 
 8006814:	29 62 00 18 	lw r2,(r11+24)                                 
 8006818:	59 82 00 2c 	sw (r12+44),r2                                 
 800681c:	29 62 00 1c 	lw r2,(r11+28)                                 
 8006820:	35 6b 00 20 	addi r11,r11,32                                
 8006824:	59 82 00 30 	sw (r12+48),r2                                 
                                                                      
  _User_extensions_Add_set( extension );                              
 8006828:	f8 00 10 ea 	calli 800abd0 <_User_extensions_Add_set>       
      _User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
      extension++;                                                    
 800682c:	35 8c 00 34 	addi r12,r12,52                                
      extension,                                                      
      0,                                                              
      number_of_extensions * sizeof( User_extensions_Control )        
    );                                                                
                                                                      
    for ( i = 0 ; i < number_of_extensions ; i++ ) {                  
 8006830:	55 cd ff eb 	bgu r14,r13,80067dc <_User_extensions_Handler_initialization+0xa0>
      _User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
      extension++;                                                    
    }                                                                 
  }                                                                   
}                                                                     
 8006834:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006838:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800683c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006840:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8006844:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8006848:	37 9c 00 14 	addi sp,sp,20                                  
 800684c:	c3 a0 00 00 	ret                                            
                                                                      

08006850 <_User_extensions_Thread_begin>: #include <rtems/score/userext.h> void _User_extensions_Thread_begin ( Thread_Control *executing ) {
 8006850:	37 9c ff f0 	addi sp,sp,-16                                 
 8006854:	5b 8b 00 10 	sw (sp+16),r11                                 
 8006858:	5b 8c 00 0c 	sw (sp+12),r12                                 
 800685c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8006860:	5b 9d 00 04 	sw (sp+4),ra                                   
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.fatal != NULL )                      
      (*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
  }                                                                   
}                                                                     
 8006864:	78 02 08 01 	mvhi r2,0x801                                  
 8006868:	38 42 4a 28 	ori r2,r2,0x4a28                               
 800686c:	28 4b 00 00 	lw r11,(r2+0)                                  
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8006870:	78 0c 08 01 	mvhi r12,0x801                                 
 8006874:	39 8c 4a 2c 	ori r12,r12,0x4a2c                             
#include <rtems/score/userext.h>                                      
                                                                      
void _User_extensions_Thread_begin (                                  
  Thread_Control *executing                                           
)                                                                     
{                                                                     
 8006878:	b8 20 68 00 	mv r13,r1                                      
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 800687c:	45 6c 00 07 	be r11,r12,8006898 <_User_extensions_Thread_begin+0x48><== NEVER TAKEN
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_begin != NULL )               
 8006880:	29 62 00 28 	lw r2,(r11+40)                                 
      (*the_extension->Callouts.thread_begin)( executing );           
 8006884:	b9 a0 08 00 	mv r1,r13                                      
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_begin != NULL )               
 8006888:	44 40 00 02 	be r2,r0,8006890 <_User_extensions_Thread_begin+0x40>
      (*the_extension->Callouts.thread_begin)( executing );           
 800688c:	d8 40 00 00 	call r2                                        
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
 8006890:	29 6b 00 00 	lw r11,(r11+0)                                 
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8006894:	5d 6c ff fb 	bne r11,r12,8006880 <_User_extensions_Thread_begin+0x30>
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_begin != NULL )               
      (*the_extension->Callouts.thread_begin)( executing );           
  }                                                                   
}                                                                     
 8006898:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800689c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80068a0:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80068a4:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80068a8:	37 9c 00 10 	addi sp,sp,16                                  
 80068ac:	c3 a0 00 00 	ret                                            
                                                                      

08006980 <_User_extensions_Thread_create>: #include <rtems/score/userext.h> bool _User_extensions_Thread_create ( Thread_Control *the_thread ) {
 8006980:	37 9c ff ec 	addi sp,sp,-20                                 
 8006984:	5b 8b 00 14 	sw (sp+20),r11                                 
 8006988:	5b 8c 00 10 	sw (sp+16),r12                                 
 800698c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8006990:	5b 8e 00 08 	sw (sp+8),r14                                  
 8006994:	5b 9d 00 04 	sw (sp+4),ra                                   
        return false;                                                 
    }                                                                 
  }                                                                   
                                                                      
  return true;                                                        
}                                                                     
 8006998:	78 02 08 01 	mvhi r2,0x801                                  
 800699c:	38 42 4a 28 	ori r2,r2,0x4a28                               
 80069a0:	28 4b 00 00 	lw r11,(r2+0)                                  
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
  bool                     status;                                    
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 80069a4:	78 0c 08 01 	mvhi r12,0x801                                 
 80069a8:	39 8c 4a 2c 	ori r12,r12,0x4a2c                             
#include <rtems/score/userext.h>                                      
                                                                      
bool _User_extensions_Thread_create (                                 
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
 80069ac:	b8 20 70 00 	mv r14,r1                                      
      if ( !status )                                                  
        return false;                                                 
    }                                                                 
  }                                                                   
                                                                      
  return true;                                                        
 80069b0:	34 01 00 01 	mvi r1,1                                       
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
  bool                     status;                                    
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 80069b4:	45 6c 00 0c 	be r11,r12,80069e4 <_User_extensions_Thread_create+0x64><== NEVER TAKEN
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_create != NULL ) {            
      status = (*the_extension->Callouts.thread_create)(              
 80069b8:	78 0d 08 01 	mvhi r13,0x801                                 
 80069bc:	39 ad 4d 78 	ori r13,r13,0x4d78                             
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_create != NULL ) {            
 80069c0:	29 63 00 14 	lw r3,(r11+20)                                 
      status = (*the_extension->Callouts.thread_create)(              
 80069c4:	b9 c0 10 00 	mv r2,r14                                      
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_create != NULL ) {            
 80069c8:	44 60 00 04 	be r3,r0,80069d8 <_User_extensions_Thread_create+0x58>
      status = (*the_extension->Callouts.thread_create)(              
 80069cc:	29 a1 00 0c 	lw r1,(r13+12)                                 
 80069d0:	d8 60 00 00 	call r3                                        
        _Thread_Executing,                                            
        the_thread                                                    
      );                                                              
      if ( !status )                                                  
 80069d4:	44 20 00 0b 	be r1,r0,8006a00 <_User_extensions_Thread_create+0x80>
  User_extensions_Control *the_extension;                             
  bool                     status;                                    
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
 80069d8:	29 6b 00 00 	lw r11,(r11+0)                                 
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
  bool                     status;                                    
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 80069dc:	5d 6c ff f9 	bne r11,r12,80069c0 <_User_extensions_Thread_create+0x40>
      if ( !status )                                                  
        return false;                                                 
    }                                                                 
  }                                                                   
                                                                      
  return true;                                                        
 80069e0:	34 01 00 01 	mvi r1,1                                       
}                                                                     
 80069e4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80069e8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80069ec:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80069f0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80069f4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80069f8:	37 9c 00 14 	addi sp,sp,20                                  
 80069fc:	c3 a0 00 00 	ret                                            
      status = (*the_extension->Callouts.thread_create)(              
        _Thread_Executing,                                            
        the_thread                                                    
      );                                                              
      if ( !status )                                                  
        return false;                                                 
 8006a00:	34 01 00 00 	mvi r1,0                                       
    }                                                                 
  }                                                                   
                                                                      
  return true;                                                        
}                                                                     
 8006a04:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006a08:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8006a0c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006a10:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8006a14:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8006a18:	37 9c 00 14 	addi sp,sp,20                                  
 8006a1c:	c3 a0 00 00 	ret                                            
                                                                      

08006a20 <_User_extensions_Thread_delete>: #include <rtems/score/userext.h> void _User_extensions_Thread_delete ( Thread_Control *the_thread ) {
 8006a20:	37 9c ff ec 	addi sp,sp,-20                                 
 8006a24:	5b 8b 00 14 	sw (sp+20),r11                                 
 8006a28:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006a2c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8006a30:	5b 8e 00 08 	sw (sp+8),r14                                  
 8006a34:	5b 9d 00 04 	sw (sp+4),ra                                   
      (*the_extension->Callouts.thread_delete)(                       
        _Thread_Executing,                                            
        the_thread                                                    
      );                                                              
  }                                                                   
}                                                                     
 8006a38:	78 0c 08 01 	mvhi r12,0x801                                 
 8006a3c:	39 8c 4a 28 	ori r12,r12,0x4a28                             
 8006a40:	29 8b 00 08 	lw r11,(r12+8)                                 
#include <rtems/score/userext.h>                                      
                                                                      
void _User_extensions_Thread_delete (                                 
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
 8006a44:	b8 20 70 00 	mv r14,r1                                      
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
 8006a48:	45 6c 00 0a 	be r11,r12,8006a70 <_User_extensions_Thread_delete+0x50><== NEVER TAKEN
        the_node = the_node->previous ) {                             
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_delete != NULL )              
      (*the_extension->Callouts.thread_delete)(                       
 8006a4c:	78 0d 08 01 	mvhi r13,0x801                                 
 8006a50:	39 ad 4d 78 	ori r13,r13,0x4d78                             
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_delete != NULL )              
 8006a54:	29 63 00 20 	lw r3,(r11+32)                                 
      (*the_extension->Callouts.thread_delete)(                       
 8006a58:	b9 c0 10 00 	mv r2,r14                                      
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_delete != NULL )              
 8006a5c:	44 60 00 03 	be r3,r0,8006a68 <_User_extensions_Thread_delete+0x48>
      (*the_extension->Callouts.thread_delete)(                       
 8006a60:	29 a1 00 0c 	lw r1,(r13+12)                                 
 8006a64:	d8 60 00 00 	call r3                                        
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
 8006a68:	29 6b 00 04 	lw r11,(r11+4)                                 
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
 8006a6c:	5d 6c ff fa 	bne r11,r12,8006a54 <_User_extensions_Thread_delete+0x34>
      (*the_extension->Callouts.thread_delete)(                       
        _Thread_Executing,                                            
        the_thread                                                    
      );                                                              
  }                                                                   
}                                                                     
 8006a70:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006a74:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8006a78:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006a7c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8006a80:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8006a84:	37 9c 00 14 	addi sp,sp,20                                  
 8006a88:	c3 a0 00 00 	ret                                            
                                                                      

080068b0 <_User_extensions_Thread_exitted>: void _User_extensions_Thread_exitted ( Thread_Control *executing ) {
 80068b0:	37 9c ff f0 	addi sp,sp,-16                                 
 80068b4:	5b 8b 00 10 	sw (sp+16),r11                                 
 80068b8:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80068bc:	5b 8d 00 08 	sw (sp+8),r13                                  
 80068c0:	5b 9d 00 04 	sw (sp+4),ra                                   
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.fatal != NULL )                      
      (*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
  }                                                                   
}                                                                     
 80068c4:	78 0c 08 01 	mvhi r12,0x801                                 
 80068c8:	39 8c 4a 28 	ori r12,r12,0x4a28                             
 80068cc:	29 8b 00 08 	lw r11,(r12+8)                                 
}                                                                     
                                                                      
void _User_extensions_Thread_exitted (                                
  Thread_Control *executing                                           
)                                                                     
{                                                                     
 80068d0:	b8 20 68 00 	mv r13,r1                                      
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
 80068d4:	45 6c 00 07 	be r11,r12,80068f0 <_User_extensions_Thread_exitted+0x40><== NEVER TAKEN
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_exitted != NULL )             
 80068d8:	29 62 00 2c 	lw r2,(r11+44)                                 
      (*the_extension->Callouts.thread_exitted)( executing );         
 80068dc:	b9 a0 08 00 	mv r1,r13                                      
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_exitted != NULL )             
 80068e0:	44 40 00 02 	be r2,r0,80068e8 <_User_extensions_Thread_exitted+0x38>
      (*the_extension->Callouts.thread_exitted)( executing );         
 80068e4:	d8 40 00 00 	call r2                                        
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
 80068e8:	29 6b 00 04 	lw r11,(r11+4)                                 
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
 80068ec:	5d 6c ff fb 	bne r11,r12,80068d8 <_User_extensions_Thread_exitted+0x28>
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_exitted != NULL )             
      (*the_extension->Callouts.thread_exitted)( executing );         
  }                                                                   
}                                                                     
 80068f0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80068f4:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80068f8:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80068fc:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8006900:	37 9c 00 10 	addi sp,sp,16                                  
 8006904:	c3 a0 00 00 	ret                                            
                                                                      

08007a74 <_User_extensions_Thread_restart>: #include <rtems/score/userext.h> void _User_extensions_Thread_restart ( Thread_Control *the_thread ) {
 8007a74:	37 9c ff ec 	addi sp,sp,-20                                 
 8007a78:	5b 8b 00 14 	sw (sp+20),r11                                 
 8007a7c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8007a80:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8007a84:	5b 8e 00 08 	sw (sp+8),r14                                  
 8007a88:	5b 9d 00 04 	sw (sp+4),ra                                   
      (*the_extension->Callouts.thread_restart)(                      
        _Thread_Executing,                                            
        the_thread                                                    
      );                                                              
  }                                                                   
}                                                                     
 8007a8c:	78 02 08 01 	mvhi r2,0x801                                  
 8007a90:	38 42 fa 70 	ori r2,r2,0xfa70                               
 8007a94:	28 4b 00 00 	lw r11,(r2+0)                                  
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8007a98:	78 0c 08 01 	mvhi r12,0x801                                 
 8007a9c:	39 8c fa 74 	ori r12,r12,0xfa74                             
#include <rtems/score/userext.h>                                      
                                                                      
void _User_extensions_Thread_restart (                                
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
 8007aa0:	b8 20 70 00 	mv r14,r1                                      
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8007aa4:	45 6c 00 0a 	be r11,r12,8007acc <_User_extensions_Thread_restart+0x58><== NEVER TAKEN
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_restart != NULL )             
      (*the_extension->Callouts.thread_restart)(                      
 8007aa8:	78 0d 08 01 	mvhi r13,0x801                                 
 8007aac:	39 ad fd c0 	ori r13,r13,0xfdc0                             
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_restart != NULL )             
 8007ab0:	29 63 00 1c 	lw r3,(r11+28)                                 
      (*the_extension->Callouts.thread_restart)(                      
 8007ab4:	b9 c0 10 00 	mv r2,r14                                      
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_restart != NULL )             
 8007ab8:	44 60 00 03 	be r3,r0,8007ac4 <_User_extensions_Thread_restart+0x50>
      (*the_extension->Callouts.thread_restart)(                      
 8007abc:	29 a1 00 0c 	lw r1,(r13+12)                                 
 8007ac0:	d8 60 00 00 	call r3                                        
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
 8007ac4:	29 6b 00 00 	lw r11,(r11+0)                                 
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8007ac8:	5d 6c ff fa 	bne r11,r12,8007ab0 <_User_extensions_Thread_restart+0x3c>
      (*the_extension->Callouts.thread_restart)(                      
        _Thread_Executing,                                            
        the_thread                                                    
      );                                                              
  }                                                                   
}                                                                     
 8007acc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007ad0:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8007ad4:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8007ad8:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8007adc:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8007ae0:	37 9c 00 14 	addi sp,sp,20                                  
 8007ae4:	c3 a0 00 00 	ret                                            
                                                                      

08006a8c <_User_extensions_Thread_start>: #include <rtems/score/userext.h> void _User_extensions_Thread_start ( Thread_Control *the_thread ) {
 8006a8c:	37 9c ff ec 	addi sp,sp,-20                                 
 8006a90:	5b 8b 00 14 	sw (sp+20),r11                                 
 8006a94:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006a98:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8006a9c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8006aa0:	5b 9d 00 04 	sw (sp+4),ra                                   
      (*the_extension->Callouts.thread_start)(                        
        _Thread_Executing,                                            
        the_thread                                                    
      );                                                              
  }                                                                   
}                                                                     
 8006aa4:	78 02 08 01 	mvhi r2,0x801                                  
 8006aa8:	38 42 4a 28 	ori r2,r2,0x4a28                               
 8006aac:	28 4b 00 00 	lw r11,(r2+0)                                  
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8006ab0:	78 0c 08 01 	mvhi r12,0x801                                 
 8006ab4:	39 8c 4a 2c 	ori r12,r12,0x4a2c                             
#include <rtems/score/userext.h>                                      
                                                                      
void _User_extensions_Thread_start (                                  
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
 8006ab8:	b8 20 70 00 	mv r14,r1                                      
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8006abc:	45 6c 00 0a 	be r11,r12,8006ae4 <_User_extensions_Thread_start+0x58><== NEVER TAKEN
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_start != NULL )               
      (*the_extension->Callouts.thread_start)(                        
 8006ac0:	78 0d 08 01 	mvhi r13,0x801                                 
 8006ac4:	39 ad 4d 78 	ori r13,r13,0x4d78                             
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_start != NULL )               
 8006ac8:	29 63 00 18 	lw r3,(r11+24)                                 
      (*the_extension->Callouts.thread_start)(                        
 8006acc:	b9 c0 10 00 	mv r2,r14                                      
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_start != NULL )               
 8006ad0:	44 60 00 03 	be r3,r0,8006adc <_User_extensions_Thread_start+0x50>
      (*the_extension->Callouts.thread_start)(                        
 8006ad4:	29 a1 00 0c 	lw r1,(r13+12)                                 
 8006ad8:	d8 60 00 00 	call r3                                        
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
 8006adc:	29 6b 00 00 	lw r11,(r11+0)                                 
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8006ae0:	5d 6c ff fa 	bne r11,r12,8006ac8 <_User_extensions_Thread_start+0x3c>
      (*the_extension->Callouts.thread_start)(                        
        _Thread_Executing,                                            
        the_thread                                                    
      );                                                              
  }                                                                   
}                                                                     
 8006ae4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006ae8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8006aec:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006af0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8006af4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8006af8:	37 9c 00 14 	addi sp,sp,20                                  
 8006afc:	c3 a0 00 00 	ret                                            
                                                                      

08006b00 <_User_extensions_Thread_switch>: void _User_extensions_Thread_switch ( Thread_Control *executing, Thread_Control *heir ) {
 8006b00:	37 9c ff ec 	addi sp,sp,-20                                 
 8006b04:	5b 8b 00 14 	sw (sp+20),r11                                 
 8006b08:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006b0c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8006b10:	5b 8e 00 08 	sw (sp+8),r14                                  
 8006b14:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
    the_extension_switch = (User_extensions_Switch_control *) the_node;
                                                                      
    (*the_extension_switch->thread_switch)( executing, heir );        
  }                                                                   
}                                                                     
 8006b18:	78 03 08 01 	mvhi r3,0x801                                  
 8006b1c:	38 63 48 ac 	ori r3,r3,0x48ac                               
 8006b20:	28 6b 00 00 	lw r11,(r3+0)                                  
)                                                                     
{                                                                     
  Chain_Node                     *the_node;                           
  User_extensions_Switch_control *the_extension_switch;               
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_Switches_list );   
 8006b24:	78 0c 08 01 	mvhi r12,0x801                                 
 8006b28:	39 8c 48 b0 	ori r12,r12,0x48b0                             
                                                                      
void _User_extensions_Thread_switch (                                 
  Thread_Control *executing,                                          
  Thread_Control *heir                                                
)                                                                     
{                                                                     
 8006b2c:	b8 20 70 00 	mv r14,r1                                      
 8006b30:	b8 40 68 00 	mv r13,r2                                      
  Chain_Node                     *the_node;                           
  User_extensions_Switch_control *the_extension_switch;               
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_Switches_list );   
 8006b34:	45 6c 00 07 	be r11,r12,8006b50 <_User_extensions_Thread_switch+0x50><== NEVER TAKEN
        !_Chain_Is_tail( &_User_extensions_Switches_list, the_node ) ;
        the_node = the_node->next ) {                                 
                                                                      
    the_extension_switch = (User_extensions_Switch_control *) the_node;
                                                                      
    (*the_extension_switch->thread_switch)( executing, heir );        
 8006b38:	29 63 00 08 	lw r3,(r11+8)                                  
 8006b3c:	b9 c0 08 00 	mv r1,r14                                      
 8006b40:	b9 a0 10 00 	mv r2,r13                                      
 8006b44:	d8 60 00 00 	call r3                                        
  Chain_Node                     *the_node;                           
  User_extensions_Switch_control *the_extension_switch;               
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_Switches_list );   
        !_Chain_Is_tail( &_User_extensions_Switches_list, the_node ) ;
        the_node = the_node->next ) {                                 
 8006b48:	29 6b 00 00 	lw r11,(r11+0)                                 
)                                                                     
{                                                                     
  Chain_Node                     *the_node;                           
  User_extensions_Switch_control *the_extension_switch;               
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_Switches_list );   
 8006b4c:	5d 6c ff fb 	bne r11,r12,8006b38 <_User_extensions_Thread_switch+0x38>
                                                                      
    the_extension_switch = (User_extensions_Switch_control *) the_node;
                                                                      
    (*the_extension_switch->thread_switch)( executing, heir );        
  }                                                                   
}                                                                     
 8006b50:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006b54:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8006b58:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006b5c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8006b60:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8006b64:	37 9c 00 14 	addi sp,sp,20                                  
 8006b68:	c3 a0 00 00 	ret                                            
                                                                      

0800924c <_Watchdog_Adjust>: void _Watchdog_Adjust( Chain_Control *header, Watchdog_Adjust_directions direction, Watchdog_Interval units ) {
 800924c:	37 9c ff e4 	addi sp,sp,-28                                 
 8009250:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8009254:	5b 8c 00 18 	sw (sp+24),r12                                 
 8009258:	5b 8d 00 14 	sw (sp+20),r13                                 
 800925c:	5b 8e 00 10 	sw (sp+16),r14                                 
 8009260:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8009264:	5b 90 00 08 	sw (sp+8),r16                                  
 8009268:	5b 9d 00 04 	sw (sp+4),ra                                   
 800926c:	b8 20 60 00 	mv r12,r1                                      
 8009270:	b8 60 58 00 	mv r11,r3                                      
  ISR_Level level;                                                    
                                                                      
  _ISR_Disable( level );                                              
 8009274:	90 00 18 00 	rcsr r3,IE                                     
 8009278:	34 01 ff fe 	mvi r1,-2                                      
 800927c:	a0 61 08 00 	and r1,r3,r1                                   
 8009280:	d0 01 00 00 	wcsr IE,r1                                     
    }                                                                 
  }                                                                   
                                                                      
  _ISR_Enable( level );                                               
                                                                      
}                                                                     
 8009284:	29 81 00 00 	lw r1,(r12+0)                                  
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8009288:	35 8e 00 04 	addi r14,r12,4                                 
  Watchdog_Interval            units                                  
)                                                                     
{                                                                     
  ISR_Level level;                                                    
                                                                      
  _ISR_Disable( level );                                              
 800928c:	b8 60 20 00 	mv r4,r3                                       
   *       hence the compiler must not assume *header to remain       
   *       unmodified across that call.                               
   *                                                                  
   *       Till Straumann, 7/2003                                     
   */                                                                 
  if ( !_Chain_Is_empty( header ) ) {                                 
 8009290:	44 2e 00 04 	be r1,r14,80092a0 <_Watchdog_Adjust+0x54>      
    switch ( direction ) {                                            
 8009294:	44 40 00 11 	be r2,r0,80092d8 <_Watchdog_Adjust+0x8c>       
 8009298:	34 03 00 01 	mvi r3,1                                       
 800929c:	44 43 00 0b 	be r2,r3,80092c8 <_Watchdog_Adjust+0x7c>       <== ALWAYS TAKEN
        }                                                             
        break;                                                        
    }                                                                 
  }                                                                   
                                                                      
  _ISR_Enable( level );                                               
 80092a0:	d0 04 00 00 	wcsr IE,r4                                     
                                                                      
}                                                                     
 80092a4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80092a8:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 80092ac:	2b 8c 00 18 	lw r12,(sp+24)                                 
 80092b0:	2b 8d 00 14 	lw r13,(sp+20)                                 
 80092b4:	2b 8e 00 10 	lw r14,(sp+16)                                 
 80092b8:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 80092bc:	2b 90 00 08 	lw r16,(sp+8)                                  
 80092c0:	37 9c 00 1c 	addi sp,sp,28                                  
 80092c4:	c3 a0 00 00 	ret                                            
   *       Till Straumann, 7/2003                                     
   */                                                                 
  if ( !_Chain_Is_empty( header ) ) {                                 
    switch ( direction ) {                                            
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
 80092c8:	28 22 00 10 	lw r2,(r1+16)                                  
 80092cc:	b4 4b 58 00 	add r11,r2,r11                                 
 80092d0:	58 2b 00 10 	sw (r1+16),r11                                 
        break;                                                        
 80092d4:	e3 ff ff f3 	bi 80092a0 <_Watchdog_Adjust+0x54>             
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
 80092d8:	b8 60 20 00 	mv r4,r3                                       
 80092dc:	45 62 ff f1 	be r11,r2,80092a0 <_Watchdog_Adjust+0x54>      <== NEVER TAKEN
          if ( units < _Watchdog_First( header )->delta_interval ) {  
 80092e0:	28 2d 00 10 	lw r13,(r1+16)                                 
 80092e4:	55 ab 00 13 	bgu r13,r11,8009330 <_Watchdog_Adjust+0xe4>    <== NEVER TAKEN
            _Watchdog_First( header )->delta_interval -= units;       
            break;                                                    
          } else {                                                    
            units -= _Watchdog_First( header )->delta_interval;       
            _Watchdog_First( header )->delta_interval = 1;            
 80092e8:	34 10 00 01 	mvi r16,1                                      
                                                                      
            _ISR_Enable( level );                                     
                                                                      
            _Watchdog_Tickle( header );                               
                                                                      
            _ISR_Disable( level );                                    
 80092ec:	34 0f ff fe 	mvi r15,-2                                     
          if ( units < _Watchdog_First( header )->delta_interval ) {  
            _Watchdog_First( header )->delta_interval -= units;       
            break;                                                    
          } else {                                                    
            units -= _Watchdog_First( header )->delta_interval;       
            _Watchdog_First( header )->delta_interval = 1;            
 80092f0:	58 30 00 10 	sw (r1+16),r16                                 
                                                                      
            _ISR_Enable( level );                                     
 80092f4:	d0 03 00 00 	wcsr IE,r3                                     
                                                                      
            _Watchdog_Tickle( header );                               
 80092f8:	b9 80 08 00 	mv r1,r12                                      
 80092fc:	f8 00 00 b0 	calli 80095bc <_Watchdog_Tickle>               
                                                                      
            _ISR_Disable( level );                                    
 8009300:	90 00 10 00 	rcsr r2,IE                                     
 8009304:	a0 4f 08 00 	and r1,r2,r15                                  
 8009308:	d0 01 00 00 	wcsr IE,r1                                     
    }                                                                 
  }                                                                   
                                                                      
  _ISR_Enable( level );                                               
                                                                      
}                                                                     
 800930c:	29 84 00 00 	lw r4,(r12+0)                                  
        while ( units ) {                                             
          if ( units < _Watchdog_First( header )->delta_interval ) {  
            _Watchdog_First( header )->delta_interval -= units;       
            break;                                                    
          } else {                                                    
            units -= _Watchdog_First( header )->delta_interval;       
 8009310:	c9 6d 58 00 	sub r11,r11,r13                                
                                                                      
            _ISR_Enable( level );                                     
                                                                      
            _Watchdog_Tickle( header );                               
                                                                      
            _ISR_Disable( level );                                    
 8009314:	b8 40 18 00 	mv r3,r2                                       
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(               
  Chain_Control *header                                               
)                                                                     
{                                                                     
                                                                      
  return ( (Watchdog_Control *) _Chain_First( header ) );             
 8009318:	b8 80 08 00 	mv r1,r4                                       
                                                                      
            if ( _Chain_Is_empty( header ) )                          
 800931c:	45 c4 00 08 	be r14,r4,800933c <_Watchdog_Adjust+0xf0>      
    switch ( direction ) {                                            
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
        break;                                                        
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
 8009320:	45 60 00 07 	be r11,r0,800933c <_Watchdog_Adjust+0xf0>      <== NEVER TAKEN
          if ( units < _Watchdog_First( header )->delta_interval ) {  
 8009324:	28 2d 00 10 	lw r13,(r1+16)                                 
 8009328:	51 6d ff f2 	bgeu r11,r13,80092f0 <_Watchdog_Adjust+0xa4>   
                                                                      
            _ISR_Enable( level );                                     
                                                                      
            _Watchdog_Tickle( header );                               
                                                                      
            _ISR_Disable( level );                                    
 800932c:	b8 40 20 00 	mv r4,r2                                       
        _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;       
 8009330:	c9 ab 58 00 	sub r11,r13,r11                                
 8009334:	58 2b 00 10 	sw (r1+16),r11                                 
            break;                                                    
 8009338:	e3 ff ff da 	bi 80092a0 <_Watchdog_Adjust+0x54>             
                                                                      
            _ISR_Enable( level );                                     
                                                                      
            _Watchdog_Tickle( header );                               
                                                                      
            _ISR_Disable( level );                                    
 800933c:	b8 40 20 00 	mv r4,r2                                       
 8009340:	e3 ff ff d8 	bi 80092a0 <_Watchdog_Adjust+0x54>             
                                                                      

08006b6c <_Watchdog_Insert>: void _Watchdog_Insert( Chain_Control *header, Watchdog_Control *the_watchdog ) {
 8006b6c:	37 9c ff f8 	addi sp,sp,-8                                  
 8006b70:	5b 8b 00 08 	sw (sp+8),r11                                  
 8006b74:	5b 8c 00 04 	sw (sp+4),r12                                  
  Watchdog_Control  *after;                                           
  uint32_t           insert_isr_nest_level;                           
  Watchdog_Interval  delta_interval;                                  
                                                                      
                                                                      
  insert_isr_nest_level   = _ISR_Nest_level;                          
 8006b78:	78 03 08 01 	mvhi r3,0x801                                  
 8006b7c:	38 63 4d 78 	ori r3,r3,0x4d78                               
 8006b80:	28 69 00 08 	lw r9,(r3+8)                                   
                                                                      
  _ISR_Disable( level );                                              
 8006b84:	90 00 30 00 	rcsr r6,IE                                     
 8006b88:	34 08 ff fe 	mvi r8,-2                                      
 8006b8c:	a0 c8 40 00 	and r8,r6,r8                                   
 8006b90:	d0 08 00 00 	wcsr IE,r8                                     
  /*                                                                  
   *  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 ) {                   
 8006b94:	28 43 00 08 	lw r3,(r2+8)                                   
 8006b98:	5c 60 00 3f 	bne r3,r0,8006c94 <_Watchdog_Insert+0x128>     
    _ISR_Enable( level );                                             
    return;                                                           
  }                                                                   
                                                                      
  the_watchdog->state = WATCHDOG_BEING_INSERTED;                      
  _Watchdog_Sync_count++;                                             
 8006b9c:	78 0c 08 01 	mvhi r12,0x801                                 
 8006ba0:	39 8c 49 d4 	ori r12,r12,0x49d4                             
 8006ba4:	29 83 00 00 	lw r3,(r12+0)                                  
 8006ba8:	78 07 08 01 	mvhi r7,0x801                                  
  if ( the_watchdog->state != WATCHDOG_INACTIVE ) {                   
    _ISR_Enable( level );                                             
    return;                                                           
  }                                                                   
                                                                      
  the_watchdog->state = WATCHDOG_BEING_INSERTED;                      
 8006bac:	34 04 00 01 	mvi r4,1                                       
  _Watchdog_Sync_count++;                                             
 8006bb0:	34 63 00 01 	addi r3,r3,1                                   
  if ( the_watchdog->state != WATCHDOG_INACTIVE ) {                   
    _ISR_Enable( level );                                             
    return;                                                           
  }                                                                   
                                                                      
  the_watchdog->state = WATCHDOG_BEING_INSERTED;                      
 8006bb4:	58 44 00 08 	sw (r2+8),r4                                   
  _Watchdog_Sync_count++;                                             
 8006bb8:	59 83 00 00 	sw (r12+0),r3                                  
 8006bbc:	38 e7 49 6c 	ori r7,r7,0x496c                               
                                                                      
     delta_interval -= after->delta_interval;                         
                                                                      
     _ISR_Flash( level );                                             
                                                                      
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
 8006bc0:	34 0a 00 01 	mvi r10,1                                      
                                                                      
  the_watchdog->state = WATCHDOG_BEING_INSERTED;                      
  _Watchdog_Sync_count++;                                             
                                                                      
restart:                                                              
  delta_interval = the_watchdog->initial;                             
 8006bc4:	28 44 00 0c 	lw r4,(r2+12)                                  
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(               
  Chain_Control *header                                               
)                                                                     
{                                                                     
                                                                      
  return ( (Watchdog_Control *) _Chain_First( header ) );             
 8006bc8:	28 23 00 00 	lw r3,(r1+0)                                   
                                                                      
  for ( after = _Watchdog_First( header ) ;                           
        ;                                                             
        after = _Watchdog_Next( after ) ) {                           
                                                                      
     if ( delta_interval == 0 || !_Watchdog_Next( after ) )           
 8006bcc:	44 80 00 14 	be r4,r0,8006c1c <_Watchdog_Insert+0xb0>       
 8006bd0:	28 65 00 00 	lw r5,(r3+0)                                   
 8006bd4:	44 a0 00 12 	be r5,r0,8006c1c <_Watchdog_Insert+0xb0>       
       break;                                                         
                                                                      
     if ( delta_interval < after->delta_interval ) {                  
 8006bd8:	28 65 00 10 	lw r5,(r3+16)                                  
 8006bdc:	54 a4 00 0e 	bgu r5,r4,8006c14 <_Watchdog_Insert+0xa8>      
       break;                                                         
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
                                                                      
     _ISR_Flash( level );                                             
 8006be0:	d0 06 00 00 	wcsr IE,r6                                     
 8006be4:	d0 08 00 00 	wcsr IE,r8                                     
                                                                      
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
 8006be8:	28 4b 00 08 	lw r11,(r2+8)                                  
 8006bec:	5d 6a 00 19 	bne r11,r10,8006c50 <_Watchdog_Insert+0xe4>    
       goto exit_insert;                                              
     }                                                                
                                                                      
     if ( _Watchdog_Sync_level > insert_isr_nest_level ) {            
 8006bf0:	28 eb 00 00 	lw r11,(r7+0)                                  
 8006bf4:	55 69 00 2d 	bgu r11,r9,8006ca8 <_Watchdog_Insert+0x13c>    
     if ( delta_interval < after->delta_interval ) {                  
       after->delta_interval -= delta_interval;                       
       break;                                                         
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
 8006bf8:	c8 85 20 00 	sub r4,r4,r5                                   
                                                                      
exit_insert:                                                          
  _Watchdog_Sync_level = insert_isr_nest_level;                       
  _Watchdog_Sync_count--;                                             
  _ISR_Enable( level );                                               
}                                                                     
 8006bfc:	28 63 00 00 	lw r3,(r3+0)                                   
                                                                      
  for ( after = _Watchdog_First( header ) ;                           
        ;                                                             
        after = _Watchdog_Next( after ) ) {                           
                                                                      
     if ( delta_interval == 0 || !_Watchdog_Next( after ) )           
 8006c00:	44 80 00 07 	be r4,r0,8006c1c <_Watchdog_Insert+0xb0>       
 8006c04:	28 65 00 00 	lw r5,(r3+0)                                   
 8006c08:	44 a0 00 05 	be r5,r0,8006c1c <_Watchdog_Insert+0xb0>       
       break;                                                         
                                                                      
     if ( delta_interval < after->delta_interval ) {                  
 8006c0c:	28 65 00 10 	lw r5,(r3+16)                                  
 8006c10:	50 85 00 19 	bgeu r4,r5,8006c74 <_Watchdog_Insert+0x108>    
       after->delta_interval -= delta_interval;                       
 8006c14:	c8 a4 28 00 	sub r5,r5,r4                                   
 8006c18:	58 65 00 10 	sw (r3+16),r5                                  
                                                                      
  _Watchdog_Activate( the_watchdog );                                 
                                                                      
  the_watchdog->delta_interval = delta_interval;                      
                                                                      
  _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
 8006c1c:	28 63 00 04 	lw r3,(r3+4)                                   
                                                                      
  the_watchdog->start_time = _Watchdog_Ticks_since_boot;              
 8006c20:	78 01 08 01 	mvhi r1,0x801                                  
 8006c24:	38 21 49 d8 	ori r1,r1,0x49d8                               
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
 8006c28:	28 65 00 00 	lw r5,(r3+0)                                   
 8006c2c:	28 28 00 00 	lw r8,(r1+0)                                   
RTEMS_INLINE_ROUTINE void _Watchdog_Activate(                         
  Watchdog_Control *the_watchdog                                      
)                                                                     
{                                                                     
                                                                      
  the_watchdog->state = WATCHDOG_ACTIVE;                              
 8006c30:	34 01 00 02 	mvi r1,2                                       
 8006c34:	58 41 00 08 	sw (r2+8),r1                                   
     }                                                                
  }                                                                   
                                                                      
  _Watchdog_Activate( the_watchdog );                                 
                                                                      
  the_watchdog->delta_interval = delta_interval;                      
 8006c38:	58 44 00 10 	sw (r2+16),r4                                  
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
 8006c3c:	58 43 00 04 	sw (r2+4),r3                                   
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
 8006c40:	58 62 00 00 	sw (r3+0),r2                                   
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
 8006c44:	58 a2 00 04 	sw (r5+4),r2                                   
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
 8006c48:	58 45 00 00 	sw (r2+0),r5                                   
                                                                      
  _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
                                                                      
  the_watchdog->start_time = _Watchdog_Ticks_since_boot;              
 8006c4c:	58 48 00 14 	sw (r2+20),r8                                  
                                                                      
exit_insert:                                                          
  _Watchdog_Sync_level = insert_isr_nest_level;                       
 8006c50:	58 e9 00 00 	sw (r7+0),r9                                   
  _Watchdog_Sync_count--;                                             
 8006c54:	29 81 00 00 	lw r1,(r12+0)                                  
 8006c58:	34 21 ff ff 	addi r1,r1,-1                                  
 8006c5c:	59 81 00 00 	sw (r12+0),r1                                  
  _ISR_Enable( level );                                               
 8006c60:	d0 06 00 00 	wcsr IE,r6                                     
}                                                                     
 8006c64:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8006c68:	2b 8c 00 04 	lw r12,(sp+4)                                  
 8006c6c:	37 9c 00 08 	addi sp,sp,8                                   
 8006c70:	c3 a0 00 00 	ret                                            
       break;                                                         
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
                                                                      
     _ISR_Flash( level );                                             
 8006c74:	d0 06 00 00 	wcsr IE,r6                                     
 8006c78:	d0 08 00 00 	wcsr IE,r8                                     
                                                                      
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
 8006c7c:	28 4b 00 08 	lw r11,(r2+8)                                  
     if ( delta_interval < after->delta_interval ) {                  
       after->delta_interval -= delta_interval;                       
       break;                                                         
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
 8006c80:	c8 85 20 00 	sub r4,r4,r5                                   
                                                                      
     _ISR_Flash( level );                                             
                                                                      
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
 8006c84:	5d 6a ff f3 	bne r11,r10,8006c50 <_Watchdog_Insert+0xe4>    <== NEVER TAKEN
       goto exit_insert;                                              
     }                                                                
                                                                      
     if ( _Watchdog_Sync_level > insert_isr_nest_level ) {            
 8006c88:	28 e5 00 00 	lw r5,(r7+0)                                   
 8006c8c:	54 a9 00 07 	bgu r5,r9,8006ca8 <_Watchdog_Insert+0x13c>     <== NEVER TAKEN
 8006c90:	e3 ff ff db 	bi 8006bfc <_Watchdog_Insert+0x90>             
   *  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 ) {                   
    _ISR_Enable( level );                                             
 8006c94:	d0 06 00 00 	wcsr IE,r6                                     
                                                                      
exit_insert:                                                          
  _Watchdog_Sync_level = insert_isr_nest_level;                       
  _Watchdog_Sync_count--;                                             
  _ISR_Enable( level );                                               
}                                                                     
 8006c98:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8006c9c:	2b 8c 00 04 	lw r12,(sp+4)                                  
 8006ca0:	37 9c 00 08 	addi sp,sp,8                                   
 8006ca4:	c3 a0 00 00 	ret                                            
     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;                  
 8006ca8:	58 e9 00 00 	sw (r7+0),r9                                   
       goto restart;                                                  
 8006cac:	e3 ff ff c6 	bi 8006bc4 <_Watchdog_Insert+0x58>             
                                                                      

08006d10 <_Watchdog_Remove>: { ISR_Level level; Watchdog_States previous_state; Watchdog_Control *next_watchdog; _ISR_Disable( level );
 8006d10:	90 00 20 00 	rcsr r4,IE                                     
 8006d14:	34 02 ff fe 	mvi r2,-2                                      
 8006d18:	a0 82 10 00 	and r2,r4,r2                                   
 8006d1c:	d0 02 00 00 	wcsr IE,r2                                     
  previous_state = the_watchdog->state;                               
 8006d20:	28 22 00 08 	lw r2,(r1+8)                                   
  switch ( previous_state ) {                                         
 8006d24:	34 03 00 01 	mvi r3,1                                       
 8006d28:	44 43 00 27 	be r2,r3,8006dc4 <_Watchdog_Remove+0xb4>       
 8006d2c:	5c 40 00 08 	bne r2,r0,8006d4c <_Watchdog_Remove+0x3c>      
        _Watchdog_Sync_level = _ISR_Nest_level;                       
                                                                      
      _Chain_Extract_unprotected( &the_watchdog->Node );              
      break;                                                          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
 8006d30:	78 03 08 01 	mvhi r3,0x801                                  
 8006d34:	38 63 49 d8 	ori r3,r3,0x49d8                               
 8006d38:	28 63 00 00 	lw r3,(r3+0)                                   
 8006d3c:	58 23 00 18 	sw (r1+24),r3                                  
                                                                      
  _ISR_Enable( level );                                               
 8006d40:	d0 04 00 00 	wcsr IE,r4                                     
  return( previous_state );                                           
}                                                                     
 8006d44:	b8 40 08 00 	mv r1,r2                                       
 8006d48:	c3 a0 00 00 	ret                                            
  Watchdog_States   previous_state;                                   
  Watchdog_Control *next_watchdog;                                    
                                                                      
  _ISR_Disable( level );                                              
  previous_state = the_watchdog->state;                               
  switch ( previous_state ) {                                         
 8006d4c:	34 03 00 03 	mvi r3,3                                       
 8006d50:	54 43 ff f8 	bgu r2,r3,8006d30 <_Watchdog_Remove+0x20>      <== NEVER TAKEN
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
                                                                      
  _ISR_Enable( level );                                               
  return( previous_state );                                           
}                                                                     
 8006d54:	28 23 00 00 	lw r3,(r1+0)                                   
      break;                                                          
                                                                      
    case WATCHDOG_ACTIVE:                                             
    case WATCHDOG_REMOVE_IT:                                          
                                                                      
      the_watchdog->state = WATCHDOG_INACTIVE;                        
 8006d58:	58 20 00 08 	sw (r1+8),r0                                   
      next_watchdog = _Watchdog_Next( the_watchdog );                 
                                                                      
      if ( _Watchdog_Next(next_watchdog) )                            
 8006d5c:	28 65 00 00 	lw r5,(r3+0)                                   
 8006d60:	44 a0 00 05 	be r5,r0,8006d74 <_Watchdog_Remove+0x64>       
        next_watchdog->delta_interval += the_watchdog->delta_interval;
 8006d64:	28 66 00 10 	lw r6,(r3+16)                                  
 8006d68:	28 25 00 10 	lw r5,(r1+16)                                  
 8006d6c:	b4 c5 28 00 	add r5,r6,r5                                   
 8006d70:	58 65 00 10 	sw (r3+16),r5                                  
                                                                      
      if ( _Watchdog_Sync_count )                                     
 8006d74:	78 05 08 01 	mvhi r5,0x801                                  
 8006d78:	38 a5 49 d4 	ori r5,r5,0x49d4                               
 8006d7c:	28 a5 00 00 	lw r5,(r5+0)                                   
 8006d80:	44 a0 00 07 	be r5,r0,8006d9c <_Watchdog_Remove+0x8c>       
        _Watchdog_Sync_level = _ISR_Nest_level;                       
 8006d84:	78 05 08 01 	mvhi r5,0x801                                  
 8006d88:	38 a5 4d 78 	ori r5,r5,0x4d78                               
 8006d8c:	28 a6 00 08 	lw r6,(r5+8)                                   
 8006d90:	78 05 08 01 	mvhi r5,0x801                                  
 8006d94:	38 a5 49 6c 	ori r5,r5,0x496c                               
 8006d98:	58 a6 00 00 	sw (r5+0),r6                                   
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
 8006d9c:	28 25 00 04 	lw r5,(r1+4)                                   
  next->previous = previous;                                          
 8006da0:	58 65 00 04 	sw (r3+4),r5                                   
  previous->next = next;                                              
 8006da4:	58 a3 00 00 	sw (r5+0),r3                                   
                                                                      
      _Chain_Extract_unprotected( &the_watchdog->Node );              
      break;                                                          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
 8006da8:	78 03 08 01 	mvhi r3,0x801                                  
 8006dac:	38 63 49 d8 	ori r3,r3,0x49d8                               
 8006db0:	28 63 00 00 	lw r3,(r3+0)                                   
 8006db4:	58 23 00 18 	sw (r1+24),r3                                  
                                                                      
  _ISR_Enable( level );                                               
 8006db8:	d0 04 00 00 	wcsr IE,r4                                     
  return( previous_state );                                           
}                                                                     
 8006dbc:	b8 40 08 00 	mv r1,r2                                       
 8006dc0:	c3 a0 00 00 	ret                                            
        _Watchdog_Sync_level = _ISR_Nest_level;                       
                                                                      
      _Chain_Extract_unprotected( &the_watchdog->Node );              
      break;                                                          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
 8006dc4:	78 03 08 01 	mvhi r3,0x801                                  
 8006dc8:	38 63 49 d8 	ori r3,r3,0x49d8                               
 8006dcc:	28 63 00 00 	lw r3,(r3+0)                                   
                                                                      
      /*                                                              
       *  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;                        
 8006dd0:	58 20 00 08 	sw (r1+8),r0                                   
        _Watchdog_Sync_level = _ISR_Nest_level;                       
                                                                      
      _Chain_Extract_unprotected( &the_watchdog->Node );              
      break;                                                          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
 8006dd4:	58 23 00 18 	sw (r1+24),r3                                  
                                                                      
  _ISR_Enable( level );                                               
 8006dd8:	d0 04 00 00 	wcsr IE,r4                                     
  return( previous_state );                                           
}                                                                     
 8006ddc:	b8 40 08 00 	mv r1,r2                                       
 8006de0:	c3 a0 00 00 	ret                                            
                                                                      

080089c0 <_Watchdog_Report_chain>: void _Watchdog_Report_chain( const char *name, Chain_Control *header ) {
 80089c0:	37 9c ff ec 	addi sp,sp,-20                                 
 80089c4:	5b 8b 00 14 	sw (sp+20),r11                                 
 80089c8:	5b 8c 00 10 	sw (sp+16),r12                                 
 80089cc:	5b 8d 00 0c 	sw (sp+12),r13                                 
 80089d0:	5b 8e 00 08 	sw (sp+8),r14                                  
 80089d4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80089d8:	b8 20 70 00 	mv r14,r1                                      
 80089dc:	b8 40 60 00 	mv r12,r2                                      
  ISR_Level          level;                                           
  Chain_Node        *node;                                            
                                                                      
  _ISR_Disable( level );                                              
 80089e0:	90 00 68 00 	rcsr r13,IE                                    
 80089e4:	34 01 ff fe 	mvi r1,-2                                      
 80089e8:	a1 a1 08 00 	and r1,r13,r1                                  
 80089ec:	d0 01 00 00 	wcsr IE,r1                                     
    printk( "Watchdog Chain: %s %p\n", name, header );                
 80089f0:	78 01 08 01 	mvhi r1,0x801                                  
 80089f4:	b9 80 18 00 	mv r3,r12                                      
 80089f8:	38 21 f0 b0 	ori r1,r1,0xf0b0                               
 80089fc:	b9 c0 10 00 	mv r2,r14                                      
 8008a00:	fb ff ea d8 	calli 8003560 <printk>                         
      printk( "== end of %s \n", name );                              
    } else {                                                          
      printk( "Chain is empty\n" );                                   
    }                                                                 
  _ISR_Enable( level );                                               
}                                                                     
 8008a04:	29 8b 00 00 	lw r11,(r12+0)                                 
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8008a08:	35 8c 00 04 	addi r12,r12,4                                 
  ISR_Level          level;                                           
  Chain_Node        *node;                                            
                                                                      
  _ISR_Disable( level );                                              
    printk( "Watchdog Chain: %s %p\n", name, header );                
    if ( !_Chain_Is_empty( header ) ) {                               
 8008a0c:	45 6c 00 12 	be r11,r12,8008a54 <_Watchdog_Report_chain+0x94>
            node != _Chain_Tail(header) ;                             
            node = node->next )                                       
      {                                                               
        Watchdog_Control *watch = (Watchdog_Control *) node;          
                                                                      
        _Watchdog_Report( NULL, watch );                              
 8008a10:	b9 60 10 00 	mv r2,r11                                      
 8008a14:	34 01 00 00 	mvi r1,0                                       
 8008a18:	f8 00 00 13 	calli 8008a64 <_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 )                                       
 8008a1c:	29 6b 00 00 	lw r11,(r11+0)                                 
  Chain_Node        *node;                                            
                                                                      
  _ISR_Disable( level );                                              
    printk( "Watchdog Chain: %s %p\n", name, header );                
    if ( !_Chain_Is_empty( header ) ) {                               
      for ( node = _Chain_First( header ) ;                           
 8008a20:	5d 6c ff fc 	bne r11,r12,8008a10 <_Watchdog_Report_chain+0x50><== NEVER TAKEN
      {                                                               
        Watchdog_Control *watch = (Watchdog_Control *) node;          
                                                                      
        _Watchdog_Report( NULL, watch );                              
      }                                                               
      printk( "== end of %s \n", name );                              
 8008a24:	78 01 08 01 	mvhi r1,0x801                                  
 8008a28:	38 21 f0 c8 	ori r1,r1,0xf0c8                               
 8008a2c:	b9 c0 10 00 	mv r2,r14                                      
 8008a30:	fb ff ea cc 	calli 8003560 <printk>                         
    } else {                                                          
      printk( "Chain is empty\n" );                                   
    }                                                                 
  _ISR_Enable( level );                                               
 8008a34:	d0 0d 00 00 	wcsr IE,r13                                    
}                                                                     
 8008a38:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008a3c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8008a40:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8008a44:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8008a48:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8008a4c:	37 9c 00 14 	addi sp,sp,20                                  
 8008a50:	c3 a0 00 00 	ret                                            
                                                                      
        _Watchdog_Report( NULL, watch );                              
      }                                                               
      printk( "== end of %s \n", name );                              
    } else {                                                          
      printk( "Chain is empty\n" );                                   
 8008a54:	78 01 08 01 	mvhi r1,0x801                                  
 8008a58:	38 21 f0 d8 	ori r1,r1,0xf0d8                               
 8008a5c:	fb ff ea c1 	calli 8003560 <printk>                         
 8008a60:	e3 ff ff f5 	bi 8008a34 <_Watchdog_Report_chain+0x74>       
                                                                      

08006de4 <_Watchdog_Tickle>: */ void _Watchdog_Tickle( Chain_Control *header ) {
 8006de4:	37 9c ff e4 	addi sp,sp,-28                                 
 8006de8:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8006dec:	5b 8c 00 18 	sw (sp+24),r12                                 
 8006df0:	5b 8d 00 14 	sw (sp+20),r13                                 
 8006df4:	5b 8e 00 10 	sw (sp+16),r14                                 
 8006df8:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8006dfc:	5b 90 00 08 	sw (sp+8),r16                                  
 8006e00:	5b 9d 00 04 	sw (sp+4),ra                                   
 8006e04:	b8 20 60 00 	mv r12,r1                                      
   * See the comment in watchdoginsert.c and watchdogadjust.c         
   * about why it's safe not to declare header a pointer to           
   * volatile data - till, 2003/7                                     
   */                                                                 
                                                                      
  _ISR_Disable( level );                                              
 8006e08:	90 00 68 00 	rcsr r13,IE                                    
 8006e0c:	34 01 ff fe 	mvi r1,-2                                      
 8006e10:	a1 a1 08 00 	and r1,r13,r1                                  
 8006e14:	d0 01 00 00 	wcsr IE,r1                                     
   } while ( !_Chain_Is_empty( header ) &&                            
             (the_watchdog->delta_interval == 0) );                   
                                                                      
leave:                                                                
   _ISR_Enable(level);                                                
}                                                                     
 8006e18:	29 8b 00 00 	lw r11,(r12+0)                                 
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8006e1c:	35 8e 00 04 	addi r14,r12,4                                 
   * See the comment in watchdoginsert.c and watchdogadjust.c         
   * about why it's safe not to declare header a pointer to           
   * volatile data - till, 2003/7                                     
   */                                                                 
                                                                      
  _ISR_Disable( level );                                              
 8006e20:	b9 a0 10 00 	mv r2,r13                                      
                                                                      
  if ( _Chain_Is_empty( header ) )                                    
 8006e24:	45 6e 00 1e 	be r11,r14,8006e9c <_Watchdog_Tickle+0xb8>     
   * to be inserted has already had its delta_interval adjusted to 0, and
   * so is added to the head of the chain with a delta_interval of 0. 
   *                                                                  
   * Steven Johnson - 12/2005 (gcc-3.2.3 -O3 on powerpc)              
   */                                                                 
  if (the_watchdog->delta_interval != 0) {                            
 8006e28:	29 61 00 10 	lw r1,(r11+16)                                 
 8006e2c:	5c 20 00 26 	bne r1,r0,8006ec4 <_Watchdog_Tickle+0xe0>      
  do {                                                                
     watchdog_state = _Watchdog_Remove( the_watchdog );               
                                                                      
     _ISR_Enable( level );                                            
                                                                      
     switch( watchdog_state ) {                                       
 8006e30:	34 10 00 02 	mvi r16,2                                      
                                                                      
       case WATCHDOG_REMOVE_IT:                                       
         break;                                                       
     }                                                                
                                                                      
     _ISR_Disable( level );                                           
 8006e34:	34 0f ff fe 	mvi r15,-2                                     
 8006e38:	e0 00 00 0a 	bi 8006e60 <_Watchdog_Tickle+0x7c>             
 8006e3c:	90 00 10 00 	rcsr r2,IE                                     <== NOT EXECUTED
 8006e40:	a0 4f 08 00 	and r1,r2,r15                                  <== NOT EXECUTED
 8006e44:	d0 01 00 00 	wcsr IE,r1                                     <== NOT EXECUTED
   } while ( !_Chain_Is_empty( header ) &&                            
             (the_watchdog->delta_interval == 0) );                   
                                                                      
leave:                                                                
   _ISR_Enable(level);                                                
}                                                                     
 8006e48:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
                                                                      
       case WATCHDOG_REMOVE_IT:                                       
         break;                                                       
     }                                                                
                                                                      
     _ISR_Disable( level );                                           
 8006e4c:	b8 40 68 00 	mv r13,r2                                      <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(               
  Chain_Control *header                                               
)                                                                     
{                                                                     
                                                                      
  return ( (Watchdog_Control *) _Chain_First( header ) );             
 8006e50:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
                                                                      
     the_watchdog = _Watchdog_First( header );                        
   } while ( !_Chain_Is_empty( header ) &&                            
             (the_watchdog->delta_interval == 0) );                   
 8006e54:	44 2e 00 12 	be r1,r14,8006e9c <_Watchdog_Tickle+0xb8>      <== NOT EXECUTED
     }                                                                
                                                                      
     _ISR_Disable( level );                                           
                                                                      
     the_watchdog = _Watchdog_First( header );                        
   } while ( !_Chain_Is_empty( header ) &&                            
 8006e58:	28 21 00 10 	lw r1,(r1+16)                                  
 8006e5c:	5c 20 00 10 	bne r1,r0,8006e9c <_Watchdog_Tickle+0xb8>      
    if ( the_watchdog->delta_interval != 0 )                          
      goto leave;                                                     
  }                                                                   
                                                                      
  do {                                                                
     watchdog_state = _Watchdog_Remove( the_watchdog );               
 8006e60:	b9 60 08 00 	mv r1,r11                                      
 8006e64:	fb ff ff ab 	calli 8006d10 <_Watchdog_Remove>               
                                                                      
     _ISR_Enable( level );                                            
 8006e68:	d0 0d 00 00 	wcsr IE,r13                                    
                                                                      
     switch( watchdog_state ) {                                       
 8006e6c:	5c 30 ff f4 	bne r1,r16,8006e3c <_Watchdog_Tickle+0x58>     <== NEVER TAKEN
       case WATCHDOG_ACTIVE:                                          
         (*the_watchdog->routine)(                                    
 8006e70:	29 63 00 1c 	lw r3,(r11+28)                                 
 8006e74:	29 61 00 20 	lw r1,(r11+32)                                 
 8006e78:	29 62 00 24 	lw r2,(r11+36)                                 
 8006e7c:	d8 60 00 00 	call r3                                        
                                                                      
       case WATCHDOG_REMOVE_IT:                                       
         break;                                                       
     }                                                                
                                                                      
     _ISR_Disable( level );                                           
 8006e80:	90 00 10 00 	rcsr r2,IE                                     
 8006e84:	a0 4f 08 00 	and r1,r2,r15                                  
 8006e88:	d0 01 00 00 	wcsr IE,r1                                     
   } while ( !_Chain_Is_empty( header ) &&                            
             (the_watchdog->delta_interval == 0) );                   
                                                                      
leave:                                                                
   _ISR_Enable(level);                                                
}                                                                     
 8006e8c:	29 81 00 00 	lw r1,(r12+0)                                  
                                                                      
       case WATCHDOG_REMOVE_IT:                                       
         break;                                                       
     }                                                                
                                                                      
     _ISR_Disable( level );                                           
 8006e90:	b8 40 68 00 	mv r13,r2                                      
 8006e94:	b8 20 58 00 	mv r11,r1                                      
                                                                      
     the_watchdog = _Watchdog_First( header );                        
   } while ( !_Chain_Is_empty( header ) &&                            
             (the_watchdog->delta_interval == 0) );                   
 8006e98:	5c 2e ff f0 	bne r1,r14,8006e58 <_Watchdog_Tickle+0x74>     
                                                                      
leave:                                                                
   _ISR_Enable(level);                                                
 8006e9c:	d0 02 00 00 	wcsr IE,r2                                     
}                                                                     
 8006ea0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006ea4:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8006ea8:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8006eac:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8006eb0:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8006eb4:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8006eb8:	2b 90 00 08 	lw r16,(sp+8)                                  
 8006ebc:	37 9c 00 1c 	addi sp,sp,28                                  
 8006ec0:	c3 a0 00 00 	ret                                            
   * so is added to the head of the chain with a delta_interval of 0. 
   *                                                                  
   * Steven Johnson - 12/2005 (gcc-3.2.3 -O3 on powerpc)              
   */                                                                 
  if (the_watchdog->delta_interval != 0) {                            
    the_watchdog->delta_interval--;                                   
 8006ec4:	34 21 ff ff 	addi r1,r1,-1                                  
 8006ec8:	59 61 00 10 	sw (r11+16),r1                                 
    if ( the_watchdog->delta_interval != 0 )                          
 8006ecc:	44 20 ff d9 	be r1,r0,8006e30 <_Watchdog_Tickle+0x4c>       
 8006ed0:	e3 ff ff f3 	bi 8006e9c <_Watchdog_Tickle+0xb8>             
                                                                      

080032dc <adjtime>: int adjtime( struct timeval *delta, struct timeval *olddelta ) {
 80032dc:	37 9c ff e8 	addi sp,sp,-24                                 
 80032e0:	5b 8b 00 10 	sw (sp+16),r11                                 
 80032e4:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80032e8:	5b 8d 00 08 	sw (sp+8),r13                                  
 80032ec:	5b 9d 00 04 	sw (sp+4),ra                                   
 80032f0:	b8 20 58 00 	mv r11,r1                                      
 80032f4:	b8 40 60 00 	mv r12,r2                                      
  long   adjustment;                                                  
                                                                      
  /*                                                                  
   * Simple validations                                               
   */                                                                 
  if ( !delta )                                                       
 80032f8:	44 20 00 06 	be r1,r0,8003310 <adjtime+0x34>                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )                
 80032fc:	78 03 08 01 	mvhi r3,0x801                                  
 8003300:	38 63 e0 f4 	ori r3,r3,0xe0f4                               
 8003304:	28 22 00 04 	lw r2,(r1+4)                                   
 8003308:	28 61 00 00 	lw r1,(r3+0)                                   
 800330c:	50 22 00 0b 	bgeu r1,r2,8003338 <adjtime+0x5c>              
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8003310:	f8 00 2a c9 	calli 800de34 <__errno>                        
 8003314:	34 02 00 16 	mvi r2,22                                      
 8003318:	58 22 00 00 	sw (r1+0),r2                                   
 800331c:	34 01 ff ff 	mvi r1,-1                                      
  /* set the user's output */                                         
  if ( olddelta )                                                     
    *olddelta = *delta;                                               
                                                                      
  return 0;                                                           
}                                                                     
 8003320:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003324:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003328:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800332c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003330:	37 9c 00 18 	addi sp,sp,24                                  
 8003334:	c3 a0 00 00 	ret                                            
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( olddelta ) {                                                   
 8003338:	45 80 00 04 	be r12,r0,8003348 <adjtime+0x6c>               
    olddelta->tv_sec  = 0;                                            
    olddelta->tv_usec = 0;                                            
 800333c:	59 80 00 04 	sw (r12+4),r0                                  
 8003340:	29 62 00 04 	lw r2,(r11+4)                                  
                                                                      
  if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( olddelta ) {                                                   
    olddelta->tv_sec  = 0;                                            
 8003344:	59 80 00 00 	sw (r12+0),r0                                  
    olddelta->tv_usec = 0;                                            
  }                                                                   
                                                                      
  /* convert delta to microseconds */                                 
  adjustment  = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);        
 8003348:	29 63 00 00 	lw r3,(r11+0)                                  
  adjustment += delta->tv_usec;                                       
                                                                      
  /* too small to account for */                                      
  if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 
 800334c:	78 01 08 02 	mvhi r1,0x802                                  
 8003350:	38 21 00 c4 	ori r1,r1,0xc4                                 
    olddelta->tv_sec  = 0;                                            
    olddelta->tv_usec = 0;                                            
  }                                                                   
                                                                      
  /* convert delta to microseconds */                                 
  adjustment  = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);        
 8003354:	b4 63 20 00 	add r4,r3,r3                                   
 8003358:	b4 84 20 00 	add r4,r4,r4                                   
 800335c:	b4 84 20 00 	add r4,r4,r4                                   
 8003360:	b4 84 28 00 	add r5,r4,r4                                   
 8003364:	b4 a5 28 00 	add r5,r5,r5                                   
 8003368:	b4 a5 28 00 	add r5,r5,r5                                   
 800336c:	b4 a5 28 00 	add r5,r5,r5                                   
 8003370:	b4 a5 28 00 	add r5,r5,r5                                   
 8003374:	c8 a4 28 00 	sub r5,r5,r4                                   
 8003378:	b4 a5 20 00 	add r4,r5,r5                                   
 800337c:	b4 84 20 00 	add r4,r4,r4                                   
 8003380:	b4 84 20 00 	add r4,r4,r4                                   
 8003384:	b4 84 20 00 	add r4,r4,r4                                   
 8003388:	b4 84 20 00 	add r4,r4,r4                                   
 800338c:	b4 84 20 00 	add r4,r4,r4                                   
 8003390:	c8 85 20 00 	sub r4,r4,r5                                   
 8003394:	b4 83 18 00 	add r3,r4,r3                                   
 8003398:	b4 63 18 00 	add r3,r3,r3                                   
 800339c:	b4 63 18 00 	add r3,r3,r3                                   
 80033a0:	b4 63 18 00 	add r3,r3,r3                                   
 80033a4:	b4 63 18 00 	add r3,r3,r3                                   
 80033a8:	b4 63 18 00 	add r3,r3,r3                                   
  adjustment += delta->tv_usec;                                       
                                                                      
  /* too small to account for */                                      
  if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 
 80033ac:	28 24 00 0c 	lw r4,(r1+12)                                  
    olddelta->tv_sec  = 0;                                            
    olddelta->tv_usec = 0;                                            
  }                                                                   
                                                                      
  /* convert delta to microseconds */                                 
  adjustment  = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);        
 80033b0:	b4 63 18 00 	add r3,r3,r3                                   
  adjustment += delta->tv_usec;                                       
 80033b4:	b4 43 18 00 	add r3,r2,r3                                   
                                                                      
  /* too small to account for */                                      
  if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 
    return 0;                                                         
 80033b8:	34 01 00 00 	mvi r1,0                                       
  /* convert delta to microseconds */                                 
  adjustment  = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);        
  adjustment += delta->tv_usec;                                       
                                                                      
  /* too small to account for */                                      
  if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 
 80033bc:	54 83 ff d9 	bgu r4,r3,8003320 <adjtime+0x44>               
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 80033c0:	78 01 08 02 	mvhi r1,0x802                                  
 80033c4:	38 21 09 90 	ori r1,r1,0x990                                
 80033c8:	28 22 00 00 	lw r2,(r1+0)                                   
 80033cc:	34 42 00 01 	addi r2,r2,1                                   
 80033d0:	58 22 00 00 	sw (r1+0),r2                                   
   * This prevents context switches while we are adjusting the TOD    
   */                                                                 
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
 80033d4:	37 8d 00 14 	addi r13,sp,20                                 
 80033d8:	b9 a0 08 00 	mv r1,r13                                      
 80033dc:	f8 00 05 84 	calli 80049ec <_TOD_Get>                       
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
 80033e0:	29 63 00 04 	lw r3,(r11+4)                                  
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
 80033e4:	78 04 08 01 	mvhi r4,0x801                                  
 80033e8:	38 84 e2 70 	ori r4,r4,0xe270                               
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
 80033ec:	b4 63 18 00 	add r3,r3,r3                                   
 80033f0:	b4 63 18 00 	add r3,r3,r3                                   
 80033f4:	b4 63 18 00 	add r3,r3,r3                                   
 80033f8:	b4 63 10 00 	add r2,r3,r3                                   
 80033fc:	b4 42 10 00 	add r2,r2,r2                                   
 8003400:	b4 62 18 00 	add r3,r3,r2                                   
 8003404:	b4 63 10 00 	add r2,r3,r3                                   
 8003408:	b4 42 10 00 	add r2,r2,r2                                   
 800340c:	b4 62 18 00 	add r3,r3,r2                                   
 8003410:	b4 63 10 00 	add r2,r3,r3                                   
 8003414:	b4 42 10 00 	add r2,r2,r2                                   
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
 8003418:	29 61 00 00 	lw r1,(r11+0)                                  
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
 800341c:	b4 62 18 00 	add r3,r3,r2                                   
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
 8003420:	28 82 00 00 	lw r2,(r4+0)                                   
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
 8003424:	2b 84 00 14 	lw r4,(sp+20)                                  
 8003428:	b4 81 20 00 	add r4,r4,r1                                   
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
 800342c:	2b 81 00 18 	lw r1,(sp+24)                                  
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
 8003430:	5b 84 00 14 	sw (sp+20),r4                                  
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
 8003434:	b4 61 18 00 	add r3,r3,r1                                   
 8003438:	5b 83 00 18 	sw (sp+24),r3                                  
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
 800343c:	50 43 00 09 	bgeu r2,r3,8003460 <adjtime+0x184>             
      ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                       
 8003440:	78 01 08 01 	mvhi r1,0x801                                  
 8003444:	38 21 e2 74 	ori r1,r1,0xe274                               
 8003448:	28 25 00 00 	lw r5,(r1+0)                                   
 800344c:	b4 65 18 00 	add r3,r3,r5                                   
 *  At one point there was a static variable named adjustment         
 *  used by this implementation.  I don't see any reason for it       
 *  to be here based upon the GNU/Linux documentation.                
 */                                                                   
                                                                      
int  adjtime(                                                         
 8003450:	34 84 00 01 	addi r4,r4,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 ) {              
 8003454:	54 62 ff fe 	bgu r3,r2,800344c <adjtime+0x170>              <== NEVER TAKEN
 8003458:	5b 83 00 18 	sw (sp+24),r3                                  
 800345c:	5b 84 00 14 	sw (sp+20),r4                                  
      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) ) {       
 8003460:	78 04 08 01 	mvhi r4,0x801                                  
 8003464:	38 84 e2 74 	ori r4,r4,0xe274                               
 8003468:	28 82 00 00 	lw r2,(r4+0)                                   
 800346c:	54 62 00 0a 	bgu r3,r2,8003494 <adjtime+0x1b8>              <== NEVER TAKEN
      ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND;                       
 8003470:	78 01 08 01 	mvhi r1,0x801                                  
 8003474:	38 21 e0 f0 	ori r1,r1,0xe0f0                               
      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) ) {       
 8003478:	2b 84 00 14 	lw r4,(sp+20)                                  
      ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND;                       
 800347c:	28 25 00 00 	lw r5,(r1+0)                                   
 8003480:	b4 65 18 00 	add r3,r3,r5                                   
 *  At one point there was a static variable named adjustment         
 *  used by this implementation.  I don't see any reason for it       
 *  to be here based upon the GNU/Linux documentation.                
 */                                                                   
                                                                      
int  adjtime(                                                         
 8003484:	34 84 ff ff 	addi r4,r4,-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) ) {       
 8003488:	50 43 ff fe 	bgeu r2,r3,8003480 <adjtime+0x1a4>             
 800348c:	5b 83 00 18 	sw (sp+24),r3                                  
 8003490:	5b 84 00 14 	sw (sp+20),r4                                  
      ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND;                       
      ts.tv_sec--;                                                    
    }                                                                 
                                                                      
    _TOD_Set( &ts );                                                  
 8003494:	b9 a0 08 00 	mv r1,r13                                      
 8003498:	f8 00 05 89 	calli 8004abc <_TOD_Set>                       
                                                                      
  _Thread_Enable_dispatch();                                          
 800349c:	f8 00 0b d4 	calli 80063ec <_Thread_Enable_dispatch>        
                                                                      
  /* set the user's output */                                         
  if ( olddelta )                                                     
    *olddelta = *delta;                                               
                                                                      
  return 0;                                                           
 80034a0:	34 01 00 00 	mvi r1,0                                       
    _TOD_Set( &ts );                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  /* set the user's output */                                         
  if ( olddelta )                                                     
 80034a4:	45 80 ff 9f 	be r12,r0,8003320 <adjtime+0x44>               
    *olddelta = *delta;                                               
 80034a8:	29 62 00 00 	lw r2,(r11+0)                                  
 80034ac:	59 82 00 00 	sw (r12+0),r2                                  
 80034b0:	29 62 00 04 	lw r2,(r11+4)                                  
 80034b4:	59 82 00 04 	sw (r12+4),r2                                  
                                                                      
  return 0;                                                           
}                                                                     
 80034b8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80034bc:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80034c0:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80034c4:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80034c8:	37 9c 00 18 	addi sp,sp,24                                  
 80034cc:	c3 a0 00 00 	ret                                            
                                                                      

08003d40 <aio_cancel>: * operation(s) cannot be canceled */ int aio_cancel(int fildes, struct aiocb *aiocbp) {
 8003d40:	37 9c ff ec 	addi sp,sp,-20                                 
 8003d44:	5b 8b 00 14 	sw (sp+20),r11                                 
 8003d48:	5b 8c 00 10 	sw (sp+16),r12                                 
 8003d4c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8003d50:	5b 8e 00 08 	sw (sp+8),r14                                  
 8003d54:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_aio_request_chain *r_chain;                                   
  int result;                                                         
                                                                      
  pthread_mutex_lock (&aio_request_queue.mutex);                      
 8003d58:	78 0b 08 01 	mvhi r11,0x801                                 
 8003d5c:	39 6b 87 f8 	ori r11,r11,0x87f8                             
 *                          operation(s) cannot be canceled           
 */                                                                   
                                                                      
                                                                      
int aio_cancel(int fildes, struct aiocb  *aiocbp)                     
{                                                                     
 8003d60:	b8 20 68 00 	mv r13,r1                                      
 8003d64:	b8 40 60 00 	mv r12,r2                                      
  rtems_aio_request_chain *r_chain;                                   
  int result;                                                         
                                                                      
  pthread_mutex_lock (&aio_request_queue.mutex);                      
 8003d68:	b9 60 08 00 	mv r1,r11                                      
 8003d6c:	f8 00 05 09 	calli 8005190 <pthread_mutex_lock>             
                                                                      
  if (aiocbp == NULL)                                                 
 8003d70:	45 80 00 3b 	be r12,r0,8003e5c <aio_cancel+0x11c>           
      pthread_mutex_unlock (&aio_request_queue.mutex);                
      return AIO_CANCELED;                                            
    }                                                                 
  else                                                                
    {                                                                 
      if (aiocbp->aio_fildes != fildes) {                             
 8003d74:	29 8e 00 00 	lw r14,(r12+0)                                 
 8003d78:	5d cd 00 32 	bne r14,r13,8003e40 <aio_cancel+0x100>         <== ALWAYS TAKEN
	  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,     
 8003d7c:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 8003d80:	38 21 88 40 	ori r1,r1,0x8840                               <== NOT EXECUTED
 8003d84:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 8003d88:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 8003d8c:	f8 00 00 ea 	calli 8004134 <rtems_aio_search_fd>            <== NOT EXECUTED
 8003d90:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
				     fildes,                                                      
				     0);                                                          
      if (r_chain == NULL)                                            
 8003d94:	44 20 00 14 	be r1,r0,8003de4 <aio_cancel+0xa4>             <== NOT EXECUTED
	    pthread_mutex_unlock (&aio_request_queue.mutex);                 
	    return result;                                                   
                                                                      
	  }                                                                  
                                                                      
      pthread_mutex_lock (&r_chain->mutex);                           
 8003d98:	35 ae 00 1c 	addi r14,r13,28                                <== NOT EXECUTED
 8003d9c:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8003da0:	f8 00 04 fc 	calli 8005190 <pthread_mutex_lock>             <== NOT EXECUTED
      result = rtems_aio_remove_req (&r_chain->next_fd, aiocbp);      
 8003da4:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 8003da8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8003dac:	f8 00 02 08 	calli 80045cc <rtems_aio_remove_req>           <== NOT EXECUTED
 8003db0:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
      pthread_mutex_unlock (&r_chain->mutex);                         
 8003db4:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8003db8:	f8 00 05 26 	calli 8005250 <pthread_mutex_unlock>           <== NOT EXECUTED
      pthread_mutex_unlock (&aio_request_queue.mutex);                
 8003dbc:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8003dc0:	f8 00 05 24 	calli 8005250 <pthread_mutex_unlock>           <== NOT EXECUTED
      return result;                                                  
                                                                      
    }                                                                 
                                                                      
  return AIO_ALLDONE;                                                 
}                                                                     
 8003dc4:	b9 80 08 00 	mv r1,r12                                      
 8003dc8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003dcc:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8003dd0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8003dd4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8003dd8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8003ddc:	37 9c 00 14 	addi sp,sp,20                                  
 8003de0:	c3 a0 00 00 	ret                                            
                                                                      
      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))             
 8003de4:	29 62 00 54 	lw r2,(r11+84)                                 <== NOT EXECUTED
 8003de8:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 8003dec:	38 21 88 50 	ori r1,r1,0x8850                               <== NOT EXECUTED
 8003df0:	44 41 ff ea 	be r2,r1,8003d98 <aio_cancel+0x58>             <== NOT EXECUTED
	  {                                                                  
	    r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req,      
 8003df4:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 8003df8:	38 21 88 4c 	ori r1,r1,0x884c                               <== NOT EXECUTED
 8003dfc:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 8003e00:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 8003e04:	f8 00 00 cc 	calli 8004134 <rtems_aio_search_fd>            <== NOT EXECUTED
					   fildes,                                                       
					   0);                                                           
	    if (r_chain == NULL)                                             
 8003e08:	44 20 00 0e 	be r1,r0,8003e40 <aio_cancel+0x100>            <== NOT EXECUTED
	      {                                                              
		pthread_mutex_unlock (&aio_request_queue.mutex);                    
		rtems_set_errno_and_return_minus_one (EINVAL);                      
	      }                                                              
                                                                      
	    result = rtems_aio_remove_req (&r_chain->next_fd, aiocbp);       
 8003e0c:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 8003e10:	f8 00 01 ef 	calli 80045cc <rtems_aio_remove_req>           <== NOT EXECUTED
 8003e14:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
	    pthread_mutex_unlock (&aio_request_queue.mutex);                 
 8003e18:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8003e1c:	f8 00 05 0d 	calli 8005250 <pthread_mutex_unlock>           <== NOT EXECUTED
      return result;                                                  
                                                                      
    }                                                                 
                                                                      
  return AIO_ALLDONE;                                                 
}                                                                     
 8003e20:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8003e24:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8003e28:	2b 8b 00 14 	lw r11,(sp+20)                                 <== NOT EXECUTED
 8003e2c:	2b 8c 00 10 	lw r12,(sp+16)                                 <== NOT EXECUTED
 8003e30:	2b 8d 00 0c 	lw r13,(sp+12)                                 <== NOT EXECUTED
 8003e34:	2b 8e 00 08 	lw r14,(sp+8)                                  <== NOT EXECUTED
 8003e38:	37 9c 00 14 	addi sp,sp,20                                  <== NOT EXECUTED
 8003e3c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
	    r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req,      
					   fildes,                                                       
					   0);                                                           
	    if (r_chain == NULL)                                             
	      {                                                              
		pthread_mutex_unlock (&aio_request_queue.mutex);                    
 8003e40:	b9 60 08 00 	mv r1,r11                                      
 8003e44:	f8 00 05 03 	calli 8005250 <pthread_mutex_unlock>           
		rtems_set_errno_and_return_minus_one (EINVAL);                      
 8003e48:	f8 00 30 3d 	calli 800ff3c <__errno>                        
 8003e4c:	34 02 00 16 	mvi r2,22                                      
 8003e50:	58 22 00 00 	sw (r1+0),r2                                   
 8003e54:	34 0c ff ff 	mvi r12,-1                                     
 8003e58:	e3 ff ff db 	bi 8003dc4 <aio_cancel+0x84>                   
                                                                      
  pthread_mutex_lock (&aio_request_queue.mutex);                      
                                                                      
  if (aiocbp == NULL)                                                 
    {                                                                 
      if (fcntl (fildes, F_GETFL) < 0) {                              
 8003e5c:	b9 a0 08 00 	mv r1,r13                                      
 8003e60:	34 02 00 03 	mvi r2,3                                       
 8003e64:	f8 00 1e a6 	calli 800b8fc <fcntl>                          
 8003e68:	4c 2c 00 08 	bge r1,r12,8003e88 <aio_cancel+0x148>          <== NEVER TAKEN
        pthread_mutex_unlock(&aio_request_queue.mutex);               
 8003e6c:	b9 60 08 00 	mv r1,r11                                      
 8003e70:	f8 00 04 f8 	calli 8005250 <pthread_mutex_unlock>           
	rtems_set_errno_and_return_minus_one (EBADF);                        
 8003e74:	f8 00 30 32 	calli 800ff3c <__errno>                        
 8003e78:	34 02 00 09 	mvi r2,9                                       
 8003e7c:	58 22 00 00 	sw (r1+0),r2                                   
 8003e80:	34 0c ff ff 	mvi r12,-1                                     
 8003e84:	e3 ff ff d0 	bi 8003dc4 <aio_cancel+0x84>                   
      }                                                               
                                                                      
      r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,     
 8003e88:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 8003e8c:	38 21 88 40 	ori r1,r1,0x8840                               <== NOT EXECUTED
 8003e90:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 8003e94:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 8003e98:	f8 00 00 a7 	calli 8004134 <rtems_aio_search_fd>            <== NOT EXECUTED
 8003e9c:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
				     fildes,                                                      
				     0);                                                          
      if (r_chain == NULL)                                            
 8003ea0:	44 20 00 0e 	be r1,r0,8003ed8 <aio_cancel+0x198>            <== NOT EXECUTED
                                                                      
	  pthread_mutex_unlock (&aio_request_queue.mutex);                   
	  return AIO_ALLDONE;                                                
	}                                                                    
                                                                      
      pthread_mutex_lock (&r_chain->mutex);                           
 8003ea4:	34 2d 00 1c 	addi r13,r1,28                                 <== NOT EXECUTED
 8003ea8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8003eac:	f8 00 04 b9 	calli 8005190 <pthread_mutex_lock>             <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
 8003eb0:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8003eb4:	f8 00 0a fd 	calli 8006aa8 <_Chain_Extract>                 <== NOT EXECUTED
      rtems_chain_extract (&r_chain->next_fd);                        
      rtems_aio_remove_fd (r_chain);                                  
 8003eb8:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8003ebc:	f8 00 01 a3 	calli 8004548 <rtems_aio_remove_fd>            <== NOT EXECUTED
      pthread_mutex_unlock (&r_chain->mutex);                         
 8003ec0:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8003ec4:	f8 00 04 e3 	calli 8005250 <pthread_mutex_unlock>           <== NOT EXECUTED
      pthread_mutex_unlock (&aio_request_queue.mutex);                
 8003ec8:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8003ecc:	f8 00 04 e1 	calli 8005250 <pthread_mutex_unlock>           <== NOT EXECUTED
      return AIO_CANCELED;                                            
 8003ed0:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
 8003ed4:	e3 ff ff bc 	bi 8003dc4 <aio_cancel+0x84>                   <== NOT EXECUTED
      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))           
 8003ed8:	29 62 00 54 	lw r2,(r11+84)                                 <== NOT EXECUTED
 8003edc:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 8003ee0:	38 21 88 50 	ori r1,r1,0x8850                               <== NOT EXECUTED
 8003ee4:	44 41 00 16 	be r2,r1,8003f3c <aio_cancel+0x1fc>            <== NOT EXECUTED
	    {                                                                
	      r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req,    
 8003ee8:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 8003eec:	38 21 88 4c 	ori r1,r1,0x884c                               <== NOT EXECUTED
 8003ef0:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 8003ef4:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 8003ef8:	f8 00 00 8f 	calli 8004134 <rtems_aio_search_fd>            <== NOT EXECUTED
 8003efc:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
					     fildes,                                                     
					     0);                                                         
	      if (r_chain == NULL) {                                         
 8003f00:	44 20 00 0f 	be r1,r0,8003f3c <aio_cancel+0x1fc>            <== NOT EXECUTED
 8003f04:	f8 00 0a e9 	calli 8006aa8 <_Chain_Extract>                 <== NOT EXECUTED
	        pthread_mutex_unlock(&aio_request_queue.mutex);              
		return AIO_ALLDONE;                                                 
              }                                                       
                                                                      
	      rtems_chain_extract (&r_chain->next_fd);	                      
	      rtems_aio_remove_fd (r_chain);                                 
 8003f08:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
	      pthread_mutex_destroy (&r_chain->mutex);                       
 8003f0c:	35 8d 00 1c 	addi r13,r12,28                                <== NOT EXECUTED
	        pthread_mutex_unlock(&aio_request_queue.mutex);              
		return AIO_ALLDONE;                                                 
              }                                                       
                                                                      
	      rtems_chain_extract (&r_chain->next_fd);	                      
	      rtems_aio_remove_fd (r_chain);                                 
 8003f10:	f8 00 01 8e 	calli 8004548 <rtems_aio_remove_fd>            <== NOT EXECUTED
	      pthread_mutex_destroy (&r_chain->mutex);                       
 8003f14:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8003f18:	f8 00 03 d6 	calli 8004e70 <pthread_mutex_destroy>          <== NOT EXECUTED
	      pthread_cond_destroy (&r_chain->mutex);                        
 8003f1c:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8003f20:	f8 00 02 c3 	calli 8004a2c <pthread_cond_destroy>           <== NOT EXECUTED
	      free (r_chain);                                                
 8003f24:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8003f28:	fb ff f9 00 	calli 8002328 <free>                           <== NOT EXECUTED
                                                                      
	      pthread_mutex_unlock (&aio_request_queue.mutex);               
 8003f2c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8003f30:	f8 00 04 c8 	calli 8005250 <pthread_mutex_unlock>           <== NOT EXECUTED
	      return AIO_CANCELED;                                           
 8003f34:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
 8003f38:	e3 ff ff a3 	bi 8003dc4 <aio_cancel+0x84>                   <== NOT EXECUTED
	    }                                                                
                                                                      
	  pthread_mutex_unlock (&aio_request_queue.mutex);                   
 8003f3c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8003f40:	f8 00 04 c4 	calli 8005250 <pthread_mutex_unlock>           <== NOT EXECUTED
	  return AIO_ALLDONE;                                                
 8003f44:	34 0c 00 02 	mvi r12,2                                      <== NOT EXECUTED
 8003f48:	e3 ff ff 9f 	bi 8003dc4 <aio_cancel+0x84>                   <== NOT EXECUTED
                                                                      

08003f54 <aio_fsync>: int aio_fsync( int op, struct aiocb *aiocbp ) {
 8003f54:	37 9c ff f4 	addi sp,sp,-12                                 
 8003f58:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8003f5c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8003f60:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003f64:	b8 40 58 00 	mv r11,r2                                      
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  if (op != O_SYNC)                                                   
 8003f68:	34 02 20 00 	mvi r2,8192                                    
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
 8003f6c:	34 0c 00 16 	mvi r12,22                                     
)                                                                     
{                                                                     
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  if (op != O_SYNC)                                                   
 8003f70:	5c 22 00 09 	bne r1,r2,8003f94 <aio_fsync+0x40>             
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
 8003f74:	29 61 00 00 	lw r1,(r11+0)                                  
 8003f78:	34 02 00 03 	mvi r2,3                                       
 8003f7c:	f8 00 1e 60 	calli 800b8fc <fcntl>                          
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
 8003f80:	20 21 00 03 	andi r1,r1,0x3                                 
 8003f84:	34 21 ff ff 	addi r1,r1,-1                                  
 8003f88:	34 02 00 01 	mvi r2,1                                       
 8003f8c:	50 41 00 0d 	bgeu r2,r1,8003fc0 <aio_fsync+0x6c>            <== NEVER TAKEN
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
 8003f90:	34 0c 00 09 	mvi r12,9                                      
 8003f94:	34 01 ff ff 	mvi r1,-1                                      
 8003f98:	59 6c 00 2c 	sw (r11+44),r12                                
 8003f9c:	59 61 00 30 	sw (r11+48),r1                                 
 8003fa0:	f8 00 2f e7 	calli 800ff3c <__errno>                        
 8003fa4:	58 2c 00 00 	sw (r1+0),r12                                  
 8003fa8:	34 01 ff ff 	mvi r1,-1                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_SYNC;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
                                                                      
}                                                                     
 8003fac:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003fb0:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8003fb4:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003fb8:	37 9c 00 0c 	addi sp,sp,12                                  
 8003fbc:	c3 a0 00 00 	ret                                            
                                                                      
  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);             
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
 8003fc0:	34 01 00 18 	mvi r1,24                                      <== NOT EXECUTED
 8003fc4:	fb ff fa b2 	calli 8002a8c <malloc>                         <== NOT EXECUTED
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
 8003fc8:	34 0c 00 0b 	mvi r12,11                                     <== NOT EXECUTED
  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);             
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
 8003fcc:	44 20 ff f2 	be r1,r0,8003f94 <aio_fsync+0x40>              <== NOT EXECUTED
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_SYNC;                             
 8003fd0:	34 03 00 03 	mvi r3,3                                       <== NOT EXECUTED
 8003fd4:	59 63 00 28 	sw (r11+40),r3                                 <== NOT EXECUTED
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
 8003fd8:	58 2b 00 14 	sw (r1+20),r11                                 <== NOT EXECUTED
  req->aiocbp->aio_lio_opcode = LIO_SYNC;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
 8003fdc:	f8 00 01 9b 	calli 8004648 <rtems_aio_enqueue>              <== NOT EXECUTED
                                                                      
}                                                                     
 8003fe0:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8003fe4:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 8003fe8:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 8003fec:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 8003ff0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0800485c <aio_read>: * 0 - otherwise */ int aio_read (struct aiocb *aiocbp) {
 800485c:	37 9c ff f4 	addi sp,sp,-12                                 
 8004860:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8004864:	5b 8c 00 08 	sw (sp+8),r12                                  
 8004868:	5b 9d 00 04 	sw (sp+4),ra                                   
 800486c:	b8 20 58 00 	mv r11,r1                                      
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
 8004870:	28 21 00 00 	lw r1,(r1+0)                                   
 8004874:	34 02 00 03 	mvi r2,3                                       
  if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
 8004878:	34 0c 00 09 	mvi r12,9                                      
aio_read (struct aiocb *aiocbp)                                       
{                                                                     
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
 800487c:	f8 00 1c 20 	calli 800b8fc <fcntl>                          
  if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
 8004880:	20 21 00 03 	andi r1,r1,0x3                                 
 8004884:	7c 22 00 02 	cmpnei r2,r1,2                                 
 8004888:	7c 21 00 00 	cmpnei r1,r1,0                                 
 800488c:	a0 41 08 00 	and r1,r2,r1                                   
 8004890:	5c 20 00 06 	bne r1,r0,80048a8 <aio_read+0x4c>              
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
 8004894:	29 6c 00 10 	lw r12,(r11+16)                                
 8004898:	5d 81 00 03 	bne r12,r1,80048a4 <aio_read+0x48>             
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  if (aiocbp->aio_offset < 0)                                         
 800489c:	29 61 00 04 	lw r1,(r11+4)                                  
 80048a0:	4c 2c 00 09 	bge r1,r12,80048c4 <aio_read+0x68>             
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
  if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
 80048a4:	34 0c 00 16 	mvi r12,22                                     
 80048a8:	34 01 ff ff 	mvi r1,-1                                      
 80048ac:	59 6c 00 2c 	sw (r11+44),r12                                
 80048b0:	59 61 00 30 	sw (r11+48),r1                                 
 80048b4:	f8 00 2d a2 	calli 800ff3c <__errno>                        
 80048b8:	58 2c 00 00 	sw (r1+0),r12                                  
 80048bc:	34 01 ff ff 	mvi r1,-1                                      
 80048c0:	e0 00 00 08 	bi 80048e0 <aio_read+0x84>                     
                                                                      
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
 80048c4:	34 01 00 18 	mvi r1,24                                      
 80048c8:	fb ff f8 71 	calli 8002a8c <malloc>                         
  if (req == NULL)                                                    
 80048cc:	44 2c 00 0a 	be r1,r12,80048f4 <aio_read+0x98>              <== NEVER TAKEN
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_READ;                             
 80048d0:	34 03 00 01 	mvi r3,1                                       
 80048d4:	59 63 00 28 	sw (r11+40),r3                                 
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
 80048d8:	58 2b 00 14 	sw (r1+20),r11                                 
  req->aiocbp->aio_lio_opcode = LIO_READ;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
 80048dc:	fb ff ff 5b 	calli 8004648 <rtems_aio_enqueue>              
}                                                                     
 80048e0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80048e4:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80048e8:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80048ec:	37 9c 00 0c 	addi sp,sp,12                                  
 80048f0:	c3 a0 00 00 	ret                                            
  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);            
 80048f4:	34 0c 00 0b 	mvi r12,11                                     <== NOT EXECUTED
 80048f8:	e3 ff ff ec 	bi 80048a8 <aio_read+0x4c>                     <== NOT EXECUTED
                                                                      

08004904 <aio_write>: * 0 - otherwise */ int aio_write (struct aiocb *aiocbp) {
 8004904:	37 9c ff f4 	addi sp,sp,-12                                 
 8004908:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800490c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8004910:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004914:	b8 20 58 00 	mv r11,r1                                      
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
 8004918:	28 21 00 00 	lw r1,(r1+0)                                   
 800491c:	34 02 00 03 	mvi r2,3                                       
 8004920:	f8 00 1b f7 	calli 800b8fc <fcntl>                          
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
 8004924:	20 21 00 03 	andi r1,r1,0x3                                 
 8004928:	34 21 ff ff 	addi r1,r1,-1                                  
 800492c:	34 02 00 01 	mvi r2,1                                       
 8004930:	50 41 00 09 	bgeu r2,r1,8004954 <aio_write+0x50>            
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
 8004934:	34 0c 00 09 	mvi r12,9                                      
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
 8004938:	34 01 ff ff 	mvi r1,-1                                      
 800493c:	59 6c 00 2c 	sw (r11+44),r12                                
 8004940:	59 61 00 30 	sw (r11+48),r1                                 
 8004944:	f8 00 2d 7e 	calli 800ff3c <__errno>                        
 8004948:	58 2c 00 00 	sw (r1+0),r12                                  
 800494c:	34 01 ff ff 	mvi r1,-1                                      
 8004950:	e0 00 00 0f 	bi 800498c <aio_write+0x88>                    
                                                                      
  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);             
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
 8004954:	29 61 00 10 	lw r1,(r11+16)                                 
 8004958:	5c 20 00 03 	bne r1,r0,8004964 <aio_write+0x60>             
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  if (aiocbp->aio_offset < 0)                                         
 800495c:	29 62 00 04 	lw r2,(r11+4)                                  
 8004960:	4c 41 00 03 	bge r2,r1,800496c <aio_write+0x68>             
  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);             
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
 8004964:	34 0c 00 16 	mvi r12,22                                     
 8004968:	e3 ff ff f4 	bi 8004938 <aio_write+0x34>                    
                                                                      
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
 800496c:	34 01 00 18 	mvi r1,24                                      
 8004970:	fb ff f8 47 	calli 8002a8c <malloc>                         
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
 8004974:	34 0c 00 0b 	mvi r12,11                                     
                                                                      
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
 8004978:	44 20 ff f0 	be r1,r0,8004938 <aio_write+0x34>              <== NEVER TAKEN
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_WRITE;                            
 800497c:	34 03 00 02 	mvi r3,2                                       
 8004980:	59 63 00 28 	sw (r11+40),r3                                 
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
 8004984:	58 2b 00 14 	sw (r1+20),r11                                 
  req->aiocbp->aio_lio_opcode = LIO_WRITE;                            
                                                                      
  return rtems_aio_enqueue (req);                                     
 8004988:	fb ff ff 30 	calli 8004648 <rtems_aio_enqueue>              
}                                                                     
 800498c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004990:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8004994:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8004998:	37 9c 00 0c 	addi sp,sp,12                                  
 800499c:	c3 a0 00 00 	ret                                            
                                                                      

080030e8 <clock_gettime>: int clock_gettime( clockid_t clock_id, struct timespec *tp ) {
 80030e8:	37 9c ff fc 	addi sp,sp,-4                                  
 80030ec:	5b 9d 00 04 	sw (sp+4),ra                                   
  if ( !tp )                                                          
 80030f0:	44 40 00 09 	be r2,r0,8003114 <clock_gettime+0x2c>          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( clock_id == CLOCK_REALTIME ) {                                 
 80030f4:	34 03 00 01 	mvi r3,1                                       
 80030f8:	44 23 00 1b 	be r1,r3,8003164 <clock_gettime+0x7c>          
    _TOD_Get(tp);                                                     
    return 0;                                                         
  }                                                                   
#ifdef CLOCK_MONOTONIC                                                
  if ( clock_id == CLOCK_MONOTONIC ) {                                
 80030fc:	34 03 00 04 	mvi r3,4                                       
 8003100:	44 23 00 13 	be r1,r3,800314c <clock_gettime+0x64>          <== NEVER TAKEN
    return 0;                                                         
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_CPUTIME                                                 
  if ( clock_id == CLOCK_PROCESS_CPUTIME ) {                          
 8003104:	34 03 00 02 	mvi r3,2                                       
 8003108:	44 23 00 11 	be r1,r3,800314c <clock_gettime+0x64>          
    return 0;                                                         
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_THREAD_CPUTIME                                          
  if ( clock_id == CLOCK_THREAD_CPUTIME )                             
 800310c:	34 02 00 03 	mvi r2,3                                       
 8003110:	44 22 00 08 	be r1,r2,8003130 <clock_gettime+0x48>          
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
 8003114:	f8 00 2c 4c 	calli 800e244 <__errno>                        
 8003118:	34 02 00 16 	mvi r2,22                                      
 800311c:	58 22 00 00 	sw (r1+0),r2                                   
 8003120:	34 01 ff ff 	mvi r1,-1                                      
                                                                      
  return 0;                                                           
}                                                                     
 8003124:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003128:	37 9c 00 04 	addi sp,sp,4                                   
 800312c:	c3 a0 00 00 	ret                                            
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_THREAD_CPUTIME                                          
  if ( clock_id == CLOCK_THREAD_CPUTIME )                             
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
 8003130:	f8 00 2c 45 	calli 800e244 <__errno>                        
 8003134:	34 02 00 58 	mvi r2,88                                      
 8003138:	58 22 00 00 	sw (r1+0),r2                                   
 800313c:	34 01 ff ff 	mvi r1,-1                                      
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
                                                                      
  return 0;                                                           
}                                                                     
 8003140:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003144:	37 9c 00 04 	addi sp,sp,4                                   
 8003148:	c3 a0 00 00 	ret                                            
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_CPUTIME                                                 
  if ( clock_id == CLOCK_PROCESS_CPUTIME ) {                          
    _TOD_Get_uptime_as_timespec( tp );                                
 800314c:	b8 40 08 00 	mv r1,r2                                       
 8003150:	f8 00 07 64 	calli 8004ee0 <_TOD_Get_uptime_as_timespec>    
    return 0;                                                         
 8003154:	34 01 00 00 	mvi r1,0                                       
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
                                                                      
  return 0;                                                           
}                                                                     
 8003158:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800315c:	37 9c 00 04 	addi sp,sp,4                                   
 8003160:	c3 a0 00 00 	ret                                            
{                                                                     
  if ( !tp )                                                          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( clock_id == CLOCK_REALTIME ) {                                 
    _TOD_Get(tp);                                                     
 8003164:	b8 40 08 00 	mv r1,r2                                       
 8003168:	f8 00 07 39 	calli 8004e4c <_TOD_Get>                       
    return 0;                                                         
 800316c:	34 01 00 00 	mvi r1,0                                       
 8003170:	e3 ff ff ed 	bi 8003124 <clock_gettime+0x3c>                
                                                                      

08003174 <clock_settime>: int clock_settime( clockid_t clock_id, const struct timespec *tp ) {
 8003174:	37 9c ff fc 	addi sp,sp,-4                                  
 8003178:	5b 9d 00 04 	sw (sp+4),ra                                   
  if ( !tp )                                                          
 800317c:	44 40 00 07 	be r2,r0,8003198 <clock_settime+0x24>          <== NEVER TAKEN
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( clock_id == CLOCK_REALTIME ) {                                 
 8003180:	34 03 00 01 	mvi r3,1                                       
 8003184:	44 23 00 0c 	be r1,r3,80031b4 <clock_settime+0x40>          
    _Thread_Disable_dispatch();                                       
      _TOD_Set( tp );                                                 
    _Thread_Enable_dispatch();                                        
  }                                                                   
#ifdef _POSIX_CPUTIME                                                 
  else if ( clock_id == CLOCK_PROCESS_CPUTIME )                       
 8003188:	34 02 00 02 	mvi r2,2                                       
 800318c:	44 22 00 1c 	be r1,r2,80031fc <clock_settime+0x88>          
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
#ifdef _POSIX_THREAD_CPUTIME                                          
  else if ( clock_id == CLOCK_THREAD_CPUTIME )                        
 8003190:	34 02 00 03 	mvi r2,3                                       
 8003194:	44 22 00 1a 	be r1,r2,80031fc <clock_settime+0x88>          
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
  else                                                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8003198:	f8 00 2c 2b 	calli 800e244 <__errno>                        
 800319c:	34 02 00 16 	mvi r2,22                                      
 80031a0:	58 22 00 00 	sw (r1+0),r2                                   
 80031a4:	34 01 ff ff 	mvi r1,-1                                      
                                                                      
  return 0;                                                           
}                                                                     
 80031a8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80031ac:	37 9c 00 04 	addi sp,sp,4                                   
 80031b0:	c3 a0 00 00 	ret                                            
{                                                                     
  if ( !tp )                                                          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( clock_id == CLOCK_REALTIME ) {                                 
    if ( tp->tv_sec < TOD_SECONDS_1970_THROUGH_1988 )                 
 80031b4:	78 04 08 01 	mvhi r4,0x801                                  
 80031b8:	38 84 ed 1c 	ori r4,r4,0xed1c                               
 80031bc:	28 43 00 00 	lw r3,(r2+0)                                   
 80031c0:	28 81 00 00 	lw r1,(r4+0)                                   
 80031c4:	54 61 00 02 	bgu r3,r1,80031cc <clock_settime+0x58>         
 80031c8:	e3 ff ff f4 	bi 8003198 <clock_settime+0x24>                
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 80031cc:	78 01 08 02 	mvhi r1,0x802                                  
 80031d0:	38 21 08 b8 	ori r1,r1,0x8b8                                
 80031d4:	28 23 00 00 	lw r3,(r1+0)                                   
 80031d8:	34 63 00 01 	addi r3,r3,1                                   
 80031dc:	58 23 00 00 	sw (r1+0),r3                                   
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    _Thread_Disable_dispatch();                                       
      _TOD_Set( tp );                                                 
 80031e0:	b8 40 08 00 	mv r1,r2                                       
 80031e4:	f8 00 07 5c 	calli 8004f54 <_TOD_Set>                       
    _Thread_Enable_dispatch();                                        
 80031e8:	f8 00 0d a7 	calli 8006884 <_Thread_Enable_dispatch>        
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
  else                                                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  return 0;                                                           
 80031ec:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 80031f0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80031f4:	37 9c 00 04 	addi sp,sp,4                                   
 80031f8:	c3 a0 00 00 	ret                                            
  else if ( clock_id == CLOCK_PROCESS_CPUTIME )                       
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
#ifdef _POSIX_THREAD_CPUTIME                                          
  else if ( clock_id == CLOCK_THREAD_CPUTIME )                        
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
 80031fc:	f8 00 2c 12 	calli 800e244 <__errno>                        
 8003200:	34 02 00 58 	mvi r2,88                                      
 8003204:	58 22 00 00 	sw (r1+0),r2                                   
 8003208:	34 01 ff ff 	mvi r1,-1                                      
#endif                                                                
  else                                                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  return 0;                                                           
}                                                                     
 800320c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003210:	37 9c 00 04 	addi sp,sp,4                                   
 8003214:	c3 a0 00 00 	ret                                            
                                                                      

08026010 <killinfo>: int killinfo( pid_t pid, int sig, const union sigval *value ) {
 8026010:	37 9c ff d8 	addi sp,sp,-40                                 
 8026014:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8026018:	5b 8c 00 18 	sw (sp+24),r12                                 
 802601c:	5b 8d 00 14 	sw (sp+20),r13                                 
 8026020:	5b 8e 00 10 	sw (sp+16),r14                                 
 8026024:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8026028:	5b 90 00 08 	sw (sp+8),r16                                  
 802602c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8026030:	b8 20 58 00 	mv r11,r1                                      
 8026034:	b8 40 60 00 	mv r12,r2                                      
 8026038:	b8 60 70 00 	mv r14,r3                                      
  POSIX_signals_Siginfo_node  *psiginfo;                              
                                                                      
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
  if ( pid != getpid() )                                              
 802603c:	fb ff fe e3 	calli 8025bc8 <getpid>                         
 8026040:	5c 2b 00 a3 	bne r1,r11,80262cc <killinfo+0x2bc>            
    rtems_set_errno_and_return_minus_one( ESRCH );                    
                                                                      
  /*                                                                  
   *  Validate the signal passed.                                     
   */                                                                 
  if ( !sig )                                                         
 8026044:	45 80 00 04 	be r12,r0,8026054 <killinfo+0x44>              
                                                                      
static inline bool is_valid_signo(                                    
  int signo                                                           
)                                                                     
{                                                                     
  return ((signo) >= 1 && (signo) <= 32 );                            
 8026048:	35 82 ff ff 	addi r2,r12,-1                                 
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
 802604c:	34 01 00 1f 	mvi r1,31                                      
 8026050:	50 22 00 0e 	bgeu r1,r2,8026088 <killinfo+0x78>             
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8026054:	fb ff b7 70 	calli 8013e14 <__errno>                        
 8026058:	34 02 00 16 	mvi r2,22                                      
 802605c:	58 22 00 00 	sw (r1+0),r2                                   
 8026060:	34 01 ff ff 	mvi r1,-1                                      
  }                                                                   
                                                                      
  DEBUG_STEP("\n");                                                   
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
 8026064:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8026068:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 802606c:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8026070:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8026074:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8026078:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 802607c:	2b 90 00 08 	lw r16,(sp+8)                                  
 8026080:	37 9c 00 28 	addi sp,sp,40                                  
 8026084:	c3 a0 00 00 	ret                                            
    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 )          
 8026088:	b5 8c 80 00 	add r16,r12,r12                                
 802608c:	b6 0c 08 00 	add r1,r16,r12                                 
 8026090:	78 0d 08 02 	mvhi r13,0x802                                 
 8026094:	b4 21 08 00 	add r1,r1,r1                                   
 8026098:	39 ad af 40 	ori r13,r13,0xaf40                             
 802609c:	b4 21 08 00 	add r1,r1,r1                                   
 80260a0:	b5 a1 08 00 	add r1,r13,r1                                  
 80260a4:	28 23 00 08 	lw r3,(r1+8)                                   
 80260a8:	34 0f 00 01 	mvi r15,1                                      
    return 0;                                                         
 80260ac:	34 01 00 00 	mvi r1,0                                       
    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 )          
 80260b0:	44 6f ff ed 	be r3,r15,8026064 <killinfo+0x54>              
  /*                                                                  
   *  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 ) )      
 80260b4:	65 83 00 04 	cmpei r3,r12,4                                 
 80260b8:	65 81 00 08 	cmpei r1,r12,8                                 
 80260bc:	b8 61 08 00 	or r1,r3,r1                                    
 80260c0:	5c 20 00 3f 	bne r1,r0,80261bc <killinfo+0x1ac>             
 80260c4:	34 01 00 0b 	mvi r1,11                                      
 80260c8:	45 81 00 3d 	be r12,r1,80261bc <killinfo+0x1ac>             
                                                                      
static inline sigset_t signo_to_mask(                                 
  uint32_t sig                                                        
)                                                                     
{                                                                     
  return 1u << (sig - 1);                                             
 80260cc:	34 01 00 01 	mvi r1,1                                       
 80260d0:	fb ff 70 24 	calli 8002160 <__ashlsi3>                      
                                                                      
  /*                                                                  
   *  Build up a siginfo structure                                    
   */                                                                 
  siginfo = &siginfo_struct;                                          
  siginfo->si_signo = sig;                                            
 80260d4:	5b 8c 00 20 	sw (sp+32),r12                                 
  siginfo->si_code = SI_USER;                                         
 80260d8:	5b 8f 00 24 	sw (sp+36),r15                                 
 80260dc:	b8 20 58 00 	mv r11,r1                                      
  if ( !value ) {                                                     
 80260e0:	45 c0 00 3b 	be r14,r0,80261cc <killinfo+0x1bc>             
    siginfo->si_value.sival_int = 0;                                  
  } else {                                                            
    siginfo->si_value = *value;                                       
 80260e4:	29 c1 00 00 	lw r1,(r14+0)                                  
 80260e8:	5b 81 00 28 	sw (sp+40),r1                                  
 80260ec:	78 01 08 02 	mvhi r1,0x802                                  
 80260f0:	38 21 aa 20 	ori r1,r1,0xaa20                               
 80260f4:	28 22 00 00 	lw r2,(r1+0)                                   
 80260f8:	34 42 00 01 	addi r2,r2,1                                   
 80260fc:	58 22 00 00 	sw (r1+0),r2                                   
                                                                      
  /*                                                                  
   *  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;                                     
 8026100:	78 01 08 02 	mvhi r1,0x802                                  
 8026104:	38 21 ae f0 	ori r1,r1,0xaef0                               
 8026108:	28 21 00 0c 	lw r1,(r1+12)                                  
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
  if ( _POSIX_signals_Is_interested( api, mask ) ) {                  
 802610c:	28 22 01 20 	lw r2,(r1+288)                                 
 8026110:	28 42 00 d0 	lw r2,(r2+208)                                 
 8026114:	a4 40 10 00 	not r2,r2                                      
 8026118:	a1 62 10 00 	and r2,r11,r2                                  
 802611c:	5c 40 00 18 	bne r2,r0,802617c <killinfo+0x16c>             
  }                                                                   
                                                                      
  DEBUG_STEP("\n");                                                   
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
 8026120:	78 01 08 02 	mvhi r1,0x802                                  
 8026124:	38 21 b0 cc 	ori r1,r1,0xb0cc                               
 8026128:	28 23 00 00 	lw r3,(r1+0)                                   
                                                                      
  /* 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 );                         
 802612c:	78 04 08 02 	mvhi r4,0x802                                  
 8026130:	38 84 b0 d0 	ori r4,r4,0xb0d0                               
 8026134:	44 64 00 28 	be r3,r4,80261d4 <killinfo+0x1c4>              
    #endif                                                            
                                                                      
    /*                                                                
     * Is this thread is actually blocked waiting for the signal?     
     */                                                               
    if (the_thread->Wait.option & mask)                               
 8026138:	28 62 00 30 	lw r2,(r3+48)                                  
                                                                      
  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;                          
 802613c:	b8 60 08 00 	mv r1,r3                                       
    api = the_thread->API_Extensions[ THREAD_API_POSIX ];             
 8026140:	28 65 01 20 	lw r5,(r3+288)                                 
    #endif                                                            
                                                                      
    /*                                                                
     * Is this thread is actually blocked waiting for the signal?     
     */                                                               
    if (the_thread->Wait.option & mask)                               
 8026144:	a1 62 10 00 	and r2,r11,r2                                  
 8026148:	44 40 00 09 	be r2,r0,802616c <killinfo+0x15c>              
 802614c:	e0 00 00 0c 	bi 802617c <killinfo+0x16c>                    
                                                                      
  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 ) {                                 
 8026150:	28 63 00 00 	lw r3,(r3+0)                                   
                                                                      
  /* 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 );                         
 8026154:	44 64 00 20 	be r3,r4,80261d4 <killinfo+0x1c4>              <== ALWAYS TAKEN
    #endif                                                            
                                                                      
    /*                                                                
     * Is this thread is actually blocked waiting for the signal?     
     */                                                               
    if (the_thread->Wait.option & mask)                               
 8026158:	28 62 00 30 	lw r2,(r3+48)                                  <== 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 ];             
 802615c:	28 65 01 20 	lw r5,(r3+288)                                 <== 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;                          
 8026160:	b8 60 08 00 	mv r1,r3                                       <== NOT EXECUTED
    #endif                                                            
                                                                      
    /*                                                                
     * Is this thread is actually blocked waiting for the signal?     
     */                                                               
    if (the_thread->Wait.option & mask)                               
 8026164:	a1 62 10 00 	and r2,r11,r2                                  <== NOT EXECUTED
 8026168:	5c 40 00 05 	bne r2,r0,802617c <killinfo+0x16c>             <== NOT EXECUTED
                                                                      
    /*                                                                
     * Is this thread is blocked waiting for another signal but has   
     * not blocked this one?                                          
     */                                                               
    if (~api->signals_blocked & mask)                                 
 802616c:	28 a5 00 d0 	lw r5,(r5+208)                                 
 8026170:	a4 a0 28 00 	not r5,r5                                      
 8026174:	a1 65 28 00 	and r5,r11,r5                                  
 8026178:	44 a2 ff f6 	be r5,r2,8026150 <killinfo+0x140>              
                                                                      
  /*                                                                  
   *  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 ) ) {  
 802617c:	b9 80 10 00 	mv r2,r12                                      
 8026180:	37 83 00 20 	addi r3,sp,32                                  
 8026184:	f8 00 00 68 	calli 8026324 <_POSIX_signals_Unblock_thread>  
 8026188:	5c 20 00 0a 	bne r1,r0,80261b0 <killinfo+0x1a0>             
   *  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 );                         
                                                                      
  if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {       
 802618c:	b6 0c 60 00 	add r12,r16,r12                                
 8026190:	b5 8c 60 00 	add r12,r12,r12                                
                                                                      
  /*                                                                  
   *  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 );                         
 8026194:	b9 60 08 00 	mv r1,r11                                      
                                                                      
  if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {       
 8026198:	b5 8c 60 00 	add r12,r12,r12                                
                                                                      
  /*                                                                  
   *  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 );                         
 802619c:	f8 00 00 57 	calli 80262f8 <_POSIX_signals_Set_process_signals>
                                                                      
  if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {       
 80261a0:	b5 ac 68 00 	add r13,r13,r12                                
 80261a4:	29 a2 00 00 	lw r2,(r13+0)                                  
 80261a8:	34 01 00 02 	mvi r1,2                                       
 80261ac:	44 41 00 38 	be r2,r1,802628c <killinfo+0x27c>              
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
  }                                                                   
                                                                      
  DEBUG_STEP("\n");                                                   
  _Thread_Enable_dispatch();                                          
 80261b0:	fb ff 9a 1b 	calli 800ca1c <_Thread_Enable_dispatch>        
  return 0;                                                           
 80261b4:	34 01 00 00 	mvi r1,0                                       
 80261b8:	e3 ff ff ab 	bi 8026064 <killinfo+0x54>                     
   *  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 );                     
 80261bc:	f8 00 01 09 	calli 80265e0 <pthread_self>                   
 80261c0:	b9 80 10 00 	mv r2,r12                                      
 80261c4:	f8 00 00 bb 	calli 80264b0 <pthread_kill>                   
 80261c8:	e3 ff ff a7 	bi 8026064 <killinfo+0x54>                     
   */                                                                 
  siginfo = &siginfo_struct;                                          
  siginfo->si_signo = sig;                                            
  siginfo->si_code = SI_USER;                                         
  if ( !value ) {                                                     
    siginfo->si_value.sival_int = 0;                                  
 80261cc:	5b 80 00 28 	sw (sp+40),r0                                  
 80261d0:	e3 ff ff c7 	bi 80260ec <killinfo+0xdc>                     
   *  NOTES:                                                          
   *                                                                  
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
  interested_priority = PRIORITY_MAXIMUM + 1;                         
 80261d4:	78 01 08 02 	mvhi r1,0x802                                  
 80261d8:	38 21 a0 c0 	ori r1,r1,0xa0c0                               
 80261dc:	40 26 00 00 	lbu r6,(r1+0)                                  
 */                                                                   
                                                                      
#define _POSIX_signals_Is_interested( _api, _mask ) \                 
  ( ~(_api)->signals_blocked & (_mask) )                              
                                                                      
int killinfo(                                                         
 80261e0:	78 01 08 02 	mvhi r1,0x802                                  
 80261e4:	38 21 a9 bc 	ori r1,r1,0xa9bc                               
   *  NOTES:                                                          
   *                                                                  
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
  interested_priority = PRIORITY_MAXIMUM + 1;                         
 80261e8:	78 08 08 02 	mvhi r8,0x802                                  
 */                                                                   
                                                                      
#define _POSIX_signals_Is_interested( _api, _mask ) \                 
  ( ~(_api)->signals_blocked & (_mask) )                              
                                                                      
int killinfo(                                                         
 80261ec:	34 2a 00 10 	addi r10,r1,16                                 
   *  NOTES:                                                          
   *                                                                  
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
  interested_priority = PRIORITY_MAXIMUM + 1;                         
 80261f0:	34 c6 00 01 	addi r6,r6,1                                   
 80261f4:	39 08 a9 c4 	ori r8,r8,0xa9c4                               
   *                                                                  
   *  NOTES:                                                          
   *                                                                  
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
 80261f8:	34 01 00 00 	mvi r1,0                                       
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_interruptible_by_signal (        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_INTERRUPTIBLE_BY_SIGNAL);              
 80261fc:	78 0f 10 00 	mvhi r15,0x1000                                
  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 ] )                     
 8026200:	29 02 00 00 	lw r2,(r8+0)                                   
 8026204:	44 40 00 1e 	be r2,r0,802627c <killinfo+0x26c>              <== NEVER TAKEN
      continue;                                                       
                                                                      
    the_info = _Objects_Information_table[ the_api ][ 1 ];            
 8026208:	28 42 00 04 	lw r2,(r2+4)                                   
       */                                                             
      if ( !the_info )                                                
        continue;                                                     
    #endif                                                            
                                                                      
    maximum = the_info->maximum;                                      
 802620c:	2c 47 00 10 	lhu r7,(r2+16)                                 
    object_table = the_info->local_table;                             
 8026210:	28 44 00 1c 	lw r4,(r2+28)                                  
                                                                      
    for ( index = 1 ; index <= maximum ; index++ ) {                  
 8026214:	44 e0 00 1a 	be r7,r0,802627c <killinfo+0x26c>              
 8026218:	34 03 00 01 	mvi r3,1                                       
      the_thread = (Thread_Control *) object_table[ index ];          
 802621c:	28 82 00 04 	lw r2,(r4+4)                                   
                                                                      
      if ( !the_thread )                                              
 8026220:	44 40 00 14 	be r2,r0,8026270 <killinfo+0x260>              
                                                                      
      /*                                                              
       *  If this thread is of lower priority than the interested thread,
       *  go on to the next thread.                                   
       */                                                             
      if ( the_thread->current_priority > interested_priority )       
 8026224:	28 45 00 14 	lw r5,(r2+20)                                  
 8026228:	54 a6 00 12 	bgu r5,r6,8026270 <killinfo+0x260>             
      #if defined(RTEMS_DEBUG)                                        
        if ( !api )                                                   
          continue;                                                   
      #endif                                                          
                                                                      
      if ( !_POSIX_signals_Is_interested( api, mask ) )               
 802622c:	28 49 01 20 	lw r9,(r2+288)                                 
 8026230:	29 29 00 d0 	lw r9,(r9+208)                                 
 8026234:	a5 20 48 00 	not r9,r9                                      
 8026238:	a1 69 48 00 	and r9,r11,r9                                  
 802623c:	45 20 00 0d 	be r9,r0,8026270 <killinfo+0x260>              
       *                                                              
       *  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 ) {     
 8026240:	54 c5 00 0a 	bgu r6,r5,8026268 <killinfo+0x258>             
       *  and blocking interruptibutable by signal.                   
       *                                                              
       *  If the interested thread is ready, don't think about changing.
       */                                                             
                                                                      
      if ( interested && !_States_Is_ready( interested->current_state ) ) {
 8026244:	44 20 00 0b 	be r1,r0,8026270 <killinfo+0x260>              <== NEVER TAKEN
 8026248:	28 29 00 10 	lw r9,(r1+16)                                  
 802624c:	45 20 00 09 	be r9,r0,8026270 <killinfo+0x260>              <== NEVER TAKEN
        /* preferred ready over blocked */                            
        DEBUG_STEP("5");                                              
        if ( _States_Is_ready( the_thread->current_state ) ) {        
 8026250:	28 4e 00 10 	lw r14,(r2+16)                                 
 8026254:	45 c0 00 05 	be r14,r0,8026268 <killinfo+0x258>             
 8026258:	a1 2f 48 00 	and r9,r9,r15                                  
          continue;                                                   
        }                                                             
                                                                      
        DEBUG_STEP("6");                                              
        /* prefer blocked/interruptible over blocked/not interruptible */
        if ( !_States_Is_interruptible_by_signal(interested->current_state) ) {
 802625c:	5d 20 00 05 	bne r9,r0,8026270 <killinfo+0x260>             
 8026260:	a1 cf 70 00 	and r14,r14,r15                                
          DEBUG_STEP("7");                                            
          if ( _States_Is_interruptible_by_signal(the_thread->current_state) ) {
 8026264:	45 c9 00 03 	be r14,r9,8026270 <killinfo+0x260>             
       */                                                             
                                                                      
      if ( interested && !_States_Is_ready( interested->current_state ) ) {
        /* preferred ready over blocked */                            
        DEBUG_STEP("5");                                              
        if ( _States_Is_ready( the_thread->current_state ) ) {        
 8026268:	b8 a0 30 00 	mv r6,r5                                       
 802626c:	b8 40 08 00 	mv r1,r2                                       
    #endif                                                            
                                                                      
    maximum = the_info->maximum;                                      
    object_table = the_info->local_table;                             
                                                                      
    for ( index = 1 ; index <= maximum ; index++ ) {                  
 8026270:	34 63 00 01 	addi r3,r3,1                                   
 8026274:	34 84 00 04 	addi r4,r4,4                                   
 8026278:	50 e3 ff e9 	bgeu r7,r3,802621c <killinfo+0x20c>            
 802627c:	35 08 00 04 	addi r8,r8,4                                   
   *    + 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++) {
 8026280:	5d 0a ff e0 	bne r8,r10,8026200 <killinfo+0x1f0>            
        }                                                             
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ( interested ) {                                                 
 8026284:	5c 20 ff be 	bne r1,r0,802617c <killinfo+0x16c>             
 8026288:	e3 ff ff c1 	bi 802618c <killinfo+0x17c>                    
  _POSIX_signals_Set_process_signals( mask );                         
                                                                      
  if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {       
                                                                      
    psiginfo = (POSIX_signals_Siginfo_node *)                         
               _Chain_Get( &_POSIX_signals_Inactive_siginfo );        
 802628c:	78 01 08 02 	mvhi r1,0x802                                  
 8026290:	38 21 b0 c0 	ori r1,r1,0xb0c0                               
 8026294:	fb ff 91 5d 	calli 800a808 <_Chain_Get>                     
 8026298:	b8 20 10 00 	mv r2,r1                                       
    if ( !psiginfo ) {                                                
 802629c:	44 20 00 11 	be r1,r0,80262e0 <killinfo+0x2d0>              
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
    }                                                                 
                                                                      
    psiginfo->Info = *siginfo;                                        
 80262a0:	2b 83 00 20 	lw r3,(sp+32)                                  
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
 80262a4:	78 01 08 02 	mvhi r1,0x802                                  
 80262a8:	38 21 b1 38 	ori r1,r1,0xb138                               
    if ( !psiginfo ) {                                                
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
    }                                                                 
                                                                      
    psiginfo->Info = *siginfo;                                        
 80262ac:	58 43 00 08 	sw (r2+8),r3                                   
 80262b0:	2b 83 00 24 	lw r3,(sp+36)                                  
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
 80262b4:	b5 81 08 00 	add r1,r12,r1                                  
    if ( !psiginfo ) {                                                
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
    }                                                                 
                                                                      
    psiginfo->Info = *siginfo;                                        
 80262b8:	58 43 00 0c 	sw (r2+12),r3                                  
 80262bc:	2b 83 00 28 	lw r3,(sp+40)                                  
 80262c0:	58 43 00 10 	sw (r2+16),r3                                  
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
 80262c4:	fb ff 91 3b 	calli 800a7b0 <_Chain_Append>                  
 80262c8:	e3 ff ff ba 	bi 80261b0 <killinfo+0x1a0>                    
                                                                      
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
  if ( pid != getpid() )                                              
    rtems_set_errno_and_return_minus_one( ESRCH );                    
 80262cc:	fb ff b6 d2 	calli 8013e14 <__errno>                        
 80262d0:	34 02 00 03 	mvi r2,3                                       
 80262d4:	58 22 00 00 	sw (r1+0),r2                                   
 80262d8:	34 01 ff ff 	mvi r1,-1                                      
 80262dc:	e3 ff ff 62 	bi 8026064 <killinfo+0x54>                     
  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();                                      
 80262e0:	fb ff 99 cf 	calli 800ca1c <_Thread_Enable_dispatch>        
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
 80262e4:	fb ff b6 cc 	calli 8013e14 <__errno>                        
 80262e8:	34 02 00 0b 	mvi r2,11                                      
 80262ec:	58 22 00 00 	sw (r1+0),r2                                   
 80262f0:	34 01 ff ff 	mvi r1,-1                                      
 80262f4:	e3 ff ff 5c 	bi 8026064 <killinfo+0x54>                     
                                                                      

08008df4 <mq_open>: int oflag, ... /* mode_t mode, */ /* struct mq_attr attr */ ) {
 8008df4:	37 9c ff b8 	addi sp,sp,-72                                 
 8008df8:	5b 8b 00 20 	sw (sp+32),r11                                 
 8008dfc:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8008e00:	5b 8d 00 18 	sw (sp+24),r13                                 
 8008e04:	5b 8e 00 14 	sw (sp+20),r14                                 
 8008e08:	5b 8f 00 10 	sw (sp+16),r15                                 
 8008e0c:	5b 90 00 0c 	sw (sp+12),r16                                 
 8008e10:	5b 91 00 08 	sw (sp+8),r17                                  
 8008e14:	5b 9d 00 04 	sw (sp+4),ra                                   
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 8008e18:	78 09 08 02 	mvhi r9,0x802                                  
 8008e1c:	39 29 9d b8 	ori r9,r9,0x9db8                               
 8008e20:	29 2a 00 00 	lw r10,(r9+0)                                  
 8008e24:	b8 20 80 00 	mv r16,r1                                      
 8008e28:	5b 82 00 30 	sw (sp+48),r2                                  
 8008e2c:	35 4a 00 01 	addi r10,r10,1                                 
 8008e30:	5b 83 00 34 	sw (sp+52),r3                                  
 8008e34:	5b 84 00 38 	sw (sp+56),r4                                  
 8008e38:	5b 85 00 3c 	sw (sp+60),r5                                  
 8008e3c:	5b 86 00 40 	sw (sp+64),r6                                  
 8008e40:	5b 87 00 44 	sw (sp+68),r7                                  
 8008e44:	5b 88 00 48 	sw (sp+72),r8                                  
 8008e48:	b8 40 68 00 	mv r13,r2                                      
 8008e4c:	59 2a 00 00 	sw (r9+0),r10                                  
  POSIX_Message_queue_Control_fd *the_mq_fd;                          
  Objects_Locations               location;                           
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
 8008e50:	20 4f 02 00 	andi r15,r2,0x200                              
  /* struct mq_attr  attr */                                          
)                                                                     
{                                                                     
  va_list                         arg;                                
  mode_t                          mode;                               
  struct mq_attr                 *attr = NULL;                        
 8008e54:	34 11 00 00 	mvi r17,0                                      
  POSIX_Message_queue_Control_fd *the_mq_fd;                          
  Objects_Locations               location;                           
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
 8008e58:	5d e0 00 38 	bne r15,r0,8008f38 <mq_open+0x144>             
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *                 
  _POSIX_Message_queue_Allocate_fd( void )                            
{                                                                     
  return (POSIX_Message_queue_Control_fd *)                           
    _Objects_Allocate( &_POSIX_Message_queue_Information_fds );       
 8008e5c:	78 0c 08 02 	mvhi r12,0x802                                 
 8008e60:	39 8c a2 1c 	ori r12,r12,0xa21c                             
 8008e64:	b9 80 08 00 	mv r1,r12                                      
 8008e68:	f8 00 0c 21 	calli 800beec <_Objects_Allocate>              
 8008e6c:	b8 20 58 00 	mv r11,r1                                      
    attr = (struct mq_attr *) va_arg( arg, struct mq_attr * );        
    va_end(arg);                                                      
  }                                                                   
                                                                      
  the_mq_fd = _POSIX_Message_queue_Allocate_fd();                     
  if ( !the_mq_fd ) {                                                 
 8008e70:	44 20 00 39 	be r1,r0,8008f54 <mq_open+0x160>               <== NEVER TAKEN
    _Thread_Enable_dispatch();                                        
    rtems_set_errno_and_return_minus_one( ENFILE );                   
  }                                                                   
  the_mq_fd->oflag = oflag;                                           
 8008e74:	58 2d 00 14 	sw (r1+20),r13                                 
                                                                      
  status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id );       
 8008e78:	37 82 00 2c 	addi r2,sp,44                                  
 8008e7c:	ba 00 08 00 	mv r1,r16                                      
 8008e80:	f8 00 1f 8e 	calli 8010cb8 <_POSIX_Message_queue_Name_to_id>
 8008e84:	b8 20 70 00 	mv r14,r1                                      
   *  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 ) {                                                     
 8008e88:	5c 20 00 22 	bne r1,r0,8008f10 <mq_open+0x11c>              
                                                                      
  } else {                /* name -> ID translation succeeded */      
    /*                                                                
     * Check for existence with creation.                             
     */                                                               
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
 8008e8c:	21 ad 0a 00 	andi r13,r13,0xa00                             
 8008e90:	34 01 0a 00 	mvi r1,2560                                    
 8008e94:	45 a1 00 36 	be r13,r1,8008f6c <mq_open+0x178>              
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (POSIX_Message_queue_Control *)                              
    _Objects_Get( &_POSIX_Message_queue_Information, id, location );  
 8008e98:	2b 82 00 2c 	lw r2,(sp+44)                                  
 8008e9c:	78 01 08 02 	mvhi r1,0x802                                  
 8008ea0:	37 83 00 24 	addi r3,sp,36                                  
 8008ea4:	38 21 a0 90 	ori r1,r1,0xa090                               
 8008ea8:	f8 00 0d 9a 	calli 800c510 <_Objects_Get>                   
    /*                                                                
     * 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;                                          
 8008eac:	28 24 00 18 	lw r4,(r1+24)                                  
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  const char          *name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 8008eb0:	2d 62 00 0a 	lhu r2,(r11+10)                                
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8008eb4:	29 83 00 1c 	lw r3,(r12+28)                                 
 8008eb8:	34 84 00 01 	addi r4,r4,1                                   
 8008ebc:	b4 42 10 00 	add r2,r2,r2                                   
 8008ec0:	58 24 00 18 	sw (r1+24),r4                                  
 8008ec4:	b4 42 10 00 	add r2,r2,r2                                   
                                                                      
    /*                                                                
     * 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 );        
 8008ec8:	5b 81 00 28 	sw (sp+40),r1                                  
    the_mq->open_count += 1;                                          
    the_mq_fd->Queue = the_mq;                                        
 8008ecc:	59 61 00 10 	sw (r11+16),r1                                 
 8008ed0:	b4 62 10 00 	add r2,r3,r2                                   
 8008ed4:	58 4b 00 00 	sw (r2+0),r11                                  
    the_object                                                        
  );                                                                  
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    /* ASSERT: information->is_string */                              
    the_object->name.name_p = name;                                   
 8008ed8:	59 60 00 0c 	sw (r11+12),r0                                 
    _Objects_Open_string(                                             
      &_POSIX_Message_queue_Information_fds,                          
      &the_mq_fd->Object,                                             
      NULL                                                            
    );                                                                
    _Thread_Enable_dispatch();                                        
 8008edc:	f8 00 11 2b 	calli 800d388 <_Thread_Enable_dispatch>        
    _Thread_Enable_dispatch();                                        
 8008ee0:	f8 00 11 2a 	calli 800d388 <_Thread_Enable_dispatch>        
    return (mqd_t)the_mq_fd->Object.id;                               
 8008ee4:	29 61 00 08 	lw r1,(r11+8)                                  
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
}                                                                     
 8008ee8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008eec:	2b 8b 00 20 	lw r11,(sp+32)                                 
 8008ef0:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 8008ef4:	2b 8d 00 18 	lw r13,(sp+24)                                 
 8008ef8:	2b 8e 00 14 	lw r14,(sp+20)                                 
 8008efc:	2b 8f 00 10 	lw r15,(sp+16)                                 
 8008f00:	2b 90 00 0c 	lw r16,(sp+12)                                 
 8008f04:	2b 91 00 08 	lw r17,(sp+8)                                  
 8008f08:	37 9c 00 48 	addi sp,sp,72                                  
 8008f0c:	c3 a0 00 00 	ret                                            
  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) ) ) {               
 8008f10:	34 01 00 02 	mvi r1,2                                       
 8008f14:	45 c1 00 1f 	be r14,r1,8008f90 <mq_open+0x19c>              
                                                                      
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 );
 8008f18:	b9 80 08 00 	mv r1,r12                                      
 8008f1c:	b9 60 10 00 	mv r2,r11                                      
 8008f20:	f8 00 0d 03 	calli 800c32c <_Objects_Free>                  
      _POSIX_Message_queue_Free_fd( the_mq_fd );                      
      _Thread_Enable_dispatch();                                      
 8008f24:	f8 00 11 19 	calli 800d388 <_Thread_Enable_dispatch>        
      rtems_set_errno_and_return_minus_one_cast( status, mqd_t );     
 8008f28:	f8 00 30 de 	calli 80152a0 <__errno>                        
 8008f2c:	58 2e 00 00 	sw (r1+0),r14                                  
 8008f30:	34 01 ff ff 	mvi r1,-1                                      
 8008f34:	e3 ff ff ed 	bi 8008ee8 <mq_open+0xf4>                      
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *                 
  _POSIX_Message_queue_Allocate_fd( void )                            
{                                                                     
  return (POSIX_Message_queue_Control_fd *)                           
    _Objects_Allocate( &_POSIX_Message_queue_Information_fds );       
 8008f38:	78 0c 08 02 	mvhi r12,0x802                                 
 8008f3c:	39 8c a2 1c 	ori r12,r12,0xa21c                             
 8008f40:	b9 80 08 00 	mv r1,r12                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
    va_start(arg, oflag);                                             
    mode = (mode_t) va_arg( arg, unsigned int );                      
    attr = (struct mq_attr *) va_arg( arg, struct mq_attr * );        
 8008f44:	2b 91 00 38 	lw r17,(sp+56)                                 
 8008f48:	f8 00 0b e9 	calli 800beec <_Objects_Allocate>              
 8008f4c:	b8 20 58 00 	mv r11,r1                                      
    va_end(arg);                                                      
  }                                                                   
                                                                      
  the_mq_fd = _POSIX_Message_queue_Allocate_fd();                     
  if ( !the_mq_fd ) {                                                 
 8008f50:	5c 20 ff c9 	bne r1,r0,8008e74 <mq_open+0x80>               
    _Thread_Enable_dispatch();                                        
 8008f54:	f8 00 11 0d 	calli 800d388 <_Thread_Enable_dispatch>        
    rtems_set_errno_and_return_minus_one( ENFILE );                   
 8008f58:	f8 00 30 d2 	calli 80152a0 <__errno>                        
 8008f5c:	34 02 00 17 	mvi r2,23                                      
 8008f60:	58 22 00 00 	sw (r1+0),r2                                   
 8008f64:	34 01 ff ff 	mvi r1,-1                                      
 8008f68:	e3 ff ff e0 	bi 8008ee8 <mq_open+0xf4>                      
                                                                      
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 );
 8008f6c:	b9 60 10 00 	mv r2,r11                                      
 8008f70:	b9 80 08 00 	mv r1,r12                                      
 8008f74:	f8 00 0c ee 	calli 800c32c <_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();                                      
 8008f78:	f8 00 11 04 	calli 800d388 <_Thread_Enable_dispatch>        
      rtems_set_errno_and_return_minus_one_cast( EEXIST, mqd_t );     
 8008f7c:	f8 00 30 c9 	calli 80152a0 <__errno>                        
 8008f80:	34 02 00 11 	mvi r2,17                                      
 8008f84:	58 22 00 00 	sw (r1+0),r2                                   
 8008f88:	34 01 ff ff 	mvi r1,-1                                      
 8008f8c:	e3 ff ff d7 	bi 8008ee8 <mq_open+0xf4>                      
  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) ) ) {               
 8008f90:	45 e0 ff e2 	be r15,r0,8008f18 <mq_open+0x124>              
                                                                      
  /*                                                                  
   *  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(                       
 8008f94:	34 02 00 01 	mvi r2,1                                       
 8008f98:	ba 00 08 00 	mv r1,r16                                      
 8008f9c:	ba 20 18 00 	mv r3,r17                                      
 8008fa0:	37 84 00 28 	addi r4,sp,40                                  
 8008fa4:	f8 00 1e d7 	calli 8010b00 <_POSIX_Message_queue_Create_support>
  );                                                                  
                                                                      
  /*                                                                  
   * errno was set by Create_support, so don't set it again.          
   */                                                                 
  if ( status == -1 ) {                                               
 8008fa8:	34 02 ff ff 	mvi r2,-1                                      
 8008fac:	44 22 00 0d 	be r1,r2,8008fe0 <mq_open+0x1ec>               
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  const char          *name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 8008fb0:	2d 61 00 0a 	lhu r1,(r11+10)                                
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8008fb4:	29 82 00 1c 	lw r2,(r12+28)                                 
    _POSIX_Message_queue_Free_fd( the_mq_fd );                        
    _Thread_Enable_dispatch();                                        
    return (mqd_t) -1;                                                
  }                                                                   
                                                                      
  the_mq_fd->Queue = the_mq;                                          
 8008fb8:	2b 83 00 28 	lw r3,(sp+40)                                  
 8008fbc:	b4 21 08 00 	add r1,r1,r1                                   
 8008fc0:	b4 21 08 00 	add r1,r1,r1                                   
 8008fc4:	b4 41 08 00 	add r1,r2,r1                                   
 8008fc8:	59 63 00 10 	sw (r11+16),r3                                 
 8008fcc:	58 2b 00 00 	sw (r1+0),r11                                  
    the_object                                                        
  );                                                                  
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    /* ASSERT: information->is_string */                              
    the_object->name.name_p = name;                                   
 8008fd0:	59 60 00 0c 	sw (r11+12),r0                                 
    &_POSIX_Message_queue_Information_fds,                            
    &the_mq_fd->Object,                                               
    NULL                                                              
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
 8008fd4:	f8 00 10 ed 	calli 800d388 <_Thread_Enable_dispatch>        
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
 8008fd8:	29 61 00 08 	lw r1,(r11+8)                                  
 8008fdc:	e3 ff ff c3 	bi 8008ee8 <mq_open+0xf4>                      
 8008fe0:	b9 80 08 00 	mv r1,r12                                      
 8008fe4:	b9 60 10 00 	mv r2,r11                                      
 8008fe8:	f8 00 0c d1 	calli 800c32c <_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();                                        
 8008fec:	f8 00 10 e7 	calli 800d388 <_Thread_Enable_dispatch>        
    return (mqd_t) -1;                                                
 8008ff0:	34 01 ff ff 	mvi r1,-1                                      
 8008ff4:	e3 ff ff bd 	bi 8008ee8 <mq_open+0xf4>                      
                                                                      

08008560 <pthread_attr_setschedpolicy>: pthread_attr_t *attr, int policy ) { if ( !attr || !attr->is_initialized ) return EINVAL;
 8008560:	34 03 00 16 	mvi r3,22                                      
int pthread_attr_setschedpolicy(                                      
  pthread_attr_t  *attr,                                              
  int              policy                                             
)                                                                     
{                                                                     
  if ( !attr || !attr->is_initialized )                               
 8008564:	44 20 00 09 	be r1,r0,8008588 <pthread_attr_setschedpolicy+0x28>
 8008568:	28 24 00 00 	lw r4,(r1+0)                                   
 800856c:	44 80 00 07 	be r4,r0,8008588 <pthread_attr_setschedpolicy+0x28>
    return EINVAL;                                                    
                                                                      
  switch ( policy ) {                                                 
 8008570:	48 02 00 05 	bg r0,r2,8008584 <pthread_attr_setschedpolicy+0x24>
 8008574:	34 03 00 02 	mvi r3,2                                       
 8008578:	4c 62 00 06 	bge r3,r2,8008590 <pthread_attr_setschedpolicy+0x30>
 800857c:	34 03 00 04 	mvi r3,4                                       
 8008580:	44 43 00 04 	be r2,r3,8008590 <pthread_attr_setschedpolicy+0x30><== ALWAYS TAKEN
    case SCHED_SPORADIC:                                              
      attr->schedpolicy = policy;                                     
      return 0;                                                       
                                                                      
    default:                                                          
      return ENOTSUP;                                                 
 8008584:	34 03 00 86 	mvi r3,134                                     
  }                                                                   
}                                                                     
 8008588:	b8 60 08 00 	mv r1,r3                                       
 800858c:	c3 a0 00 00 	ret                                            
    case SCHED_OTHER:                                                 
    case SCHED_FIFO:                                                  
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      attr->schedpolicy = policy;                                     
      return 0;                                                       
 8008590:	34 03 00 00 	mvi r3,0                                       
  switch ( policy ) {                                                 
    case SCHED_OTHER:                                                 
    case SCHED_FIFO:                                                  
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      attr->schedpolicy = policy;                                     
 8008594:	58 22 00 14 	sw (r1+20),r2                                  
      return 0;                                                       
                                                                      
    default:                                                          
      return ENOTSUP;                                                 
  }                                                                   
}                                                                     
 8008598:	b8 60 08 00 	mv r1,r3                                       
 800859c:	c3 a0 00 00 	ret                                            
                                                                      

08003754 <pthread_barrier_init>: int pthread_barrier_init( pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count ) {
 8003754:	37 9c ff d8 	addi sp,sp,-40                                 
 8003758:	5b 8b 00 14 	sw (sp+20),r11                                 
 800375c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8003760:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8003764:	5b 8e 00 08 	sw (sp+8),r14                                  
 8003768:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Error check parameters                                          
   */                                                                 
  if ( !barrier )                                                     
    return EINVAL;                                                    
 800376c:	34 04 00 16 	mvi r4,22                                      
int pthread_barrier_init(                                             
  pthread_barrier_t           *barrier,                               
  const pthread_barrierattr_t *attr,                                  
  unsigned int                 count                                  
)                                                                     
{                                                                     
 8003770:	b8 20 58 00 	mv r11,r1                                      
  const pthread_barrierattr_t   *the_attr;                            
                                                                      
  /*                                                                  
   *  Error check parameters                                          
   */                                                                 
  if ( !barrier )                                                     
 8003774:	44 20 00 08 	be r1,r0,8003794 <pthread_barrier_init+0x40>   
    return EINVAL;                                                    
                                                                      
  if ( count == 0 )                                                   
 8003778:	44 60 00 07 	be r3,r0,8003794 <pthread_barrier_init+0x40>   
    return EINVAL;                                                    
                                                                      
  /*                                                                  
   * If the user passed in NULL, use the default attributes           
   */                                                                 
  if ( attr ) {                                                       
 800377c:	44 40 00 34 	be r2,r0,800384c <pthread_barrier_init+0xf8>   
  }                                                                   
                                                                      
  /*                                                                  
   * Now start error checking the attributes that we are going to use 
   */                                                                 
  if ( !the_attr->is_initialized )                                    
 8003780:	28 41 00 00 	lw r1,(r2+0)                                   
    return EINVAL;                                                    
 8003784:	34 04 00 16 	mvi r4,22                                      
  }                                                                   
                                                                      
  /*                                                                  
   * Now start error checking the attributes that we are going to use 
   */                                                                 
  if ( !the_attr->is_initialized )                                    
 8003788:	44 20 00 03 	be r1,r0,8003794 <pthread_barrier_init+0x40>   
    return EINVAL;                                                    
                                                                      
  switch ( the_attr->process_shared ) {                               
 800378c:	28 4e 00 04 	lw r14,(r2+4)                                  
 8003790:	45 c0 00 09 	be r14,r0,80037b4 <pthread_barrier_init+0x60>  <== ALWAYS TAKEN
   * Exit the critical section and return the user an operational barrier
   */                                                                 
  *barrier = the_barrier->Object.id;                                  
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
 8003794:	b8 80 08 00 	mv r1,r4                                       
 8003798:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800379c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80037a0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80037a4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80037a8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80037ac:	37 9c 00 28 	addi sp,sp,40                                  
 80037b0:	c3 a0 00 00 	ret                                            
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 80037b4:	78 01 08 01 	mvhi r1,0x801                                  
 80037b8:	38 21 68 68 	ori r1,r1,0x6868                               
 80037bc:	28 22 00 00 	lw r2,(r1+0)                                   
  }                                                                   
                                                                      
  /*                                                                  
   * Convert from POSIX attributes to Core Barrier attributes         
   */                                                                 
  the_attributes.discipline    = CORE_BARRIER_AUTOMATIC_RELEASE;      
 80037c0:	5b 80 00 24 	sw (sp+36),r0                                  
  the_attributes.maximum_count = count;                               
 80037c4:	5b 83 00 28 	sw (sp+40),r3                                  
 80037c8:	34 42 00 01 	addi r2,r2,1                                   
 80037cc:	58 22 00 00 	sw (r1+0),r2                                   
 *  the inactive chain of free barrier control blocks.                
 */                                                                   
RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Allocate( void )
{                                                                     
  return (POSIX_Barrier_Control *)                                    
    _Objects_Allocate( &_POSIX_Barrier_Information );                 
 80037d0:	78 0d 08 01 	mvhi r13,0x801                                 
 80037d4:	39 ad 6b c0 	ori r13,r13,0x6bc0                             
 80037d8:	b9 a0 08 00 	mv r1,r13                                      
 80037dc:	f8 00 08 44 	calli 80058ec <_Objects_Allocate>              
 80037e0:	b8 20 60 00 	mv r12,r1                                      
   */                                                                 
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_barrier = _POSIX_Barrier_Allocate();                            
                                                                      
  if ( !the_barrier ) {                                               
 80037e4:	44 2e 00 17 	be r1,r14,8003840 <pthread_barrier_init+0xec>  
    _Thread_Enable_dispatch();                                        
    return EAGAIN;                                                    
  }                                                                   
                                                                      
  _CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes ); 
 80037e8:	37 82 00 24 	addi r2,sp,36                                  
 80037ec:	34 21 00 10 	addi r1,r1,16                                  
 80037f0:	f8 00 05 2c 	calli 8004ca0 <_CORE_barrier_Initialize>       
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 80037f4:	29 82 00 08 	lw r2,(r12+8)                                  
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 80037f8:	29 a3 00 1c 	lw r3,(r13+28)                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 80037fc:	20 41 ff ff 	andi r1,r2,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8003800:	b4 21 08 00 	add r1,r1,r1                                   
 8003804:	b4 21 08 00 	add r1,r1,r1                                   
 8003808:	b4 61 08 00 	add r1,r3,r1                                   
 800380c:	58 2c 00 00 	sw (r1+0),r12                                  
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
 8003810:	59 80 00 0c 	sw (r12+12),r0                                 
  );                                                                  
                                                                      
  /*                                                                  
   * Exit the critical section and return the user an operational barrier
   */                                                                 
  *barrier = the_barrier->Object.id;                                  
 8003814:	59 62 00 00 	sw (r11+0),r2                                  
  _Thread_Enable_dispatch();                                          
 8003818:	f8 00 0c bf 	calli 8006b14 <_Thread_Enable_dispatch>        
  return 0;                                                           
 800381c:	34 04 00 00 	mvi r4,0                                       
}                                                                     
 8003820:	b8 80 08 00 	mv r1,r4                                       
 8003824:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003828:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800382c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8003830:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8003834:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8003838:	37 9c 00 28 	addi sp,sp,40                                  
 800383c:	c3 a0 00 00 	ret                                            
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_barrier = _POSIX_Barrier_Allocate();                            
                                                                      
  if ( !the_barrier ) {                                               
    _Thread_Enable_dispatch();                                        
 8003840:	f8 00 0c b5 	calli 8006b14 <_Thread_Enable_dispatch>        
    return EAGAIN;                                                    
 8003844:	34 04 00 0b 	mvi r4,11                                      
 8003848:	e3 ff ff d3 	bi 8003794 <pthread_barrier_init+0x40>         
   * If the user passed in NULL, use the default attributes           
   */                                                                 
  if ( attr ) {                                                       
    the_attr = attr;                                                  
  } else {                                                            
    (void) pthread_barrierattr_init( &my_attr );                      
 800384c:	37 8c 00 1c 	addi r12,sp,28                                 
 8003850:	b9 80 08 00 	mv r1,r12                                      
 8003854:	5b 83 00 18 	sw (sp+24),r3                                  
 8003858:	fb ff ff 7c 	calli 8003648 <pthread_barrierattr_init>       
    the_attr = &my_attr;                                              
 800385c:	b9 80 10 00 	mv r2,r12                                      
 8003860:	2b 83 00 18 	lw r3,(sp+24)                                  
 8003864:	e3 ff ff c7 	bi 8003780 <pthread_barrier_init+0x2c>         
                                                                      

08002f60 <pthread_cleanup_push>: void pthread_cleanup_push( void (*routine)( void * ), void *arg ) {
 8002f60:	37 9c ff f4 	addi sp,sp,-12                                 
 8002f64:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8002f68:	5b 8c 00 08 	sw (sp+8),r12                                  
 8002f6c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8002f70:	b8 20 58 00 	mv r11,r1                                      
 8002f74:	b8 40 60 00 	mv r12,r2                                      
  /*                                                                  
   *  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 )                                                     
 8002f78:	44 20 00 14 	be r1,r0,8002fc8 <pthread_cleanup_push+0x68>   
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 8002f7c:	78 03 08 01 	mvhi r3,0x801                                  
 8002f80:	38 63 68 50 	ori r3,r3,0x6850                               
 8002f84:	28 61 00 00 	lw r1,(r3+0)                                   
 8002f88:	34 21 00 01 	addi r1,r1,1                                   
 8002f8c:	58 61 00 00 	sw (r3+0),r1                                   
    return;                                                           
                                                                      
  _Thread_Disable_dispatch();                                         
  handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) );
 8002f90:	34 01 00 10 	mvi r1,16                                      
 8002f94:	f8 00 12 1d 	calli 8007808 <_Workspace_Allocate>            
 8002f98:	b8 20 18 00 	mv r3,r1                                       
                                                                      
  if ( handler ) {                                                    
 8002f9c:	44 20 00 0a 	be r1,r0,8002fc4 <pthread_cleanup_push+0x64>   <== NEVER TAKEN
    thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
 8002fa0:	78 04 08 01 	mvhi r4,0x801                                  
 8002fa4:	38 84 6d 20 	ori r4,r4,0x6d20                               
 8002fa8:	28 81 00 0c 	lw r1,(r4+12)                                  
    handler_stack = &thread_support->Cancellation_Handlers;           
                                                                      
    handler->routine = routine;                                       
    handler->arg = arg;                                               
                                                                      
    _Chain_Append( handler_stack, &handler->Node );                   
 8002fac:	b8 60 10 00 	mv r2,r3                                       
  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;           
 8002fb0:	28 21 01 20 	lw r1,(r1+288)                                 
                                                                      
    handler->routine = routine;                                       
 8002fb4:	58 6b 00 08 	sw (r3+8),r11                                  
    handler->arg = arg;                                               
 8002fb8:	58 6c 00 0c 	sw (r3+12),r12                                 
                                                                      
    _Chain_Append( handler_stack, &handler->Node );                   
 8002fbc:	34 21 00 e4 	addi r1,r1,228                                 
 8002fc0:	f8 00 05 2c 	calli 8004470 <_Chain_Append>                  
  }                                                                   
  _Thread_Enable_dispatch();                                          
 8002fc4:	f8 00 0c a4 	calli 8006254 <_Thread_Enable_dispatch>        
}                                                                     
 8002fc8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002fcc:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8002fd0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8002fd4:	37 9c 00 0c 	addi sp,sp,12                                  
 8002fd8:	c3 a0 00 00 	ret                                            
                                                                      

0800406c <pthread_cond_init>: int pthread_cond_init( pthread_cond_t *cond, const pthread_condattr_t *attr ) {
 800406c:	37 9c ff ec 	addi sp,sp,-20                                 
 8004070:	5b 8b 00 10 	sw (sp+16),r11                                 
 8004074:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8004078:	5b 8d 00 08 	sw (sp+8),r13                                  
 800407c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004080:	b8 20 68 00 	mv r13,r1                                      
  POSIX_Condition_variables_Control   *the_cond;                      
  const pthread_condattr_t            *the_attr;                      
                                                                      
  if ( attr ) the_attr = attr;                                        
 8004084:	44 40 00 35 	be r2,r0,8004158 <pthread_cond_init+0xec>      
  else        the_attr = &_POSIX_Condition_variables_Default_attributes;
                                                                      
  /*                                                                  
   *  Be careful about attributes when global!!!                      
   */                                                                 
  if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )           
 8004088:	28 44 00 04 	lw r4,(r2+4)                                   
 800408c:	34 03 00 01 	mvi r3,1                                       
    return EINVAL;                                                    
 8004090:	34 01 00 16 	mvi r1,22                                      
  else        the_attr = &_POSIX_Condition_variables_Default_attributes;
                                                                      
  /*                                                                  
   *  Be careful about attributes when global!!!                      
   */                                                                 
  if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )           
 8004094:	44 83 00 03 	be r4,r3,80040a0 <pthread_cond_init+0x34>      <== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  if ( !the_attr->is_initialized )                                    
 8004098:	28 43 00 00 	lw r3,(r2+0)                                   
 800409c:	5c 60 00 07 	bne r3,r0,80040b8 <pthread_cond_init+0x4c>     
  *cond = the_cond->Object.id;                                        
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return 0;                                                           
}                                                                     
 80040a0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80040a4:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80040a8:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80040ac:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80040b0:	37 9c 00 14 	addi sp,sp,20                                  
 80040b4:	c3 a0 00 00 	ret                                            
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 80040b8:	78 03 08 01 	mvhi r3,0x801                                  
 80040bc:	38 63 78 68 	ori r3,r3,0x7868                               
 80040c0:	28 61 00 00 	lw r1,(r3+0)                                   
 80040c4:	34 21 00 01 	addi r1,r1,1                                   
 80040c8:	58 61 00 00 	sw (r3+0),r1                                   
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Condition_variables_Control                
  *_POSIX_Condition_variables_Allocate( void )                        
{                                                                     
  return (POSIX_Condition_variables_Control *)                        
    _Objects_Allocate( &_POSIX_Condition_variables_Information );     
 80040cc:	78 0c 08 01 	mvhi r12,0x801                                 
 80040d0:	39 8c 7c 58 	ori r12,r12,0x7c58                             
 80040d4:	b9 80 08 00 	mv r1,r12                                      
 80040d8:	5b 82 00 14 	sw (sp+20),r2                                  
 80040dc:	f8 00 09 e8 	calli 800687c <_Objects_Allocate>              
 80040e0:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  the_cond = _POSIX_Condition_variables_Allocate();                   
                                                                      
  if ( !the_cond ) {                                                  
 80040e4:	2b 82 00 14 	lw r2,(sp+20)                                  
 80040e8:	44 20 00 1f 	be r1,r0,8004164 <pthread_cond_init+0xf8>      
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
                                                                      
  _Thread_queue_Initialize(                                           
 80040ec:	78 01 08 01 	mvhi r1,0x801                                  
  if ( !the_cond ) {                                                  
    _Thread_Enable_dispatch();                                        
    return ENOMEM;                                                    
  }                                                                   
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
 80040f0:	28 45 00 04 	lw r5,(r2+4)                                   
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
                                                                      
  _Thread_queue_Initialize(                                           
 80040f4:	38 21 61 d0 	ori r1,r1,0x61d0                               
 80040f8:	28 23 00 00 	lw r3,(r1+0)                                   
 80040fc:	34 04 00 74 	mvi r4,116                                     
 8004100:	35 61 00 18 	addi r1,r11,24                                 
  if ( !the_cond ) {                                                  
    _Thread_Enable_dispatch();                                        
    return ENOMEM;                                                    
  }                                                                   
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
 8004104:	59 65 00 10 	sw (r11+16),r5                                 
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
                                                                      
  _Thread_queue_Initialize(                                           
 8004108:	34 02 00 00 	mvi r2,0                                       
    return ENOMEM;                                                    
  }                                                                   
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
 800410c:	59 60 00 14 	sw (r11+20),r0                                 
                                                                      
  _Thread_queue_Initialize(                                           
 8004110:	f8 00 11 05 	calli 8008524 <_Thread_queue_Initialize>       
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 8004114:	29 61 00 08 	lw r1,(r11+8)                                  
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8004118:	29 83 00 1c 	lw r3,(r12+28)                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 800411c:	20 22 ff ff 	andi r2,r1,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8004120:	b4 42 10 00 	add r2,r2,r2                                   
 8004124:	b4 42 10 00 	add r2,r2,r2                                   
 8004128:	b4 62 10 00 	add r2,r3,r2                                   
 800412c:	58 4b 00 00 	sw (r2+0),r11                                  
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
 8004130:	59 60 00 0c 	sw (r11+12),r0                                 
    &_POSIX_Condition_variables_Information,                          
    &the_cond->Object,                                                
    0                                                                 
  );                                                                  
                                                                      
  *cond = the_cond->Object.id;                                        
 8004134:	59 a1 00 00 	sw (r13+0),r1                                  
                                                                      
  _Thread_Enable_dispatch();                                          
 8004138:	f8 00 0e ca 	calli 8007c60 <_Thread_Enable_dispatch>        
                                                                      
  return 0;                                                           
 800413c:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8004140:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004144:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8004148:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800414c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8004150:	37 9c 00 14 	addi sp,sp,20                                  
 8004154:	c3 a0 00 00 	ret                                            
{                                                                     
  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;
 8004158:	78 02 08 01 	mvhi r2,0x801                                  
 800415c:	38 42 61 c8 	ori r2,r2,0x61c8                               
 8004160:	e3 ff ff ca 	bi 8004088 <pthread_cond_init+0x1c>            
  _Thread_Disable_dispatch();                                         
                                                                      
  the_cond = _POSIX_Condition_variables_Allocate();                   
                                                                      
  if ( !the_cond ) {                                                  
    _Thread_Enable_dispatch();                                        
 8004164:	f8 00 0e bf 	calli 8007c60 <_Thread_Enable_dispatch>        
    return ENOMEM;                                                    
 8004168:	34 01 00 0c 	mvi r1,12                                      
 800416c:	e3 ff ff cd 	bi 80040a0 <pthread_cond_init+0x34>            
                                                                      

08003ec8 <pthread_condattr_destroy>: int pthread_condattr_destroy( pthread_condattr_t *attr ) { if ( !attr || attr->is_initialized == false ) return EINVAL;
 8003ec8:	34 02 00 16 	mvi r2,22                                      
                                                                      
int pthread_condattr_destroy(                                         
  pthread_condattr_t *attr                                            
)                                                                     
{                                                                     
  if ( !attr || attr->is_initialized == false )                       
 8003ecc:	44 20 00 05 	be r1,r0,8003ee0 <pthread_condattr_destroy+0x18>
 8003ed0:	28 23 00 00 	lw r3,(r1+0)                                   
 8003ed4:	44 60 00 03 	be r3,r0,8003ee0 <pthread_condattr_destroy+0x18><== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  attr->is_initialized = false;                                       
 8003ed8:	58 20 00 00 	sw (r1+0),r0                                   
  return 0;                                                           
 8003edc:	34 02 00 00 	mvi r2,0                                       
}                                                                     
 8003ee0:	b8 40 08 00 	mv r1,r2                                       
 8003ee4:	c3 a0 00 00 	ret                                            
                                                                      

080033e8 <pthread_create>: pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)( void * ), void *arg ) {
 80033e8:	37 9c ff a0 	addi sp,sp,-96                                 
 80033ec:	5b 8b 00 3c 	sw (sp+60),r11                                 
 80033f0:	5b 8c 00 38 	sw (sp+56),r12                                 
 80033f4:	5b 8d 00 34 	sw (sp+52),r13                                 
 80033f8:	5b 8e 00 30 	sw (sp+48),r14                                 
 80033fc:	5b 8f 00 2c 	sw (sp+44),r15                                 
 8003400:	5b 90 00 28 	sw (sp+40),r16                                 
 8003404:	5b 91 00 24 	sw (sp+36),r17                                 
 8003408:	5b 92 00 20 	sw (sp+32),r18                                 
 800340c:	5b 93 00 1c 	sw (sp+28),r19                                 
 8003410:	5b 94 00 18 	sw (sp+24),r20                                 
 8003414:	5b 95 00 14 	sw (sp+20),r21                                 
 8003418:	5b 9d 00 10 	sw (sp+16),ra                                  
  struct sched_param                  schedparam;                     
  Objects_Name                        name;                           
  int                                 rc;                             
                                                                      
  if ( !start_routine )                                               
    return EFAULT;                                                    
 800341c:	34 0c 00 0e 	mvi r12,14                                     
  pthread_t              *thread,                                     
  const pthread_attr_t   *attr,                                       
  void                 *(*start_routine)( void * ),                   
  void                   *arg                                         
)                                                                     
{                                                                     
 8003420:	b8 60 68 00 	mv r13,r3                                      
 8003424:	b8 20 78 00 	mv r15,r1                                      
 8003428:	b8 80 70 00 	mv r14,r4                                      
  int                                 schedpolicy = SCHED_RR;         
  struct sched_param                  schedparam;                     
  Objects_Name                        name;                           
  int                                 rc;                             
                                                                      
  if ( !start_routine )                                               
 800342c:	44 60 00 13 	be r3,r0,8003478 <pthread_create+0x90>         <== NEVER TAKEN
    return EFAULT;                                                    
                                                                      
  the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;      
 8003430:	b8 40 58 00 	mv r11,r2                                      
 8003434:	44 40 00 66 	be r2,r0,80035cc <pthread_create+0x1e4>        
                                                                      
  if ( !the_attr->is_initialized )                                    
 8003438:	29 61 00 00 	lw r1,(r11+0)                                  
    return EINVAL;                                                    
 800343c:	34 0c 00 16 	mvi r12,22                                     
  if ( !start_routine )                                               
    return EFAULT;                                                    
                                                                      
  the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;      
                                                                      
  if ( !the_attr->is_initialized )                                    
 8003440:	44 20 00 0e 	be r1,r0,8003478 <pthread_create+0x90>         
   *  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) )
 8003444:	29 61 00 04 	lw r1,(r11+4)                                  
 8003448:	44 20 00 06 	be r1,r0,8003460 <pthread_create+0x78>         
 800344c:	78 02 08 01 	mvhi r2,0x801                                  
 8003450:	38 42 f0 e0 	ori r2,r2,0xf0e0                               
 8003454:	29 63 00 08 	lw r3,(r11+8)                                  
 8003458:	28 41 00 00 	lw r1,(r2+0)                                   
 800345c:	54 23 00 07 	bgu r1,r3,8003478 <pthread_create+0x90>        
   *  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 ) {                                 
 8003460:	29 61 00 10 	lw r1,(r11+16)                                 
 8003464:	34 02 00 01 	mvi r2,1                                       
 8003468:	44 22 00 5c 	be r1,r2,80035d8 <pthread_create+0x1f0>        
 800346c:	34 02 00 02 	mvi r2,2                                       
      schedpolicy = the_attr->schedpolicy;                            
      schedparam  = the_attr->schedparam;                             
      break;                                                          
                                                                      
    default:                                                          
      return EINVAL;                                                  
 8003470:	34 0c 00 16 	mvi r12,22                                     
   *  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 ) {                                 
 8003474:	44 22 00 10 	be r1,r2,80034b4 <pthread_create+0xcc>         
   */                                                                 
  *thread = the_thread->Object.id;                                    
                                                                      
  _RTEMS_Unlock_allocator();                                          
  return 0;                                                           
}                                                                     
 8003478:	b9 80 08 00 	mv r1,r12                                      
 800347c:	2b 9d 00 10 	lw ra,(sp+16)                                  
 8003480:	2b 8b 00 3c 	lw r11,(sp+60)                                 
 8003484:	2b 8c 00 38 	lw r12,(sp+56)                                 
 8003488:	2b 8d 00 34 	lw r13,(sp+52)                                 
 800348c:	2b 8e 00 30 	lw r14,(sp+48)                                 
 8003490:	2b 8f 00 2c 	lw r15,(sp+44)                                 
 8003494:	2b 90 00 28 	lw r16,(sp+40)                                 
 8003498:	2b 91 00 24 	lw r17,(sp+36)                                 
 800349c:	2b 92 00 20 	lw r18,(sp+32)                                 
 80034a0:	2b 93 00 1c 	lw r19,(sp+28)                                 
 80034a4:	2b 94 00 18 	lw r20,(sp+24)                                 
 80034a8:	2b 95 00 14 	lw r21,(sp+20)                                 
 80034ac:	37 9c 00 60 	addi sp,sp,96                                  
 80034b0:	c3 a0 00 00 	ret                                            
      schedparam  = api->schedparam;                                  
      break;                                                          
                                                                      
    case PTHREAD_EXPLICIT_SCHED:                                      
      schedpolicy = the_attr->schedpolicy;                            
      schedparam  = the_attr->schedparam;                             
 80034b4:	29 67 00 18 	lw r7,(r11+24)                                 
 80034b8:	29 66 00 1c 	lw r6,(r11+28)                                 
 80034bc:	29 65 00 20 	lw r5,(r11+32)                                 
 80034c0:	29 64 00 24 	lw r4,(r11+36)                                 
 80034c4:	29 63 00 28 	lw r3,(r11+40)                                 
 80034c8:	29 62 00 2c 	lw r2,(r11+44)                                 
 80034cc:	29 61 00 30 	lw r1,(r11+48)                                 
      schedpolicy = api->schedpolicy;                                 
      schedparam  = api->schedparam;                                  
      break;                                                          
                                                                      
    case PTHREAD_EXPLICIT_SCHED:                                      
      schedpolicy = the_attr->schedpolicy;                            
 80034d0:	29 71 00 14 	lw r17,(r11+20)                                
      schedparam  = the_attr->schedparam;                             
 80034d4:	5b 87 00 40 	sw (sp+64),r7                                  
 80034d8:	5b 86 00 44 	sw (sp+68),r6                                  
 80034dc:	5b 85 00 48 	sw (sp+72),r5                                  
 80034e0:	5b 84 00 4c 	sw (sp+76),r4                                  
 80034e4:	5b 83 00 50 	sw (sp+80),r3                                  
 80034e8:	5b 82 00 54 	sw (sp+84),r2                                  
 80034ec:	5b 81 00 58 	sw (sp+88),r1                                  
                                                                      
  /*                                                                  
   *  Check the contentionscope since rtems only supports PROCESS wide
   *  contention (i.e. no system wide contention).                    
   */                                                                 
  if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS )           
 80034f0:	29 70 00 0c 	lw r16,(r11+12)                                
    return ENOTSUP;                                                   
 80034f4:	34 0c 00 86 	mvi r12,134                                    
                                                                      
  /*                                                                  
   *  Check the contentionscope since rtems only supports PROCESS wide
   *  contention (i.e. no system wide contention).                    
   */                                                                 
  if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS )           
 80034f8:	5e 00 ff e0 	bne r16,r0,8003478 <pthread_create+0x90>       
    return ENOTSUP;                                                   
                                                                      
  /*                                                                  
   *  Interpret the scheduling parameters.                            
   */                                                                 
  if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )       
 80034fc:	2b 81 00 40 	lw r1,(sp+64)                                  
    return EINVAL;                                                    
 8003500:	34 0c 00 16 	mvi r12,22                                     
    return ENOTSUP;                                                   
                                                                      
  /*                                                                  
   *  Interpret the scheduling parameters.                            
   */                                                                 
  if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )       
 8003504:	f8 00 1c 6d 	calli 800a6b8 <_POSIX_Priority_Is_valid>       
 8003508:	44 30 ff dc 	be r1,r16,8003478 <pthread_create+0x90>        <== NEVER TAKEN
                                                                      
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(        
  int priority                                                        
)                                                                     
{                                                                     
  return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
 800350c:	78 05 08 01 	mvhi r5,0x801                                  
 8003510:	38 a5 f0 e4 	ori r5,r5,0xf0e4                               
  core_priority = _POSIX_Priority_To_core( schedparam.sched_priority );
                                                                      
  /*                                                                  
   *  Set the core scheduling policy information.                     
   */                                                                 
  rc = _POSIX_Thread_Translate_sched_param(                           
 8003514:	ba 20 08 00 	mv r1,r17                                      
 8003518:	37 82 00 40 	addi r2,sp,64                                  
 800351c:	37 83 00 60 	addi r3,sp,96                                  
 8003520:	37 84 00 5c 	addi r4,sp,92                                  
   *  Interpret the scheduling parameters.                            
   */                                                                 
  if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )       
    return EINVAL;                                                    
                                                                      
  core_priority = _POSIX_Priority_To_core( schedparam.sched_priority );
 8003524:	2b 94 00 40 	lw r20,(sp+64)                                 
 8003528:	40 b5 00 00 	lbu r21,(r5+0)                                 
                                                                      
  /*                                                                  
   *  Set the core scheduling policy information.                     
   */                                                                 
  rc = _POSIX_Thread_Translate_sched_param(                           
 800352c:	f8 00 1c 6b 	calli 800a6d8 <_POSIX_Thread_Translate_sched_param>
 8003530:	b8 20 60 00 	mv r12,r1                                      
    schedpolicy,                                                      
    &schedparam,                                                      
    &budget_algorithm,                                                
    &budget_callout                                                   
  );                                                                  
  if ( rc )                                                           
 8003534:	5c 20 ff d1 	bne r1,r0,8003478 <pthread_create+0x90>        
  #endif                                                              
                                                                      
  /*                                                                  
   *  Lock the allocator mutex for protection                         
   */                                                                 
  _RTEMS_Lock_allocator();                                            
 8003538:	78 12 08 01 	mvhi r18,0x801                                 
 800353c:	3a 52 f9 18 	ori r18,r18,0xf918                             
 8003540:	2a 41 00 00 	lw r1,(r18+0)                                  
 *  _POSIX_Threads_Allocate                                           
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Allocate( void )  
{                                                                     
  return (Thread_Control *) _Objects_Allocate( &_POSIX_Threads_Information );
 8003544:	78 10 08 01 	mvhi r16,0x801                                 
 8003548:	3a 10 fa 30 	ori r16,r16,0xfa30                             
 800354c:	f8 00 05 3a 	calli 8004a34 <_API_Mutex_Lock>                
 8003550:	ba 00 08 00 	mv r1,r16                                      
 8003554:	f8 00 08 6b 	calli 8005700 <_Objects_Allocate>              
 8003558:	b8 20 98 00 	mv r19,r1                                      
   *  Allocate the thread control block.                              
   *                                                                  
   *  NOTE:  Global threads are not currently supported.              
   */                                                                 
  the_thread = _POSIX_Threads_Allocate();                             
  if ( !the_thread ) {                                                
 800355c:	44 2c 00 18 	be r1,r12,80035bc <pthread_create+0x1d4>       
                                                                      
static inline size_t _POSIX_Threads_Ensure_minimum_stack (            
  size_t size                                                         
)                                                                     
{                                                                     
  if ( size >= PTHREAD_MINIMUM_STACK_SIZE )                           
 8003560:	78 01 08 01 	mvhi r1,0x801                                  
 8003564:	38 21 f0 e0 	ori r1,r1,0xf0e0                               
 8003568:	28 24 00 00 	lw r4,(r1+0)                                   
                                                                      
  /*                                                                  
   *  Initialize the core thread for this task.                       
   */                                                                 
  name.name_p = NULL;   /* posix threads don't have a name by default */
  status = _Thread_Initialize(                                        
 800356c:	29 61 00 08 	lw r1,(r11+8)                                  
 8003570:	29 63 00 04 	lw r3,(r11+4)                                  
                                                                      
static inline size_t _POSIX_Threads_Ensure_minimum_stack (            
  size_t size                                                         
)                                                                     
{                                                                     
  if ( size >= PTHREAD_MINIMUM_STACK_SIZE )                           
 8003574:	b4 84 20 00 	add r4,r4,r4                                   
                                                                      
  /*                                                                  
   *  Initialize the core thread for this task.                       
   */                                                                 
  name.name_p = NULL;   /* posix threads don't have a name by default */
  status = _Thread_Initialize(                                        
 8003578:	50 81 00 02 	bgeu r4,r1,8003580 <pthread_create+0x198>      
 800357c:	b8 20 20 00 	mv r4,r1                                       
 8003580:	2b 89 00 5c 	lw r9,(sp+92)                                  
 8003584:	2b 88 00 60 	lw r8,(sp+96)                                  
 8003588:	ba 00 08 00 	mv r1,r16                                      
 800358c:	ba 60 10 00 	mv r2,r19                                      
 8003590:	34 05 00 00 	mvi r5,0                                       
 8003594:	ca b4 30 00 	sub r6,r21,r20                                 
 8003598:	34 07 00 01 	mvi r7,1                                       
 800359c:	5b 89 00 04 	sw (sp+4),r9                                   
 80035a0:	5b 80 00 08 	sw (sp+8),r0                                   
 80035a4:	5b 80 00 0c 	sw (sp+12),r0                                  
 80035a8:	f8 00 0d 43 	calli 8006ab4 <_Thread_Initialize>             
    budget_callout,                                                   
    0,                    /* isr level */                             
    name                  /* posix threads don't have a name */       
  );                                                                  
                                                                      
  if ( !status ) {                                                    
 80035ac:	5c 20 00 1f 	bne r1,r0,8003628 <pthread_create+0x240>       <== ALWAYS TAKEN
                                                                      
RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free (                       
  Thread_Control *the_pthread                                         
)                                                                     
{                                                                     
  _Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object ); 
 80035b0:	ba 00 08 00 	mv r1,r16                                      <== NOT EXECUTED
 80035b4:	ba 60 10 00 	mv r2,r19                                      <== NOT EXECUTED
 80035b8:	f8 00 09 56 	calli 8005b10 <_Objects_Free>                  <== NOT EXECUTED
    _POSIX_Threads_Free( the_thread );                                
    _RTEMS_Unlock_allocator();                                        
 80035bc:	2a 41 00 00 	lw r1,(r18+0)                                  
    return EAGAIN;                                                    
 80035c0:	34 0c 00 0b 	mvi r12,11                                     
    name                  /* posix threads don't have a name */       
  );                                                                  
                                                                      
  if ( !status ) {                                                    
    _POSIX_Threads_Free( the_thread );                                
    _RTEMS_Unlock_allocator();                                        
 80035c4:	f8 00 05 38 	calli 8004aa4 <_API_Mutex_Unlock>              
    return EAGAIN;                                                    
 80035c8:	e3 ff ff ac 	bi 8003478 <pthread_create+0x90>               
  int                                 rc;                             
                                                                      
  if ( !start_routine )                                               
    return EFAULT;                                                    
                                                                      
  the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;      
 80035cc:	78 0b 08 01 	mvhi r11,0x801                                 
 80035d0:	39 6b db bc 	ori r11,r11,0xdbbc                             
 80035d4:	e3 ff ff 99 	bi 8003438 <pthread_create+0x50>               
   *  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 ];    
 80035d8:	78 01 08 01 	mvhi r1,0x801                                  
 80035dc:	38 21 fd 28 	ori r1,r1,0xfd28                               
 80035e0:	28 21 00 0c 	lw r1,(r1+12)                                  
 80035e4:	28 22 01 20 	lw r2,(r1+288)                                 
      schedpolicy = api->schedpolicy;                                 
      schedparam  = api->schedparam;                                  
 80035e8:	28 48 00 88 	lw r8,(r2+136)                                 
 80035ec:	28 47 00 8c 	lw r7,(r2+140)                                 
 80035f0:	28 46 00 90 	lw r6,(r2+144)                                 
 80035f4:	28 45 00 94 	lw r5,(r2+148)                                 
 80035f8:	28 44 00 98 	lw r4,(r2+152)                                 
 80035fc:	28 43 00 9c 	lw r3,(r2+156)                                 
 8003600:	28 41 00 a0 	lw r1,(r2+160)                                 
   *  attributes structure.                                           
   */                                                                 
  switch ( the_attr->inheritsched ) {                                 
    case PTHREAD_INHERIT_SCHED:                                       
      api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];    
      schedpolicy = api->schedpolicy;                                 
 8003604:	28 51 00 84 	lw r17,(r2+132)                                
      schedparam  = api->schedparam;                                  
 8003608:	5b 88 00 40 	sw (sp+64),r8                                  
 800360c:	5b 87 00 44 	sw (sp+68),r7                                  
 8003610:	5b 86 00 48 	sw (sp+72),r6                                  
 8003614:	5b 85 00 4c 	sw (sp+76),r5                                  
 8003618:	5b 84 00 50 	sw (sp+80),r4                                  
 800361c:	5b 83 00 54 	sw (sp+84),r3                                  
 8003620:	5b 81 00 58 	sw (sp+88),r1                                  
      break;                                                          
 8003624:	e3 ff ff b3 	bi 80034f0 <pthread_create+0x108>              
  }                                                                   
                                                                      
  /*                                                                  
   *  finish initializing the per API structure                       
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
 8003628:	2a 70 01 20 	lw r16,(r19+288)                               
                                                                      
  api->Attributes  = *the_attr;                                       
 800362c:	29 63 00 00 	lw r3,(r11+0)                                  
  api->schedparam  = schedparam;                                      
                                                                      
  /*                                                                  
   *  POSIX threads are allocated and started in one operation.       
   */                                                                 
  status = _Thread_Start(                                             
 8003630:	ba 60 08 00 	mv r1,r19                                      
 8003634:	34 02 00 01 	mvi r2,1                                       
  /*                                                                  
   *  finish initializing the per API structure                       
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  api->Attributes  = *the_attr;                                       
 8003638:	5a 03 00 00 	sw (r16+0),r3                                  
 800363c:	29 65 00 04 	lw r5,(r11+4)                                  
  api->schedparam  = schedparam;                                      
                                                                      
  /*                                                                  
   *  POSIX threads are allocated and started in one operation.       
   */                                                                 
  status = _Thread_Start(                                             
 8003640:	b9 a0 18 00 	mv r3,r13                                      
 8003644:	b9 c0 20 00 	mv r4,r14                                      
  /*                                                                  
   *  finish initializing the per API structure                       
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  api->Attributes  = *the_attr;                                       
 8003648:	5a 05 00 04 	sw (r16+4),r5                                  
 800364c:	29 66 00 08 	lw r6,(r11+8)                                  
  api->schedparam  = schedparam;                                      
                                                                      
  /*                                                                  
   *  POSIX threads are allocated and started in one operation.       
   */                                                                 
  status = _Thread_Start(                                             
 8003650:	34 05 00 00 	mvi r5,0                                       
  /*                                                                  
   *  finish initializing the per API structure                       
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  api->Attributes  = *the_attr;                                       
 8003654:	5a 06 00 08 	sw (r16+8),r6                                  
 8003658:	29 66 00 0c 	lw r6,(r11+12)                                 
 800365c:	5a 06 00 0c 	sw (r16+12),r6                                 
 8003660:	29 66 00 10 	lw r6,(r11+16)                                 
 8003664:	5a 06 00 10 	sw (r16+16),r6                                 
 8003668:	29 66 00 14 	lw r6,(r11+20)                                 
 800366c:	5a 06 00 14 	sw (r16+20),r6                                 
 8003670:	29 66 00 18 	lw r6,(r11+24)                                 
 8003674:	5a 06 00 18 	sw (r16+24),r6                                 
 8003678:	29 66 00 1c 	lw r6,(r11+28)                                 
 800367c:	5a 06 00 1c 	sw (r16+28),r6                                 
 8003680:	29 66 00 20 	lw r6,(r11+32)                                 
 8003684:	5a 06 00 20 	sw (r16+32),r6                                 
 8003688:	29 66 00 24 	lw r6,(r11+36)                                 
 800368c:	5a 06 00 24 	sw (r16+36),r6                                 
 8003690:	29 66 00 28 	lw r6,(r11+40)                                 
 8003694:	5a 06 00 28 	sw (r16+40),r6                                 
 8003698:	29 66 00 2c 	lw r6,(r11+44)                                 
 800369c:	5a 06 00 2c 	sw (r16+44),r6                                 
 80036a0:	29 66 00 30 	lw r6,(r11+48)                                 
 80036a4:	5a 06 00 30 	sw (r16+48),r6                                 
 80036a8:	29 66 00 34 	lw r6,(r11+52)                                 
 80036ac:	5a 06 00 34 	sw (r16+52),r6                                 
 80036b0:	29 66 00 38 	lw r6,(r11+56)                                 
 80036b4:	5a 06 00 38 	sw (r16+56),r6                                 
 80036b8:	29 66 00 3c 	lw r6,(r11+60)                                 
 80036bc:	5a 06 00 3c 	sw (r16+60),r6                                 
  api->detachstate = the_attr->detachstate;                           
 80036c0:	29 66 00 3c 	lw r6,(r11+60)                                 
 80036c4:	5a 06 00 40 	sw (r16+64),r6                                 
  api->schedpolicy = schedpolicy;                                     
  api->schedparam  = schedparam;                                      
 80036c8:	2b 86 00 40 	lw r6,(sp+64)                                  
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  api->Attributes  = *the_attr;                                       
  api->detachstate = the_attr->detachstate;                           
  api->schedpolicy = schedpolicy;                                     
 80036cc:	5a 11 00 84 	sw (r16+132),r17                               
  api->schedparam  = schedparam;                                      
 80036d0:	5a 06 00 88 	sw (r16+136),r6                                
 80036d4:	2b 86 00 44 	lw r6,(sp+68)                                  
 80036d8:	5a 06 00 8c 	sw (r16+140),r6                                
 80036dc:	2b 86 00 48 	lw r6,(sp+72)                                  
 80036e0:	5a 06 00 90 	sw (r16+144),r6                                
 80036e4:	2b 86 00 4c 	lw r6,(sp+76)                                  
 80036e8:	5a 06 00 94 	sw (r16+148),r6                                
 80036ec:	2b 86 00 50 	lw r6,(sp+80)                                  
 80036f0:	5a 06 00 98 	sw (r16+152),r6                                
 80036f4:	2b 86 00 54 	lw r6,(sp+84)                                  
 80036f8:	5a 06 00 9c 	sw (r16+156),r6                                
 80036fc:	2b 86 00 58 	lw r6,(sp+88)                                  
 8003700:	5a 06 00 a0 	sw (r16+160),r6                                
                                                                      
  /*                                                                  
   *  POSIX threads are allocated and started in one operation.       
   */                                                                 
  status = _Thread_Start(                                             
 8003704:	f8 00 0f c7 	calli 8007620 <_Thread_Start>                  
      _RTEMS_Unlock_allocator();                                      
      return EINVAL;                                                  
    }                                                                 
  #endif                                                              
                                                                      
  if ( schedpolicy == SCHED_SPORADIC ) {                              
 8003708:	34 01 00 04 	mvi r1,4                                       
 800370c:	46 21 00 06 	be r17,r1,8003724 <pthread_create+0x33c>       
  }                                                                   
                                                                      
  /*                                                                  
   *  Return the id and indicate we successfully created the thread   
   */                                                                 
  *thread = the_thread->Object.id;                                    
 8003710:	2a 62 00 08 	lw r2,(r19+8)                                  
                                                                      
  _RTEMS_Unlock_allocator();                                          
 8003714:	2a 41 00 00 	lw r1,(r18+0)                                  
  }                                                                   
                                                                      
  /*                                                                  
   *  Return the id and indicate we successfully created the thread   
   */                                                                 
  *thread = the_thread->Object.id;                                    
 8003718:	59 e2 00 00 	sw (r15+0),r2                                  
                                                                      
  _RTEMS_Unlock_allocator();                                          
 800371c:	f8 00 04 e2 	calli 8004aa4 <_API_Mutex_Unlock>              
  return 0;                                                           
 8003720:	e3 ff ff 56 	bi 8003478 <pthread_create+0x90>               
      return EINVAL;                                                  
    }                                                                 
  #endif                                                              
                                                                      
  if ( schedpolicy == SCHED_SPORADIC ) {                              
    _Watchdog_Insert_ticks(                                           
 8003724:	36 01 00 90 	addi r1,r16,144                                
 8003728:	f8 00 10 51 	calli 800786c <_Timespec_To_ticks>             
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 800372c:	5a 01 00 b4 	sw (r16+180),r1                                
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8003730:	78 01 08 01 	mvhi r1,0x801                                  
 8003734:	36 02 00 a8 	addi r2,r16,168                                
 8003738:	38 21 f9 38 	ori r1,r1,0xf938                               
 800373c:	f8 00 11 97 	calli 8007d98 <_Watchdog_Insert>               
 8003740:	e3 ff ff f4 	bi 8003710 <pthread_create+0x328>              
                                                                      

0800c71c <pthread_exit>: void pthread_exit( void *value_ptr ) {
 800c71c:	37 9c ff fc 	addi sp,sp,-4                                  
 800c720:	5b 9d 00 04 	sw (sp+4),ra                                   
  _POSIX_Thread_Exit( _Thread_Executing, value_ptr );                 
 800c724:	78 03 08 01 	mvhi r3,0x801                                  
 800c728:	38 63 4d 78 	ori r3,r3,0x4d78                               
}                                                                     
                                                                      
void pthread_exit(                                                    
  void  *value_ptr                                                    
)                                                                     
{                                                                     
 800c72c:	b8 20 10 00 	mv r2,r1                                       
  _POSIX_Thread_Exit( _Thread_Executing, value_ptr );                 
 800c730:	28 61 00 0c 	lw r1,(r3+12)                                  
 800c734:	fb ff ff d4 	calli 800c684 <_POSIX_Thread_Exit>             
}                                                                     
 800c738:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c73c:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 800c740:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08005954 <pthread_mutex_timedlock>: int pthread_mutex_timedlock( pthread_mutex_t *mutex, const struct timespec *abstime ) {
 8005954:	37 9c ff f0 	addi sp,sp,-16                                 
 8005958:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800595c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8005960:	5b 9d 00 04 	sw (sp+4),ra                                   
 8005964:	b8 20 60 00 	mv r12,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 );       
 8005968:	b8 40 08 00 	mv r1,r2                                       
 800596c:	37 82 00 10 	addi r2,sp,16                                  
 8005970:	f8 00 00 49 	calli 8005a94 <_POSIX_Absolute_timeout_to_ticks>
 8005974:	b8 20 58 00 	mv r11,r1                                      
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
 8005978:	34 01 00 03 	mvi r1,3                                       
 800597c:	45 61 00 15 	be r11,r1,80059d0 <pthread_mutex_timedlock+0x7c>
    do_wait = false;                                                  
                                                                      
  lock_status = _POSIX_Mutex_Lock_support( mutex, do_wait, ticks );   
 8005980:	2b 83 00 10 	lw r3,(sp+16)                                  
 8005984:	34 02 00 00 	mvi r2,0                                       
 8005988:	b9 80 08 00 	mv r1,r12                                      
 800598c:	fb ff ff 9f 	calli 8005808 <_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) ) {                         
 8005990:	34 02 00 10 	mvi r2,16                                      
 8005994:	44 22 00 06 	be r1,r2,80059ac <pthread_mutex_timedlock+0x58><== ALWAYS TAKEN
         status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                    
      return ETIMEDOUT;                                               
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
 8005998:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800599c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80059a0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80059a4:	37 9c 00 10 	addi sp,sp,16                                  
 80059a8:	c3 a0 00 00 	ret                                            
   *  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 )                   
 80059ac:	45 60 00 12 	be r11,r0,80059f4 <pthread_mutex_timedlock+0xa0><== NEVER TAKEN
      return EINVAL;                                                  
    if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||               
 80059b0:	35 6b ff ff 	addi r11,r11,-1                                
 80059b4:	34 02 00 01 	mvi r2,1                                       
 80059b8:	50 4b 00 11 	bgeu r2,r11,80059fc <pthread_mutex_timedlock+0xa8><== ALWAYS TAKEN
         status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                    
      return ETIMEDOUT;                                               
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
 80059bc:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80059c0:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 80059c4:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 80059c8:	37 9c 00 10 	addi sp,sp,16                                  <== NOT EXECUTED
 80059cc:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
   */                                                                 
  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 );   
 80059d0:	2b 83 00 10 	lw r3,(sp+16)                                  
 80059d4:	b9 80 08 00 	mv r1,r12                                      
 80059d8:	34 02 00 01 	mvi r2,1                                       
 80059dc:	fb ff ff 8b 	calli 8005808 <_POSIX_Mutex_Lock_support>      
         status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                    
      return ETIMEDOUT;                                               
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
 80059e0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80059e4:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80059e8:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80059ec:	37 9c 00 10 	addi sp,sp,16                                  
 80059f0:	c3 a0 00 00 	ret                                            
   *  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 )                   
      return EINVAL;                                                  
 80059f4:	34 01 00 16 	mvi r1,22                                      <== NOT EXECUTED
 80059f8:	e3 ff ff e8 	bi 8005998 <pthread_mutex_timedlock+0x44>      <== NOT EXECUTED
    if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||               
         status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                    
      return ETIMEDOUT;                                               
 80059fc:	34 01 00 74 	mvi r1,116                                     
 8005a00:	e3 ff ff e6 	bi 8005998 <pthread_mutex_timedlock+0x44>      
                                                                      

08002b88 <pthread_mutexattr_gettype>: const pthread_mutexattr_t *attr, int *type ) { if ( !attr ) return EINVAL;
 8002b88:	34 03 00 16 	mvi r3,22                                      
int pthread_mutexattr_gettype(                                        
  const pthread_mutexattr_t *attr,                                    
  int                       *type                                     
)                                                                     
{                                                                     
  if ( !attr )                                                        
 8002b8c:	44 20 00 07 	be r1,r0,8002ba8 <pthread_mutexattr_gettype+0x20>
    return EINVAL;                                                    
                                                                      
  if ( !attr->is_initialized )                                        
 8002b90:	28 24 00 00 	lw r4,(r1+0)                                   
 8002b94:	44 80 00 05 	be r4,r0,8002ba8 <pthread_mutexattr_gettype+0x20>
    return EINVAL;                                                    
                                                                      
  if ( !type )                                                        
 8002b98:	44 40 00 04 	be r2,r0,8002ba8 <pthread_mutexattr_gettype+0x20><== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  *type = attr->type;                                                 
 8002b9c:	28 21 00 10 	lw r1,(r1+16)                                  
  return 0;                                                           
 8002ba0:	34 03 00 00 	mvi r3,0                                       
    return EINVAL;                                                    
                                                                      
  if ( !type )                                                        
    return EINVAL;                                                    
                                                                      
  *type = attr->type;                                                 
 8002ba4:	58 41 00 00 	sw (r2+0),r1                                   
  return 0;                                                           
}                                                                     
 8002ba8:	b8 60 08 00 	mv r1,r3                                       
 8002bac:	c3 a0 00 00 	ret                                            
                                                                      

0800543c <pthread_mutexattr_setpshared>: pthread_mutexattr_t *attr, int pshared ) { if ( !attr || !attr->is_initialized ) return EINVAL;
 800543c:	34 03 00 16 	mvi r3,22                                      
int pthread_mutexattr_setpshared(                                     
  pthread_mutexattr_t *attr,                                          
  int                  pshared                                        
)                                                                     
{                                                                     
  if ( !attr || !attr->is_initialized )                               
 8005440:	44 20 00 07 	be r1,r0,800545c <pthread_mutexattr_setpshared+0x20>
 8005444:	28 24 00 00 	lw r4,(r1+0)                                   
 8005448:	44 80 00 05 	be r4,r0,800545c <pthread_mutexattr_setpshared+0x20>
    return EINVAL;                                                    
                                                                      
  switch ( pshared ) {                                                
 800544c:	34 04 00 01 	mvi r4,1                                       
 8005450:	54 44 00 03 	bgu r2,r4,800545c <pthread_mutexattr_setpshared+0x20><== NEVER TAKEN
    case PTHREAD_PROCESS_SHARED:                                      
    case PTHREAD_PROCESS_PRIVATE:                                     
      attr->process_shared = pshared;                                 
 8005454:	58 22 00 04 	sw (r1+4),r2                                   
      return 0;                                                       
 8005458:	34 03 00 00 	mvi r3,0                                       
                                                                      
    default:                                                          
      return EINVAL;                                                  
  }                                                                   
}                                                                     
 800545c:	b8 60 08 00 	mv r1,r3                                       
 8005460:	c3 a0 00 00 	ret                                            
                                                                      

08002bfc <pthread_mutexattr_settype>: pthread_mutexattr_t *attr, int type ) { if ( !attr || !attr->is_initialized ) return EINVAL;
 8002bfc:	34 03 00 16 	mvi r3,22                                      
int pthread_mutexattr_settype(                                        
  pthread_mutexattr_t *attr,                                          
  int                  type                                           
)                                                                     
{                                                                     
  if ( !attr || !attr->is_initialized )                               
 8002c00:	44 20 00 07 	be r1,r0,8002c1c <pthread_mutexattr_settype+0x20>
 8002c04:	28 24 00 00 	lw r4,(r1+0)                                   
 8002c08:	44 80 00 05 	be r4,r0,8002c1c <pthread_mutexattr_settype+0x20><== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  switch ( type ) {                                                   
 8002c0c:	34 04 00 03 	mvi r4,3                                       
 8002c10:	54 44 00 03 	bgu r2,r4,8002c1c <pthread_mutexattr_settype+0x20>
    case PTHREAD_MUTEX_NORMAL:                                        
    case PTHREAD_MUTEX_RECURSIVE:                                     
    case PTHREAD_MUTEX_ERRORCHECK:                                    
    case PTHREAD_MUTEX_DEFAULT:                                       
      attr->type = type;                                              
 8002c14:	58 22 00 10 	sw (r1+16),r2                                  
      return 0;                                                       
 8002c18:	34 03 00 00 	mvi r3,0                                       
                                                                      
    default:                                                          
      return EINVAL;                                                  
  }                                                                   
}                                                                     
 8002c1c:	b8 60 08 00 	mv r1,r3                                       
 8002c20:	c3 a0 00 00 	ret                                            
                                                                      

08003c5c <pthread_once>: int pthread_once( pthread_once_t *once_control, void (*init_routine)(void) ) {
 8003c5c:	37 9c ff ec 	addi sp,sp,-20                                 
 8003c60:	5b 8b 00 10 	sw (sp+16),r11                                 
 8003c64:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8003c68:	5b 8d 00 08 	sw (sp+8),r13                                  
 8003c6c:	5b 9d 00 04 	sw (sp+4),ra                                   
  if ( !once_control || !init_routine )                               
 8003c70:	64 43 00 00 	cmpei r3,r2,0                                  
                                                                      
int pthread_once(                                                     
  pthread_once_t  *once_control,                                      
  void           (*init_routine)(void)                                
)                                                                     
{                                                                     
 8003c74:	b8 40 60 00 	mv r12,r2                                      
  if ( !once_control || !init_routine )                               
 8003c78:	64 22 00 00 	cmpei r2,r1,0                                  
                                                                      
int pthread_once(                                                     
  pthread_once_t  *once_control,                                      
  void           (*init_routine)(void)                                
)                                                                     
{                                                                     
 8003c7c:	b8 20 58 00 	mv r11,r1                                      
  if ( !once_control || !init_routine )                               
 8003c80:	b8 62 18 00 	or r3,r3,r2                                    
    return EINVAL;                                                    
 8003c84:	34 01 00 16 	mvi r1,22                                      
int pthread_once(                                                     
  pthread_once_t  *once_control,                                      
  void           (*init_routine)(void)                                
)                                                                     
{                                                                     
  if ( !once_control || !init_routine )                               
 8003c88:	5c 60 00 04 	bne r3,r0,8003c98 <pthread_once+0x3c>          
    return EINVAL;                                                    
                                                                      
  if ( !once_control->init_executed ) {                               
 8003c8c:	29 6d 00 04 	lw r13,(r11+4)                                 
      once_control->init_executed = true;                             
      (*init_routine)();                                              
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
  }                                                                   
  return 0;                                                           
 8003c90:	34 01 00 00 	mvi r1,0                                       
)                                                                     
{                                                                     
  if ( !once_control || !init_routine )                               
    return EINVAL;                                                    
                                                                      
  if ( !once_control->init_executed ) {                               
 8003c94:	45 a3 00 07 	be r13,r3,8003cb0 <pthread_once+0x54>          
      (*init_routine)();                                              
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
  }                                                                   
  return 0;                                                           
}                                                                     
 8003c98:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003c9c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003ca0:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003ca4:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003ca8:	37 9c 00 14 	addi sp,sp,20                                  
 8003cac:	c3 a0 00 00 	ret                                            
  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); 
 8003cb0:	34 01 01 00 	mvi r1,256                                     
 8003cb4:	34 02 01 00 	mvi r2,256                                     
 8003cb8:	37 83 00 14 	addi r3,sp,20                                  
 8003cbc:	f8 00 01 ab 	calli 8004368 <rtems_task_mode>                
    if ( !once_control->init_executed ) {                             
 8003cc0:	29 61 00 04 	lw r1,(r11+4)                                  
 8003cc4:	44 2d 00 0c 	be r1,r13,8003cf4 <pthread_once+0x98>          <== ALWAYS TAKEN
      once_control->is_initialized = true;                            
      once_control->init_executed = true;                             
      (*init_routine)();                                              
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
 8003cc8:	2b 81 00 14 	lw r1,(sp+20)                                  
 8003ccc:	34 02 01 00 	mvi r2,256                                     
 8003cd0:	37 83 00 14 	addi r3,sp,20                                  
 8003cd4:	f8 00 01 a5 	calli 8004368 <rtems_task_mode>                
  }                                                                   
  return 0;                                                           
 8003cd8:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8003cdc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003ce0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003ce4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003ce8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003cec:	37 9c 00 14 	addi sp,sp,20                                  
 8003cf0:	c3 a0 00 00 	ret                                            
                                                                      
  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;                            
 8003cf4:	34 01 00 01 	mvi r1,1                                       
 8003cf8:	59 61 00 00 	sw (r11+0),r1                                  
      once_control->init_executed = true;                             
 8003cfc:	59 61 00 04 	sw (r11+4),r1                                  
      (*init_routine)();                                              
 8003d00:	d9 80 00 00 	call r12                                       
 8003d04:	e3 ff ff f1 	bi 8003cc8 <pthread_once+0x6c>                 
                                                                      

0800452c <pthread_rwlock_init>: int pthread_rwlock_init( pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr ) {
 800452c:	37 9c ff e0 	addi sp,sp,-32                                 
 8004530:	5b 8b 00 14 	sw (sp+20),r11                                 
 8004534:	5b 8c 00 10 	sw (sp+16),r12                                 
 8004538:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800453c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8004540:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004544:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  /*                                                                  
   *  Error check parameters                                          
   */                                                                 
  if ( !rwlock )                                                      
    return EINVAL;                                                    
 8004548:	34 01 00 16 	mvi r1,22                                      
  const pthread_rwlockattr_t  *the_attr;                              
                                                                      
  /*                                                                  
   *  Error check parameters                                          
   */                                                                 
  if ( !rwlock )                                                      
 800454c:	45 60 00 07 	be r11,r0,8004568 <pthread_rwlock_init+0x3c>   
    return EINVAL;                                                    
                                                                      
  /*                                                                  
   * If the user passed in NULL, use the default attributes           
   */                                                                 
  if ( attr ) {                                                       
 8004550:	44 40 00 31 	be r2,r0,8004614 <pthread_rwlock_init+0xe8>    
  }                                                                   
                                                                      
  /*                                                                  
   * Now start error checking the attributes that we are going to use 
   */                                                                 
  if ( !the_attr->is_initialized )                                    
 8004554:	28 43 00 00 	lw r3,(r2+0)                                   
    return EINVAL;                                                    
 8004558:	34 01 00 16 	mvi r1,22                                      
  }                                                                   
                                                                      
  /*                                                                  
   * Now start error checking the attributes that we are going to use 
   */                                                                 
  if ( !the_attr->is_initialized )                                    
 800455c:	44 60 00 03 	be r3,r0,8004568 <pthread_rwlock_init+0x3c>    <== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  switch ( the_attr->process_shared ) {                               
 8004560:	28 4e 00 04 	lw r14,(r2+4)                                  
 8004564:	45 c0 00 08 	be r14,r0,8004584 <pthread_rwlock_init+0x58>   <== ALWAYS TAKEN
                                                                      
  *rwlock = the_rwlock->Object.id;                                    
                                                                      
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
 8004568:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800456c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8004570:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8004574:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8004578:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800457c:	37 9c 00 20 	addi sp,sp,32                                  
 8004580:	c3 a0 00 00 	ret                                            
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 8004584:	78 01 08 01 	mvhi r1,0x801                                  
 8004588:	38 21 98 68 	ori r1,r1,0x9868                               
 800458c:	28 22 00 00 	lw r2,(r1+0)                                   
 */                                                                   
RTEMS_INLINE_ROUTINE void _CORE_RWLock_Initialize_attributes(         
  CORE_RWLock_Attributes *the_attributes                              
)                                                                     
{                                                                     
  the_attributes->XXX = 0;                                            
 8004590:	5b 80 00 20 	sw (sp+32),r0                                  
 8004594:	34 42 00 01 	addi r2,r2,1                                   
 8004598:	58 22 00 00 	sw (r1+0),r2                                   
 *  the inactive chain of free RWLock control blocks.                 
 */                                                                   
RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Allocate( void )
{                                                                     
  return (POSIX_RWLock_Control *)                                     
    _Objects_Allocate( &_POSIX_RWLock_Information );                  
 800459c:	78 0d 08 01 	mvhi r13,0x801                                 
 80045a0:	39 ad 9a 00 	ori r13,r13,0x9a00                             
 80045a4:	b9 a0 08 00 	mv r1,r13                                      
 80045a8:	f8 00 0a 15 	calli 8006dfc <_Objects_Allocate>              
 80045ac:	b8 20 60 00 	mv r12,r1                                      
   */                                                                 
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_rwlock = _POSIX_RWLock_Allocate();                              
                                                                      
  if ( !the_rwlock ) {                                                
 80045b0:	44 2e 00 16 	be r1,r14,8004608 <pthread_rwlock_init+0xdc>   
    _Thread_Enable_dispatch();                                        
    return EAGAIN;                                                    
  }                                                                   
                                                                      
  _CORE_RWLock_Initialize( &the_rwlock->RWLock, &the_attributes );    
 80045b4:	37 82 00 20 	addi r2,sp,32                                  
 80045b8:	34 21 00 10 	addi r1,r1,16                                  
 80045bc:	f8 00 07 29 	calli 8006260 <_CORE_RWLock_Initialize>        
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 80045c0:	29 82 00 08 	lw r2,(r12+8)                                  
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 80045c4:	29 a3 00 1c 	lw r3,(r13+28)                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 80045c8:	20 41 ff ff 	andi r1,r2,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 80045cc:	b4 21 08 00 	add r1,r1,r1                                   
 80045d0:	b4 21 08 00 	add r1,r1,r1                                   
 80045d4:	b4 61 08 00 	add r1,r3,r1                                   
 80045d8:	58 2c 00 00 	sw (r1+0),r12                                  
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
 80045dc:	59 80 00 0c 	sw (r12+12),r0                                 
    &_POSIX_RWLock_Information,                                       
    &the_rwlock->Object,                                              
    0                                                                 
  );                                                                  
                                                                      
  *rwlock = the_rwlock->Object.id;                                    
 80045e0:	59 62 00 00 	sw (r11+0),r2                                  
                                                                      
  _Thread_Enable_dispatch();                                          
 80045e4:	f8 00 0e 90 	calli 8008024 <_Thread_Enable_dispatch>        
  return 0;                                                           
 80045e8:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 80045ec:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80045f0:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80045f4:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80045f8:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80045fc:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8004600:	37 9c 00 20 	addi sp,sp,32                                  
 8004604:	c3 a0 00 00 	ret                                            
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_rwlock = _POSIX_RWLock_Allocate();                              
                                                                      
  if ( !the_rwlock ) {                                                
    _Thread_Enable_dispatch();                                        
 8004608:	f8 00 0e 87 	calli 8008024 <_Thread_Enable_dispatch>        
    return EAGAIN;                                                    
 800460c:	34 01 00 0b 	mvi r1,11                                      
 8004610:	e3 ff ff d6 	bi 8004568 <pthread_rwlock_init+0x3c>          
   * If the user passed in NULL, use the default attributes           
   */                                                                 
  if ( attr ) {                                                       
    the_attr = attr;                                                  
  } else {                                                            
    (void) pthread_rwlockattr_init( &default_attr );                  
 8004614:	37 8c 00 18 	addi r12,sp,24                                 
 8004618:	b9 80 08 00 	mv r1,r12                                      
 800461c:	f8 00 02 ee 	calli 80051d4 <pthread_rwlockattr_init>        
    the_attr = &default_attr;                                         
 8004620:	b9 80 10 00 	mv r2,r12                                      
 8004624:	e3 ff ff cc 	bi 8004554 <pthread_rwlock_init+0x28>          
                                                                      

080046ac <pthread_rwlock_timedrdlock>: int pthread_rwlock_timedrdlock( pthread_rwlock_t *rwlock, const struct timespec *abstime ) {
 80046ac:	37 9c ff e0 	addi sp,sp,-32                                 
 80046b0:	5b 8b 00 18 	sw (sp+24),r11                                 
 80046b4:	5b 8c 00 14 	sw (sp+20),r12                                 
 80046b8:	5b 8d 00 10 	sw (sp+16),r13                                 
 80046bc:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80046c0:	5b 8f 00 08 	sw (sp+8),r15                                  
 80046c4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80046c8:	b8 20 58 00 	mv r11,r1                                      
  Watchdog_Interval                            ticks;                 
  bool                                         do_wait = true;        
  POSIX_Absolute_timeout_conversion_results_t  status;                
                                                                      
  if ( !rwlock )                                                      
    return EINVAL;                                                    
 80046cc:	34 0c 00 16 	mvi r12,22                                     
                                                                      
int pthread_rwlock_timedrdlock(                                       
  pthread_rwlock_t      *rwlock,                                      
  const struct timespec *abstime                                      
)                                                                     
{                                                                     
 80046d0:	b8 40 08 00 	mv r1,r2                                       
  Objects_Locations                            location;              
  Watchdog_Interval                            ticks;                 
  bool                                         do_wait = true;        
  POSIX_Absolute_timeout_conversion_results_t  status;                
                                                                      
  if ( !rwlock )                                                      
 80046d4:	45 60 00 0c 	be r11,r0,8004704 <pthread_rwlock_timedrdlock+0x58>
   *                                                                  
   *  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 );       
 80046d8:	37 82 00 1c 	addi r2,sp,28                                  
 80046dc:	f8 00 1c f2 	calli 800baa4 <_POSIX_Absolute_timeout_to_ticks>
 80046e0:	78 03 08 01 	mvhi r3,0x801                                  
 80046e4:	29 62 00 00 	lw r2,(r11+0)                                  
 80046e8:	b8 20 70 00 	mv r14,r1                                      
 80046ec:	b8 60 08 00 	mv r1,r3                                       
 80046f0:	38 21 9a 00 	ori r1,r1,0x9a00                               
 80046f4:	37 83 00 20 	addi r3,sp,32                                  
 80046f8:	f8 00 0b 13 	calli 8007344 <_Objects_Get>                   
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
    do_wait = false;                                                  
                                                                      
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
 80046fc:	2b 8d 00 20 	lw r13,(sp+32)                                 
 8004700:	45 a0 00 0a 	be r13,r0,8004728 <pthread_rwlock_timedrdlock+0x7c>
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return EINVAL;                                                      
}                                                                     
 8004704:	b9 80 08 00 	mv r1,r12                                      
 8004708:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800470c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8004710:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8004714:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8004718:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800471c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8004720:	37 9c 00 20 	addi sp,sp,32                                  
 8004724:	c3 a0 00 00 	ret                                            
int	_EXFUN(pthread_rwlock_init,                                       
	(pthread_rwlock_t *__rwlock, _CONST pthread_rwlockattr_t *__attr));  
int	_EXFUN(pthread_rwlock_destroy, (pthread_rwlock_t *__rwlock));     
int	_EXFUN(pthread_rwlock_rdlock,(pthread_rwlock_t *__rwlock));       
int	_EXFUN(pthread_rwlock_tryrdlock,(pthread_rwlock_t *__rwlock));    
int	_EXFUN(pthread_rwlock_timedrdlock,                                
 8004728:	65 cf 00 03 	cmpei r15,r14,3                                
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      _CORE_RWLock_Obtain_for_reading(                                
 800472c:	29 62 00 00 	lw r2,(r11+0)                                  
 8004730:	2b 84 00 1c 	lw r4,(sp+28)                                  
 8004734:	34 21 00 10 	addi r1,r1,16                                  
 8004738:	b9 e0 18 00 	mv r3,r15                                      
 800473c:	34 05 00 00 	mvi r5,0                                       
 8004740:	f8 00 06 d5 	calli 8006294 <_CORE_RWLock_Obtain_for_reading>
	do_wait,                                                             
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
 8004744:	f8 00 0e 38 	calli 8008024 <_Thread_Enable_dispatch>        
      if ( !do_wait ) {                                               
 8004748:	5d ed 00 10 	bne r15,r13,8004788 <pthread_rwlock_timedrdlock+0xdc>
        if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
 800474c:	78 01 08 01 	mvhi r1,0x801                                  
 8004750:	38 21 9d 38 	ori r1,r1,0x9d38                               
 8004754:	28 21 00 0c 	lw r1,(r1+12)                                  
 8004758:	34 02 00 02 	mvi r2,2                                       
 800475c:	28 21 00 34 	lw r1,(r1+52)                                  
 8004760:	44 22 00 04 	be r1,r2,8004770 <pthread_rwlock_timedrdlock+0xc4>
	       status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                     
	    return ETIMEDOUT;                                                
        }                                                             
      }                                                               
                                                                      
      return _POSIX_RWLock_Translate_core_RWLock_return_code(         
 8004764:	f8 00 00 4a 	calli 800488c <_POSIX_RWLock_Translate_core_RWLock_return_code>
 8004768:	b8 20 60 00 	mv r12,r1                                      
 800476c:	e3 ff ff e6 	bi 8004704 <pthread_rwlock_timedrdlock+0x58>   
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait ) {                                               
        if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
	  if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                    
 8004770:	45 cf ff e5 	be r14,r15,8004704 <pthread_rwlock_timedrdlock+0x58><== NEVER TAKEN
	    return EINVAL;                                                   
	  if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                
 8004774:	35 ce ff ff 	addi r14,r14,-1                                
 8004778:	34 02 00 01 	mvi r2,1                                       
	       status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                     
	    return ETIMEDOUT;                                                
 800477c:	34 0c 00 74 	mvi r12,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 ||                
 8004780:	50 4e ff e1 	bgeu r2,r14,8004704 <pthread_rwlock_timedrdlock+0x58><== ALWAYS TAKEN
 8004784:	e3 ff ff f8 	bi 8004764 <pthread_rwlock_timedrdlock+0xb8>   <== NOT EXECUTED
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait ) {                                               
 8004788:	78 01 08 01 	mvhi r1,0x801                                  
 800478c:	38 21 9d 38 	ori r1,r1,0x9d38                               
 8004790:	28 21 00 0c 	lw r1,(r1+12)                                  
 8004794:	28 21 00 34 	lw r1,(r1+52)                                  
 8004798:	e3 ff ff f3 	bi 8004764 <pthread_rwlock_timedrdlock+0xb8>   
                                                                      

0800479c <pthread_rwlock_timedwrlock>: int pthread_rwlock_timedwrlock( pthread_rwlock_t *rwlock, const struct timespec *abstime ) {
 800479c:	37 9c ff e0 	addi sp,sp,-32                                 
 80047a0:	5b 8b 00 18 	sw (sp+24),r11                                 
 80047a4:	5b 8c 00 14 	sw (sp+20),r12                                 
 80047a8:	5b 8d 00 10 	sw (sp+16),r13                                 
 80047ac:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80047b0:	5b 8f 00 08 	sw (sp+8),r15                                  
 80047b4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80047b8:	b8 20 58 00 	mv r11,r1                                      
  Watchdog_Interval                            ticks;                 
  bool                                         do_wait = true;        
  POSIX_Absolute_timeout_conversion_results_t  status;                
                                                                      
  if ( !rwlock )                                                      
    return EINVAL;                                                    
 80047bc:	34 0c 00 16 	mvi r12,22                                     
                                                                      
int pthread_rwlock_timedwrlock(                                       
  pthread_rwlock_t      *rwlock,                                      
  const struct timespec *abstime                                      
)                                                                     
{                                                                     
 80047c0:	b8 40 08 00 	mv r1,r2                                       
  Objects_Locations                            location;              
  Watchdog_Interval                            ticks;                 
  bool                                         do_wait = true;        
  POSIX_Absolute_timeout_conversion_results_t  status;                
                                                                      
  if ( !rwlock )                                                      
 80047c4:	45 60 00 0c 	be r11,r0,80047f4 <pthread_rwlock_timedwrlock+0x58>
   *                                                                  
   *  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 );       
 80047c8:	37 82 00 1c 	addi r2,sp,28                                  
 80047cc:	f8 00 1c b6 	calli 800baa4 <_POSIX_Absolute_timeout_to_ticks>
 80047d0:	78 03 08 01 	mvhi r3,0x801                                  
 80047d4:	29 62 00 00 	lw r2,(r11+0)                                  
 80047d8:	b8 20 70 00 	mv r14,r1                                      
 80047dc:	b8 60 08 00 	mv r1,r3                                       
 80047e0:	38 21 9a 00 	ori r1,r1,0x9a00                               
 80047e4:	37 83 00 20 	addi r3,sp,32                                  
 80047e8:	f8 00 0a d7 	calli 8007344 <_Objects_Get>                   
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
    do_wait = false;                                                  
                                                                      
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
 80047ec:	2b 8d 00 20 	lw r13,(sp+32)                                 
 80047f0:	45 a0 00 0a 	be r13,r0,8004818 <pthread_rwlock_timedwrlock+0x7c>
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return EINVAL;                                                      
}                                                                     
 80047f4:	b9 80 08 00 	mv r1,r12                                      
 80047f8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80047fc:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8004800:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8004804:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8004808:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800480c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8004810:	37 9c 00 20 	addi sp,sp,32                                  
 8004814:	c3 a0 00 00 	ret                                            
        (pthread_rwlock_t *__rwlock, _CONST struct timespec *__abstime));
int	_EXFUN(pthread_rwlock_unlock,(pthread_rwlock_t *__rwlock));       
int	_EXFUN(pthread_rwlock_wrlock,(pthread_rwlock_t *__rwlock));       
int	_EXFUN(pthread_rwlock_trywrlock,(pthread_rwlock_t *__rwlock));    
int	_EXFUN(pthread_rwlock_timedwrlock,                                
 8004818:	65 cf 00 03 	cmpei r15,r14,3                                
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      _CORE_RWLock_Obtain_for_writing(                                
 800481c:	29 62 00 00 	lw r2,(r11+0)                                  
 8004820:	2b 84 00 1c 	lw r4,(sp+28)                                  
 8004824:	34 21 00 10 	addi r1,r1,16                                  
 8004828:	b9 e0 18 00 	mv r3,r15                                      
 800482c:	34 05 00 00 	mvi r5,0                                       
 8004830:	f8 00 06 e5 	calli 80063c4 <_CORE_RWLock_Obtain_for_writing>
	do_wait,                                                             
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
 8004834:	f8 00 0d fc 	calli 8008024 <_Thread_Enable_dispatch>        
      if ( !do_wait &&                                                
 8004838:	5d ed 00 10 	bne r15,r13,8004878 <pthread_rwlock_timedwrlock+0xdc>
           (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
 800483c:	78 01 08 01 	mvhi r1,0x801                                  
 8004840:	38 21 9d 38 	ori r1,r1,0x9d38                               
 8004844:	28 21 00 0c 	lw r1,(r1+12)                                  
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
 8004848:	34 02 00 02 	mvi r2,2                                       
           (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
 800484c:	28 21 00 34 	lw r1,(r1+52)                                  
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
 8004850:	44 22 00 04 	be r1,r2,8004860 <pthread_rwlock_timedwrlock+0xc4>
	if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                  
	     status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                       
	  return ETIMEDOUT;                                                  
      }                                                               
                                                                      
      return _POSIX_RWLock_Translate_core_RWLock_return_code(         
 8004854:	f8 00 00 0e 	calli 800488c <_POSIX_RWLock_Translate_core_RWLock_return_code>
 8004858:	b8 20 60 00 	mv r12,r1                                      
 800485c:	e3 ff ff e6 	bi 80047f4 <pthread_rwlock_timedwrlock+0x58>   
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
           (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
	if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                      
 8004860:	45 cf ff e5 	be r14,r15,80047f4 <pthread_rwlock_timedwrlock+0x58><== NEVER TAKEN
	  return EINVAL;                                                     
	if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                  
 8004864:	35 ce ff ff 	addi r14,r14,-1                                
 8004868:	34 02 00 01 	mvi r2,1                                       
	     status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                       
	  return ETIMEDOUT;                                                  
 800486c:	34 0c 00 74 	mvi r12,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 ||                  
 8004870:	50 4e ff e1 	bgeu r2,r14,80047f4 <pthread_rwlock_timedwrlock+0x58><== ALWAYS TAKEN
 8004874:	e3 ff ff f8 	bi 8004854 <pthread_rwlock_timedwrlock+0xb8>   <== NOT EXECUTED
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
 8004878:	78 01 08 01 	mvhi r1,0x801                                  
 800487c:	38 21 9d 38 	ori r1,r1,0x9d38                               
 8004880:	28 21 00 0c 	lw r1,(r1+12)                                  
 8004884:	28 21 00 34 	lw r1,(r1+52)                                  
 8004888:	e3 ff ff f3 	bi 8004854 <pthread_rwlock_timedwrlock+0xb8>   
                                                                      

080051f4 <pthread_rwlockattr_setpshared>: pthread_rwlockattr_t *attr, int pshared ) { if ( !attr ) return EINVAL;
 80051f4:	34 03 00 16 	mvi r3,22                                      
int pthread_rwlockattr_setpshared(                                    
  pthread_rwlockattr_t *attr,                                         
  int                    pshared                                      
)                                                                     
{                                                                     
  if ( !attr )                                                        
 80051f8:	44 20 00 07 	be r1,r0,8005214 <pthread_rwlockattr_setpshared+0x20>
    return EINVAL;                                                    
                                                                      
  if ( !attr->is_initialized )                                        
 80051fc:	28 24 00 00 	lw r4,(r1+0)                                   
 8005200:	44 80 00 05 	be r4,r0,8005214 <pthread_rwlockattr_setpshared+0x20>
    return EINVAL;                                                    
                                                                      
  switch ( pshared ) {                                                
 8005204:	34 04 00 01 	mvi r4,1                                       
 8005208:	54 44 00 03 	bgu r2,r4,8005214 <pthread_rwlockattr_setpshared+0x20><== NEVER TAKEN
    case PTHREAD_PROCESS_SHARED:                                      
    case PTHREAD_PROCESS_PRIVATE:                                     
      attr->process_shared = pshared;                                 
 800520c:	58 22 00 04 	sw (r1+4),r2                                   
      return 0;                                                       
 8005210:	34 03 00 00 	mvi r3,0                                       
                                                                      
    default:                                                          
      return EINVAL;                                                  
  }                                                                   
}                                                                     
 8005214:	b8 60 08 00 	mv r1,r3                                       
 8005218:	c3 a0 00 00 	ret                                            
                                                                      

080064dc <pthread_setschedparam>: int pthread_setschedparam( pthread_t thread, int policy, struct sched_param *param ) {
 80064dc:	37 9c ff dc 	addi sp,sp,-36                                 
 80064e0:	5b 8b 00 18 	sw (sp+24),r11                                 
 80064e4:	5b 8c 00 14 	sw (sp+20),r12                                 
 80064e8:	5b 8d 00 10 	sw (sp+16),r13                                 
 80064ec:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80064f0:	5b 8f 00 08 	sw (sp+8),r15                                  
 80064f4:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Check all the parameters                                        
   */                                                                 
  if ( !param )                                                       
    return EINVAL;                                                    
 80064f8:	34 0c 00 16 	mvi r12,22                                     
int pthread_setschedparam(                                            
  pthread_t           thread,                                         
  int                 policy,                                         
  struct sched_param *param                                           
)                                                                     
{                                                                     
 80064fc:	b8 60 58 00 	mv r11,r3                                      
 8006500:	b8 20 68 00 	mv r13,r1                                      
 8006504:	b8 40 70 00 	mv r14,r2                                      
  int                                  rc;                            
                                                                      
  /*                                                                  
   *  Check all the parameters                                        
   */                                                                 
  if ( !param )                                                       
 8006508:	44 60 00 08 	be r3,r0,8006528 <pthread_setschedparam+0x4c>  
    return EINVAL;                                                    
                                                                      
  rc = _POSIX_Thread_Translate_sched_param(                           
 800650c:	b8 40 08 00 	mv r1,r2                                       
 8006510:	37 84 00 20 	addi r4,sp,32                                  
 8006514:	b8 60 10 00 	mv r2,r3                                       
 8006518:	37 83 00 24 	addi r3,sp,36                                  
 800651c:	f8 00 1a 8c 	calli 800cf4c <_POSIX_Thread_Translate_sched_param>
 8006520:	b8 20 60 00 	mv r12,r1                                      
    policy,                                                           
    param,                                                            
    &budget_algorithm,                                                
    &budget_callout                                                   
  );                                                                  
  if ( rc )                                                           
 8006524:	44 20 00 0a 	be r1,r0,800654c <pthread_setschedparam+0x70>  
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return ESRCH;                                                       
}                                                                     
 8006528:	b9 80 08 00 	mv r1,r12                                      
 800652c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006530:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8006534:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8006538:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800653c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8006540:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8006544:	37 9c 00 24 	addi sp,sp,36                                  
 8006548:	c3 a0 00 00 	ret                                            
 800654c:	78 01 08 01 	mvhi r1,0x801                                  
 8006550:	38 21 aa a0 	ori r1,r1,0xaaa0                               
 8006554:	b9 a0 10 00 	mv r2,r13                                      
 8006558:	37 83 00 1c 	addi r3,sp,28                                  
 800655c:	f8 00 07 bf 	calli 8008458 <_Objects_Get>                   
 8006560:	b8 20 78 00 	mv r15,r1                                      
                                                                      
  /*                                                                  
   *  Actually change the scheduling policy and parameters            
   */                                                                 
  the_thread = _POSIX_Threads_Get( thread, &location );               
  switch ( location ) {                                               
 8006564:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8006568:	44 2c 00 03 	be r1,r12,8006574 <pthread_setschedparam+0x98> 
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return ESRCH;                                                       
 800656c:	34 0c 00 03 	mvi r12,3                                      
 8006570:	e3 ff ff ee 	bi 8006528 <pthread_setschedparam+0x4c>        
   */                                                                 
  the_thread = _POSIX_Threads_Get( thread, &location );               
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      api = the_thread->API_Extensions[ THREAD_API_POSIX ];           
 8006574:	29 ed 01 20 	lw r13,(r15+288)                               
                                                                      
      if ( api->schedpolicy == SCHED_SPORADIC )                       
 8006578:	34 01 00 04 	mvi r1,4                                       
 800657c:	29 a2 00 84 	lw r2,(r13+132)                                
 8006580:	44 41 00 31 	be r2,r1,8006644 <pthread_setschedparam+0x168> 
        (void) _Watchdog_Remove( &api->Sporadic_timer );              
                                                                      
      api->schedpolicy = policy;                                      
 8006584:	59 ae 00 84 	sw (r13+132),r14                               
      api->schedparam  = *param;                                      
 8006588:	29 62 00 00 	lw r2,(r11+0)                                  
 800658c:	59 a2 00 88 	sw (r13+136),r2                                
 8006590:	29 61 00 04 	lw r1,(r11+4)                                  
 8006594:	59 a1 00 8c 	sw (r13+140),r1                                
 8006598:	29 61 00 08 	lw r1,(r11+8)                                  
 800659c:	59 a1 00 90 	sw (r13+144),r1                                
 80065a0:	29 61 00 0c 	lw r1,(r11+12)                                 
 80065a4:	59 a1 00 94 	sw (r13+148),r1                                
 80065a8:	29 61 00 10 	lw r1,(r11+16)                                 
 80065ac:	59 a1 00 98 	sw (r13+152),r1                                
 80065b0:	29 61 00 14 	lw r1,(r11+20)                                 
 80065b4:	59 a1 00 9c 	sw (r13+156),r1                                
 80065b8:	29 61 00 18 	lw r1,(r11+24)                                 
 80065bc:	59 a1 00 a0 	sw (r13+160),r1                                
      the_thread->budget_algorithm = budget_algorithm;                
 80065c0:	2b 81 00 24 	lw r1,(sp+36)                                  
 80065c4:	59 e1 00 7c 	sw (r15+124),r1                                
      the_thread->budget_callout   = budget_callout;                  
 80065c8:	2b 81 00 20 	lw r1,(sp+32)                                  
 80065cc:	59 e1 00 80 	sw (r15+128),r1                                
                                                                      
      switch ( api->schedpolicy ) {                                   
 80065d0:	48 0e 00 05 	bg r0,r14,80065e4 <pthread_setschedparam+0x108><== NEVER TAKEN
 80065d4:	34 01 00 02 	mvi r1,2                                       
 80065d8:	4c 2e 00 0d 	bge r1,r14,800660c <pthread_setschedparam+0x130>
 80065dc:	34 01 00 04 	mvi r1,4                                       
 80065e0:	45 c1 00 03 	be r14,r1,80065ec <pthread_setschedparam+0x110><== ALWAYS TAKEN
          _Watchdog_Remove( &api->Sporadic_timer );                   
          _POSIX_Threads_Sporadic_budget_TSR( 0, the_thread );        
          break;                                                      
      }                                                               
                                                                      
      _Thread_Enable_dispatch();                                      
 80065e4:	f8 00 0b 0d 	calli 8009218 <_Thread_Enable_dispatch>        <== NOT EXECUTED
      return 0;                                                       
 80065e8:	e3 ff ff d0 	bi 8006528 <pthread_setschedparam+0x4c>        <== NOT EXECUTED
             true                                                     
          );                                                          
          break;                                                      
                                                                      
        case SCHED_SPORADIC:                                          
          api->ss_high_priority = api->schedparam.sched_priority;     
 80065ec:	59 a2 00 a4 	sw (r13+164),r2                                
          _Watchdog_Remove( &api->Sporadic_timer );                   
 80065f0:	35 a1 00 a8 	addi r1,r13,168                                
 80065f4:	f8 00 10 77 	calli 800a7d0 <_Watchdog_Remove>               
          _POSIX_Threads_Sporadic_budget_TSR( 0, the_thread );        
 80065f8:	34 01 00 00 	mvi r1,0                                       
 80065fc:	b9 e0 10 00 	mv r2,r15                                      
 8006600:	fb ff ff 66 	calli 8006398 <_POSIX_Threads_Sporadic_budget_TSR>
          break;                                                      
      }                                                               
                                                                      
      _Thread_Enable_dispatch();                                      
 8006604:	f8 00 0b 05 	calli 8009218 <_Thread_Enable_dispatch>        
 8006608:	e3 ff ff c8 	bi 8006528 <pthread_setschedparam+0x4c>        
 800660c:	78 03 08 01 	mvhi r3,0x801                                  
 8006610:	38 63 a0 e4 	ori r3,r3,0xa0e4                               
                                                                      
      switch ( api->schedpolicy ) {                                   
        case SCHED_OTHER:                                             
        case SCHED_FIFO:                                              
        case SCHED_RR:                                                
          the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;  
 8006614:	78 01 08 01 	mvhi r1,0x801                                  
 8006618:	38 21 a8 60 	ori r1,r1,0xa860                               
 800661c:	40 63 00 00 	lbu r3,(r3+0)                                  
 8006620:	28 24 00 00 	lw r4,(r1+0)                                   
                                                                      
          the_thread->real_priority =                                 
            _POSIX_Priority_To_core( api->schedparam.sched_priority );
                                                                      
          _Thread_Change_priority(                                    
 8006624:	b9 e0 08 00 	mv r1,r15                                      
 8006628:	c8 62 10 00 	sub r2,r3,r2                                   
                                                                      
      switch ( api->schedpolicy ) {                                   
        case SCHED_OTHER:                                             
        case SCHED_FIFO:                                              
        case SCHED_RR:                                                
          the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;  
 800662c:	59 e4 00 78 	sw (r15+120),r4                                
                                                                      
          the_thread->real_priority =                                 
 8006630:	59 e2 00 18 	sw (r15+24),r2                                 
            _POSIX_Priority_To_core( api->schedparam.sched_priority );
                                                                      
          _Thread_Change_priority(                                    
 8006634:	34 03 00 01 	mvi r3,1                                       
 8006638:	f8 00 09 99 	calli 8008c9c <_Thread_Change_priority>        
          _Watchdog_Remove( &api->Sporadic_timer );                   
          _POSIX_Threads_Sporadic_budget_TSR( 0, the_thread );        
          break;                                                      
      }                                                               
                                                                      
      _Thread_Enable_dispatch();                                      
 800663c:	f8 00 0a f7 	calli 8009218 <_Thread_Enable_dispatch>        
 8006640:	e3 ff ff ba 	bi 8006528 <pthread_setschedparam+0x4c>        
                                                                      
    case OBJECTS_LOCAL:                                               
      api = the_thread->API_Extensions[ THREAD_API_POSIX ];           
                                                                      
      if ( api->schedpolicy == SCHED_SPORADIC )                       
        (void) _Watchdog_Remove( &api->Sporadic_timer );              
 8006644:	35 a1 00 a8 	addi r1,r13,168                                
 8006648:	f8 00 10 62 	calli 800a7d0 <_Watchdog_Remove>               
 800664c:	e3 ff ff ce 	bi 8006584 <pthread_setschedparam+0xa8>        
                                                                      

08003934 <pthread_testcancel>: * * 18.2.2 Setting Cancelability State, P1003.1c/Draft 10, p. 183 */ void pthread_testcancel( void ) {
 8003934:	37 9c ff f8 	addi sp,sp,-8                                  
 8003938:	5b 8b 00 08 	sw (sp+8),r11                                  
 800393c:	5b 9d 00 04 	sw (sp+4),ra                                   
   *  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() )                                        
 8003940:	78 0b 08 01 	mvhi r11,0x801                                 
 8003944:	39 6b 6d 20 	ori r11,r11,0x6d20                             
 8003948:	29 62 00 08 	lw r2,(r11+8)                                  
 800394c:	5c 40 00 10 	bne r2,r0,800398c <pthread_testcancel+0x58>    <== NEVER TAKEN
 8003950:	78 01 08 01 	mvhi r1,0x801                                  
 8003954:	38 21 68 50 	ori r1,r1,0x6850                               
 8003958:	28 24 00 00 	lw r4,(r1+0)                                   
    return;                                                           
                                                                      
  thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
 800395c:	29 63 00 0c 	lw r3,(r11+12)                                 
 8003960:	34 84 00 01 	addi r4,r4,1                                   
 8003964:	28 63 01 20 	lw r3,(r3+288)                                 
 8003968:	58 24 00 00 	sw (r1+0),r4                                   
                                                                      
  _Thread_Disable_dispatch();                                         
    if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
 800396c:	28 61 00 d8 	lw r1,(r3+216)                                 
 8003970:	5c 22 00 0b 	bne r1,r2,800399c <pthread_testcancel+0x68>    <== NEVER TAKEN
 8003974:	28 62 00 e0 	lw r2,(r3+224)                                 
 8003978:	44 41 00 09 	be r2,r1,800399c <pthread_testcancel+0x68>     
         thread_support->cancelation_requested )                      
      cancel = true;                                                  
  _Thread_Enable_dispatch();                                          
 800397c:	f8 00 0a 36 	calli 8006254 <_Thread_Enable_dispatch>        
                                                                      
  if ( cancel )                                                       
    _POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED );        
 8003980:	29 61 00 0c 	lw r1,(r11+12)                                 
 8003984:	34 02 ff ff 	mvi r2,-1                                      
 8003988:	f8 00 19 a5 	calli 800a01c <_POSIX_Thread_Exit>             
}                                                                     
 800398c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8003990:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8003994:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 8003998:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      
  _Thread_Disable_dispatch();                                         
    if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
         thread_support->cancelation_requested )                      
      cancel = true;                                                  
  _Thread_Enable_dispatch();                                          
 800399c:	f8 00 0a 2e 	calli 8006254 <_Thread_Enable_dispatch>        
                                                                      
  if ( cancel )                                                       
    _POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED );        
}                                                                     
 80039a0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80039a4:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80039a8:	37 9c 00 08 	addi sp,sp,8                                   
 80039ac:	c3 a0 00 00 	ret                                            
                                                                      

08004648 <rtems_aio_enqueue>: * errno - otherwise */ int rtems_aio_enqueue (rtems_aio_request *req) {
 8004648:	37 9c ff c4 	addi sp,sp,-60                                 
 800464c:	5b 8b 00 18 	sw (sp+24),r11                                 
 8004650:	5b 8c 00 14 	sw (sp+20),r12                                 
 8004654:	5b 8d 00 10 	sw (sp+16),r13                                 
 8004658:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800465c:	5b 8f 00 08 	sw (sp+8),r15                                  
 8004660:	5b 9d 00 04 	sw (sp+4),ra                                   
  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);             
 8004664:	78 0b 08 01 	mvhi r11,0x801                                 
 8004668:	39 6b 87 f8 	ori r11,r11,0x87f8                             
 *         errno     - otherwise                                      
 */                                                                   
                                                                      
int                                                                   
rtems_aio_enqueue (rtems_aio_request *req)                            
{                                                                     
 800466c:	b8 20 60 00 	mv r12,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);             
 8004670:	b9 60 08 00 	mv r1,r11                                      
 8004674:	f8 00 02 c7 	calli 8005190 <pthread_mutex_lock>             
 8004678:	b8 20 68 00 	mv r13,r1                                      
  if (result != 0) {                                                  
 800467c:	5c 20 00 52 	bne r1,r0,80047c4 <rtems_aio_enqueue+0x17c>    <== 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);            
 8004680:	f8 00 05 af 	calli 8005d3c <pthread_self>                   
 8004684:	37 82 00 38 	addi r2,sp,56                                  
 8004688:	37 83 00 1c 	addi r3,sp,28                                  
 800468c:	f8 00 04 58 	calli 80057ec <pthread_getschedparam>          
                                                                      
  req->caller_thread = pthread_self ();                               
 8004690:	f8 00 05 ab 	calli 8005d3c <pthread_self>                   
  req->priority = param.sched_priority - req->aiocbp->aio_reqprio;    
 8004694:	29 82 00 14 	lw r2,(r12+20)                                 
  req->policy = policy;                                               
  req->aiocbp->error_code = EINPROGRESS;                              
  req->aiocbp->return_value = 0;                                      
                                                                      
  if ((aio_request_queue.idle_threads == 0) &&                        
 8004698:	29 63 00 68 	lw r3,(r11+104)                                
  /* _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;    
 800469c:	28 44 00 10 	lw r4,(r2+16)                                  
                                                                      
  /* _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 ();                               
 80046a0:	59 81 00 10 	sw (r12+16),r1                                 
  req->priority = param.sched_priority - req->aiocbp->aio_reqprio;    
 80046a4:	2b 81 00 1c 	lw r1,(sp+28)                                  
 80046a8:	c8 24 08 00 	sub r1,r1,r4                                   
 80046ac:	59 81 00 0c 	sw (r12+12),r1                                 
  req->policy = policy;                                               
 80046b0:	2b 81 00 38 	lw r1,(sp+56)                                  
 80046b4:	59 81 00 08 	sw (r12+8),r1                                  
  req->aiocbp->error_code = EINPROGRESS;                              
 80046b8:	34 01 00 77 	mvi r1,119                                     
 80046bc:	58 41 00 2c 	sw (r2+44),r1                                  
  req->aiocbp->return_value = 0;                                      
 80046c0:	58 40 00 30 	sw (r2+48),r0                                  
                                                                      
  if ((aio_request_queue.idle_threads == 0) &&                        
 80046c4:	5c 6d 00 24 	bne r3,r13,8004754 <rtems_aio_enqueue+0x10c>   
 80046c8:	29 63 00 64 	lw r3,(r11+100)                                
 80046cc:	34 01 00 04 	mvi r1,4                                       
 80046d0:	48 61 00 21 	bg r3,r1,8004754 <rtems_aio_enqueue+0x10c>     
      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);
 80046d4:	28 42 00 00 	lw r2,(r2+0)                                   
 80046d8:	78 01 08 01 	mvhi r1,0x801                                  
 80046dc:	38 21 88 40 	ori r1,r1,0x8840                               
 80046e0:	34 03 00 01 	mvi r3,1                                       
 80046e4:	fb ff fe 94 	calli 8004134 <rtems_aio_search_fd>            
                                                                      
      if (r_chain->new_fd == 1) {                                     
 80046e8:	28 22 00 18 	lw r2,(r1+24)                                  
  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);
 80046ec:	b8 20 70 00 	mv r14,r1                                      
                                                                      
      if (r_chain->new_fd == 1) {                                     
 80046f0:	34 01 00 01 	mvi r1,1                                       
 80046f4:	5c 41 00 1f 	bne r2,r1,8004770 <rtems_aio_enqueue+0x128>    
RTEMS_INLINE_ROUTINE void _Chain_Prepend(                             
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  _Chain_Insert(_Chain_Head(the_chain), the_node);                    
 80046f8:	b9 80 10 00 	mv r2,r12                                      
 80046fc:	35 c1 00 08 	addi r1,r14,8                                  
 8004700:	f8 00 09 05 	calli 8006b14 <_Chain_Insert>                  
	rtems_chain_prepend (&r_chain->perfd, &req->next_prio);              
	r_chain->new_fd = 0;                                                 
	pthread_mutex_init (&r_chain->mutex, NULL);                          
 8004704:	34 02 00 00 	mvi r2,0                                       
      chain = &aio_request_queue.work_req;                            
      r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
                                                                      
      if (r_chain->new_fd == 1) {                                     
	rtems_chain_prepend (&r_chain->perfd, &req->next_prio);              
	r_chain->new_fd = 0;                                                 
 8004708:	59 c0 00 18 	sw (r14+24),r0                                 
	pthread_mutex_init (&r_chain->mutex, NULL);                          
 800470c:	35 c1 00 1c 	addi r1,r14,28                                 
 8004710:	f8 00 02 3f 	calli 800500c <pthread_mutex_init>             
	pthread_cond_init (&r_chain->cond, NULL);                            
 8004714:	34 02 00 00 	mvi r2,0                                       
 8004718:	35 c1 00 20 	addi r1,r14,32                                 
 800471c:	f8 00 01 04 	calli 8004b2c <pthread_cond_init>              
	                                                                     
	AIO_printf ("New thread \n");                                        
	result = pthread_create (&thid, &aio_request_queue.attr,             
 8004720:	78 02 08 01 	mvhi r2,0x801                                  
 8004724:	78 03 08 00 	mvhi r3,0x800                                  
 8004728:	37 81 00 3c 	addi r1,sp,60                                  
 800472c:	38 42 88 00 	ori r2,r2,0x8800                               
 8004730:	38 63 42 14 	ori r3,r3,0x4214                               
 8004734:	b9 c0 20 00 	mv r4,r14                                      
 8004738:	f8 00 03 56 	calli 8005490 <pthread_create>                 
 800473c:	b8 20 60 00 	mv r12,r1                                      
				 rtems_aio_handle, (void *) r_chain);                             
	if (result != 0) {                                                   
 8004740:	5c 20 00 43 	bne r1,r0,800484c <rtems_aio_enqueue+0x204>    <== NEVER TAKEN
	  pthread_mutex_unlock (&aio_request_queue.mutex);                   
	  return result;                                                     
	}                                                                    
	++aio_request_queue.active_threads;                                  
 8004744:	29 61 00 64 	lw r1,(r11+100)                                
 8004748:	34 21 00 01 	addi r1,r1,1                                   
 800474c:	59 61 00 64 	sw (r11+100),r1                                
 8004750:	e0 00 00 12 	bi 8004798 <rtems_aio_enqueue+0x150>           
  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,     
 8004754:	28 42 00 00 	lw r2,(r2+0)                                   
 8004758:	78 01 08 01 	mvhi r1,0x801                                  
 800475c:	38 21 88 40 	ori r1,r1,0x8840                               
 8004760:	34 03 00 00 	mvi r3,0                                       
 8004764:	fb ff fe 74 	calli 8004134 <rtems_aio_search_fd>            
 8004768:	b8 20 70 00 	mv r14,r1                                      
				     req->aiocbp->aio_fildes, 0);                                 
      if (r_chain != NULL)                                            
 800476c:	44 20 00 19 	be r1,r0,80047d0 <rtems_aio_enqueue+0x188>     <== ALWAYS TAKEN
	{                                                                    
	  pthread_mutex_lock (&r_chain->mutex);                              
 8004770:	35 cf 00 1c 	addi r15,r14,28                                
 8004774:	b9 e0 08 00 	mv r1,r15                                      
 8004778:	f8 00 02 86 	calli 8005190 <pthread_mutex_lock>             
	  rtems_aio_insert_prio (&r_chain->perfd, req);                      
 800477c:	35 c1 00 08 	addi r1,r14,8                                  
 8004780:	b9 80 10 00 	mv r2,r12                                      
 8004784:	fb ff ff 5b 	calli 80044f0 <rtems_aio_insert_prio>          
	  pthread_cond_signal (&r_chain->cond);                              
 8004788:	35 c1 00 20 	addi r1,r14,32                                 
 800478c:	f8 00 01 29 	calli 8004c30 <pthread_cond_signal>            
	  pthread_mutex_unlock (&r_chain->mutex);                            
 8004790:	b9 e0 08 00 	mv r1,r15                                      
 8004794:	f8 00 02 af 	calli 8005250 <pthread_mutex_unlock>           
	  /* just insert the request in the existing fd chain */             
	  rtems_aio_insert_prio (&r_chain->perfd, req);                      
      }                                                               
    }                                                                 
                                                                      
  pthread_mutex_unlock (&aio_request_queue.mutex);                    
 8004798:	b9 60 08 00 	mv r1,r11                                      
 800479c:	f8 00 02 ad 	calli 8005250 <pthread_mutex_unlock>           
  return 0;                                                           
}                                                                     
 80047a0:	b9 a0 08 00 	mv r1,r13                                      
 80047a4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80047a8:	2b 8b 00 18 	lw r11,(sp+24)                                 
 80047ac:	2b 8c 00 14 	lw r12,(sp+20)                                 
 80047b0:	2b 8d 00 10 	lw r13,(sp+16)                                 
 80047b4:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 80047b8:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80047bc:	37 9c 00 3c 	addi sp,sp,60                                  
 80047c0:	c3 a0 00 00 	ret                                            
  /* 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);                                                       
 80047c4:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80047c8:	fb ff f6 d8 	calli 8002328 <free>                           <== NOT EXECUTED
    return result;                                                    
 80047cc:	e3 ff ff f5 	bi 80047a0 <rtems_aio_enqueue+0x158>           <== NOT EXECUTED
	                                                                     
	} else {                                                             
                                                                      
	/* or to the idle chain */                                           
	chain = &aio_request_queue.idle_req;                                 
	r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);   
 80047d0:	29 82 00 14 	lw r2,(r12+20)                                 
 80047d4:	78 01 08 01 	mvhi r1,0x801                                  
 80047d8:	38 21 88 4c 	ori r1,r1,0x884c                               
 80047dc:	28 42 00 00 	lw r2,(r2+0)                                   
 80047e0:	34 03 00 01 	mvi r3,1                                       
 80047e4:	fb ff fe 54 	calli 8004134 <rtems_aio_search_fd>            
                                                                      
	if (r_chain->new_fd == 1) {                                          
 80047e8:	28 22 00 18 	lw r2,(r1+24)                                  
	                                                                     
	} else {                                                             
                                                                      
	/* or to the idle chain */                                           
	chain = &aio_request_queue.idle_req;                                 
	r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);   
 80047ec:	b8 20 70 00 	mv r14,r1                                      
                                                                      
	if (r_chain->new_fd == 1) {                                          
 80047f0:	34 01 00 01 	mvi r1,1                                       
 80047f4:	44 41 00 05 	be r2,r1,8004808 <rtems_aio_enqueue+0x1c0>     
	  pthread_cond_init (&r_chain->cond, NULL);                          
	  pthread_cond_signal (&aio_request_queue.new_req);                  
	  ++aio_request_queue.idle_threads;                                  
	} else                                                               
	  /* just insert the request in the existing fd chain */             
	  rtems_aio_insert_prio (&r_chain->perfd, req);                      
 80047f8:	35 c1 00 08 	addi r1,r14,8                                  
 80047fc:	b9 80 10 00 	mv r2,r12                                      
 8004800:	fb ff ff 3c 	calli 80044f0 <rtems_aio_insert_prio>          
 8004804:	e3 ff ff e5 	bi 8004798 <rtems_aio_enqueue+0x150>           
 8004808:	35 c1 00 08 	addi r1,r14,8                                  
 800480c:	b9 80 10 00 	mv r2,r12                                      
 8004810:	f8 00 08 c1 	calli 8006b14 <_Chain_Insert>                  
	  /* 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;                                               
	  pthread_mutex_init (&r_chain->mutex, NULL);                        
 8004814:	34 02 00 00 	mvi r2,0                                       
	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;                                               
 8004818:	59 c0 00 18 	sw (r14+24),r0                                 
	  pthread_mutex_init (&r_chain->mutex, NULL);                        
 800481c:	35 c1 00 1c 	addi r1,r14,28                                 
 8004820:	f8 00 01 fb 	calli 800500c <pthread_mutex_init>             
	  pthread_cond_init (&r_chain->cond, NULL);                          
 8004824:	34 02 00 00 	mvi r2,0                                       
 8004828:	35 c1 00 20 	addi r1,r14,32                                 
 800482c:	f8 00 00 c0 	calli 8004b2c <pthread_cond_init>              
	  pthread_cond_signal (&aio_request_queue.new_req);                  
 8004830:	78 01 08 01 	mvhi r1,0x801                                  
 8004834:	38 21 87 fc 	ori r1,r1,0x87fc                               
 8004838:	f8 00 00 fe 	calli 8004c30 <pthread_cond_signal>            
	  ++aio_request_queue.idle_threads;                                  
 800483c:	29 61 00 68 	lw r1,(r11+104)                                
 8004840:	34 21 00 01 	addi r1,r1,1                                   
 8004844:	59 61 00 68 	sw (r11+104),r1                                
 8004848:	e3 ff ff d4 	bi 8004798 <rtems_aio_enqueue+0x150>           
	                                                                     
	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);                   
 800484c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8004850:	f8 00 02 80 	calli 8005250 <pthread_mutex_unlock>           <== NOT EXECUTED
	  return result;                                                     
 8004854:	b9 80 68 00 	mv r13,r12                                     <== NOT EXECUTED
 8004858:	e3 ff ff d2 	bi 80047a0 <rtems_aio_enqueue+0x158>           <== NOT EXECUTED
                                                                      

08004214 <rtems_aio_handle>: * NULL - if error */ static void * rtems_aio_handle (void *arg) {
 8004214:	37 9c ff 9c 	addi sp,sp,-100                                <== NOT EXECUTED
 8004218:	5b 8b 00 3c 	sw (sp+60),r11                                 <== NOT EXECUTED
 800421c:	5b 8c 00 38 	sw (sp+56),r12                                 <== NOT EXECUTED
 8004220:	5b 8d 00 34 	sw (sp+52),r13                                 <== NOT EXECUTED
 8004224:	5b 8e 00 30 	sw (sp+48),r14                                 <== NOT EXECUTED
 8004228:	5b 8f 00 2c 	sw (sp+44),r15                                 <== NOT EXECUTED
 800422c:	5b 90 00 28 	sw (sp+40),r16                                 <== NOT EXECUTED
 8004230:	5b 91 00 24 	sw (sp+36),r17                                 <== NOT EXECUTED
 8004234:	5b 92 00 20 	sw (sp+32),r18                                 <== NOT EXECUTED
 8004238:	5b 93 00 1c 	sw (sp+28),r19                                 <== NOT EXECUTED
 800423c:	5b 94 00 18 	sw (sp+24),r20                                 <== NOT EXECUTED
 8004240:	5b 95 00 14 	sw (sp+20),r21                                 <== NOT EXECUTED
 8004244:	5b 96 00 10 	sw (sp+16),r22                                 <== NOT EXECUTED
 8004248:	5b 97 00 0c 	sw (sp+12),r23                                 <== NOT EXECUTED
 800424c:	5b 98 00 08 	sw (sp+8),r24                                  <== NOT EXECUTED
 8004250:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
	 The fd chain is already unlocked */                                 
                                                                      
      struct timespec timeout;                                        
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
      pthread_mutex_lock (&aio_request_queue.mutex);                  
 8004254:	78 13 08 01 	mvhi r19,0x801                                 <== NOT EXECUTED
	    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)) {        
 8004258:	78 16 08 01 	mvhi r22,0x801                                 <== NOT EXECUTED
	      ++aio_request_queue.idle_threads;                              
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
	      timeout.tv_sec += 3;                                           
	      timeout.tv_nsec = 0;                                           
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
 800425c:	78 15 08 01 	mvhi r21,0x801                                 <== NOT EXECUTED
	      /* Otherwise move this chain to the working chain and          
		 start the loop all over again */                                   
	      --aio_request_queue.idle_threads;                              
	      node = rtems_chain_first (&aio_request_queue.idle_req);        
	      rtems_chain_extract (node);                                    
	      r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,    
 8004260:	78 14 08 01 	mvhi r20,0x801                                 <== NOT EXECUTED
 *        NULL       - if error                                       
 */                                                                   
                                                                      
static void *                                                         
rtems_aio_handle (void *arg)                                          
{                                                                     
 8004264:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
 8004268:	34 2e 00 1c 	addi r14,r1,28                                 <== NOT EXECUTED
	 The fd chain is already unlocked */                                 
                                                                      
      struct timespec timeout;                                        
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
      pthread_mutex_lock (&aio_request_queue.mutex);                  
 800426c:	3a 73 87 f8 	ori r19,r19,0x87f8                             <== NOT EXECUTED
      if (rtems_chain_is_empty (chain))                               
	{                                                                    
	  clock_gettime (CLOCK_REALTIME, &timeout);                          
 8004270:	37 97 00 5c 	addi r23,sp,92                                 <== NOT EXECUTED
	  result = pthread_cond_timedwait (&r_chain->cond,                   
					   &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) {                                         
 8004274:	34 18 00 74 	mvi r24,116                                    <== NOT EXECUTED
	    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)) {        
 8004278:	3a d6 88 50 	ori r22,r22,0x8850                             <== NOT EXECUTED
	      ++aio_request_queue.idle_threads;                              
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
	      timeout.tv_sec += 3;                                           
	      timeout.tv_nsec = 0;                                           
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
 800427c:	3a b5 87 fc 	ori r21,r21,0x87fc                             <== NOT EXECUTED
	      /* Otherwise move this chain to the working chain and          
		 start the loop all over again */                                   
	      --aio_request_queue.idle_threads;                              
	      node = rtems_chain_first (&aio_request_queue.idle_req);        
	      rtems_chain_extract (node);                                    
	      r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,    
 8004280:	3a 94 88 40 	ori r20,r20,0x8840                             <== NOT EXECUTED
      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);        
 8004284:	37 8f 00 40 	addi r15,sp,64                                 <== NOT EXECUTED
                                                                      
      rtems_chain_extract (node);                                     
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
                                                                      
      switch (req->aiocbp->aio_lio_opcode) {                          
 8004288:	34 10 00 02 	mvi r16,2                                      <== NOT EXECUTED
                                                                      
      default:                                                        
        result = -1;                                                  
      }                                                               
      if (result == -1) {                                             
        req->aiocbp->return_value = -1;                               
 800428c:	34 11 ff ff 	mvi r17,-1                                     <== NOT EXECUTED
                                                                      
      rtems_chain_extract (node);                                     
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
                                                                      
      switch (req->aiocbp->aio_lio_opcode) {                          
 8004290:	34 12 00 03 	mvi r18,3                                      <== 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);                    
 8004294:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8004298:	f8 00 03 be 	calli 8005190 <pthread_mutex_lock>             <== NOT EXECUTED
    if (result != 0)                                                  
 800429c:	5c 20 00 1f 	bne r1,r0,8004318 <rtems_aio_handle+0x104>     <== NOT EXECUTED
  }                                                                   
                                                                      
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 80042a0:	29 ab 00 08 	lw r11,(r13+8)                                 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 80042a4:	35 a4 00 0c 	addi r4,r13,12                                 <== NOT EXECUTED
                                                                      
    /* 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)) {                              
 80042a8:	45 64 00 44 	be r11,r4,80043b8 <rtems_aio_handle+0x1a4>     <== NOT EXECUTED
      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);        
 80042ac:	f8 00 06 a4 	calli 8005d3c <pthread_self>                   <== NOT EXECUTED
 80042b0:	37 82 00 64 	addi r2,sp,100                                 <== NOT EXECUTED
 80042b4:	b9 e0 18 00 	mv r3,r15                                      <== NOT EXECUTED
 80042b8:	f8 00 05 4d 	calli 80057ec <pthread_getschedparam>          <== NOT EXECUTED
      param.sched_priority = req->priority;                           
 80042bc:	29 64 00 0c 	lw r4,(r11+12)                                 <== NOT EXECUTED
 80042c0:	5b 84 00 40 	sw (sp+64),r4                                  <== NOT EXECUTED
      pthread_setschedparam (pthread_self(), req->policy, ¶m);    
 80042c4:	f8 00 06 9e 	calli 8005d3c <pthread_self>                   <== NOT EXECUTED
 80042c8:	29 62 00 08 	lw r2,(r11+8)                                  <== NOT EXECUTED
 80042cc:	b9 e0 18 00 	mv r3,r15                                      <== NOT EXECUTED
 80042d0:	f8 00 06 a0 	calli 8005d50 <pthread_setschedparam>          <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
 80042d4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80042d8:	f8 00 09 f4 	calli 8006aa8 <_Chain_Extract>                 <== NOT EXECUTED
                                                                      
      rtems_chain_extract (node);                                     
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
 80042dc:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 80042e0:	f8 00 03 dc 	calli 8005250 <pthread_mutex_unlock>           <== NOT EXECUTED
                                                                      
      switch (req->aiocbp->aio_lio_opcode) {                          
 80042e4:	29 6c 00 14 	lw r12,(r11+20)                                <== NOT EXECUTED
 80042e8:	29 84 00 28 	lw r4,(r12+40)                                 <== NOT EXECUTED
 80042ec:	44 90 00 2c 	be r4,r16,800439c <rtems_aio_handle+0x188>     <== NOT EXECUTED
 80042f0:	44 92 00 27 	be r4,r18,800438c <rtems_aio_handle+0x178>     <== NOT EXECUTED
 80042f4:	34 05 00 01 	mvi r5,1                                       <== NOT EXECUTED
 80042f8:	44 85 00 1a 	be r4,r5,8004360 <rtems_aio_handle+0x14c>      <== NOT EXECUTED
                                                                      
      default:                                                        
        result = -1;                                                  
      }                                                               
      if (result == -1) {                                             
        req->aiocbp->return_value = -1;                               
 80042fc:	59 91 00 30 	sw (r12+48),r17                                <== NOT EXECUTED
	req->aiocbp->error_code = errno;                                     
 8004300:	f8 00 2f 0f 	calli 800ff3c <__errno>                        <== NOT EXECUTED
 8004304:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 8004308:	59 81 00 2c 	sw (r12+44),r1                                 <== 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);                    
 800430c:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8004310:	f8 00 03 a0 	calli 8005190 <pthread_mutex_lock>             <== NOT EXECUTED
    if (result != 0)                                                  
 8004314:	44 20 ff e3 	be r1,r0,80042a0 <rtems_aio_handle+0x8c>       <== NOT EXECUTED
  }                                                                   
                                                                      
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 8004318:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800431c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8004320:	2b 8b 00 3c 	lw r11,(sp+60)                                 <== NOT EXECUTED
 8004324:	2b 8c 00 38 	lw r12,(sp+56)                                 <== NOT EXECUTED
 8004328:	2b 8d 00 34 	lw r13,(sp+52)                                 <== NOT EXECUTED
 800432c:	2b 8e 00 30 	lw r14,(sp+48)                                 <== NOT EXECUTED
 8004330:	2b 8f 00 2c 	lw r15,(sp+44)                                 <== NOT EXECUTED
 8004334:	2b 90 00 28 	lw r16,(sp+40)                                 <== NOT EXECUTED
 8004338:	2b 91 00 24 	lw r17,(sp+36)                                 <== NOT EXECUTED
 800433c:	2b 92 00 20 	lw r18,(sp+32)                                 <== NOT EXECUTED
 8004340:	2b 93 00 1c 	lw r19,(sp+28)                                 <== NOT EXECUTED
 8004344:	2b 94 00 18 	lw r20,(sp+24)                                 <== NOT EXECUTED
 8004348:	2b 95 00 14 	lw r21,(sp+20)                                 <== NOT EXECUTED
 800434c:	2b 96 00 10 	lw r22,(sp+16)                                 <== NOT EXECUTED
 8004350:	2b 97 00 0c 	lw r23,(sp+12)                                 <== NOT EXECUTED
 8004354:	2b 98 00 08 	lw r24,(sp+8)                                  <== NOT EXECUTED
 8004358:	37 9c 00 64 	addi sp,sp,100                                 <== NOT EXECUTED
 800435c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
                                                                      
      switch (req->aiocbp->aio_lio_opcode) {                          
      case LIO_READ:                                                  
        result = pread (req->aiocbp->aio_fildes,                      
 8004360:	29 84 00 04 	lw r4,(r12+4)                                  <== NOT EXECUTED
 8004364:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 8004368:	29 82 00 08 	lw r2,(r12+8)                                  <== NOT EXECUTED
 800436c:	29 83 00 0c 	lw r3,(r12+12)                                 <== NOT EXECUTED
 8004370:	f8 00 32 a2 	calli 8010df8 <pread>                          <== NOT EXECUTED
 8004374:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
      	break;                                                         
                                                                      
      default:                                                        
        result = -1;                                                  
      }                                                               
      if (result == -1) {                                             
 8004378:	44 91 00 59 	be r4,r17,80044dc <rtems_aio_handle+0x2c8>     <== NOT EXECUTED
        req->aiocbp->return_value = -1;                               
	req->aiocbp->error_code = errno;                                     
      } else {                                                        
        req->aiocbp->return_value = result;                           
 800437c:	29 65 00 14 	lw r5,(r11+20)                                 <== NOT EXECUTED
 8004380:	58 a4 00 30 	sw (r5+48),r4                                  <== NOT EXECUTED
        req->aiocbp->error_code = 0;                                  
 8004384:	58 a0 00 2c 	sw (r5+44),r0                                  <== NOT EXECUTED
 8004388:	e3 ff ff c3 	bi 8004294 <rtems_aio_handle+0x80>             <== NOT EXECUTED
                         (void *) req->aiocbp->aio_buf,               
                         req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
        break;                                                        
                                                                      
      case LIO_SYNC:                                                  
      	result = fsync (req->aiocbp->aio_fildes);                      
 800438c:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 8004390:	f8 00 1d f2 	calli 800bb58 <fsync>                          <== NOT EXECUTED
 8004394:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
      	break;                                                         
 8004398:	e3 ff ff f8 	bi 8004378 <rtems_aio_handle+0x164>            <== NOT EXECUTED
                        (void *) req->aiocbp->aio_buf,                
                        req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
        break;                                                        
                                                                      
      case LIO_WRITE:                                                 
        result = pwrite (req->aiocbp->aio_fildes,                     
 800439c:	29 84 00 04 	lw r4,(r12+4)                                  <== NOT EXECUTED
 80043a0:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 80043a4:	29 82 00 08 	lw r2,(r12+8)                                  <== NOT EXECUTED
 80043a8:	29 83 00 0c 	lw r3,(r12+12)                                 <== NOT EXECUTED
 80043ac:	f8 00 32 d7 	calli 8010f08 <pwrite>                         <== NOT EXECUTED
 80043b0:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
                         (void *) req->aiocbp->aio_buf,               
                         req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
        break;                                                        
 80043b4:	e3 ff ff f1 	bi 8004378 <rtems_aio_handle+0x164>            <== NOT EXECUTED
	 wait for a signal on chain, this will unlock the queue.             
	 The fd chain is already unlocked */                                 
                                                                      
      struct timespec timeout;                                        
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
 80043b8:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 80043bc:	f8 00 03 a5 	calli 8005250 <pthread_mutex_unlock>           <== NOT EXECUTED
      pthread_mutex_lock (&aio_request_queue.mutex);                  
 80043c0:	ba 60 08 00 	mv r1,r19                                      <== NOT EXECUTED
 80043c4:	f8 00 03 73 	calli 8005190 <pthread_mutex_lock>             <== NOT EXECUTED
      if (rtems_chain_is_empty (chain))                               
 80043c8:	29 a1 00 08 	lw r1,(r13+8)                                  <== NOT EXECUTED
 80043cc:	5d 61 ff b2 	bne r11,r1,8004294 <rtems_aio_handle+0x80>     <== NOT EXECUTED
	{                                                                    
	  clock_gettime (CLOCK_REALTIME, &timeout);                          
 80043d0:	ba e0 10 00 	mv r2,r23                                      <== NOT EXECUTED
 80043d4:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 80043d8:	f8 00 01 72 	calli 80049a0 <clock_gettime>                  <== NOT EXECUTED
	  timeout.tv_sec += 3;                                               
 80043dc:	2b 84 00 5c 	lw r4,(sp+92)                                  <== NOT EXECUTED
	  timeout.tv_nsec = 0;                                               
	  result = pthread_cond_timedwait (&r_chain->cond,                   
 80043e0:	35 ab 00 20 	addi r11,r13,32                                <== NOT EXECUTED
 80043e4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
      pthread_mutex_unlock (&r_chain->mutex);                         
      pthread_mutex_lock (&aio_request_queue.mutex);                  
      if (rtems_chain_is_empty (chain))                               
	{                                                                    
	  clock_gettime (CLOCK_REALTIME, &timeout);                          
	  timeout.tv_sec += 3;                                               
 80043e8:	34 84 00 03 	addi r4,r4,3                                   <== NOT EXECUTED
	  timeout.tv_nsec = 0;                                               
	  result = pthread_cond_timedwait (&r_chain->cond,                   
 80043ec:	ba 60 10 00 	mv r2,r19                                      <== NOT EXECUTED
 80043f0:	ba e0 18 00 	mv r3,r23                                      <== NOT EXECUTED
      pthread_mutex_unlock (&r_chain->mutex);                         
      pthread_mutex_lock (&aio_request_queue.mutex);                  
      if (rtems_chain_is_empty (chain))                               
	{                                                                    
	  clock_gettime (CLOCK_REALTIME, &timeout);                          
	  timeout.tv_sec += 3;                                               
 80043f4:	5b 84 00 5c 	sw (sp+92),r4                                  <== NOT EXECUTED
	  timeout.tv_nsec = 0;                                               
 80043f8:	5b 80 00 60 	sw (sp+96),r0                                  <== NOT EXECUTED
	  result = pthread_cond_timedwait (&r_chain->cond,                   
 80043fc:	f8 00 02 36 	calli 8004cd4 <pthread_cond_timedwait>         <== NOT EXECUTED
					   &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) {                                         
 8004400:	5c 38 ff a5 	bne r1,r24,8004294 <rtems_aio_handle+0x80>     <== NOT EXECUTED
 8004404:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8004408:	f8 00 09 a8 	calli 8006aa8 <_Chain_Extract>                 <== NOT EXECUTED
	    rtems_chain_extract (&r_chain->next_fd);                         
	    pthread_mutex_destroy (&r_chain->mutex);                         
 800440c:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8004410:	f8 00 02 98 	calli 8004e70 <pthread_mutex_destroy>          <== NOT EXECUTED
	    pthread_cond_destroy (&r_chain->cond);                           
 8004414:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8004418:	f8 00 01 85 	calli 8004a2c <pthread_cond_destroy>           <== NOT EXECUTED
	    free (r_chain);                                                  
 800441c:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8004420:	fb ff f7 c2 	calli 8002328 <free>                           <== NOT EXECUTED
	                                                                     
	    /* 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)) {        
 8004424:	2a 61 00 54 	lw r1,(r19+84)                                 <== NOT EXECUTED
 8004428:	44 36 00 04 	be r1,r22,8004438 <rtems_aio_handle+0x224>     <== NOT EXECUTED
	      r_chain->perfd = ((rtems_aio_request_chain *)node)->perfd;     
	    }                                                                
	    else                                                             
	      /* 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);               
 800442c:	ba 60 08 00 	mv r1,r19                                      <== NOT EXECUTED
 8004430:	f8 00 03 88 	calli 8005250 <pthread_mutex_unlock>           <== NOT EXECUTED
 8004434:	e3 ff ff 98 	bi 8004294 <rtems_aio_handle+0x80>             <== NOT EXECUTED
	    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)) {        
	      ++aio_request_queue.idle_threads;                              
 8004438:	2a 63 00 68 	lw r3,(r19+104)                                <== NOT EXECUTED
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
 800443c:	ba e0 10 00 	mv r2,r23                                      <== NOT EXECUTED
 8004440:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
	    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)) {        
	      ++aio_request_queue.idle_threads;                              
 8004444:	34 63 00 01 	addi r3,r3,1                                   <== NOT EXECUTED
 8004448:	5a 63 00 68 	sw (r19+104),r3                                <== NOT EXECUTED
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
 800444c:	f8 00 01 55 	calli 80049a0 <clock_gettime>                  <== NOT EXECUTED
	      timeout.tv_sec += 3;                                           
 8004450:	2b 84 00 5c 	lw r4,(sp+92)                                  <== NOT EXECUTED
	      timeout.tv_nsec = 0;                                           
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
 8004454:	ba a0 08 00 	mv r1,r21                                      <== NOT EXECUTED
 8004458:	ba 60 10 00 	mv r2,r19                                      <== NOT EXECUTED
	    /* 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_request_queue.idle_threads;                              
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
	      timeout.tv_sec += 3;                                           
 800445c:	34 84 00 03 	addi r4,r4,3                                   <== NOT EXECUTED
	      timeout.tv_nsec = 0;                                           
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
 8004460:	ba e0 18 00 	mv r3,r23                                      <== NOT EXECUTED
	    /* 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_request_queue.idle_threads;                              
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
	      timeout.tv_sec += 3;                                           
 8004464:	5b 84 00 5c 	sw (sp+92),r4                                  <== NOT EXECUTED
	      timeout.tv_nsec = 0;                                           
 8004468:	5b 80 00 60 	sw (sp+96),r0                                  <== NOT EXECUTED
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
 800446c:	f8 00 02 1a 	calli 8004cd4 <pthread_cond_timedwait>         <== NOT EXECUTED
					       &aio_request_queue.mutex,                                 
					       &timeout);                                                
	                                                                     
	      /* If no new fd chain was added in the idle requests           
		 then this thread is finished */                                    
	      if (result == ETIMEDOUT) {                                     
 8004470:	44 38 00 1d 	be r1,r24,80044e4 <rtems_aio_handle+0x2d0>     <== NOT EXECUTED
  }                                                                   
                                                                      
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 8004474:	2a 6b 00 54 	lw r11,(r19+84)                                <== NOT EXECUTED
		return NULL;                                                        
	      }                                                              
	                                                                     
	      /* Otherwise move this chain to the working chain and          
		 start the loop all over again */                                   
	      --aio_request_queue.idle_threads;                              
 8004478:	2a 62 00 68 	lw r2,(r19+104)                                <== NOT EXECUTED
 800447c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8004480:	34 42 ff ff 	addi r2,r2,-1                                  <== NOT EXECUTED
 8004484:	5a 62 00 68 	sw (r19+104),r2                                <== NOT EXECUTED
 8004488:	f8 00 09 88 	calli 8006aa8 <_Chain_Extract>                 <== NOT EXECUTED
	      node = rtems_chain_first (&aio_request_queue.idle_req);        
	      rtems_chain_extract (node);                                    
	      r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,    
 800448c:	29 62 00 14 	lw r2,(r11+20)                                 <== NOT EXECUTED
 8004490:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 8004494:	ba 80 08 00 	mv r1,r20                                      <== NOT EXECUTED
 8004498:	fb ff ff 27 	calli 8004134 <rtems_aio_search_fd>            <== NOT EXECUTED
					     ((rtems_aio_request_chain *)node)->fildes,                  
					     1);                                                         
	      r_chain->new_fd = 0;                                           
	      pthread_mutex_init (&r_chain->mutex, NULL);                    
 800449c:	34 2e 00 1c 	addi r14,r1,28                                 <== NOT EXECUTED
	      /* Otherwise move this chain to the working chain and          
		 start the loop all over again */                                   
	      --aio_request_queue.idle_threads;                              
	      node = rtems_chain_first (&aio_request_queue.idle_req);        
	      rtems_chain_extract (node);                                    
	      r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,    
 80044a0:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
					     ((rtems_aio_request_chain *)node)->fildes,                  
					     1);                                                         
	      r_chain->new_fd = 0;                                           
	      pthread_mutex_init (&r_chain->mutex, NULL);                    
 80044a4:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
	      node = rtems_chain_first (&aio_request_queue.idle_req);        
	      rtems_chain_extract (node);                                    
	      r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,    
					     ((rtems_aio_request_chain *)node)->fildes,                  
					     1);                                                         
	      r_chain->new_fd = 0;                                           
 80044a8:	58 20 00 18 	sw (r1+24),r0                                  <== NOT EXECUTED
	      pthread_mutex_init (&r_chain->mutex, NULL);                    
 80044ac:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 80044b0:	f8 00 02 d7 	calli 800500c <pthread_mutex_init>             <== NOT EXECUTED
	      pthread_cond_init (&r_chain->cond, NULL);                      
 80044b4:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 80044b8:	35 a1 00 20 	addi r1,r13,32                                 <== NOT EXECUTED
 80044bc:	f8 00 01 9c 	calli 8004b2c <pthread_cond_init>              <== NOT EXECUTED
	                                                                     
	      r_chain->perfd = ((rtems_aio_request_chain *)node)->perfd;     
 80044c0:	29 62 00 08 	lw r2,(r11+8)                                  <== NOT EXECUTED
 80044c4:	29 61 00 0c 	lw r1,(r11+12)                                 <== NOT EXECUTED
 80044c8:	29 63 00 10 	lw r3,(r11+16)                                 <== NOT EXECUTED
 80044cc:	59 a2 00 08 	sw (r13+8),r2                                  <== NOT EXECUTED
 80044d0:	59 a1 00 0c 	sw (r13+12),r1                                 <== NOT EXECUTED
 80044d4:	59 a3 00 10 	sw (r13+16),r3                                 <== NOT EXECUTED
 80044d8:	e3 ff ff 6f 	bi 8004294 <rtems_aio_handle+0x80>             <== NOT EXECUTED
      	break;                                                         
                                                                      
      default:                                                        
        result = -1;                                                  
      }                                                               
      if (result == -1) {                                             
 80044dc:	29 6c 00 14 	lw r12,(r11+20)                                <== NOT EXECUTED
 80044e0:	e3 ff ff 87 	bi 80042fc <rtems_aio_handle+0xe8>             <== NOT EXECUTED
					       &timeout);                                                
	                                                                     
	      /* If no new fd chain was added in the idle requests           
		 then this thread is finished */                                    
	      if (result == ETIMEDOUT) {                                     
		pthread_mutex_unlock (&aio_request_queue.mutex);                    
 80044e4:	ba 60 08 00 	mv r1,r19                                      <== NOT EXECUTED
 80044e8:	f8 00 03 5a 	calli 8005250 <pthread_mutex_unlock>           <== NOT EXECUTED
		return NULL;                                                        
 80044ec:	e3 ff ff 8b 	bi 8004318 <rtems_aio_handle+0x104>            <== NOT EXECUTED
                                                                      

08003ff4 <rtems_aio_init>: * 0 - if initialization succeeded */ int rtems_aio_init (void) {
 8003ff4:	37 9c ff f0 	addi sp,sp,-16                                 
 8003ff8:	5b 8b 00 10 	sw (sp+16),r11                                 
 8003ffc:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8004000:	5b 8d 00 08 	sw (sp+8),r13                                  
 8004004:	5b 9d 00 04 	sw (sp+4),ra                                   
  int result = 0;                                                     
                                                                      
  result = pthread_attr_init (&aio_request_queue.attr);               
 8004008:	78 0c 08 01 	mvhi r12,0x801                                 
 800400c:	39 8c 88 00 	ori r12,r12,0x8800                             
 8004010:	b9 80 08 00 	mv r1,r12                                      
 8004014:	f8 00 04 de 	calli 800538c <pthread_attr_init>              
 8004018:	b8 20 68 00 	mv r13,r1                                      
  if (result != 0)                                                    
 800401c:	44 20 00 08 	be r1,r0,800403c <rtems_aio_init+0x48>         <== ALWAYS TAKEN
  aio_request_queue.active_threads = 0;                               
  aio_request_queue.idle_threads = 0;                                 
  aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;              
                                                                      
  return result;                                                      
}                                                                     
 8004020:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8004024:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8004028:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 800402c:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 8004030:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 8004034:	37 9c 00 10 	addi sp,sp,16                                  <== NOT EXECUTED
 8004038:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      
  result = pthread_attr_init (&aio_request_queue.attr);               
  if (result != 0)                                                    
    return result;                                                    
                                                                      
  result =                                                            
 800403c:	b9 80 08 00 	mv r1,r12                                      
 8004040:	34 02 00 00 	mvi r2,0                                       
 8004044:	f8 00 05 09 	calli 8005468 <pthread_attr_setdetachstate>    
    pthread_attr_setdetachstate (&aio_request_queue.attr,             
                                 PTHREAD_CREATE_DETACHED);            
  if (result != 0)                                                    
 8004048:	5c 2d 00 26 	bne r1,r13,80040e0 <rtems_aio_init+0xec>       <== NEVER TAKEN
    pthread_attr_destroy (&aio_request_queue.attr);                   
                                                                      
                                                                      
  result = pthread_mutex_init (&aio_request_queue.mutex, NULL);       
 800404c:	78 0b 08 01 	mvhi r11,0x801                                 
 8004050:	39 6b 87 f8 	ori r11,r11,0x87f8                             
 8004054:	b9 60 08 00 	mv r1,r11                                      
 8004058:	34 02 00 00 	mvi r2,0                                       
 800405c:	f8 00 03 ec 	calli 800500c <pthread_mutex_init>             
  if (result != 0)                                                    
 8004060:	5c 20 00 28 	bne r1,r0,8004100 <rtems_aio_init+0x10c>       <== NEVER TAKEN
    pthread_attr_destroy (&aio_request_queue.attr);                   
                                                                      
                                                                      
  result = pthread_cond_init (&aio_request_queue.new_req, NULL);      
 8004064:	78 01 08 01 	mvhi r1,0x801                                  
 8004068:	38 21 87 fc 	ori r1,r1,0x87fc                               
 800406c:	34 02 00 00 	mvi r2,0                                       
 8004070:	f8 00 02 af 	calli 8004b2c <pthread_cond_init>              
 8004074:	b8 20 68 00 	mv r13,r1                                      
  if (result != 0) {                                                  
 8004078:	5c 20 00 2a 	bne r1,r0,8004120 <rtems_aio_init+0x12c>       <== NEVER TAKEN
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800407c:	78 01 08 01 	mvhi r1,0x801                                  
 8004080:	38 21 88 4c 	ori r1,r1,0x884c                               
 8004084:	59 61 00 5c 	sw (r11+92),r1                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 8004088:	78 04 08 01 	mvhi r4,0x801                                  
  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;                                 
  aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;              
 800408c:	38 01 b0 0b 	mvu r1,0xb00b                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
 8004090:	78 03 08 01 	mvhi r3,0x801                                  
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 8004094:	78 02 08 01 	mvhi r2,0x801                                  
 8004098:	38 84 88 44 	ori r4,r4,0x8844                               
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800409c:	38 63 88 40 	ori r3,r3,0x8840                               
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 80040a0:	38 42 88 50 	ori r2,r2,0x8850                               
 80040a4:	59 61 00 60 	sw (r11+96),r1                                 
                                                                      
  return result;                                                      
}                                                                     
 80040a8:	b9 a0 08 00 	mv r1,r13                                      
 80040ac:	59 64 00 48 	sw (r11+72),r4                                 
  head->previous = NULL;                                              
 80040b0:	59 60 00 4c 	sw (r11+76),r0                                 
  tail->previous = head;                                              
 80040b4:	59 63 00 50 	sw (r11+80),r3                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 80040b8:	59 62 00 54 	sw (r11+84),r2                                 
  head->previous = NULL;                                              
 80040bc:	59 60 00 58 	sw (r11+88),r0                                 
  }                                                                   
                                                                      
  rtems_chain_initialize_empty (&aio_request_queue.work_req);         
  rtems_chain_initialize_empty (&aio_request_queue.idle_req);         
                                                                      
  aio_request_queue.active_threads = 0;                               
 80040c0:	59 60 00 64 	sw (r11+100),r0                                
  aio_request_queue.idle_threads = 0;                                 
 80040c4:	59 60 00 68 	sw (r11+104),r0                                
  aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;              
                                                                      
  return result;                                                      
}                                                                     
 80040c8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80040cc:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80040d0:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80040d4:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80040d8:	37 9c 00 10 	addi sp,sp,16                                  
 80040dc:	c3 a0 00 00 	ret                                            
                                                                      
  result =                                                            
    pthread_attr_setdetachstate (&aio_request_queue.attr,             
                                 PTHREAD_CREATE_DETACHED);            
  if (result != 0)                                                    
    pthread_attr_destroy (&aio_request_queue.attr);                   
 80040e0:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
                                                                      
                                                                      
  result = pthread_mutex_init (&aio_request_queue.mutex, NULL);       
 80040e4:	78 0b 08 01 	mvhi r11,0x801                                 <== NOT EXECUTED
                                                                      
  result =                                                            
    pthread_attr_setdetachstate (&aio_request_queue.attr,             
                                 PTHREAD_CREATE_DETACHED);            
  if (result != 0)                                                    
    pthread_attr_destroy (&aio_request_queue.attr);                   
 80040e8:	f8 00 04 a1 	calli 800536c <pthread_attr_destroy>           <== NOT EXECUTED
                                                                      
                                                                      
  result = pthread_mutex_init (&aio_request_queue.mutex, NULL);       
 80040ec:	39 6b 87 f8 	ori r11,r11,0x87f8                             <== NOT EXECUTED
 80040f0:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80040f4:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 80040f8:	f8 00 03 c5 	calli 800500c <pthread_mutex_init>             <== NOT EXECUTED
  if (result != 0)                                                    
 80040fc:	44 20 ff da 	be r1,r0,8004064 <rtems_aio_init+0x70>         <== NOT EXECUTED
    pthread_attr_destroy (&aio_request_queue.attr);                   
 8004100:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8004104:	f8 00 04 9a 	calli 800536c <pthread_attr_destroy>           <== NOT EXECUTED
                                                                      
                                                                      
  result = pthread_cond_init (&aio_request_queue.new_req, NULL);      
 8004108:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 800410c:	38 21 87 fc 	ori r1,r1,0x87fc                               <== NOT EXECUTED
 8004110:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 8004114:	f8 00 02 86 	calli 8004b2c <pthread_cond_init>              <== NOT EXECUTED
 8004118:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
  if (result != 0) {                                                  
 800411c:	44 20 ff d8 	be r1,r0,800407c <rtems_aio_init+0x88>         <== NOT EXECUTED
    pthread_mutex_destroy (&aio_request_queue.mutex);                 
 8004120:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8004124:	f8 00 03 53 	calli 8004e70 <pthread_mutex_destroy>          <== NOT EXECUTED
    pthread_attr_destroy (&aio_request_queue.attr);                   
 8004128:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 800412c:	f8 00 04 90 	calli 800536c <pthread_attr_destroy>           <== NOT EXECUTED
 8004130:	e3 ff ff d3 	bi 800407c <rtems_aio_init+0x88>               <== NOT EXECUTED
                                                                      

080044f0 <rtems_aio_insert_prio>: * NONE */ void rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req) {
 80044f0:	37 9c ff fc 	addi sp,sp,-4                                  
 80044f4:	5b 9d 00 04 	sw (sp+4),ra                                   
  }                                                                   
                                                                      
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 80044f8:	28 23 00 00 	lw r3,(r1+0)                                   
 80044fc:	34 26 00 04 	addi r6,r1,4                                   
 *        NONE                                                        
 */                                                                   
                                                                      
void                                                                  
rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req)
{                                                                     
 8004500:	b8 40 38 00 	mv r7,r2                                       
  rtems_chain_node *node;                                             
                                                                      
  AIO_printf ("FD exists \n");                                        
  node = rtems_chain_first (chain);                                   
                                                                      
  if (rtems_chain_is_empty (chain)) {                                 
 8004504:	44 66 00 0d 	be r3,r6,8004538 <rtems_aio_insert_prio+0x48>  <== 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 &&                         
 8004508:	28 42 00 14 	lw r2,(r2+20)                                  
  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;     
 800450c:	28 61 00 14 	lw r1,(r3+20)                                  
                                                                      
    while (req->aiocbp->aio_reqprio > prio &&                         
 8004510:	28 45 00 10 	lw r5,(r2+16)                                  
 8004514:	28 21 00 10 	lw r1,(r1+16)                                  
 8004518:	4c 25 00 06 	bge r1,r5,8004530 <rtems_aio_insert_prio+0x40> <== ALWAYS TAKEN
  }                                                                   
                                                                      
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 800451c:	28 63 00 00 	lw r3,(r3+0)                                   
    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;       
 8004520:	28 61 00 14 	lw r1,(r3+20)                                  <== 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 &&                         
 8004524:	28 24 00 10 	lw r4,(r1+16)                                  <== NOT EXECUTED
 8004528:	4c 85 00 02 	bge r4,r5,8004530 <rtems_aio_insert_prio+0x40> <== NOT EXECUTED
 800452c:	5c 66 ff fc 	bne r3,r6,800451c <rtems_aio_insert_prio+0x2c> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void rtems_chain_insert(                         
  rtems_chain_node *after_node,                                       
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Insert( after_node, the_node );                              
 8004530:	28 61 00 04 	lw r1,(r3+4)                                   
 8004534:	b8 e0 10 00 	mv r2,r7                                       
 8004538:	f8 00 09 77 	calli 8006b14 <_Chain_Insert>                  
    }                                                                 
                                                                      
    rtems_chain_insert (node->previous, &req->next_prio);             
                                                                      
  }                                                                   
}                                                                     
 800453c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004540:	37 9c 00 04 	addi sp,sp,4                                   
 8004544:	c3 a0 00 00 	ret                                            
                                                                      

08004548 <rtems_aio_remove_fd>: * Output parameters: * NONE */ void rtems_aio_remove_fd (rtems_aio_request_chain *r_chain) {
 8004548:	37 9c ff f0 	addi sp,sp,-16                                 <== NOT EXECUTED
 800454c:	5b 8b 00 10 	sw (sp+16),r11                                 <== NOT EXECUTED
 8004550:	5b 8c 00 0c 	sw (sp+12),r12                                 <== NOT EXECUTED
 8004554:	5b 8d 00 08 	sw (sp+8),r13                                  <== NOT EXECUTED
 8004558:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  }                                                                   
                                                                      
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 800455c:	28 2b 00 08 	lw r11,(r1+8)                                  <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  Chain_Control *the_chain,                                           
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Tail(the_chain));                        
 8004560:	34 21 00 0c 	addi r1,r1,12                                  <== NOT EXECUTED
  rtems_chain_node *node;                                             
                                                                      
  chain = &r_chain->perfd;                                            
  node = rtems_chain_first (chain);                                   
                                                                      
  while (!rtems_chain_is_tail (chain, node))                          
 8004564:	45 61 00 14 	be r11,r1,80045b4 <rtems_aio_remove_fd+0x6c>   <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
 8004568:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800456c:	f8 00 09 4f 	calli 8006aa8 <_Chain_Extract>                 <== NOT EXECUTED
    {                                                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      req->aiocbp->error_code = ECANCELED;                            
 8004570:	29 61 00 14 	lw r1,(r11+20)                                 <== NOT EXECUTED
 8004574:	34 02 00 8c 	mvi r2,140                                     <== NOT EXECUTED
 8004578:	34 0d 00 8c 	mvi r13,140                                    <== NOT EXECUTED
 800457c:	58 22 00 2c 	sw (r1+44),r2                                  <== NOT EXECUTED
      req->aiocbp->return_value = -1;                                 
 8004580:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8004584:	58 22 00 30 	sw (r1+48),r2                                  <== NOT EXECUTED
      free (req);                                                     
 8004588:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800458c:	fb ff f7 67 	calli 8002328 <free>                           <== NOT EXECUTED
  while (!rtems_chain_is_tail (chain, node))                          
    {                                                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      req->aiocbp->error_code = ECANCELED;                            
      req->aiocbp->return_value = -1;                                 
 8004590:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
 8004594:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8004598:	f8 00 09 44 	calli 8006aa8 <_Chain_Extract>                 <== NOT EXECUTED
                                                                      
  while (!rtems_chain_is_tail (chain, node))                          
    {                                                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      req->aiocbp->error_code = ECANCELED;                            
 800459c:	29 62 00 14 	lw r2,(r11+20)                                 <== NOT EXECUTED
      req->aiocbp->return_value = -1;                                 
      free (req);                                                     
 80045a0:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
                                                                      
  while (!rtems_chain_is_tail (chain, node))                          
    {                                                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      req->aiocbp->error_code = ECANCELED;                            
 80045a4:	58 4d 00 2c 	sw (r2+44),r13                                 <== NOT EXECUTED
      req->aiocbp->return_value = -1;                                 
 80045a8:	58 4c 00 30 	sw (r2+48),r12                                 <== NOT EXECUTED
      free (req);                                                     
 80045ac:	fb ff f7 5f 	calli 8002328 <free>                           <== NOT EXECUTED
 80045b0:	e3 ff ff f9 	bi 8004594 <rtems_aio_remove_fd+0x4c>          <== NOT EXECUTED
    }                                                                 
}                                                                     
 80045b4:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80045b8:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 80045bc:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 80045c0:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 80045c4:	37 9c 00 10 	addi sp,sp,16                                  <== NOT EXECUTED
 80045c8:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

080045cc <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) {
 80045cc:	37 9c ff f8 	addi sp,sp,-8                                  <== NOT EXECUTED
 80045d0:	5b 8b 00 08 	sw (sp+8),r11                                  <== NOT EXECUTED
 80045d4:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  }                                                                   
                                                                      
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 80045d8:	28 2b 00 00 	lw r11,(r1+0)                                  <== NOT EXECUTED
 80045dc:	34 23 00 04 	addi r3,r1,4                                   <== NOT EXECUTED
    node = rtems_chain_next (node);                                   
    current = (rtems_aio_request *) node;                             
  }                                                                   
                                                                      
  if (rtems_chain_is_tail (chain, node))                              
    return AIO_NOTCANCELED;                                           
 80045e0:	34 01 00 01 	mvi r1,1                                       <== 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) {
 80045e4:	5d 63 00 04 	bne r11,r3,80045f4 <rtems_aio_remove_req+0x28> <== NOT EXECUTED
 80045e8:	e0 00 00 0f 	bi 8004624 <rtems_aio_remove_req+0x58>         <== NOT EXECUTED
  }                                                                   
                                                                      
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 80045ec:	29 6b 00 00 	lw r11,(r11+0)                                 <== 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) {
 80045f0:	45 63 00 11 	be r11,r3,8004634 <rtems_aio_remove_req+0x68>  <== NOT EXECUTED
 80045f4:	29 61 00 14 	lw r1,(r11+20)                                 <== NOT EXECUTED
 80045f8:	5c 22 ff fd 	bne r1,r2,80045ec <rtems_aio_remove_req+0x20>  <== NOT EXECUTED
 80045fc:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8004600:	f8 00 09 2a 	calli 8006aa8 <_Chain_Extract>                 <== NOT EXECUTED
  if (rtems_chain_is_tail (chain, node))                              
    return AIO_NOTCANCELED;                                           
  else                                                                
    {                                                                 
      rtems_chain_extract (node);                                     
      current->aiocbp->error_code = ECANCELED;                        
 8004604:	29 61 00 14 	lw r1,(r11+20)                                 <== NOT EXECUTED
 8004608:	34 02 00 8c 	mvi r2,140                                     <== NOT EXECUTED
 800460c:	58 22 00 2c 	sw (r1+44),r2                                  <== NOT EXECUTED
      current->aiocbp->return_value = -1;                             
 8004610:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8004614:	58 22 00 30 	sw (r1+48),r2                                  <== NOT EXECUTED
      free (current);                                                 
 8004618:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800461c:	fb ff f7 43 	calli 8002328 <free>                           <== NOT EXECUTED
    }                                                                 
                                                                      
  return AIO_CANCELED;                                                
 8004620:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
}                                                                     
 8004624:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8004628:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 800462c:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 8004630:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    node = rtems_chain_next (node);                                   
    current = (rtems_aio_request *) node;                             
  }                                                                   
                                                                      
  if (rtems_chain_is_tail (chain, node))                              
    return AIO_NOTCANCELED;                                           
 8004634:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
      current->aiocbp->return_value = -1;                             
      free (current);                                                 
    }                                                                 
                                                                      
  return AIO_CANCELED;                                                
}                                                                     
 8004638:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800463c:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8004640:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 8004644:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08003ab0 <rtems_chain_append_with_notification>: rtems_chain_control *chain, rtems_chain_node *node, rtems_id task, rtems_event_set events ) {
 8003ab0:	37 9c ff f4 	addi sp,sp,-12                                 
 8003ab4:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8003ab8:	5b 8c 00 08 	sw (sp+8),r12                                  
 8003abc:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003ac0:	b8 60 60 00 	mv r12,r3                                      
 8003ac4:	b8 80 58 00 	mv r11,r4                                      
RTEMS_INLINE_ROUTINE bool rtems_chain_append_with_empty_check(        
  rtems_chain_control *chain,                                         
  rtems_chain_node *node                                              
)                                                                     
{                                                                     
  return _Chain_Append_with_empty_check( chain, node );               
 8003ac8:	f8 00 01 a6 	calli 8004160 <_Chain_Append_with_empty_check> 
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
 8003acc:	34 05 00 00 	mvi r5,0                                       
  bool was_empty = rtems_chain_append_with_empty_check( chain, node );
                                                                      
  if ( was_empty ) {                                                  
 8003ad0:	44 20 00 05 	be r1,r0,8003ae4 <rtems_chain_append_with_notification+0x34><== NEVER TAKEN
    sc = rtems_event_send( task, events );                            
 8003ad4:	b9 80 08 00 	mv r1,r12                                      
 8003ad8:	b9 60 10 00 	mv r2,r11                                      
 8003adc:	f8 00 19 2c 	calli 8009f8c <rtems_event_send>               
 8003ae0:	b8 20 28 00 	mv r5,r1                                       
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 8003ae4:	b8 a0 08 00 	mv r1,r5                                       
 8003ae8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003aec:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8003af0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003af4:	37 9c 00 0c 	addi sp,sp,12                                  
 8003af8:	c3 a0 00 00 	ret                                            
                                                                      

08003b4c <rtems_chain_get_with_wait>: rtems_chain_control *chain, rtems_event_set events, rtems_interval timeout, rtems_chain_node **node_ptr ) {
 8003b4c:	37 9c ff e4 	addi sp,sp,-28                                 
 8003b50:	5b 8b 00 18 	sw (sp+24),r11                                 
 8003b54:	5b 8c 00 14 	sw (sp+20),r12                                 
 8003b58:	5b 8d 00 10 	sw (sp+16),r13                                 
 8003b5c:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8003b60:	5b 8f 00 08 	sw (sp+8),r15                                  
 8003b64:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003b68:	b8 20 70 00 	mv r14,r1                                      
 8003b6c:	b8 40 68 00 	mv r13,r2                                      
 8003b70:	b8 60 60 00 	mv r12,r3                                      
 8003b74:	b8 80 78 00 	mv r15,r4                                      
 */                                                                   
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(               
  rtems_chain_control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Get( the_chain );                                     
 8003b78:	b9 c0 08 00 	mv r1,r14                                      
 8003b7c:	f8 00 01 af 	calli 8004238 <_Chain_Get>                     
 8003b80:	b8 20 58 00 	mv r11,r1                                      
  while (                                                             
    sc == RTEMS_SUCCESSFUL                                            
      && (node = rtems_chain_get( chain )) == NULL                    
  ) {                                                                 
    rtems_event_set out;                                              
    sc = rtems_event_receive(                                         
 8003b84:	34 02 00 00 	mvi r2,0                                       
 8003b88:	b9 a0 08 00 	mv r1,r13                                      
 8003b8c:	b9 80 18 00 	mv r3,r12                                      
 8003b90:	37 84 00 1c 	addi r4,sp,28                                  
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_chain_node *node = NULL;                                      
                                                                      
  while (                                                             
    sc == RTEMS_SUCCESSFUL                                            
      && (node = rtems_chain_get( chain )) == NULL                    
 8003b94:	5d 60 00 0e 	bne r11,r0,8003bcc <rtems_chain_get_with_wait+0x80>
  ) {                                                                 
    rtems_event_set out;                                              
    sc = rtems_event_receive(                                         
 8003b98:	fb ff fd 9e 	calli 8003210 <rtems_event_receive>            
 8003b9c:	b8 20 28 00 	mv r5,r1                                       
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_chain_node *node = NULL;                                      
                                                                      
  while (                                                             
 8003ba0:	44 2b ff f6 	be r1,r11,8003b78 <rtems_chain_get_with_wait+0x2c><== NEVER TAKEN
  }                                                                   
                                                                      
  *node_ptr = node;                                                   
                                                                      
  return sc;                                                          
}                                                                     
 8003ba4:	b8 a0 08 00 	mv r1,r5                                       
      timeout,                                                        
      &out                                                            
    );                                                                
  }                                                                   
                                                                      
  *node_ptr = node;                                                   
 8003ba8:	59 eb 00 00 	sw (r15+0),r11                                 
                                                                      
  return sc;                                                          
}                                                                     
 8003bac:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003bb0:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003bb4:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003bb8:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003bbc:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8003bc0:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003bc4:	37 9c 00 1c 	addi sp,sp,28                                  
 8003bc8:	c3 a0 00 00 	ret                                            
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_chain_node *node = NULL;                                      
                                                                      
  while (                                                             
    sc == RTEMS_SUCCESSFUL                                            
      && (node = rtems_chain_get( chain )) == NULL                    
 8003bcc:	34 05 00 00 	mvi r5,0                                       
 8003bd0:	e3 ff ff f5 	bi 8003ba4 <rtems_chain_get_with_wait+0x58>    
                                                                      

08003bd4 <rtems_chain_prepend_with_notification>: rtems_chain_control *chain, rtems_chain_node *node, rtems_id task, rtems_event_set events ) {
 8003bd4:	37 9c ff f4 	addi sp,sp,-12                                 
 8003bd8:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8003bdc:	5b 8c 00 08 	sw (sp+8),r12                                  
 8003be0:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003be4:	b8 60 60 00 	mv r12,r3                                      
 8003be8:	b8 80 58 00 	mv r11,r4                                      
RTEMS_INLINE_ROUTINE bool rtems_chain_prepend_with_empty_check(       
  rtems_chain_control *chain,                                         
  rtems_chain_node *node                                              
)                                                                     
{                                                                     
  return _Chain_Prepend_with_empty_check( chain, node );              
 8003bec:	f8 00 01 af 	calli 80042a8 <_Chain_Prepend_with_empty_check>
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
 8003bf0:	34 05 00 00 	mvi r5,0                                       
  bool was_empty = rtems_chain_prepend_with_empty_check( chain, node );
                                                                      
  if (was_empty) {                                                    
 8003bf4:	44 20 00 05 	be r1,r0,8003c08 <rtems_chain_prepend_with_notification+0x34><== NEVER TAKEN
    sc = rtems_event_send( task, events );                            
 8003bf8:	b9 80 08 00 	mv r1,r12                                      
 8003bfc:	b9 60 10 00 	mv r2,r11                                      
 8003c00:	f8 00 18 e3 	calli 8009f8c <rtems_event_send>               
 8003c04:	b8 20 28 00 	mv r5,r1                                       
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 8003c08:	b8 a0 08 00 	mv r1,r5                                       
 8003c0c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003c10:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8003c14:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003c18:	37 9c 00 0c 	addi sp,sp,12                                  
 8003c1c:	c3 a0 00 00 	ret                                            
                                                                      

080102fc <rtems_clock_set_nanoseconds_extension>: * error code - if unsuccessful */ rtems_status_code rtems_clock_set_nanoseconds_extension( rtems_nanoseconds_extension_routine routine ) {
 80102fc:	b8 20 18 00 	mv r3,r1                                       
  if ( !routine )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
 8010300:	34 01 00 09 	mvi r1,9                                       
 */                                                                   
rtems_status_code rtems_clock_set_nanoseconds_extension(              
  rtems_nanoseconds_extension_routine routine                         
)                                                                     
{                                                                     
  if ( !routine )                                                     
 8010304:	44 60 00 05 	be r3,r0,8010318 <rtems_clock_set_nanoseconds_extension+0x1c><== ALWAYS TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  _Watchdog_Nanoseconds_since_tick_handler = routine;                 
 8010308:	78 02 08 04 	mvhi r2,0x804                                  
 801030c:	38 42 0e 2c 	ori r2,r2,0xe2c                                
 8010310:	58 43 00 00 	sw (r2+0),r3                                   
  return RTEMS_SUCCESSFUL;                                            
 8010314:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8010318:	c3 a0 00 00 	ret                                            
                                                                      

0800495c <rtems_io_register_driver>: 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 ) {
 800495c:	37 9c ff f8 	addi sp,sp,-8                                  
 8004960:	5b 8b 00 08 	sw (sp+8),r11                                  
 8004964:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
 8004968:	78 04 08 01 	mvhi r4,0x801                                  
 800496c:	38 84 ad f0 	ori r4,r4,0xadf0                               
 8004970:	28 85 00 08 	lw r5,(r4+8)                                   
  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;      
 8004974:	78 04 08 01 	mvhi r4,0x801                                  
 8004978:	38 84 b2 60 	ori r4,r4,0xb260                               
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                  
)                                                                     
{                                                                     
 800497c:	b8 20 58 00 	mv r11,r1                                      
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
 8004980:	28 86 00 00 	lw r6,(r4+0)                                   
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
    return RTEMS_CALLED_FROM_ISR;                                     
 8004984:	34 01 00 12 	mvi r1,18                                      
  rtems_device_major_number        *registered_major                  
)                                                                     
{                                                                     
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
 8004988:	5c a0 00 33 	bne r5,r0,8004a54 <rtems_io_register_driver+0xf8>
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( registered_major == NULL )                                     
    return RTEMS_INVALID_ADDRESS;                                     
 800498c:	34 01 00 09 	mvi r1,9                                       
  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 )                                     
 8004990:	44 65 00 31 	be r3,r5,8004a54 <rtems_io_register_driver+0xf8>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  /* Set it to an invalid value */                                    
  *registered_major = major_limit;                                    
 8004994:	58 66 00 00 	sw (r3+0),r6                                   
                                                                      
  if ( driver_table == NULL )                                         
 8004998:	44 40 00 2f 	be r2,r0,8004a54 <rtems_io_register_driver+0xf8>
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
 800499c:	28 45 00 00 	lw r5,(r2+0)                                   
 80049a0:	44 a0 00 42 	be r5,r0,8004aa8 <rtems_io_register_driver+0x14c>
                                                                      
  if ( rtems_io_is_empty_table( driver_table ) )                      
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( major >= major_limit )                                         
    return RTEMS_INVALID_NUMBER;                                      
 80049a4:	34 01 00 0a 	mvi r1,10                                      
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( rtems_io_is_empty_table( driver_table ) )                      
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( major >= major_limit )                                         
 80049a8:	51 66 00 2b 	bgeu r11,r6,8004a54 <rtems_io_register_driver+0xf8>
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 80049ac:	78 01 08 01 	mvhi r1,0x801                                  
 80049b0:	38 21 a9 20 	ori r1,r1,0xa920                               
 80049b4:	28 25 00 00 	lw r5,(r1+0)                                   
 80049b8:	34 a5 00 01 	addi r5,r5,1                                   
 80049bc:	58 25 00 00 	sw (r1+0),r5                                   
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( major == 0 ) {                                                 
 80049c0:	5d 60 00 29 	bne r11,r0,8004a64 <rtems_io_register_driver+0x108>
                                                                      
static rtems_status_code rtems_io_obtain_major_number(                
  rtems_device_major_number *major                                    
)                                                                     
{                                                                     
  rtems_device_major_number n = _IO_Number_of_drivers;                
 80049c4:	28 85 00 00 	lw r5,(r4+0)                                   
  rtems_device_major_number m = 0;                                    
                                                                      
  /* major is error checked by caller */                              
                                                                      
  for ( m = 0; m < n; ++m ) {                                         
 80049c8:	44 ab 00 3e 	be r5,r11,8004ac0 <rtems_io_register_driver+0x164><== NEVER TAKEN
 80049cc:	78 06 08 01 	mvhi r6,0x801                                  
 80049d0:	38 c6 b2 64 	ori r6,r6,0xb264                               
 80049d4:	28 c1 00 00 	lw r1,(r6+0)                                   
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
 80049d8:	28 24 00 00 	lw r4,(r1+0)                                   
 80049dc:	44 80 00 36 	be r4,r0,8004ab4 <rtems_io_register_driver+0x158>
  rtems_device_major_number n = _IO_Number_of_drivers;                
  rtems_device_major_number m = 0;                                    
                                                                      
  /* major is error checked by caller */                              
                                                                      
  for ( m = 0; m < n; ++m ) {                                         
 80049e0:	35 6b 00 01 	addi r11,r11,1                                 
 80049e4:	34 21 00 18 	addi r1,r1,24                                  
 80049e8:	54 ab ff fc 	bgu r5,r11,80049d8 <rtems_io_register_driver+0x7c>
    if ( rtems_io_is_empty_table( table ) )                           
      break;                                                          
  }                                                                   
                                                                      
  /* Assigns invalid value in case of failure */                      
  *major = m;                                                         
 80049ec:	58 6b 00 00 	sw (r3+0),r11                                  
                                                                      
  if ( m != n )                                                       
 80049f0:	44 ab 00 35 	be r5,r11,8004ac4 <rtems_io_register_driver+0x168>
 80049f4:	b5 6b 08 00 	add r1,r11,r11                                 
 80049f8:	b4 2b 08 00 	add r1,r1,r11                                  
 80049fc:	b4 21 08 00 	add r1,r1,r1                                   
 8004a00:	b4 21 08 00 	add r1,r1,r1                                   
 8004a04:	b4 21 08 00 	add r1,r1,r1                                   
    }                                                                 
                                                                      
    *registered_major = major;                                        
  }                                                                   
                                                                      
  _IO_Driver_address_table [major] = *driver_table;                   
 8004a08:	28 c3 00 00 	lw r3,(r6+0)                                   
 8004a0c:	28 44 00 00 	lw r4,(r2+0)                                   
 8004a10:	b4 61 08 00 	add r1,r3,r1                                   
 8004a14:	58 24 00 00 	sw (r1+0),r4                                   
 8004a18:	28 43 00 04 	lw r3,(r2+4)                                   
 8004a1c:	58 23 00 04 	sw (r1+4),r3                                   
 8004a20:	28 43 00 08 	lw r3,(r2+8)                                   
 8004a24:	58 23 00 08 	sw (r1+8),r3                                   
 8004a28:	28 43 00 0c 	lw r3,(r2+12)                                  
 8004a2c:	58 23 00 0c 	sw (r1+12),r3                                  
 8004a30:	28 43 00 10 	lw r3,(r2+16)                                  
 8004a34:	58 23 00 10 	sw (r1+16),r3                                  
 8004a38:	28 42 00 14 	lw r2,(r2+20)                                  
 8004a3c:	58 22 00 14 	sw (r1+20),r2                                  
                                                                      
  _Thread_Enable_dispatch();                                          
 8004a40:	f8 00 08 84 	calli 8006c50 <_Thread_Enable_dispatch>        
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
 8004a44:	b9 60 08 00 	mv r1,r11                                      
 8004a48:	34 02 00 00 	mvi r2,0                                       
 8004a4c:	34 03 00 00 	mvi r3,0                                       
 8004a50:	f8 00 28 66 	calli 800ebe8 <rtems_io_initialize>            
}                                                                     
 8004a54:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004a58:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8004a5c:	37 9c 00 08 	addi sp,sp,8                                   
 8004a60:	c3 a0 00 00 	ret                                            
      _Thread_Enable_dispatch();                                      
      return sc;                                                      
    }                                                                 
    major = *registered_major;                                        
  } else {                                                            
    rtems_driver_address_table *const table = _IO_Driver_address_table + major;
 8004a64:	b5 6b 08 00 	add r1,r11,r11                                 
 8004a68:	78 06 08 01 	mvhi r6,0x801                                  
 8004a6c:	b4 2b 08 00 	add r1,r1,r11                                  
 8004a70:	38 c6 b2 64 	ori r6,r6,0xb264                               
 8004a74:	b4 21 08 00 	add r1,r1,r1                                   
 8004a78:	28 c5 00 00 	lw r5,(r6+0)                                   
 8004a7c:	b4 21 08 00 	add r1,r1,r1                                   
 8004a80:	b4 21 08 00 	add r1,r1,r1                                   
 8004a84:	b4 a1 28 00 	add r5,r5,r1                                   
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
 8004a88:	28 a4 00 00 	lw r4,(r5+0)                                   
 8004a8c:	44 80 00 11 	be r4,r0,8004ad0 <rtems_io_register_driver+0x174>
    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();                                      
 8004a90:	f8 00 08 70 	calli 8006c50 <_Thread_Enable_dispatch>        
      return RTEMS_RESOURCE_IN_USE;                                   
 8004a94:	34 01 00 0c 	mvi r1,12                                      
  _IO_Driver_address_table [major] = *driver_table;                   
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
}                                                                     
 8004a98:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004a9c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8004aa0:	37 9c 00 08 	addi sp,sp,8                                   
 8004aa4:	c3 a0 00 00 	ret                                            
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
 8004aa8:	28 47 00 04 	lw r7,(r2+4)                                   
 8004aac:	5c e5 ff be 	bne r7,r5,80049a4 <rtems_io_register_driver+0x48>
 8004ab0:	e3 ff ff e9 	bi 8004a54 <rtems_io_register_driver+0xf8>     
 8004ab4:	28 27 00 04 	lw r7,(r1+4)                                   
 8004ab8:	5c e4 ff ca 	bne r7,r4,80049e0 <rtems_io_register_driver+0x84>
 8004abc:	e3 ff ff cc 	bi 80049ec <rtems_io_register_driver+0x90>     
    if ( rtems_io_is_empty_table( table ) )                           
      break;                                                          
  }                                                                   
                                                                      
  /* Assigns invalid value in case of failure */                      
  *major = m;                                                         
 8004ac0:	58 60 00 00 	sw (r3+0),r0                                   <== NOT EXECUTED
                                                                      
  if ( major == 0 ) {                                                 
    rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
                                                                      
    if ( sc != RTEMS_SUCCESSFUL ) {                                   
      _Thread_Enable_dispatch();                                      
 8004ac4:	f8 00 08 63 	calli 8006c50 <_Thread_Enable_dispatch>        
  *major = m;                                                         
                                                                      
  if ( m != n )                                                       
    return RTEMS_SUCCESSFUL;                                          
                                                                      
  return RTEMS_TOO_MANY;                                              
 8004ac8:	34 01 00 05 	mvi r1,5                                       
  if ( major == 0 ) {                                                 
    rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
                                                                      
    if ( sc != RTEMS_SUCCESSFUL ) {                                   
      _Thread_Enable_dispatch();                                      
      return sc;                                                      
 8004acc:	e3 ff ff e2 	bi 8004a54 <rtems_io_register_driver+0xf8>     
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
 8004ad0:	28 a5 00 04 	lw r5,(r5+4)                                   
 8004ad4:	5c a4 ff ef 	bne r5,r4,8004a90 <rtems_io_register_driver+0x134>
    if ( !rtems_io_is_empty_table( table ) ) {                        
      _Thread_Enable_dispatch();                                      
      return RTEMS_RESOURCE_IN_USE;                                   
    }                                                                 
                                                                      
    *registered_major = major;                                        
 8004ad8:	58 6b 00 00 	sw (r3+0),r11                                  
 8004adc:	e3 ff ff cb 	bi 8004a08 <rtems_io_register_driver+0xac>     
                                                                      

08004ae0 <rtems_io_unregister_driver>: */ rtems_status_code rtems_io_unregister_driver( rtems_device_major_number major ) {
 8004ae0:	37 9c ff fc 	addi sp,sp,-4                                  
 8004ae4:	5b 9d 00 04 	sw (sp+4),ra                                   
  if ( rtems_interrupt_is_in_progress() )                             
 8004ae8:	78 02 08 01 	mvhi r2,0x801                                  
 8004aec:	38 42 ad f0 	ori r2,r2,0xadf0                               
 8004af0:	28 43 00 08 	lw r3,(r2+8)                                   
    return RTEMS_CALLED_FROM_ISR;                                     
 8004af4:	34 02 00 12 	mvi r2,18                                      
                                                                      
rtems_status_code rtems_io_unregister_driver(                         
  rtems_device_major_number major                                     
)                                                                     
{                                                                     
  if ( rtems_interrupt_is_in_progress() )                             
 8004af8:	5c 60 00 19 	bne r3,r0,8004b5c <rtems_io_unregister_driver+0x7c><== NEVER TAKEN
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( major < _IO_Number_of_drivers ) {                              
 8004afc:	78 02 08 01 	mvhi r2,0x801                                  
 8004b00:	38 42 b2 60 	ori r2,r2,0xb260                               
 8004b04:	28 43 00 00 	lw r3,(r2+0)                                   
    _Thread_Enable_dispatch();                                        
                                                                      
    return RTEMS_SUCCESSFUL;                                          
  }                                                                   
                                                                      
  return RTEMS_UNSATISFIED;                                           
 8004b08:	34 02 00 0d 	mvi r2,13                                      
)                                                                     
{                                                                     
  if ( rtems_interrupt_is_in_progress() )                             
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( major < _IO_Number_of_drivers ) {                              
 8004b0c:	50 23 00 14 	bgeu r1,r3,8004b5c <rtems_io_unregister_driver+0x7c><== NEVER TAKEN
 8004b10:	78 02 08 01 	mvhi r2,0x801                                  
 8004b14:	38 42 a9 20 	ori r2,r2,0xa920                               
 8004b18:	28 43 00 00 	lw r3,(r2+0)                                   
 8004b1c:	34 63 00 01 	addi r3,r3,1                                   
 8004b20:	58 43 00 00 	sw (r2+0),r3                                   
    _Thread_Disable_dispatch();                                       
    memset(                                                           
 8004b24:	78 02 08 01 	mvhi r2,0x801                                  
      &_IO_Driver_address_table[major],                               
 8004b28:	b4 21 18 00 	add r3,r1,r1                                   
  if ( rtems_interrupt_is_in_progress() )                             
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( major < _IO_Number_of_drivers ) {                              
    _Thread_Disable_dispatch();                                       
    memset(                                                           
 8004b2c:	38 42 b2 64 	ori r2,r2,0xb264                               
      &_IO_Driver_address_table[major],                               
 8004b30:	b4 61 08 00 	add r1,r3,r1                                   
  if ( rtems_interrupt_is_in_progress() )                             
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( major < _IO_Number_of_drivers ) {                              
    _Thread_Disable_dispatch();                                       
    memset(                                                           
 8004b34:	28 44 00 00 	lw r4,(r2+0)                                   
      &_IO_Driver_address_table[major],                               
 8004b38:	b4 21 08 00 	add r1,r1,r1                                   
 8004b3c:	b4 21 08 00 	add r1,r1,r1                                   
 8004b40:	b4 21 08 00 	add r1,r1,r1                                   
  if ( rtems_interrupt_is_in_progress() )                             
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( major < _IO_Number_of_drivers ) {                              
    _Thread_Disable_dispatch();                                       
    memset(                                                           
 8004b44:	34 02 00 00 	mvi r2,0                                       
 8004b48:	34 03 00 18 	mvi r3,24                                      
 8004b4c:	b4 81 08 00 	add r1,r4,r1                                   
 8004b50:	f8 00 37 b8 	calli 8012a30 <memset>                         
      &_IO_Driver_address_table[major],                               
      0,                                                              
      sizeof( rtems_driver_address_table )                            
    );                                                                
    _Thread_Enable_dispatch();                                        
 8004b54:	f8 00 08 3f 	calli 8006c50 <_Thread_Enable_dispatch>        
                                                                      
    return RTEMS_SUCCESSFUL;                                          
 8004b58:	34 02 00 00 	mvi r2,0                                       
  }                                                                   
                                                                      
  return RTEMS_UNSATISFIED;                                           
}                                                                     
 8004b5c:	b8 40 08 00 	mv r1,r2                                       
 8004b60:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004b64:	37 9c 00 04 	addi sp,sp,4                                   
 8004b68:	c3 a0 00 00 	ret                                            
                                                                      

0800636c <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) {
 800636c:	37 9c ff e4 	addi sp,sp,-28                                 
 8006370:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8006374:	5b 8c 00 18 	sw (sp+24),r12                                 
 8006378:	5b 8d 00 14 	sw (sp+20),r13                                 
 800637c:	5b 8e 00 10 	sw (sp+16),r14                                 
 8006380:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8006384:	5b 90 00 08 	sw (sp+8),r16                                  
 8006388:	5b 9d 00 04 	sw (sp+4),ra                                   
 800638c:	b8 20 78 00 	mv r15,r1                                      
  uint32_t             i;                                             
  uint32_t             api_index;                                     
  Thread_Control      *the_thread;                                    
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
 8006390:	44 20 00 19 	be r1,r0,80063f4 <rtems_iterate_over_all_threads+0x88><== NEVER TAKEN
#endif                                                                
                                                                      
#include <rtems/system.h>                                             
#include <rtems/score/thread.h>                                       
                                                                      
void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) 
 8006394:	78 01 08 02 	mvhi r1,0x802                                  
  uint32_t             i;                                             
  uint32_t             api_index;                                     
  Thread_Control      *the_thread;                                    
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
 8006398:	78 0e 08 02 	mvhi r14,0x802                                 
#endif                                                                
                                                                      
#include <rtems/system.h>                                             
#include <rtems/score/thread.h>                                       
                                                                      
void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) 
 800639c:	38 21 a6 34 	ori r1,r1,0xa634                               
  uint32_t             i;                                             
  uint32_t             api_index;                                     
  Thread_Control      *the_thread;                                    
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
 80063a0:	39 ce a6 38 	ori r14,r14,0xa638                             
#endif                                                                
                                                                      
#include <rtems/system.h>                                             
#include <rtems/score/thread.h>                                       
                                                                      
void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) 
 80063a4:	34 30 00 10 	addi r16,r1,16                                 
    #if !defined(RTEMS_POSIX_API) || defined(RTEMS_DEBUG)             
      if ( !_Objects_Information_table[ api_index ] )                 
        continue;                                                     
    #endif                                                            
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
 80063a8:	29 c1 00 00 	lw r1,(r14+0)                                  
 80063ac:	28 2d 00 04 	lw r13,(r1+4)                                  
    if ( !information )                                               
 80063b0:	45 a0 00 0f 	be r13,r0,80063ec <rtems_iterate_over_all_threads+0x80>
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
 80063b4:	2d a3 00 10 	lhu r3,(r13+16)                                
 80063b8:	44 60 00 0d 	be r3,r0,80063ec <rtems_iterate_over_all_threads+0x80>
 80063bc:	34 0c 00 04 	mvi r12,4                                      
 80063c0:	34 0b 00 01 	mvi r11,1                                      
      the_thread = (Thread_Control *)information->local_table[ i ];   
 80063c4:	29 a2 00 1c 	lw r2,(r13+28)                                 
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( !information )                                               
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
 80063c8:	35 6b 00 01 	addi r11,r11,1                                 
      the_thread = (Thread_Control *)information->local_table[ i ];   
 80063cc:	b4 4c 10 00 	add r2,r2,r12                                  
 80063d0:	28 42 00 00 	lw r2,(r2+0)                                   
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( !information )                                               
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
 80063d4:	35 8c 00 04 	addi r12,r12,4                                 
      the_thread = (Thread_Control *)information->local_table[ i ];   
                                                                      
      if ( !the_thread )                                              
	continue;                                                            
                                                                      
      (*routine)(the_thread);                                         
 80063d8:	b8 40 08 00 	mv r1,r2                                       
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
      the_thread = (Thread_Control *)information->local_table[ i ];   
                                                                      
      if ( !the_thread )                                              
 80063dc:	44 40 00 03 	be r2,r0,80063e8 <rtems_iterate_over_all_threads+0x7c>
	continue;                                                            
                                                                      
      (*routine)(the_thread);                                         
 80063e0:	d9 e0 00 00 	call r15                                       
 80063e4:	2d a3 00 10 	lhu r3,(r13+16)                                
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( !information )                                               
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
 80063e8:	50 6b ff f7 	bgeu r3,r11,80063c4 <rtems_iterate_over_all_threads+0x58>
 80063ec:	35 ce 00 04 	addi r14,r14,4                                 
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
    return;                                                           
                                                                      
  for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
 80063f0:	5d d0 ff ee 	bne r14,r16,80063a8 <rtems_iterate_over_all_threads+0x3c>
                                                                      
      (*routine)(the_thread);                                         
    }                                                                 
  }                                                                   
                                                                      
}                                                                     
 80063f4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80063f8:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 80063fc:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8006400:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8006404:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8006408:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 800640c:	2b 90 00 08 	lw r16,(sp+8)                                  
 8006410:	37 9c 00 1c 	addi sp,sp,28                                  
 8006414:	c3 a0 00 00 	ret                                            
                                                                      

08004de0 <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 ) {
 8004de0:	37 9c ff f8 	addi sp,sp,-8                                  
 8004de4:	5b 8b 00 08 	sw (sp+8),r11                                  
 8004de8:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004dec:	b8 60 58 00 	mv r11,r3                                      
                                                                      
  /*                                                                  
   * Validate parameters and look up information structure.           
   */                                                                 
  if ( !info )                                                        
    return RTEMS_INVALID_ADDRESS;                                     
 8004df0:	34 03 00 09 	mvi r3,9                                       
  int                  i;                                             
                                                                      
  /*                                                                  
   * Validate parameters and look up information structure.           
   */                                                                 
  if ( !info )                                                        
 8004df4:	45 60 00 1e 	be r11,r0,8004e6c <rtems_object_get_class_information+0x8c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  obj_info = _Objects_Get_information( the_api, the_class );          
 8004df8:	20 42 ff ff 	andi r2,r2,0xffff                              
 8004dfc:	f8 00 07 c4 	calli 8006d0c <_Objects_Get_information>       
 8004e00:	b8 20 10 00 	mv r2,r1                                       
  if ( !obj_info )                                                    
    return RTEMS_INVALID_NUMBER;                                      
 8004e04:	34 03 00 0a 	mvi r3,10                                      
   */                                                                 
  if ( !info )                                                        
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  obj_info = _Objects_Get_information( the_api, the_class );          
  if ( !obj_info )                                                    
 8004e08:	44 20 00 19 	be r1,r0,8004e6c <rtems_object_get_class_information+0x8c>
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  /*                                                                  
   * Return information about this object class to the user.          
   */                                                                 
  info->minimum_id  = obj_info->minimum_id;                           
 8004e0c:	28 24 00 08 	lw r4,(r1+8)                                   
  info->maximum_id  = obj_info->maximum_id;                           
 8004e10:	28 23 00 0c 	lw r3,(r1+12)                                  
  info->auto_extend = obj_info->auto_extend;                          
  info->maximum     = obj_info->maximum;                              
 8004e14:	2c 46 00 10 	lhu r6,(r2+16)                                 
  /*                                                                  
   * 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;                          
 8004e18:	40 21 00 12 	lbu r1,(r1+18)                                 
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  /*                                                                  
   * Return information about this object class to the user.          
   */                                                                 
  info->minimum_id  = obj_info->minimum_id;                           
 8004e1c:	59 64 00 00 	sw (r11+0),r4                                  
  info->maximum_id  = obj_info->maximum_id;                           
 8004e20:	59 63 00 04 	sw (r11+4),r3                                  
  info->auto_extend = obj_info->auto_extend;                          
 8004e24:	31 61 00 0c 	sb (r11+12),r1                                 
  info->maximum     = obj_info->maximum;                              
 8004e28:	59 66 00 08 	sw (r11+8),r6                                  
                                                                      
  for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )               
 8004e2c:	34 04 00 00 	mvi r4,0                                       
 8004e30:	44 c0 00 0d 	be r6,r0,8004e64 <rtems_object_get_class_information+0x84><== NEVER TAKEN
 8004e34:	28 43 00 1c 	lw r3,(r2+28)                                  
 8004e38:	34 01 00 01 	mvi r1,1                                       
 8004e3c:	34 02 00 01 	mvi r2,1                                       
    if ( !obj_info->local_table[i] )                                  
 8004e40:	b4 21 08 00 	add r1,r1,r1                                   
 8004e44:	b4 21 08 00 	add r1,r1,r1                                   
 8004e48:	b4 61 08 00 	add r1,r3,r1                                   
 8004e4c:	28 25 00 00 	lw r5,(r1+0)                                   
  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++ )               
 8004e50:	34 42 00 01 	addi r2,r2,1                                   
 8004e54:	b8 40 08 00 	mv r1,r2                                       
    if ( !obj_info->local_table[i] )                                  
      unallocated++;                                                  
 8004e58:	64 a5 00 00 	cmpei r5,r5,0                                  
 8004e5c:	b4 85 20 00 	add r4,r4,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++ )               
 8004e60:	50 c2 ff f8 	bgeu r6,r2,8004e40 <rtems_object_get_class_information+0x60>
    if ( !obj_info->local_table[i] )                                  
      unallocated++;                                                  
                                                                      
  info->unallocated = unallocated;                                    
 8004e64:	59 64 00 10 	sw (r11+16),r4                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 8004e68:	34 03 00 00 	mvi r3,0                                       
}                                                                     
 8004e6c:	b8 60 08 00 	mv r1,r3                                       
 8004e70:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004e74:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8004e78:	37 9c 00 08 	addi sp,sp,8                                   
 8004e7c:	c3 a0 00 00 	ret                                            
                                                                      

080113bc <rtems_partition_create>: uint32_t length, uint32_t buffer_size, rtems_attribute attribute_set, rtems_id *id ) {
 80113bc:	37 9c ff d8 	addi sp,sp,-40                                 
 80113c0:	5b 8b 00 18 	sw (sp+24),r11                                 
 80113c4:	5b 8c 00 14 	sw (sp+20),r12                                 
 80113c8:	5b 8d 00 10 	sw (sp+16),r13                                 
 80113cc:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80113d0:	5b 8f 00 08 	sw (sp+8),r15                                  
 80113d4:	5b 9d 00 04 	sw (sp+4),ra                                   
  register Partition_Control *the_partition;                          
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
    return RTEMS_INVALID_NAME;                                        
 80113d8:	34 07 00 03 	mvi r7,3                                       
  uint32_t         length,                                            
  uint32_t         buffer_size,                                       
  rtems_attribute  attribute_set,                                     
  rtems_id        *id                                                 
)                                                                     
{                                                                     
 80113dc:	b8 20 60 00 	mv r12,r1                                      
 80113e0:	b8 40 58 00 	mv r11,r2                                      
  register Partition_Control *the_partition;                          
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
 80113e4:	44 20 00 3e 	be r1,r0,80114dc <rtems_partition_create+0x120>
    return RTEMS_INVALID_NAME;                                        
                                                                      
  if ( !starting_address )                                            
    return RTEMS_INVALID_ADDRESS;                                     
 80113e8:	34 07 00 09 	mvi r7,9                                       
  register Partition_Control *the_partition;                          
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
    return RTEMS_INVALID_NAME;                                        
                                                                      
  if ( !starting_address )                                            
 80113ec:	44 40 00 3c 	be r2,r0,80114dc <rtems_partition_create+0x120>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !id )                                                          
 80113f0:	44 c0 00 3b 	be r6,r0,80114dc <rtems_partition_create+0x120><== NEVER TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( length == 0 || buffer_size == 0 || length < buffer_size ||     
 80113f4:	64 82 00 00 	cmpei r2,r4,0                                  
 80113f8:	64 61 00 00 	cmpei r1,r3,0                                  
         !_Partition_Is_buffer_size_aligned( buffer_size ) )          
    return RTEMS_INVALID_SIZE;                                        
 80113fc:	34 07 00 08 	mvi r7,8                                       
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !id )                                                          
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( length == 0 || buffer_size == 0 || length < buffer_size ||     
 8011400:	b8 41 08 00 	or r1,r2,r1                                    
 8011404:	5c 20 00 36 	bne r1,r0,80114dc <rtems_partition_create+0x120>
 8011408:	54 83 00 35 	bgu r4,r3,80114dc <rtems_partition_create+0x120>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_size_aligned (         
   uint32_t   buffer_size                                             
)                                                                     
{                                                                     
  return ((buffer_size % CPU_PARTITION_ALIGNMENT) == 0);              
 801140c:	20 81 00 07 	andi r1,r4,0x7                                 
 8011410:	5c 20 00 33 	bne r1,r0,80114dc <rtems_partition_create+0x120>
)                                                                     
{                                                                     
#if (CPU_ALIGNMENT == 0)                                              
    return true;                                                      
#else                                                                 
    return (((uintptr_t)address % CPU_ALIGNMENT) == 0);               
 8011414:	21 6f 00 07 	andi r15,r11,0x7                               
         !_Partition_Is_buffer_size_aligned( buffer_size ) )          
    return RTEMS_INVALID_SIZE;                                        
                                                                      
  if ( !_Addresses_Is_aligned( starting_address ) )                   
     return RTEMS_INVALID_ADDRESS;                                    
 8011418:	34 07 00 09 	mvi r7,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 ) )                   
 801141c:	5d e1 00 30 	bne r15,r1,80114dc <rtems_partition_create+0x120>
 8011420:	78 01 08 04 	mvhi r1,0x804                                  
 8011424:	38 21 0c b0 	ori r1,r1,0xcb0                                
 8011428:	28 22 00 00 	lw r2,(r1+0)                                   
 801142c:	34 42 00 01 	addi r2,r2,1                                   
 8011430:	58 22 00 00 	sw (r1+0),r2                                   
 *  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 );
 8011434:	78 0e 08 04 	mvhi r14,0x804                                 
 8011438:	39 ce 0b 08 	ori r14,r14,0xb08                              
 801143c:	b9 c0 08 00 	mv r1,r14                                      
 8011440:	5b 83 00 28 	sw (sp+40),r3                                  
 8011444:	5b 84 00 20 	sw (sp+32),r4                                  
 8011448:	5b 85 00 24 	sw (sp+36),r5                                  
 801144c:	5b 86 00 1c 	sw (sp+28),r6                                  
 8011450:	f8 00 16 f8 	calli 8017030 <_Objects_Allocate>              
 8011454:	b8 20 68 00 	mv r13,r1                                      
                                                                      
  _Thread_Disable_dispatch();               /* prevents deletion */   
                                                                      
  the_partition = _Partition_Allocate();                              
                                                                      
  if ( !the_partition ) {                                             
 8011458:	2b 83 00 28 	lw r3,(sp+40)                                  
 801145c:	2b 84 00 20 	lw r4,(sp+32)                                  
 8011460:	2b 85 00 24 	lw r5,(sp+36)                                  
 8011464:	2b 86 00 1c 	lw r6,(sp+28)                                  
 8011468:	44 2f 00 26 	be r1,r15,8011500 <rtems_partition_create+0x144>
#endif                                                                
                                                                      
  the_partition->starting_address      = starting_address;            
  the_partition->length                = length;                      
  the_partition->buffer_size           = buffer_size;                 
  the_partition->attribute_set         = attribute_set;               
 801146c:	58 25 00 1c 	sw (r1+28),r5                                  
    return RTEMS_TOO_MANY;                                            
  }                                                                   
#endif                                                                
                                                                      
  the_partition->starting_address      = starting_address;            
  the_partition->length                = length;                      
 8011470:	58 23 00 14 	sw (r1+20),r3                                  
  the_partition->buffer_size           = buffer_size;                 
 8011474:	58 24 00 18 	sw (r1+24),r4                                  
    _Thread_Enable_dispatch();                                        
    return RTEMS_TOO_MANY;                                            
  }                                                                   
#endif                                                                
                                                                      
  the_partition->starting_address      = starting_address;            
 8011478:	58 2b 00 10 	sw (r1+16),r11                                 
  the_partition->length                = length;                      
  the_partition->buffer_size           = buffer_size;                 
  the_partition->attribute_set         = attribute_set;               
  the_partition->number_of_used_blocks = 0;                           
 801147c:	58 20 00 20 	sw (r1+32),r0                                  
                                                                      
  _Chain_Initialize( &the_partition->Memory, starting_address,        
                        length / buffer_size, buffer_size );          
 8011480:	b8 80 10 00 	mv r2,r4                                       
  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,        
 8011484:	34 2f 00 24 	addi r15,r1,36                                 
                        length / buffer_size, buffer_size );          
 8011488:	b8 60 08 00 	mv r1,r3                                       
 801148c:	5b 86 00 1c 	sw (sp+28),r6                                  
 8011490:	5b 84 00 20 	sw (sp+32),r4                                  
 8011494:	f8 00 7f 08 	calli 80310b4 <__udivsi3>                      
  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,        
 8011498:	2b 84 00 20 	lw r4,(sp+32)                                  
                        length / buffer_size, buffer_size );          
 801149c:	b8 20 18 00 	mv r3,r1                                       
  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,        
 80114a0:	b9 60 10 00 	mv r2,r11                                      
 80114a4:	b9 e0 08 00 	mv r1,r15                                      
 80114a8:	f8 00 0f 9c 	calli 8015318 <_Chain_Initialize>              
  Objects_Name         name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 80114ac:	29 a2 00 08 	lw r2,(r13+8)                                  
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 80114b0:	29 c3 00 1c 	lw r3,(r14+28)                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  Objects_Name         name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 80114b4:	20 41 ff ff 	andi r1,r2,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 80114b8:	b4 21 08 00 	add r1,r1,r1                                   
 80114bc:	b4 21 08 00 	add r1,r1,r1                                   
 80114c0:	b4 61 08 00 	add r1,r3,r1                                   
 80114c4:	58 2d 00 00 	sw (r1+0),r13                                  
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  the_object->name = name;                                            
 80114c8:	59 ac 00 0c 	sw (r13+12),r12                                
    &_Partition_Information,                                          
    &the_partition->Object,                                           
    (Objects_Name) name                                               
  );                                                                  
                                                                      
  *id = the_partition->Object.id;                                     
 80114cc:	2b 86 00 1c 	lw r6,(sp+28)                                  
 80114d0:	58 c2 00 00 	sw (r6+0),r2                                   
      name,                                                           
      0                  /* Not used */                               
    );                                                                
#endif                                                                
                                                                      
  _Thread_Enable_dispatch();                                          
 80114d4:	f8 00 1c 48 	calli 80185f4 <_Thread_Enable_dispatch>        
  return RTEMS_SUCCESSFUL;                                            
 80114d8:	34 07 00 00 	mvi r7,0                                       
}                                                                     
 80114dc:	b8 e0 08 00 	mv r1,r7                                       
 80114e0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80114e4:	2b 8b 00 18 	lw r11,(sp+24)                                 
 80114e8:	2b 8c 00 14 	lw r12,(sp+20)                                 
 80114ec:	2b 8d 00 10 	lw r13,(sp+16)                                 
 80114f0:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 80114f4:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80114f8:	37 9c 00 28 	addi sp,sp,40                                  
 80114fc:	c3 a0 00 00 	ret                                            
  _Thread_Disable_dispatch();               /* prevents deletion */   
                                                                      
  the_partition = _Partition_Allocate();                              
                                                                      
  if ( !the_partition ) {                                             
    _Thread_Enable_dispatch();                                        
 8011500:	f8 00 1c 3d 	calli 80185f4 <_Thread_Enable_dispatch>        
    return RTEMS_TOO_MANY;                                            
 8011504:	34 07 00 05 	mvi r7,5                                       
 8011508:	e3 ff ff f5 	bi 80114dc <rtems_partition_create+0x120>      
                                                                      

080042e8 <rtems_rate_monotonic_period>: rtems_status_code rtems_rate_monotonic_period( rtems_id id, rtems_interval length ) {
 80042e8:	37 9c ff e0 	addi sp,sp,-32                                 
 80042ec:	5b 8b 00 18 	sw (sp+24),r11                                 
 80042f0:	5b 8c 00 14 	sw (sp+20),r12                                 
 80042f4:	5b 8d 00 10 	sw (sp+16),r13                                 
 80042f8:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80042fc:	5b 8f 00 08 	sw (sp+8),r15                                  
 8004300:	5b 9d 00 04 	sw (sp+4),ra                                   
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (Rate_monotonic_Control *)                                   
    _Objects_Get( &_Rate_monotonic_Information, id, location );       
 8004304:	78 03 08 02 	mvhi r3,0x802                                  
 8004308:	b8 20 68 00 	mv r13,r1                                      
 800430c:	b8 60 08 00 	mv r1,r3                                       
 8004310:	b8 40 70 00 	mv r14,r2                                      
 8004314:	38 21 18 90 	ori r1,r1,0x1890                               
 8004318:	b9 a0 10 00 	mv r2,r13                                      
 800431c:	37 83 00 20 	addi r3,sp,32                                  
 8004320:	f8 00 0a 8d 	calli 8006d54 <_Objects_Get>                   
 8004324:	b8 20 58 00 	mv r11,r1                                      
  rtems_rate_monotonic_period_states   local_state;                   
  ISR_Level                            level;                         
                                                                      
  the_period = _Rate_monotonic_Get( id, &location );                  
                                                                      
  switch ( location ) {                                               
 8004328:	2b 81 00 20 	lw r1,(sp+32)                                  
 800432c:	44 20 00 0a 	be r1,r0,8004354 <rtems_rate_monotonic_period+0x6c>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 8004330:	34 01 00 04 	mvi r1,4                                       
}                                                                     
 8004334:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004338:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800433c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8004340:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8004344:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8004348:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800434c:	37 9c 00 20 	addi sp,sp,32                                  
 8004350:	c3 a0 00 00 	ret                                            
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (                      
  const Thread_Control *the_thread                                    
)                                                                     
{                                                                     
  return ( the_thread == _Thread_Executing );                         
 8004354:	78 0c 08 02 	mvhi r12,0x802                                 
 8004358:	39 8c 1e 88 	ori r12,r12,0x1e88                             
                                                                      
  the_period = _Rate_monotonic_Get( id, &location );                  
                                                                      
  switch ( location ) {                                               
    case OBJECTS_LOCAL:                                               
      if ( !_Thread_Is_executing( the_period->owner ) ) {             
 800435c:	29 62 00 40 	lw r2,(r11+64)                                 
 8004360:	29 81 00 0c 	lw r1,(r12+12)                                 
 8004364:	44 41 00 0b 	be r2,r1,8004390 <rtems_rate_monotonic_period+0xa8>
        _Thread_Enable_dispatch();                                    
 8004368:	f8 00 0d f5 	calli 8007b3c <_Thread_Enable_dispatch>        
        return RTEMS_NOT_OWNER_OF_RESOURCE;                           
 800436c:	34 01 00 17 	mvi r1,23                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8004370:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004374:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8004378:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800437c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8004380:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8004384:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8004388:	37 9c 00 20 	addi sp,sp,32                                  
 800438c:	c3 a0 00 00 	ret                                            
      if ( !_Thread_Is_executing( the_period->owner ) ) {             
        _Thread_Enable_dispatch();                                    
        return RTEMS_NOT_OWNER_OF_RESOURCE;                           
      }                                                               
                                                                      
      if ( length == RTEMS_PERIOD_STATUS ) {                          
 8004390:	5d c0 00 0f 	bne r14,r0,80043cc <rtems_rate_monotonic_period+0xe4>
        switch ( the_period->state ) {                                
 8004394:	29 62 00 38 	lw r2,(r11+56)                                 
 8004398:	34 03 00 04 	mvi r3,4                                       
 800439c:	34 01 00 00 	mvi r1,0                                       
 80043a0:	54 43 00 07 	bgu r2,r3,80043bc <rtems_rate_monotonic_period+0xd4><== NEVER TAKEN
 80043a4:	78 01 08 01 	mvhi r1,0x801                                  
 80043a8:	b4 42 10 00 	add r2,r2,r2                                   
 80043ac:	38 21 ef 80 	ori r1,r1,0xef80                               
 80043b0:	b4 42 10 00 	add r2,r2,r2                                   
 80043b4:	b4 22 10 00 	add r2,r1,r2                                   
 80043b8:	28 41 00 00 	lw r1,(r2+0)                                   
        );                                                            
                                                                      
        the_period->next_length = length;                             
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
 80043bc:	5b 81 00 1c 	sw (sp+28),r1                                  
 80043c0:	f8 00 0d df 	calli 8007b3c <_Thread_Enable_dispatch>        
        return RTEMS_SUCCESSFUL;                                      
 80043c4:	2b 81 00 1c 	lw r1,(sp+28)                                  
 80043c8:	e3 ff ff db 	bi 8004334 <rtems_rate_monotonic_period+0x4c>  
        }                                                             
        _Thread_Enable_dispatch();                                    
        return( return_value );                                       
      }                                                               
                                                                      
      _ISR_Disable( level );                                          
 80043cc:	90 00 78 00 	rcsr r15,IE                                    
 80043d0:	34 01 ff fe 	mvi r1,-2                                      
 80043d4:	a1 e1 08 00 	and r1,r15,r1                                  
 80043d8:	d0 01 00 00 	wcsr IE,r1                                     
      if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {           
 80043dc:	29 62 00 38 	lw r2,(r11+56)                                 
 80043e0:	44 40 00 15 	be r2,r0,8004434 <rtems_rate_monotonic_period+0x14c>
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
                                                                      
      if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {             
 80043e4:	34 01 00 02 	mvi r1,2                                       
 80043e8:	44 41 00 26 	be r2,r1,8004480 <rtems_rate_monotonic_period+0x198>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 80043ec:	34 01 00 04 	mvi r1,4                                       
                                                                      
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
                                                                      
      if ( the_period->state == RATE_MONOTONIC_EXPIRED ) {            
 80043f0:	5c 41 ff d1 	bne r2,r1,8004334 <rtems_rate_monotonic_period+0x4c><== NEVER TAKEN
        /*                                                            
         *  Update statistics from the concluding period              
         */                                                           
        _Rate_monotonic_Update_statistics( the_period );              
 80043f4:	b9 60 08 00 	mv r1,r11                                      
 80043f8:	fb ff ff 72 	calli 80041c0 <_Rate_monotonic_Update_statistics>
                                                                      
        _ISR_Enable( level );                                         
 80043fc:	d0 0f 00 00 	wcsr IE,r15                                    
                                                                      
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
 8004400:	34 03 00 02 	mvi r3,2                                       
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8004404:	78 01 08 02 	mvhi r1,0x802                                  
 8004408:	38 21 1a 98 	ori r1,r1,0x1a98                               
 800440c:	35 62 00 10 	addi r2,r11,16                                 
 8004410:	59 63 00 38 	sw (r11+56),r3                                 
        the_period->next_length = length;                             
 8004414:	59 6e 00 3c 	sw (r11+60),r14                                
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8004418:	59 6e 00 1c 	sw (r11+28),r14                                
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 800441c:	f8 00 13 41 	calli 8009120 <_Watchdog_Insert>               
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
        return RTEMS_TIMEOUT;                                         
 8004420:	34 01 00 06 	mvi r1,6                                       
                                                                      
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
        the_period->next_length = length;                             
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
 8004424:	5b 81 00 1c 	sw (sp+28),r1                                  
 8004428:	f8 00 0d c5 	calli 8007b3c <_Thread_Enable_dispatch>        
        return RTEMS_TIMEOUT;                                         
 800442c:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8004430:	e3 ff ff c1 	bi 8004334 <rtems_rate_monotonic_period+0x4c>  
        return( return_value );                                       
      }                                                               
                                                                      
      _ISR_Disable( level );                                          
      if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {           
        _ISR_Enable( level );                                         
 8004434:	d0 0f 00 00 	wcsr IE,r15                                    
                                                                      
        /*                                                            
         *  Baseline statistics information for the beginning of a period.
         */                                                           
        _Rate_monotonic_Initiate_statistics( the_period );            
 8004438:	b9 60 08 00 	mv r1,r11                                      
 800443c:	fb ff ff 36 	calli 8004114 <_Rate_monotonic_Initiate_statistics>
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
 8004440:	78 03 08 00 	mvhi r3,0x800                                  
 8004444:	38 63 48 78 	ori r3,r3,0x4878                               
                                                                      
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
 8004448:	34 04 00 02 	mvi r4,2                                       
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 800444c:	78 01 08 02 	mvhi r1,0x802                                  
 8004450:	38 21 1a 98 	ori r1,r1,0x1a98                               
 8004454:	35 62 00 10 	addi r2,r11,16                                 
 8004458:	59 64 00 38 	sw (r11+56),r4                                 
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 800445c:	59 60 00 18 	sw (r11+24),r0                                 
  the_watchdog->routine   = routine;                                  
 8004460:	59 63 00 2c 	sw (r11+44),r3                                 
  the_watchdog->id        = id;                                       
 8004464:	59 6d 00 30 	sw (r11+48),r13                                
  the_watchdog->user_data = user_data;                                
 8004468:	59 60 00 34 	sw (r11+52),r0                                 
          _Rate_monotonic_Timeout,                                    
          id,                                                         
          NULL                                                        
        );                                                            
                                                                      
        the_period->next_length = length;                             
 800446c:	59 6e 00 3c 	sw (r11+60),r14                                
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8004470:	59 6e 00 1c 	sw (r11+28),r14                                
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8004474:	f8 00 13 2b 	calli 8009120 <_Watchdog_Insert>               
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
 8004478:	34 01 00 00 	mvi r1,0                                       
 800447c:	e3 ff ff d0 	bi 80043bc <rtems_rate_monotonic_period+0xd4>  
                                                                      
      if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {             
        /*                                                            
         *  Update statistics from the concluding period.             
         */                                                           
        _Rate_monotonic_Update_statistics( the_period );              
 8004480:	b9 60 08 00 	mv r1,r11                                      
 8004484:	fb ff ff 4f 	calli 80041c0 <_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;         
 8004488:	34 01 00 01 	mvi r1,1                                       
 800448c:	59 61 00 38 	sw (r11+56),r1                                 
        the_period->next_length = length;                             
 8004490:	59 6e 00 3c 	sw (r11+60),r14                                
                                                                      
        _ISR_Enable( level );                                         
 8004494:	d0 0f 00 00 	wcsr IE,r15                                    
                                                                      
        _Thread_Executing->Wait.id = the_period->Object.id;           
 8004498:	29 83 00 0c 	lw r3,(r12+12)                                 
 800449c:	29 64 00 08 	lw r4,(r11+8)                                  
        _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
 80044a0:	34 02 40 00 	mvi r2,16384                                   
 80044a4:	b8 60 08 00 	mv r1,r3                                       
        the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING;         
        the_period->next_length = length;                             
                                                                      
        _ISR_Enable( level );                                         
                                                                      
        _Thread_Executing->Wait.id = the_period->Object.id;           
 80044a8:	58 64 00 20 	sw (r3+32),r4                                  
        _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
 80044ac:	f8 00 10 3e 	calli 80085a4 <_Thread_Set_state>              
                                                                      
        /*                                                            
         *  Did the watchdog timer expire while we were actually blocking
         *  on it?                                                    
         */                                                           
        _ISR_Disable( level );                                        
 80044b0:	90 00 08 00 	rcsr r1,IE                                     
 80044b4:	34 02 ff fe 	mvi r2,-2                                      
 80044b8:	a0 22 10 00 	and r2,r1,r2                                   
 80044bc:	d0 02 00 00 	wcsr IE,r2                                     
          local_state = the_period->state;                            
          the_period->state = RATE_MONOTONIC_ACTIVE;                  
 80044c0:	34 03 00 02 	mvi r3,2                                       
        /*                                                            
         *  Did the watchdog timer expire while we were actually blocking
         *  on it?                                                    
         */                                                           
        _ISR_Disable( level );                                        
          local_state = the_period->state;                            
 80044c4:	29 62 00 38 	lw r2,(r11+56)                                 
          the_period->state = RATE_MONOTONIC_ACTIVE;                  
 80044c8:	59 63 00 38 	sw (r11+56),r3                                 
        _ISR_Enable( level );                                         
 80044cc:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
        /*                                                            
         *  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 )   
 80044d0:	34 01 00 03 	mvi r1,3                                       
 80044d4:	44 41 00 04 	be r2,r1,80044e4 <rtems_rate_monotonic_period+0x1fc><== NEVER TAKEN
          _Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
                                                                      
        _Thread_Enable_dispatch();                                    
 80044d8:	f8 00 0d 99 	calli 8007b3c <_Thread_Enable_dispatch>        
        return RTEMS_SUCCESSFUL;                                      
 80044dc:	34 01 00 00 	mvi r1,0                                       
 80044e0:	e3 ff ff 95 	bi 8004334 <rtems_rate_monotonic_period+0x4c>  
        /*                                                            
         *  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 );
 80044e4:	29 81 00 0c 	lw r1,(r12+12)                                 <== NOT EXECUTED
 80044e8:	34 02 40 00 	mvi r2,16384                                   <== NOT EXECUTED
 80044ec:	f8 00 0c b9 	calli 80077d0 <_Thread_Clear_state>            <== NOT EXECUTED
 80044f0:	e3 ff ff fa 	bi 80044d8 <rtems_rate_monotonic_period+0x1f0> <== NOT EXECUTED
                                                                      

080044f4 <rtems_rate_monotonic_report_statistics_with_plugin>: */ void rtems_rate_monotonic_report_statistics_with_plugin( void *context, rtems_printk_plugin_t print ) {
 80044f4:	37 9c ff 5c 	addi sp,sp,-164                                
 80044f8:	5b 8b 00 44 	sw (sp+68),r11                                 
 80044fc:	5b 8c 00 40 	sw (sp+64),r12                                 
 8004500:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8004504:	5b 8e 00 38 	sw (sp+56),r14                                 
 8004508:	5b 8f 00 34 	sw (sp+52),r15                                 
 800450c:	5b 90 00 30 	sw (sp+48),r16                                 
 8004510:	5b 91 00 2c 	sw (sp+44),r17                                 
 8004514:	5b 92 00 28 	sw (sp+40),r18                                 
 8004518:	5b 93 00 24 	sw (sp+36),r19                                 
 800451c:	5b 94 00 20 	sw (sp+32),r20                                 
 8004520:	5b 95 00 1c 	sw (sp+28),r21                                 
 8004524:	5b 96 00 18 	sw (sp+24),r22                                 
 8004528:	5b 97 00 14 	sw (sp+20),r23                                 
 800452c:	5b 98 00 10 	sw (sp+16),r24                                 
 8004530:	5b 99 00 0c 	sw (sp+12),r25                                 
 8004534:	5b 9b 00 08 	sw (sp+8),fp                                   
 8004538:	5b 9d 00 04 	sw (sp+4),ra                                   
 800453c:	b8 40 68 00 	mv r13,r2                                      
 8004540:	b8 20 78 00 	mv r15,r1                                      
  rtems_id                               id;                          
  rtems_rate_monotonic_period_statistics the_stats;                   
  rtems_rate_monotonic_period_status     the_status;                  
  char                                   name[5];                     
                                                                      
  if ( !print )                                                       
 8004544:	44 40 00 2f 	be r2,r0,8004600 <rtems_rate_monotonic_report_statistics_with_plugin+0x10c><== NEVER TAKEN
    return;                                                           
                                                                      
  (*print)( context, "Period information by period\n" );              
 8004548:	78 02 08 01 	mvhi r2,0x801                                  
 800454c:	38 42 ef 94 	ori r2,r2,0xef94                               
 8004550:	d9 a0 00 00 	call r13                                       
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    (*print)( context, "--- CPU times are in seconds ---\n" );        
 8004554:	78 02 08 01 	mvhi r2,0x801                                  
 8004558:	38 42 ef b4 	ori r2,r2,0xefb4                               
 800455c:	b9 e0 08 00 	mv r1,r15                                      
 8004560:	d9 a0 00 00 	call r13                                       
    (*print)( context, "--- Wall times are in seconds ---\n" );       
 8004564:	78 02 08 01 	mvhi r2,0x801                                  
 8004568:	38 42 ef d8 	ori r2,r2,0xefd8                               
 800456c:	b9 e0 08 00 	mv r1,r15                                      
 8004570:	d9 a0 00 00 	call r13                                       
  Be sure to test the various cases.                                  
  (*print)( context,"\                                                
1234567890123456789012345678901234567890123456789012345678901234567890123456789\
\n");                                                                 
*/                                                                    
  (*print)( context, "   ID     OWNER COUNT MISSED     "              
 8004574:	78 02 08 01 	mvhi r2,0x801                                  
 8004578:	38 42 ef fc 	ori r2,r2,0xeffc                               
 800457c:	b9 e0 08 00 	mv r1,r15                                      
 8004580:	d9 a0 00 00 	call r13                                       
       #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                     
          "          "                                                
       #endif                                                         
          "   WALL TIME\n"                                            
  );                                                                  
  (*print)( context, "                               "                
 8004584:	78 02 08 01 	mvhi r2,0x801                                  
                                                                      
  /*                                                                  
   * 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 ;                   
 8004588:	78 0c 08 02 	mvhi r12,0x802                                 
       #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                     
          "          "                                                
       #endif                                                         
          "   WALL TIME\n"                                            
  );                                                                  
  (*print)( context, "                               "                
 800458c:	b9 e0 08 00 	mv r1,r15                                      
 8004590:	38 42 f0 48 	ori r2,r2,0xf048                               
                                                                      
  /*                                                                  
   * 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 ;                   
 8004594:	39 8c 18 90 	ori r12,r12,0x1890                             
       #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                     
          "          "                                                
       #endif                                                         
          "   WALL TIME\n"                                            
  );                                                                  
  (*print)( context, "                               "                
 8004598:	d9 a0 00 00 	call r13                                       
                                                                      
  /*                                                                  
   * 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 ;                   
 800459c:	29 81 00 0c 	lw r1,(r12+12)                                 
 80045a0:	29 8b 00 08 	lw r11,(r12+8)                                 
 80045a4:	55 61 00 17 	bgu r11,r1,8004600 <rtems_rate_monotonic_report_statistics_with_plugin+0x10c><== 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,                                                
 80045a8:	78 12 08 01 	mvhi r18,0x801                                 
      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,                                              
 80045ac:	78 15 08 01 	mvhi r21,0x801                                 
      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,                                              
 80045b0:	78 14 08 01 	mvhi r20,0x801                                 
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
      (*print)( context, "\n" );                                      
 80045b4:	78 11 08 01 	mvhi r17,0x801                                 
 80045b8:	37 90 00 48 	addi r16,sp,72                                 
    #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 );      
 80045bc:	37 98 00 80 	addi r24,sp,128                                
    #endif                                                            
                                                                      
    rtems_object_get_name( the_status.owner, sizeof(name), name );    
 80045c0:	37 93 00 a0 	addi r19,sp,160                                
                                                                      
    /*                                                                
     *  Print part of report line that is not dependent on granularity
     */                                                               
    (*print)( context,                                                
 80045c4:	3a 52 f0 94 	ori r18,r18,0xf094                             
    {                                                                 
    #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                        
      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;         
 80045c8:	37 97 00 60 	addi r23,sp,96                                 
                                                                      
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
 80045cc:	37 96 00 98 	addi r22,sp,152                                
      (*print)( context,                                              
 80045d0:	3a b5 f0 ac 	ori r21,r21,0xf0ac                             
    {                                                                 
    #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                        
      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;       
 80045d4:	37 9b 00 78 	addi fp,sp,120                                 
                                                                      
      _Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average);
      (*print)( context,                                              
 80045d8:	3a 94 f0 cc 	ori r20,r20,0xf0cc                             
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
      (*print)( context, "\n" );                                      
 80045dc:	3a 31 e5 d0 	ori r17,r17,0xe5d0                             
   * 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++ ) {                                                      
    status = rtems_rate_monotonic_get_statistics( id, &the_stats );   
 80045e0:	b9 60 08 00 	mv r1,r11                                      
 80045e4:	ba 00 10 00 	mv r2,r16                                      
 80045e8:	f8 00 1e 63 	calli 800bf74 <rtems_rate_monotonic_get_statistics>
 80045ec:	b8 20 70 00 	mv r14,r1                                      
    if ( status != RTEMS_SUCCESSFUL )                                 
 80045f0:	44 20 00 17 	be r1,r0,800464c <rtems_rate_monotonic_report_statistics_with_plugin+0x158>
                                                                      
  /*                                                                  
   * 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 ;                   
 80045f4:	29 85 00 0c 	lw r5,(r12+12)                                 
        id <= _Rate_monotonic_Information.maximum_id ;                
        id++ ) {                                                      
 80045f8:	35 6b 00 01 	addi r11,r11,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 ;                   
 80045fc:	50 ab ff f9 	bgeu r5,r11,80045e0 <rtems_rate_monotonic_report_statistics_with_plugin+0xec>
        the_stats.min_wall_time, the_stats.max_wall_time, ival_wall, fval_wall
      );                                                              
    #endif                                                            
    }                                                                 
  }                                                                   
}                                                                     
 8004600:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004604:	2b 8b 00 44 	lw r11,(sp+68)                                 
 8004608:	2b 8c 00 40 	lw r12,(sp+64)                                 
 800460c:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 8004610:	2b 8e 00 38 	lw r14,(sp+56)                                 
 8004614:	2b 8f 00 34 	lw r15,(sp+52)                                 
 8004618:	2b 90 00 30 	lw r16,(sp+48)                                 
 800461c:	2b 91 00 2c 	lw r17,(sp+44)                                 
 8004620:	2b 92 00 28 	lw r18,(sp+40)                                 
 8004624:	2b 93 00 24 	lw r19,(sp+36)                                 
 8004628:	2b 94 00 20 	lw r20,(sp+32)                                 
 800462c:	2b 95 00 1c 	lw r21,(sp+28)                                 
 8004630:	2b 96 00 18 	lw r22,(sp+24)                                 
 8004634:	2b 97 00 14 	lw r23,(sp+20)                                 
 8004638:	2b 98 00 10 	lw r24,(sp+16)                                 
 800463c:	2b 99 00 0c 	lw r25,(sp+12)                                 
 8004640:	2b 9b 00 08 	lw fp,(sp+8)                                   
 8004644:	37 9c 00 a4 	addi sp,sp,164                                 
 8004648:	c3 a0 00 00 	ret                                            
    #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 );      
 800464c:	bb 00 10 00 	mv r2,r24                                      
 8004650:	b9 60 08 00 	mv r1,r11                                      
 8004654:	f8 00 1e 88 	calli 800c074 <rtems_rate_monotonic_get_status>
    #endif                                                            
                                                                      
    rtems_object_get_name( the_status.owner, sizeof(name), name );    
 8004658:	2b 81 00 80 	lw r1,(sp+128)                                 
 800465c:	ba 60 18 00 	mv r3,r19                                      
 8004660:	34 02 00 05 	mvi r2,5                                       
 8004664:	f8 00 00 ba 	calli 800494c <rtems_object_get_name>          
                                                                      
    /*                                                                
     *  Print part of report line that is not dependent on granularity
     */                                                               
    (*print)( context,                                                
 8004668:	2b 85 00 48 	lw r5,(sp+72)                                  
 800466c:	2b 86 00 4c 	lw r6,(sp+76)                                  
 8004670:	ba 40 10 00 	mv r2,r18                                      
 8004674:	b9 60 18 00 	mv r3,r11                                      
 8004678:	b9 e0 08 00 	mv r1,r15                                      
 800467c:	ba 60 20 00 	mv r4,r19                                      
 8004680:	d9 a0 00 00 	call r13                                       
    );                                                                
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
 8004684:	2b 85 00 48 	lw r5,(sp+72)                                  
      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 );
 8004688:	ba c0 18 00 	mv r3,r22                                      
 800468c:	ba e0 08 00 	mv r1,r23                                      
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
      (*print)( context, "\n" );                                      
 8004690:	ba 20 10 00 	mv r2,r17                                      
    );                                                                
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
 8004694:	5c ae 00 04 	bne r5,r14,80046a4 <rtems_rate_monotonic_report_statistics_with_plugin+0x1b0>
      (*print)( context, "\n" );                                      
 8004698:	b9 e0 08 00 	mv r1,r15                                      
 800469c:	d9 a0 00 00 	call r13                                       
      continue;                                                       
 80046a0:	e3 ff ff d5 	bi 80045f4 <rtems_rate_monotonic_report_statistics_with_plugin+0x100>
      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 );
 80046a4:	b8 a0 10 00 	mv r2,r5                                       
 80046a8:	f8 00 10 b7 	calli 8008984 <_Timespec_Divide_by_integer>    
      (*print)( context,                                              
 80046ac:	2b 81 00 54 	lw r1,(sp+84)                                  
 80046b0:	34 02 03 e8 	mvi r2,1000                                    
 80046b4:	f8 00 62 ac 	calli 801d164 <__divsi3>                       
 80046b8:	b8 20 c8 00 	mv r25,r1                                      
 80046bc:	2b 81 00 5c 	lw r1,(sp+92)                                  
 80046c0:	34 02 03 e8 	mvi r2,1000                                    
 80046c4:	f8 00 62 a8 	calli 801d164 <__divsi3>                       
 80046c8:	b8 20 70 00 	mv r14,r1                                      
 80046cc:	2b 81 00 9c 	lw r1,(sp+156)                                 
 80046d0:	34 02 03 e8 	mvi r2,1000                                    
 80046d4:	f8 00 62 a4 	calli 801d164 <__divsi3>                       
 80046d8:	2b 85 00 58 	lw r5,(sp+88)                                  
 80046dc:	2b 87 00 98 	lw r7,(sp+152)                                 
 80046e0:	2b 83 00 50 	lw r3,(sp+80)                                  
 80046e4:	b8 20 40 00 	mv r8,r1                                       
 80046e8:	bb 20 20 00 	mv r4,r25                                      
 80046ec:	b9 c0 30 00 	mv r6,r14                                      
 80046f0:	ba a0 10 00 	mv r2,r21                                      
 80046f4:	b9 e0 08 00 	mv r1,r15                                      
 80046f8:	d9 a0 00 00 	call r13                                       
      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);
 80046fc:	2b 82 00 48 	lw r2,(sp+72)                                  
 8004700:	ba c0 18 00 	mv r3,r22                                      
 8004704:	bb 60 08 00 	mv r1,fp                                       
 8004708:	f8 00 10 9f 	calli 8008984 <_Timespec_Divide_by_integer>    
      (*print)( context,                                              
 800470c:	2b 81 00 6c 	lw r1,(sp+108)                                 
 8004710:	34 02 03 e8 	mvi r2,1000                                    
 8004714:	f8 00 62 94 	calli 801d164 <__divsi3>                       
 8004718:	b8 20 c8 00 	mv r25,r1                                      
 800471c:	2b 81 00 74 	lw r1,(sp+116)                                 
 8004720:	34 02 03 e8 	mvi r2,1000                                    
 8004724:	f8 00 62 90 	calli 801d164 <__divsi3>                       
 8004728:	b8 20 70 00 	mv r14,r1                                      
 800472c:	2b 81 00 9c 	lw r1,(sp+156)                                 
 8004730:	34 02 03 e8 	mvi r2,1000                                    
 8004734:	f8 00 62 8c 	calli 801d164 <__divsi3>                       
 8004738:	2b 83 00 68 	lw r3,(sp+104)                                 
 800473c:	2b 85 00 70 	lw r5,(sp+112)                                 
 8004740:	2b 87 00 98 	lw r7,(sp+152)                                 
 8004744:	b8 20 40 00 	mv r8,r1                                       
 8004748:	ba 80 10 00 	mv r2,r20                                      
 800474c:	b9 e0 08 00 	mv r1,r15                                      
 8004750:	bb 20 20 00 	mv r4,r25                                      
 8004754:	b9 c0 30 00 	mv r6,r14                                      
 8004758:	d9 a0 00 00 	call r13                                       
 800475c:	e3 ff ff a6 	bi 80045f4 <rtems_rate_monotonic_report_statistics_with_plugin+0x100>
                                                                      

08004784 <rtems_rate_monotonic_reset_all_statistics>: /* * rtems_rate_monotonic_reset_all_statistics */ void rtems_rate_monotonic_reset_all_statistics( void ) {
 8004784:	37 9c ff f4 	addi sp,sp,-12                                 
 8004788:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800478c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8004790:	5b 9d 00 04 	sw (sp+4),ra                                   
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 8004794:	78 01 08 02 	mvhi r1,0x802                                  
 8004798:	38 21 19 b8 	ori r1,r1,0x19b8                               
 800479c:	28 22 00 00 	lw r2,(r1+0)                                   
 80047a0:	34 42 00 01 	addi r2,r2,1                                   
 80047a4:	58 22 00 00 	sw (r1+0),r2                                   
                                                                      
    /*                                                                
     * 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 ;                 
 80047a8:	78 0c 08 02 	mvhi r12,0x802                                 
 80047ac:	39 8c 18 90 	ori r12,r12,0x1890                             
 80047b0:	29 8b 00 08 	lw r11,(r12+8)                                 
 80047b4:	29 81 00 0c 	lw r1,(r12+12)                                 
 80047b8:	55 61 00 06 	bgu r11,r1,80047d0 <rtems_rate_monotonic_reset_all_statistics+0x4c><== NEVER TAKEN
          id <= _Rate_monotonic_Information.maximum_id ;              
          id++ ) {                                                    
      (void) rtems_rate_monotonic_reset_statistics( id );             
 80047bc:	b9 60 08 00 	mv r1,r11                                      
 80047c0:	f8 00 00 0a 	calli 80047e8 <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 ;                 
 80047c4:	29 81 00 0c 	lw r1,(r12+12)                                 
          id <= _Rate_monotonic_Information.maximum_id ;              
          id++ ) {                                                    
 80047c8:	35 6b 00 01 	addi r11,r11,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 ;                 
 80047cc:	50 2b ff fc 	bgeu r1,r11,80047bc <rtems_rate_monotonic_reset_all_statistics+0x38>
    }                                                                 
                                                                      
  /*                                                                  
   *  Done so exit thread dispatching disabled critical section.      
   */                                                                 
  _Thread_Enable_dispatch();                                          
 80047d0:	f8 00 0c db 	calli 8007b3c <_Thread_Enable_dispatch>        
}                                                                     
 80047d4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80047d8:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80047dc:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80047e0:	37 9c 00 0c 	addi sp,sp,12                                  
 80047e4:	c3 a0 00 00 	ret                                            
                                                                      

08012fa4 <rtems_signal_send>: rtems_status_code rtems_signal_send( rtems_id id, rtems_signal_set signal_set ) {
 8012fa4:	37 9c ff f4 	addi sp,sp,-12                                 
 8012fa8:	5b 8b 00 08 	sw (sp+8),r11                                  
 8012fac:	5b 9d 00 04 	sw (sp+4),ra                                   
  Objects_Locations        location;                                  
  RTEMS_API_Control       *api;                                       
  ASR_Information         *asr;                                       
                                                                      
  if ( !signal_set )                                                  
    return RTEMS_INVALID_NUMBER;                                      
 8012fb0:	34 03 00 0a 	mvi r3,10                                      
                                                                      
rtems_status_code rtems_signal_send(                                  
  rtems_id          id,                                               
  rtems_signal_set  signal_set                                        
)                                                                     
{                                                                     
 8012fb4:	b8 40 58 00 	mv r11,r2                                      
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
  RTEMS_API_Control       *api;                                       
  ASR_Information         *asr;                                       
                                                                      
  if ( !signal_set )                                                  
 8012fb8:	5c 40 00 06 	bne r2,r0,8012fd0 <rtems_signal_send+0x2c>     
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8012fbc:	b8 60 08 00 	mv r1,r3                                       
 8012fc0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8012fc4:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8012fc8:	37 9c 00 0c 	addi sp,sp,12                                  
 8012fcc:	c3 a0 00 00 	ret                                            
  ASR_Information         *asr;                                       
                                                                      
  if ( !signal_set )                                                  
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 8012fd0:	37 82 00 0c 	addi r2,sp,12                                  
 8012fd4:	f8 00 15 95 	calli 8018628 <_Thread_Get>                    
  switch ( location ) {                                               
 8012fd8:	2b 83 00 0c 	lw r3,(sp+12)                                  
 8012fdc:	44 60 00 07 	be r3,r0,8012ff8 <rtems_signal_send+0x54>      
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 8012fe0:	34 03 00 04 	mvi r3,4                                       
}                                                                     
 8012fe4:	b8 60 08 00 	mv r1,r3                                       
 8012fe8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8012fec:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8012ff0:	37 9c 00 0c 	addi sp,sp,12                                  
 8012ff4:	c3 a0 00 00 	ret                                            
                                                                      
  the_thread = _Thread_Get( id, &location );                          
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      api = the_thread->API_Extensions[ THREAD_API_RTEMS ];           
 8012ff8:	28 22 01 1c 	lw r2,(r1+284)                                 
      asr = &api->Signal;                                             
                                                                      
      if ( ! _ASR_Is_null_handler( asr->handler ) ) {                 
 8012ffc:	28 44 00 0c 	lw r4,(r2+12)                                  
 8013000:	44 83 00 23 	be r4,r3,801308c <rtems_signal_send+0xe8>      
        if ( asr->is_enabled ) {                                      
 8013004:	40 43 00 08 	lbu r3,(r2+8)                                  
 8013008:	44 60 00 12 	be r3,r0,8013050 <rtems_signal_send+0xac>      
  rtems_signal_set *signal_set                                        
)                                                                     
{                                                                     
  ISR_Level              _level;                                      
                                                                      
  _ISR_Disable( _level );                                             
 801300c:	90 00 18 00 	rcsr r3,IE                                     
 8013010:	34 04 ff fe 	mvi r4,-2                                      
 8013014:	a0 64 20 00 	and r4,r3,r4                                   
 8013018:	d0 04 00 00 	wcsr IE,r4                                     
    *signal_set |= signals;                                           
 801301c:	28 44 00 14 	lw r4,(r2+20)                                  
 8013020:	b8 8b 58 00 	or r11,r4,r11                                  
 8013024:	58 4b 00 14 	sw (r2+20),r11                                 
  _ISR_Enable( _level );                                              
 8013028:	d0 03 00 00 	wcsr IE,r3                                     
          _ASR_Post_signals( signal_set, &asr->signals_posted );      
                                                                      
          if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
 801302c:	78 02 08 04 	mvhi r2,0x804                                  
 8013030:	38 42 11 88 	ori r2,r2,0x1188                               
 8013034:	28 43 00 08 	lw r3,(r2+8)                                   
 8013038:	44 60 00 0e 	be r3,r0,8013070 <rtems_signal_send+0xcc>      
 801303c:	28 43 00 0c 	lw r3,(r2+12)                                  
 8013040:	5c 23 00 0c 	bne r1,r3,8013070 <rtems_signal_send+0xcc>     <== NEVER TAKEN
            _Thread_Dispatch_necessary = true;                        
 8013044:	34 01 00 01 	mvi r1,1                                       
 8013048:	30 41 00 18 	sb (r2+24),r1                                  
 801304c:	e0 00 00 09 	bi 8013070 <rtems_signal_send+0xcc>            
  rtems_signal_set *signal_set                                        
)                                                                     
{                                                                     
  ISR_Level              _level;                                      
                                                                      
  _ISR_Disable( _level );                                             
 8013050:	90 00 08 00 	rcsr r1,IE                                     
 8013054:	34 03 ff fe 	mvi r3,-2                                      
 8013058:	a0 23 18 00 	and r3,r1,r3                                   
 801305c:	d0 03 00 00 	wcsr IE,r3                                     
    *signal_set |= signals;                                           
 8013060:	28 43 00 18 	lw r3,(r2+24)                                  
 8013064:	b8 6b 58 00 	or r11,r3,r11                                  
 8013068:	58 4b 00 18 	sw (r2+24),r11                                 
  _ISR_Enable( _level );                                              
 801306c:	d0 01 00 00 	wcsr IE,r1                                     
        } else {                                                      
          _ASR_Post_signals( signal_set, &asr->signals_pending );     
        }                                                             
        _Thread_Enable_dispatch();                                    
 8013070:	f8 00 15 61 	calli 80185f4 <_Thread_Enable_dispatch>        
        return RTEMS_SUCCESSFUL;                                      
 8013074:	34 03 00 00 	mvi r3,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8013078:	b8 60 08 00 	mv r1,r3                                       
 801307c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8013080:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8013084:	37 9c 00 0c 	addi sp,sp,12                                  
 8013088:	c3 a0 00 00 	ret                                            
          _ASR_Post_signals( signal_set, &asr->signals_pending );     
        }                                                             
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
      _Thread_Enable_dispatch();                                      
 801308c:	f8 00 15 5a 	calli 80185f4 <_Thread_Enable_dispatch>        
      return RTEMS_NOT_DEFINED;                                       
 8013090:	34 03 00 0b 	mvi r3,11                                      
 8013094:	e3 ff ff ca 	bi 8012fbc <rtems_signal_send+0x18>            
                                                                      

0800c744 <rtems_task_mode>: rtems_status_code rtems_task_mode( rtems_mode mode_set, rtems_mode mask, rtems_mode *previous_mode_set ) {
 800c744:	37 9c ff dc 	addi sp,sp,-36                                 
 800c748:	5b 8b 00 24 	sw (sp+36),r11                                 
 800c74c:	5b 8c 00 20 	sw (sp+32),r12                                 
 800c750:	5b 8d 00 1c 	sw (sp+28),r13                                 
 800c754:	5b 8e 00 18 	sw (sp+24),r14                                 
 800c758:	5b 8f 00 14 	sw (sp+20),r15                                 
 800c75c:	5b 90 00 10 	sw (sp+16),r16                                 
 800c760:	5b 91 00 0c 	sw (sp+12),r17                                 
 800c764:	5b 92 00 08 	sw (sp+8),r18                                  
 800c768:	5b 9d 00 04 	sw (sp+4),ra                                   
 800c76c:	b8 40 70 00 	mv r14,r2                                      
 800c770:	b8 60 88 00 	mv r17,r3                                      
 800c774:	b8 20 80 00 	mv r16,r1                                      
  bool                is_asr_enabled = false;                         
  bool                needs_asr_dispatching = false;                  
  rtems_mode          old_mode;                                       
                                                                      
  if ( !previous_mode_set )                                           
    return RTEMS_INVALID_ADDRESS;                                     
 800c778:	34 02 00 09 	mvi r2,9                                       
  ASR_Information    *asr;                                            
  bool                is_asr_enabled = false;                         
  bool                needs_asr_dispatching = false;                  
  rtems_mode          old_mode;                                       
                                                                      
  if ( !previous_mode_set )                                           
 800c77c:	44 60 00 46 	be r3,r0,800c894 <rtems_task_mode+0x150>       
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  executing     = _Thread_Executing;                                  
 800c780:	78 0f 08 01 	mvhi r15,0x801                                 
 800c784:	39 ef 4d 78 	ori r15,r15,0x4d78                             
 800c788:	29 eb 00 0c 	lw r11,(r15+12)                                
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
  asr = &api->Signal;                                                 
                                                                      
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
 800c78c:	41 6d 00 74 	lbu r13,(r11+116)                              
                                                                      
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
 800c790:	29 61 00 7c 	lw r1,(r11+124)                                
                                                                      
  if ( !previous_mode_set )                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  executing     = _Thread_Executing;                                  
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
 800c794:	29 6c 01 1c 	lw r12,(r11+284)                               
  asr = &api->Signal;                                                 
                                                                      
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
 800c798:	65 ad 00 00 	cmpei r13,r13,0                                
 800c79c:	b5 ad 20 00 	add r4,r13,r13                                 
 800c7a0:	b4 84 20 00 	add r4,r4,r4                                   
 800c7a4:	b4 84 20 00 	add r4,r4,r4                                   
 800c7a8:	b4 84 20 00 	add r4,r4,r4                                   
 800c7ac:	b4 84 20 00 	add r4,r4,r4                                   
 800c7b0:	b4 84 20 00 	add r4,r4,r4                                   
 800c7b4:	b4 84 20 00 	add r4,r4,r4                                   
 800c7b8:	b4 84 68 00 	add r13,r4,r4                                  
                                                                      
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
 800c7bc:	5c 20 00 42 	bne r1,r0,800c8c4 <rtems_task_mode+0x180>      
    old_mode |= RTEMS_NO_TIMESLICE;                                   
  else                                                                
    old_mode |= RTEMS_TIMESLICE;                                      
                                                                      
  old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;           
 800c7c0:	41 92 00 08 	lbu r18,(r12+8)                                
  old_mode |= _ISR_Get_level();                                       
 800c7c4:	fb ff ea 6a 	calli 800716c <_CPU_ISR_Get_level>             
  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;           
 800c7c8:	66 52 00 00 	cmpei r18,r18,0                                
 800c7cc:	c8 12 90 00 	sub r18,r0,r18                                 
 800c7d0:	22 52 04 00 	andi r18,r18,0x400                             
 800c7d4:	ba 41 08 00 	or r1,r18,r1                                   
  old_mode |= _ISR_Get_level();                                       
 800c7d8:	b8 2d 68 00 	or r13,r1,r13                                  
                                                                      
  *previous_mode_set = old_mode;                                      
 800c7dc:	5a 2d 00 00 	sw (r17+0),r13                                 
                                                                      
  /*                                                                  
   *  These are generic thread scheduling characteristics.            
   */                                                                 
  if ( mask & RTEMS_PREEMPT_MASK )                                    
 800c7e0:	21 c1 01 00 	andi r1,r14,0x100                              
 800c7e4:	44 20 00 04 	be r1,r0,800c7f4 <rtems_task_mode+0xb0>        
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Modes_Is_preempt (                         
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
   return (mode_set & RTEMS_PREEMPT_MASK) == RTEMS_PREEMPT;           
 800c7e8:	22 01 01 00 	andi r1,r16,0x100                              
    executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
 800c7ec:	64 21 00 00 	cmpei r1,r1,0                                  
 800c7f0:	31 61 00 74 	sb (r11+116),r1                                
                                                                      
  if ( mask & RTEMS_TIMESLICE_MASK ) {                                
 800c7f4:	21 c1 02 00 	andi r1,r14,0x200                              
 800c7f8:	44 20 00 09 	be r1,r0,800c81c <rtems_task_mode+0xd8>        
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Modes_Is_timeslice (                       
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
  return (mode_set & RTEMS_TIMESLICE_MASK) == RTEMS_TIMESLICE;        
 800c7fc:	22 01 02 00 	andi r1,r16,0x200                              
    if ( _Modes_Is_timeslice(mode_set) ) {                            
 800c800:	44 20 00 3e 	be r1,r0,800c8f8 <rtems_task_mode+0x1b4>       
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
      executing->cpu_time_budget  = _Thread_Ticks_per_timeslice;      
 800c804:	78 01 08 01 	mvhi r1,0x801                                  
 800c808:	38 21 48 40 	ori r1,r1,0x4840                               
 800c80c:	28 22 00 00 	lw r2,(r1+0)                                   
  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;
 800c810:	34 01 00 01 	mvi r1,1                                       
 800c814:	59 61 00 7c 	sw (r11+124),r1                                
      executing->cpu_time_budget  = _Thread_Ticks_per_timeslice;      
 800c818:	59 62 00 78 	sw (r11+120),r2                                
  }                                                                   
                                                                      
  /*                                                                  
   *  Set the new interrupt level                                     
   */                                                                 
  if ( mask & RTEMS_INTERRUPT_MASK )                                  
 800c81c:	21 c1 00 01 	andi r1,r14,0x1                                
 800c820:	44 20 00 04 	be r1,r0,800c830 <rtems_task_mode+0xec>        
 */                                                                   
RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level (           
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
  return ( mode_set & RTEMS_INTERRUPT_MASK );                         
 800c824:	22 01 00 01 	andi r1,r16,0x1                                
 */                                                                   
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (                
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
  _ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );           
 800c828:	64 21 00 00 	cmpei r1,r1,0                                  
 800c82c:	d0 01 00 00 	wcsr IE,r1                                     
   *  This is specific to the RTEMS API                               
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
 800c830:	21 ce 04 00 	andi r14,r14,0x400                             
                                                                      
  /*                                                                  
   *  This is specific to the RTEMS API                               
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
 800c834:	34 04 00 00 	mvi r4,0                                       
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
 800c838:	45 c0 00 11 	be r14,r0,800c87c <rtems_task_mode+0x138>      
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Modes_Is_asr_disabled (                    
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
   return (mode_set & RTEMS_ASR_MASK) == RTEMS_NO_ASR;                
 800c83c:	22 10 04 00 	andi r16,r16,0x400                             
    is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
    if ( is_asr_enabled != asr->is_enabled ) {                        
 800c840:	41 81 00 08 	lbu r1,(r12+8)                                 
 *  Output:                                                           
 *    *previous_mode_set - previous mode set                          
 *     always return RTEMS_SUCCESSFUL;                                
 */                                                                   
                                                                      
rtems_status_code rtems_task_mode(                                    
 800c844:	66 10 00 00 	cmpei r16,r16,0                                
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
    is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
    if ( is_asr_enabled != asr->is_enabled ) {                        
 800c848:	44 30 00 0d 	be r1,r16,800c87c <rtems_task_mode+0x138>      
      asr->is_enabled = is_asr_enabled;                               
 800c84c:	31 90 00 08 	sb (r12+8),r16                                 
)                                                                     
{                                                                     
  rtems_signal_set _signals;                                          
  ISR_Level        _level;                                            
                                                                      
  _ISR_Disable( _level );                                             
 800c850:	90 00 08 00 	rcsr r1,IE                                     
 800c854:	34 02 ff fe 	mvi r2,-2                                      
 800c858:	a0 22 10 00 	and r2,r1,r2                                   
 800c85c:	d0 02 00 00 	wcsr IE,r2                                     
    _signals                     = information->signals_pending;      
 800c860:	29 83 00 18 	lw r3,(r12+24)                                 
    information->signals_pending = information->signals_posted;       
 800c864:	29 82 00 14 	lw r2,(r12+20)                                 
    information->signals_posted  = _signals;                          
 800c868:	59 83 00 14 	sw (r12+20),r3                                 
  rtems_signal_set _signals;                                          
  ISR_Level        _level;                                            
                                                                      
  _ISR_Disable( _level );                                             
    _signals                     = information->signals_pending;      
    information->signals_pending = information->signals_posted;       
 800c86c:	59 82 00 18 	sw (r12+24),r2                                 
    information->signals_posted  = _signals;                          
  _ISR_Enable( _level );                                              
 800c870:	d0 01 00 00 	wcsr IE,r1                                     
      _ASR_Swap_signals( asr );                                       
      if ( _ASR_Are_signals_pending( asr ) ) {                        
 800c874:	29 84 00 14 	lw r4,(r12+20)                                 
                                                                      
  /*                                                                  
   *  This is specific to the RTEMS API                               
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
 800c878:	7c 84 00 00 	cmpnei r4,r4,0                                 
        needs_asr_dispatching = true;                                 
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
 800c87c:	78 01 08 01 	mvhi r1,0x801                                  
 800c880:	38 21 4a 20 	ori r1,r1,0x4a20                               
 800c884:	28 23 00 00 	lw r3,(r1+0)                                   
 800c888:	34 01 00 03 	mvi r1,3                                       
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800c88c:	34 02 00 00 	mvi r2,0                                       
        needs_asr_dispatching = true;                                 
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
 800c890:	44 61 00 0f 	be r3,r1,800c8cc <rtems_task_mode+0x188>       <== ALWAYS TAKEN
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 800c894:	b8 40 08 00 	mv r1,r2                                       
 800c898:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c89c:	2b 8b 00 24 	lw r11,(sp+36)                                 
 800c8a0:	2b 8c 00 20 	lw r12,(sp+32)                                 
 800c8a4:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 800c8a8:	2b 8e 00 18 	lw r14,(sp+24)                                 
 800c8ac:	2b 8f 00 14 	lw r15,(sp+20)                                 
 800c8b0:	2b 90 00 10 	lw r16,(sp+16)                                 
 800c8b4:	2b 91 00 0c 	lw r17,(sp+12)                                 
 800c8b8:	2b 92 00 08 	lw r18,(sp+8)                                  
 800c8bc:	37 9c 00 24 	addi sp,sp,36                                  
 800c8c0:	c3 a0 00 00 	ret                                            
  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;                                      
 800c8c4:	39 ad 02 00 	ori r13,r13,0x200                              
 800c8c8:	e3 ff ff be 	bi 800c7c0 <rtems_task_mode+0x7c>              
  bool are_signals_pending                                            
)                                                                     
{                                                                     
  Thread_Control     *executing;                                      
                                                                      
  executing = _Thread_Executing;                                      
 800c8cc:	29 e1 00 0c 	lw r1,(r15+12)                                 
                                                                      
  if ( are_signals_pending ||                                         
 800c8d0:	5c 80 00 05 	bne r4,r0,800c8e4 <rtems_task_mode+0x1a0>      
 800c8d4:	29 e3 00 10 	lw r3,(r15+16)                                 
 800c8d8:	44 23 ff ef 	be r1,r3,800c894 <rtems_task_mode+0x150>       
       (!_Thread_Is_heir( executing ) && executing->is_preemptible) ) {
 800c8dc:	40 21 00 74 	lbu r1,(r1+116)                                
 800c8e0:	44 20 ff ed 	be r1,r0,800c894 <rtems_task_mode+0x150>       <== NEVER TAKEN
    _Thread_Dispatch_necessary = true;                                
 800c8e4:	34 01 00 01 	mvi r1,1                                       
 800c8e8:	31 e1 00 18 	sb (r15+24),r1                                 
    }                                                                 
  }                                                                   
                                                                      
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
 800c8ec:	fb ff e3 8a 	calli 8005714 <_Thread_Dispatch>               
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800c8f0:	34 02 00 00 	mvi r2,0                                       
 800c8f4:	e3 ff ff e8 	bi 800c894 <rtems_task_mode+0x150>             
  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; 
 800c8f8:	59 60 00 7c 	sw (r11+124),r0                                
  }                                                                   
                                                                      
  /*                                                                  
   *  Set the new interrupt level                                     
   */                                                                 
  if ( mask & RTEMS_INTERRUPT_MASK )                                  
 800c8fc:	21 c1 00 01 	andi r1,r14,0x1                                
 800c900:	44 20 ff cc 	be r1,r0,800c830 <rtems_task_mode+0xec>        
 800c904:	e3 ff ff c8 	bi 800c824 <rtems_task_mode+0xe0>              
                                                                      

08008bd4 <rtems_task_set_priority>: rtems_status_code rtems_task_set_priority( rtems_id id, rtems_task_priority new_priority, rtems_task_priority *old_priority ) {
 8008bd4:	37 9c ff f0 	addi sp,sp,-16                                 
 8008bd8:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8008bdc:	5b 8c 00 08 	sw (sp+8),r12                                  
 8008be0:	5b 9d 00 04 	sw (sp+4),ra                                   
 8008be4:	b8 40 58 00 	mv r11,r2                                      
 8008be8:	b8 60 60 00 	mv r12,r3                                      
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
                                                                      
  if ( new_priority != RTEMS_CURRENT_PRIORITY &&                      
 8008bec:	44 40 00 06 	be r2,r0,8008c04 <rtems_task_set_priority+0x30>
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 ) );             
 8008bf0:	78 02 08 01 	mvhi r2,0x801                                  
 8008bf4:	38 42 b0 c0 	ori r2,r2,0xb0c0                               
 8008bf8:	40 42 00 00 	lbu r2,(r2+0)                                  
       !_RTEMS_tasks_Priority_is_valid( new_priority ) )              
    return RTEMS_INVALID_PRIORITY;                                    
 8008bfc:	34 04 00 13 	mvi r4,19                                      
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (            
  rtems_task_priority the_priority                                    
)                                                                     
{                                                                     
  return (  ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&             
 8008c00:	55 62 00 08 	bgu r11,r2,8008c20 <rtems_task_set_priority+0x4c>
                                                                      
  if ( !old_priority )                                                
    return RTEMS_INVALID_ADDRESS;                                     
 8008c04:	34 04 00 09 	mvi r4,9                                       
                                                                      
  if ( new_priority != RTEMS_CURRENT_PRIORITY &&                      
       !_RTEMS_tasks_Priority_is_valid( new_priority ) )              
    return RTEMS_INVALID_PRIORITY;                                    
                                                                      
  if ( !old_priority )                                                
 8008c08:	45 80 00 06 	be r12,r0,8008c20 <rtems_task_set_priority+0x4c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 8008c0c:	37 82 00 10 	addi r2,sp,16                                  
 8008c10:	f8 00 0a bd 	calli 800b704 <_Thread_Get>                    
  switch ( location ) {                                               
 8008c14:	2b 82 00 10 	lw r2,(sp+16)                                  
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 8008c18:	34 04 00 04 	mvi r4,4                                       
                                                                      
  if ( !old_priority )                                                
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
  switch ( location ) {                                               
 8008c1c:	44 40 00 07 	be r2,r0,8008c38 <rtems_task_set_priority+0x64>
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8008c20:	b8 80 08 00 	mv r1,r4                                       
 8008c24:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008c28:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8008c2c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8008c30:	37 9c 00 10 	addi sp,sp,16                                  
 8008c34:	c3 a0 00 00 	ret                                            
  the_thread = _Thread_Get( id, &location );                          
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      /* XXX need helper to "convert" from core priority */           
      *old_priority = the_thread->current_priority;                   
 8008c38:	28 23 00 14 	lw r3,(r1+20)                                  
 8008c3c:	59 83 00 00 	sw (r12+0),r3                                  
      if ( new_priority != RTEMS_CURRENT_PRIORITY ) {                 
 8008c40:	45 62 00 09 	be r11,r2,8008c64 <rtems_task_set_priority+0x90>
        the_thread->real_priority = new_priority;                     
        if ( the_thread->resource_count == 0 ||                       
 8008c44:	28 22 00 1c 	lw r2,(r1+28)                                  
                                                                      
    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;                     
 8008c48:	58 2b 00 18 	sw (r1+24),r11                                 
        if ( the_thread->resource_count == 0 ||                       
 8008c4c:	44 40 00 03 	be r2,r0,8008c58 <rtems_task_set_priority+0x84>
 8008c50:	28 22 00 14 	lw r2,(r1+20)                                  
 8008c54:	51 62 00 04 	bgeu r11,r2,8008c64 <rtems_task_set_priority+0x90><== ALWAYS TAKEN
             the_thread->current_priority > new_priority )            
          _Thread_Change_priority( the_thread, new_priority, false ); 
 8008c58:	b9 60 10 00 	mv r2,r11                                      
 8008c5c:	34 03 00 00 	mvi r3,0                                       
 8008c60:	f8 00 09 1f 	calli 800b0dc <_Thread_Change_priority>        
      }                                                               
      _Thread_Enable_dispatch();                                      
 8008c64:	f8 00 0a 9b 	calli 800b6d0 <_Thread_Enable_dispatch>        
      return RTEMS_SUCCESSFUL;                                        
 8008c68:	34 04 00 00 	mvi r4,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8008c6c:	b8 80 08 00 	mv r1,r4                                       
 8008c70:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008c74:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8008c78:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8008c7c:	37 9c 00 10 	addi sp,sp,16                                  
 8008c80:	c3 a0 00 00 	ret                                            
                                                                      

08003248 <rtems_task_start>: rtems_status_code rtems_task_start( rtems_id id, rtems_task_entry entry_point, rtems_task_argument argument ) {
 8003248:	37 9c ff ec 	addi sp,sp,-20                                 
 800324c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8003250:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8003254:	5b 8d 00 08 	sw (sp+8),r13                                  
 8003258:	5b 9d 00 04 	sw (sp+4),ra                                   
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
                                                                      
  if ( entry_point == NULL )                                          
    return RTEMS_INVALID_ADDRESS;                                     
 800325c:	34 04 00 09 	mvi r4,9                                       
rtems_status_code rtems_task_start(                                   
  rtems_id         	id,                                               
  rtems_task_entry 	entry_point,                                      
  rtems_task_argument	argument                                        
)                                                                     
{                                                                     
 8003260:	b8 40 58 00 	mv r11,r2                                      
 8003264:	b8 60 68 00 	mv r13,r3                                      
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
                                                                      
  if ( entry_point == NULL )                                          
 8003268:	44 40 00 06 	be r2,r0,8003280 <rtems_task_start+0x38>       <== NEVER TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 800326c:	37 82 00 14 	addi r2,sp,20                                  
 8003270:	f8 00 09 a4 	calli 8005900 <_Thread_Get>                    
  switch ( location ) {                                               
 8003274:	2b 8c 00 14 	lw r12,(sp+20)                                 
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 8003278:	34 04 00 04 	mvi r4,4                                       
                                                                      
  if ( entry_point == NULL )                                          
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
  switch ( location ) {                                               
 800327c:	45 80 00 08 	be r12,r0,800329c <rtems_task_start+0x54>      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8003280:	b8 80 08 00 	mv r1,r4                                       
 8003284:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003288:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800328c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003290:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003294:	37 9c 00 14 	addi sp,sp,20                                  
 8003298:	c3 a0 00 00 	ret                                            
                                                                      
  the_thread = _Thread_Get( id, &location );                          
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( _Thread_Start(                                             
 800329c:	34 02 00 00 	mvi r2,0                                       
 80032a0:	b9 60 18 00 	mv r3,r11                                      
 80032a4:	34 04 00 00 	mvi r4,0                                       
 80032a8:	b9 a0 28 00 	mv r5,r13                                      
 80032ac:	f8 00 0c b7 	calli 8006588 <_Thread_Start>                  
 80032b0:	5c 2c 00 0a 	bne r1,r12,80032d8 <rtems_task_start+0x90>     
             the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
      _Thread_Enable_dispatch();                                      
 80032b4:	f8 00 09 86 	calli 80058cc <_Thread_Enable_dispatch>        
      return RTEMS_INCORRECT_STATE;                                   
 80032b8:	34 04 00 0e 	mvi r4,14                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80032bc:	b8 80 08 00 	mv r1,r4                                       
 80032c0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80032c4:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80032c8:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80032cc:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80032d0:	37 9c 00 14 	addi sp,sp,20                                  
 80032d4:	c3 a0 00 00 	ret                                            
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( _Thread_Start(                                             
             the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
        _Thread_Enable_dispatch();                                    
 80032d8:	f8 00 09 7d 	calli 80058cc <_Thread_Enable_dispatch>        
        return RTEMS_SUCCESSFUL;                                      
 80032dc:	34 04 00 00 	mvi r4,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80032e0:	b8 80 08 00 	mv r1,r4                                       
 80032e4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80032e8:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80032ec:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80032f0:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80032f4:	37 9c 00 14 	addi sp,sp,20                                  
 80032f8:	c3 a0 00 00 	ret                                            
                                                                      

08004118 <rtems_task_variable_add>: rtems_status_code rtems_task_variable_add( rtems_id tid, void **ptr, void (*dtor)(void *) ) {
 8004118:	37 9c ff ec 	addi sp,sp,-20                                 
 800411c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8004120:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8004124:	5b 8d 00 08 	sw (sp+8),r13                                  
 8004128:	5b 9d 00 04 	sw (sp+4),ra                                   
 800412c:	b8 40 58 00 	mv r11,r2                                      
 8004130:	b8 60 68 00 	mv r13,r3                                      
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp, *new;                                   
                                                                      
  if ( !ptr )                                                         
    return RTEMS_INVALID_ADDRESS;                                     
 8004134:	34 02 00 09 	mvi r2,9                                       
{                                                                     
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp, *new;                                   
                                                                      
  if ( !ptr )                                                         
 8004138:	45 60 00 07 	be r11,r0,8004154 <rtems_task_variable_add+0x3c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
 800413c:	37 82 00 14 	addi r2,sp,20                                  
 8004140:	f8 00 09 a4 	calli 80067d0 <_Thread_Get>                    
 8004144:	b8 20 60 00 	mv r12,r1                                      
  switch (location) {                                                 
 8004148:	2b 81 00 14 	lw r1,(sp+20)                                  
#endif                                                                
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
 800414c:	34 02 00 04 	mvi r2,4                                       
                                                                      
  if ( !ptr )                                                         
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
  switch (location) {                                                 
 8004150:	44 20 00 08 	be r1,r0,8004170 <rtems_task_variable_add+0x58>
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8004154:	b8 40 08 00 	mv r1,r2                                       
 8004158:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800415c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8004160:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004164:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8004168:	37 9c 00 14 	addi sp,sp,20                                  
 800416c:	c3 a0 00 00 	ret                                            
                                                                      
    case OBJECTS_LOCAL:                                               
      /*                                                              
       *  Figure out if the variable is already in this task's list.  
       */                                                             
      tvp = the_thread->task_variables;                               
 8004170:	29 84 01 28 	lw r4,(r12+296)                                
      while (tvp) {                                                   
 8004174:	44 81 00 08 	be r4,r1,8004194 <rtems_task_variable_add+0x7c>
        if (tvp->ptr == ptr) {                                        
 8004178:	28 81 00 04 	lw r1,(r4+4)                                   
 800417c:	5c 2b 00 04 	bne r1,r11,800418c <rtems_task_variable_add+0x74>
 8004180:	e0 00 00 18 	bi 80041e0 <rtems_task_variable_add+0xc8>      
 8004184:	28 82 00 04 	lw r2,(r4+4)                                   
 8004188:	44 4b 00 16 	be r2,r11,80041e0 <rtems_task_variable_add+0xc8><== NEVER TAKEN
          tvp->dtor = dtor;                                           
          _Thread_Enable_dispatch();                                  
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        tvp = (rtems_task_variable_t *)tvp->next;                     
 800418c:	28 84 00 00 	lw r4,(r4+0)                                   
    case OBJECTS_LOCAL:                                               
      /*                                                              
       *  Figure out if the variable is already in this task's list.  
       */                                                             
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
 8004190:	5c 80 ff fd 	bne r4,r0,8004184 <rtems_task_variable_add+0x6c>
                                                                      
      /*                                                              
       *  Now allocate memory for this task variable.                 
       */                                                             
      new = (rtems_task_variable_t *)                                 
         _Workspace_Allocate(sizeof(rtems_task_variable_t));          
 8004194:	34 01 00 14 	mvi r1,20                                      
 8004198:	f8 00 0f 06 	calli 8007db0 <_Workspace_Allocate>            
      if (new == NULL) {                                              
 800419c:	44 20 00 1b 	be r1,r0,8004208 <rtems_task_variable_add+0xf0>
      }                                                               
      new->gval = *ptr;                                               
      new->ptr = ptr;                                                 
      new->dtor = dtor;                                               
                                                                      
      new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
 80041a0:	29 82 01 28 	lw r2,(r12+296)                                
         _Workspace_Allocate(sizeof(rtems_task_variable_t));          
      if (new == NULL) {                                              
        _Thread_Enable_dispatch();                                    
        return RTEMS_NO_MEMORY;                                       
      }                                                               
      new->gval = *ptr;                                               
 80041a4:	29 63 00 00 	lw r3,(r11+0)                                  
      new->ptr = ptr;                                                 
 80041a8:	58 2b 00 04 	sw (r1+4),r11                                  
      new->dtor = dtor;                                               
 80041ac:	58 2d 00 10 	sw (r1+16),r13                                 
         _Workspace_Allocate(sizeof(rtems_task_variable_t));          
      if (new == NULL) {                                              
        _Thread_Enable_dispatch();                                    
        return RTEMS_NO_MEMORY;                                       
      }                                                               
      new->gval = *ptr;                                               
 80041b0:	58 23 00 08 	sw (r1+8),r3                                   
      new->ptr = ptr;                                                 
      new->dtor = dtor;                                               
                                                                      
      new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
 80041b4:	58 22 00 00 	sw (r1+0),r2                                   
      the_thread->task_variables = new;                               
 80041b8:	59 81 01 28 	sw (r12+296),r1                                
      _Thread_Enable_dispatch();                                      
 80041bc:	f8 00 09 78 	calli 800679c <_Thread_Enable_dispatch>        
      return RTEMS_SUCCESSFUL;                                        
 80041c0:	34 02 00 00 	mvi r2,0                                       
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80041c4:	b8 40 08 00 	mv r1,r2                                       
 80041c8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80041cc:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80041d0:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80041d4:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80041d8:	37 9c 00 14 	addi sp,sp,20                                  
 80041dc:	c3 a0 00 00 	ret                                            
       *  Figure out if the variable is already in this task's list.  
       */                                                             
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
        if (tvp->ptr == ptr) {                                        
          tvp->dtor = dtor;                                           
 80041e0:	58 8d 00 10 	sw (r4+16),r13                                 
          _Thread_Enable_dispatch();                                  
 80041e4:	f8 00 09 6e 	calli 800679c <_Thread_Enable_dispatch>        
          return RTEMS_SUCCESSFUL;                                    
 80041e8:	34 02 00 00 	mvi r2,0                                       
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80041ec:	b8 40 08 00 	mv r1,r2                                       
 80041f0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80041f4:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80041f8:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80041fc:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8004200:	37 9c 00 14 	addi sp,sp,20                                  
 8004204:	c3 a0 00 00 	ret                                            
       *  Now allocate memory for this task variable.                 
       */                                                             
      new = (rtems_task_variable_t *)                                 
         _Workspace_Allocate(sizeof(rtems_task_variable_t));          
      if (new == NULL) {                                              
        _Thread_Enable_dispatch();                                    
 8004208:	f8 00 09 65 	calli 800679c <_Thread_Enable_dispatch>        
        return RTEMS_NO_MEMORY;                                       
 800420c:	34 02 00 1a 	mvi r2,26                                      
 8004210:	e3 ff ff d1 	bi 8004154 <rtems_task_variable_add+0x3c>      
                                                                      

08004214 <rtems_task_variable_delete>: rtems_status_code rtems_task_variable_delete( rtems_id tid, void **ptr ) {
 8004214:	37 9c ff f4 	addi sp,sp,-12                                 
 8004218:	5b 8b 00 08 	sw (sp+8),r11                                  
 800421c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004220:	b8 40 58 00 	mv r11,r2                                      
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp, *prev;                                  
                                                                      
  if ( !ptr )                                                         
    return RTEMS_INVALID_ADDRESS;                                     
 8004224:	34 02 00 09 	mvi r2,9                                       
{                                                                     
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp, *prev;                                  
                                                                      
  if ( !ptr )                                                         
 8004228:	45 60 00 06 	be r11,r0,8004240 <rtems_task_variable_delete+0x2c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  prev = NULL;                                                        
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
 800422c:	37 82 00 0c 	addi r2,sp,12                                  
 8004230:	f8 00 09 68 	calli 80067d0 <_Thread_Get>                    
  switch (location) {                                                 
 8004234:	2b 82 00 0c 	lw r2,(sp+12)                                  
 8004238:	44 40 00 07 	be r2,r0,8004254 <rtems_task_variable_delete+0x40>
                                                                      
    case OBJECTS_ERROR:                                               
        break;                                                        
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 800423c:	34 02 00 04 	mvi r2,4                                       
}                                                                     
 8004240:	b8 40 08 00 	mv r1,r2                                       
 8004244:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004248:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800424c:	37 9c 00 0c 	addi sp,sp,12                                  
 8004250:	c3 a0 00 00 	ret                                            
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
  switch (location) {                                                 
                                                                      
    case OBJECTS_LOCAL:                                               
      tvp = the_thread->task_variables;                               
 8004254:	28 24 01 28 	lw r4,(r1+296)                                 
      while (tvp) {                                                   
 8004258:	44 82 00 09 	be r4,r2,800427c <rtems_task_variable_delete+0x68>
        if (tvp->ptr == ptr) {                                        
 800425c:	28 82 00 04 	lw r2,(r4+4)                                   
 8004260:	5c 4b 00 05 	bne r2,r11,8004274 <rtems_task_variable_delete+0x60>
 8004264:	e0 00 00 18 	bi 80042c4 <rtems_task_variable_delete+0xb0>   
 8004268:	28 62 00 04 	lw r2,(r3+4)                                   
 800426c:	44 4b 00 0b 	be r2,r11,8004298 <rtems_task_variable_delete+0x84>
 8004270:	b8 60 20 00 	mv r4,r3                                       
          _RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );  
          _Thread_Enable_dispatch();                                  
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        prev = tvp;                                                   
        tvp = (rtems_task_variable_t *)tvp->next;                     
 8004274:	28 83 00 00 	lw r3,(r4+0)                                   
  the_thread = _Thread_Get (tid, &location);                          
  switch (location) {                                                 
                                                                      
    case OBJECTS_LOCAL:                                               
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
 8004278:	5c 60 ff fc 	bne r3,r0,8004268 <rtems_task_variable_delete+0x54><== ALWAYS TAKEN
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        prev = tvp;                                                   
        tvp = (rtems_task_variable_t *)tvp->next;                     
      }                                                               
      _Thread_Enable_dispatch();                                      
 800427c:	f8 00 09 48 	calli 800679c <_Thread_Enable_dispatch>        
      return RTEMS_INVALID_ADDRESS;                                   
 8004280:	34 02 00 09 	mvi r2,9                                       
    case OBJECTS_ERROR:                                               
        break;                                                        
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8004284:	b8 40 08 00 	mv r1,r2                                       
 8004288:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800428c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8004290:	37 9c 00 0c 	addi sp,sp,12                                  
 8004294:	c3 a0 00 00 	ret                                            
    case OBJECTS_LOCAL:                                               
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
        if (tvp->ptr == ptr) {                                        
          if (prev)                                                   
            prev->next = tvp->next;                                   
 8004298:	28 62 00 00 	lw r2,(r3+0)                                   
 800429c:	58 82 00 00 	sw (r4+0),r2                                   
          else                                                        
            the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
                                                                      
          _RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );  
 80042a0:	b8 60 10 00 	mv r2,r3                                       
 80042a4:	f8 00 00 39 	calli 8004388 <_RTEMS_Tasks_Invoke_task_variable_dtor>
          _Thread_Enable_dispatch();                                  
 80042a8:	f8 00 09 3d 	calli 800679c <_Thread_Enable_dispatch>        
          return RTEMS_SUCCESSFUL;                                    
 80042ac:	34 02 00 00 	mvi r2,0                                       
    case OBJECTS_ERROR:                                               
        break;                                                        
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80042b0:	b8 40 08 00 	mv r1,r2                                       
 80042b4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80042b8:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80042bc:	37 9c 00 0c 	addi sp,sp,12                                  
 80042c0:	c3 a0 00 00 	ret                                            
      while (tvp) {                                                   
        if (tvp->ptr == ptr) {                                        
          if (prev)                                                   
            prev->next = tvp->next;                                   
          else                                                        
            the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
 80042c4:	28 82 00 00 	lw r2,(r4+0)                                   
 80042c8:	b8 80 18 00 	mv r3,r4                                       
 80042cc:	58 22 01 28 	sw (r1+296),r2                                 
 80042d0:	e3 ff ff f4 	bi 80042a0 <rtems_task_variable_delete+0x8c>   
                                                                      

080042d4 <rtems_task_variable_get>: rtems_status_code rtems_task_variable_get( rtems_id tid, void **ptr, void **result ) {
 80042d4:	37 9c ff f0 	addi sp,sp,-16                                 
 80042d8:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80042dc:	5b 8c 00 08 	sw (sp+8),r12                                  
 80042e0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80042e4:	b8 40 58 00 	mv r11,r2                                      
 80042e8:	b8 60 60 00 	mv r12,r3                                      
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp;                                         
                                                                      
  if ( !ptr )                                                         
    return RTEMS_INVALID_ADDRESS;                                     
 80042ec:	34 02 00 09 	mvi r2,9                                       
{                                                                     
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp;                                         
                                                                      
  if ( !ptr )                                                         
 80042f0:	45 60 00 07 	be r11,r0,800430c <rtems_task_variable_get+0x38>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !result )                                                      
 80042f4:	44 60 00 06 	be r3,r0,800430c <rtems_task_variable_get+0x38>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
 80042f8:	37 82 00 10 	addi r2,sp,16                                  
 80042fc:	f8 00 09 35 	calli 80067d0 <_Thread_Get>                    
  switch (location) {                                                 
 8004300:	2b 82 00 10 	lw r2,(sp+16)                                  
 8004304:	44 40 00 08 	be r2,r0,8004324 <rtems_task_variable_get+0x50>
#endif                                                                
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
 8004308:	34 02 00 04 	mvi r2,4                                       
}                                                                     
 800430c:	b8 40 08 00 	mv r1,r2                                       
 8004310:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004314:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8004318:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800431c:	37 9c 00 10 	addi sp,sp,16                                  
 8004320:	c3 a0 00 00 	ret                                            
                                                                      
    case OBJECTS_LOCAL:                                               
      /*                                                              
       *  Figure out if the variable is in this task's list.          
       */                                                             
      tvp = the_thread->task_variables;                               
 8004324:	28 21 01 28 	lw r1,(r1+296)                                 
      while (tvp) {                                                   
 8004328:	5c 22 00 04 	bne r1,r2,8004338 <rtems_task_variable_get+0x64>
 800432c:	e0 00 00 0f 	bi 8004368 <rtems_task_variable_get+0x94>      
	   */                                                                
          *result = tvp->tval;                                        
          _Thread_Enable_dispatch();                                  
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        tvp = (rtems_task_variable_t *)tvp->next;                     
 8004330:	28 21 00 00 	lw r1,(r1+0)                                   
    case OBJECTS_LOCAL:                                               
      /*                                                              
       *  Figure out if the variable is in this task's list.          
       */                                                             
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
 8004334:	44 20 00 0d 	be r1,r0,8004368 <rtems_task_variable_get+0x94><== NEVER TAKEN
        if (tvp->ptr == ptr) {                                        
 8004338:	28 22 00 04 	lw r2,(r1+4)                                   
 800433c:	5c 4b ff fd 	bne r2,r11,8004330 <rtems_task_variable_get+0x5c>
	  /*                                                                 
	   * Should this return the current (i.e not the                     
	   * saved) value if `tid' is the current task?                      
	   */                                                                
          *result = tvp->tval;                                        
 8004340:	28 21 00 0c 	lw r1,(r1+12)                                  
 8004344:	59 81 00 00 	sw (r12+0),r1                                  
          _Thread_Enable_dispatch();                                  
 8004348:	f8 00 09 15 	calli 800679c <_Thread_Enable_dispatch>        
          return RTEMS_SUCCESSFUL;                                    
 800434c:	34 02 00 00 	mvi r2,0                                       
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8004350:	b8 40 08 00 	mv r1,r2                                       
 8004354:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004358:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800435c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8004360:	37 9c 00 10 	addi sp,sp,16                                  
 8004364:	c3 a0 00 00 	ret                                            
          _Thread_Enable_dispatch();                                  
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        tvp = (rtems_task_variable_t *)tvp->next;                     
      }                                                               
      _Thread_Enable_dispatch();                                      
 8004368:	f8 00 09 0d 	calli 800679c <_Thread_Enable_dispatch>        
      return RTEMS_INVALID_ADDRESS;                                   
 800436c:	34 02 00 09 	mvi r2,9                                       
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8004370:	b8 40 08 00 	mv r1,r2                                       
 8004374:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004378:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800437c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8004380:	37 9c 00 10 	addi sp,sp,16                                  
 8004384:	c3 a0 00 00 	ret                                            
                                                                      

08013bf4 <rtems_timer_cancel>: */ rtems_status_code rtems_timer_cancel( rtems_id id ) {
 8013bf4:	37 9c ff f8 	addi sp,sp,-8                                  
 8013bf8:	5b 9d 00 04 	sw (sp+4),ra                                   
 8013bfc:	b8 20 10 00 	mv r2,r1                                       
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (Timer_Control *)                                            
    _Objects_Get( &_Timer_Information, id, location );                
 8013c00:	78 01 08 04 	mvhi r1,0x804                                  
 8013c04:	38 21 15 bc 	ori r1,r1,0x15bc                               
 8013c08:	37 83 00 08 	addi r3,sp,8                                   
 8013c0c:	f8 00 0e a3 	calli 8017698 <_Objects_Get>                   
  Timer_Control   *the_timer;                                         
  Objects_Locations       location;                                   
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
 8013c10:	2b 82 00 08 	lw r2,(sp+8)                                   
 8013c14:	44 40 00 05 	be r2,r0,8013c28 <rtems_timer_cancel+0x34>     
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 8013c18:	34 01 00 04 	mvi r1,4                                       
}                                                                     
 8013c1c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8013c20:	37 9c 00 08 	addi sp,sp,8                                   
 8013c24:	c3 a0 00 00 	ret                                            
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( !_Timer_Is_dormant_class( the_timer->the_class ) )         
 8013c28:	28 23 00 38 	lw r3,(r1+56)                                  
 8013c2c:	34 02 00 04 	mvi r2,4                                       
 8013c30:	44 62 00 03 	be r3,r2,8013c3c <rtems_timer_cancel+0x48>     <== NEVER TAKEN
        (void) _Watchdog_Remove( &the_timer->Ticker );                
 8013c34:	34 21 00 10 	addi r1,r1,16                                  
 8013c38:	f8 00 18 81 	calli 8019e3c <_Watchdog_Remove>               
      _Thread_Enable_dispatch();                                      
 8013c3c:	f8 00 12 6e 	calli 80185f4 <_Thread_Enable_dispatch>        
      return RTEMS_SUCCESSFUL;                                        
 8013c40:	34 01 00 00 	mvi r1,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8013c44:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8013c48:	37 9c 00 08 	addi sp,sp,8                                   
 8013c4c:	c3 a0 00 00 	ret                                            
                                                                      

08014270 <rtems_timer_server_fire_when>: rtems_id id, rtems_time_of_day *wall_time, rtems_timer_service_routine_entry routine, void *user_data ) {
 8014270:	37 9c ff dc 	addi sp,sp,-36                                 
 8014274:	5b 8b 00 20 	sw (sp+32),r11                                 
 8014278:	5b 8c 00 1c 	sw (sp+28),r12                                 
 801427c:	5b 8d 00 18 	sw (sp+24),r13                                 
 8014280:	5b 8e 00 14 	sw (sp+20),r14                                 
 8014284:	5b 8f 00 10 	sw (sp+16),r15                                 
 8014288:	5b 90 00 0c 	sw (sp+12),r16                                 
 801428c:	5b 91 00 08 	sw (sp+8),r17                                  
 8014290:	5b 9d 00 04 	sw (sp+4),ra                                   
  Timer_Control        *the_timer;                                    
  Objects_Locations     location;                                     
  rtems_interval        seconds;                                      
  Timer_server_Control *timer_server = _Timer_server;                 
 8014294:	78 05 08 04 	mvhi r5,0x804                                  
 8014298:	38 a5 15 fc 	ori r5,r5,0x15fc                               
 801429c:	28 ac 00 00 	lw r12,(r5+0)                                  
  rtems_id                           id,                              
  rtems_time_of_day                  *wall_time,                      
  rtems_timer_service_routine_entry  routine,                         
  void                              *user_data                        
)                                                                     
{                                                                     
 80142a0:	b8 20 80 00 	mv r16,r1                                      
 80142a4:	b8 40 70 00 	mv r14,r2                                      
 80142a8:	b8 60 78 00 	mv r15,r3                                      
 80142ac:	b8 80 88 00 	mv r17,r4                                      
  Objects_Locations     location;                                     
  rtems_interval        seconds;                                      
  Timer_server_Control *timer_server = _Timer_server;                 
                                                                      
  if ( !timer_server )                                                
    return RTEMS_INCORRECT_STATE;                                     
 80142b0:	34 0b 00 0e 	mvi r11,14                                     
  Timer_Control        *the_timer;                                    
  Objects_Locations     location;                                     
  rtems_interval        seconds;                                      
  Timer_server_Control *timer_server = _Timer_server;                 
                                                                      
  if ( !timer_server )                                                
 80142b4:	45 80 00 0c 	be r12,r0,80142e4 <rtems_timer_server_fire_when+0x74>
    return RTEMS_INCORRECT_STATE;                                     
                                                                      
  if ( !_TOD_Is_set )                                                 
 80142b8:	78 05 08 04 	mvhi r5,0x804                                  
 80142bc:	38 a5 0c c0 	ori r5,r5,0xcc0                                
 80142c0:	40 a5 00 00 	lbu r5,(r5+0)                                  
    return RTEMS_NOT_DEFINED;                                         
 80142c4:	34 0b 00 0b 	mvi r11,11                                     
  Timer_server_Control *timer_server = _Timer_server;                 
                                                                      
  if ( !timer_server )                                                
    return RTEMS_INCORRECT_STATE;                                     
                                                                      
  if ( !_TOD_Is_set )                                                 
 80142c8:	44 a0 00 07 	be r5,r0,80142e4 <rtems_timer_server_fire_when+0x74><== NEVER TAKEN
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !routine )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
 80142cc:	34 0b 00 09 	mvi r11,9                                      
    return RTEMS_INCORRECT_STATE;                                     
                                                                      
  if ( !_TOD_Is_set )                                                 
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !routine )                                                     
 80142d0:	44 60 00 05 	be r3,r0,80142e4 <rtems_timer_server_fire_when+0x74>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
 80142d4:	b8 40 08 00 	mv r1,r2                                       
 80142d8:	fb ff f0 af 	calli 8010594 <_TOD_Validate>                  
    return RTEMS_INVALID_CLOCK;                                       
 80142dc:	34 0b 00 14 	mvi r11,20                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !routine )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
 80142e0:	5c 20 00 0c 	bne r1,r0,8014310 <rtems_timer_server_fire_when+0xa0>
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80142e4:	b9 60 08 00 	mv r1,r11                                      
 80142e8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80142ec:	2b 8b 00 20 	lw r11,(sp+32)                                 
 80142f0:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 80142f4:	2b 8d 00 18 	lw r13,(sp+24)                                 
 80142f8:	2b 8e 00 14 	lw r14,(sp+20)                                 
 80142fc:	2b 8f 00 10 	lw r15,(sp+16)                                 
 8014300:	2b 90 00 0c 	lw r16,(sp+12)                                 
 8014304:	2b 91 00 08 	lw r17,(sp+8)                                  
 8014308:	37 9c 00 24 	addi sp,sp,36                                  
 801430c:	c3 a0 00 00 	ret                                            
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  seconds = _TOD_To_seconds( wall_time );                             
 8014310:	b9 c0 08 00 	mv r1,r14                                      
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
 8014314:	78 0d 08 04 	mvhi r13,0x804                                 
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  seconds = _TOD_To_seconds( wall_time );                             
 8014318:	fb ff f0 46 	calli 8010430 <_TOD_To_seconds>                
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
 801431c:	39 ad 0d 58 	ori r13,r13,0xd58                              
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  seconds = _TOD_To_seconds( wall_time );                             
 8014320:	b8 20 70 00 	mv r14,r1                                      
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
 8014324:	29 a1 00 00 	lw r1,(r13+0)                                  
 8014328:	50 2e ff ef 	bgeu r1,r14,80142e4 <rtems_timer_server_fire_when+0x74>
 801432c:	78 01 08 04 	mvhi r1,0x804                                  
 8014330:	38 21 15 bc 	ori r1,r1,0x15bc                               
 8014334:	ba 00 10 00 	mv r2,r16                                      
 8014338:	37 83 00 24 	addi r3,sp,36                                  
 801433c:	f8 00 0c d7 	calli 8017698 <_Objects_Get>                   
 8014340:	b8 20 58 00 	mv r11,r1                                      
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
 8014344:	2b 81 00 24 	lw r1,(sp+36)                                  
 8014348:	44 20 00 03 	be r1,r0,8014354 <rtems_timer_server_fire_when+0xe4>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 801434c:	34 0b 00 04 	mvi r11,4                                      
 8014350:	e3 ff ff e5 	bi 80142e4 <rtems_timer_server_fire_when+0x74> 
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
 8014354:	35 61 00 10 	addi r1,r11,16                                 
 8014358:	f8 00 16 b9 	calli 8019e3c <_Watchdog_Remove>               
      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();
 801435c:	29 a1 00 00 	lw r1,(r13+0)                                  
                                                                      
      (*timer_server->schedule_operation)( timer_server, the_timer ); 
 8014360:	29 83 00 04 	lw r3,(r12+4)                                  
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
      the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;               
 8014364:	34 04 00 03 	mvi r4,3                                       
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
 8014368:	c9 c1 70 00 	sub r14,r14,r1                                 
                                                                      
      (*timer_server->schedule_operation)( timer_server, the_timer ); 
 801436c:	b9 60 10 00 	mv r2,r11                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
      the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;               
 8014370:	59 64 00 38 	sw (r11+56),r4                                 
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
 8014374:	59 6f 00 2c 	sw (r11+44),r15                                
  the_watchdog->id        = id;                                       
 8014378:	59 70 00 30 	sw (r11+48),r16                                
  the_watchdog->user_data = user_data;                                
 801437c:	59 71 00 34 	sw (r11+52),r17                                
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
 8014380:	59 6e 00 1c 	sw (r11+28),r14                                
                                                                      
      (*timer_server->schedule_operation)( timer_server, the_timer ); 
 8014384:	b9 80 08 00 	mv r1,r12                                      
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 8014388:	59 60 00 18 	sw (r11+24),r0                                 
 801438c:	d8 60 00 00 	call r3                                        
                                                                      
      _Thread_Enable_dispatch();                                      
      return RTEMS_SUCCESSFUL;                                        
 8014390:	34 0b 00 00 	mvi r11,0                                      
      _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 ); 
                                                                      
      _Thread_Enable_dispatch();                                      
 8014394:	f8 00 10 98 	calli 80185f4 <_Thread_Enable_dispatch>        
      return RTEMS_SUCCESSFUL;                                        
 8014398:	e3 ff ff d3 	bi 80142e4 <rtems_timer_server_fire_when+0x74> 
                                                                      

08003d1c <sched_get_priority_max>: #include <rtems/posix/priority.h> int sched_get_priority_max( int policy ) {
 8003d1c:	37 9c ff fc 	addi sp,sp,-4                                  
 8003d20:	5b 9d 00 04 	sw (sp+4),ra                                   
  switch ( policy ) {                                                 
 8003d24:	48 01 00 05 	bg r0,r1,8003d38 <sched_get_priority_max+0x1c> 
 8003d28:	34 02 00 02 	mvi r2,2                                       
 8003d2c:	4c 41 00 08 	bge r2,r1,8003d4c <sched_get_priority_max+0x30>
 8003d30:	34 02 00 04 	mvi r2,4                                       
 8003d34:	44 22 00 06 	be r1,r2,8003d4c <sched_get_priority_max+0x30> <== ALWAYS TAKEN
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      break;                                                          
                                                                      
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 8003d38:	f8 00 27 cc 	calli 800dc68 <__errno>                        
 8003d3c:	34 02 00 16 	mvi r2,22                                      
 8003d40:	58 22 00 00 	sw (r1+0),r2                                   
 8003d44:	34 01 ff ff 	mvi r1,-1                                      
 8003d48:	e0 00 00 05 	bi 8003d5c <sched_get_priority_max+0x40>       
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MAXIMUM_PRIORITY;                            
 8003d4c:	78 01 08 01 	mvhi r1,0x801                                  
 8003d50:	38 21 f0 e4 	ori r1,r1,0xf0e4                               
 8003d54:	40 21 00 00 	lbu r1,(r1+0)                                  
 8003d58:	34 21 ff ff 	addi r1,r1,-1                                  
}                                                                     
 8003d5c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003d60:	37 9c 00 04 	addi sp,sp,4                                   
 8003d64:	c3 a0 00 00 	ret                                            
                                                                      

08003d68 <sched_get_priority_min>: #include <rtems/posix/priority.h> int sched_get_priority_min( int policy ) {
 8003d68:	37 9c ff fc 	addi sp,sp,-4                                  
 8003d6c:	5b 9d 00 04 	sw (sp+4),ra                                   
  switch ( policy ) {                                                 
 8003d70:	48 01 00 05 	bg r0,r1,8003d84 <sched_get_priority_min+0x1c> 
 8003d74:	34 02 00 02 	mvi r2,2                                       
 8003d78:	4c 41 00 08 	bge r2,r1,8003d98 <sched_get_priority_min+0x30><== ALWAYS TAKEN
 8003d7c:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8003d80:	44 22 00 06 	be r1,r2,8003d98 <sched_get_priority_min+0x30> <== NOT EXECUTED
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      break;                                                          
                                                                      
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 8003d84:	f8 00 27 b9 	calli 800dc68 <__errno>                        
 8003d88:	34 02 00 16 	mvi r2,22                                      
 8003d8c:	58 22 00 00 	sw (r1+0),r2                                   
 8003d90:	34 01 ff ff 	mvi r1,-1                                      
 8003d94:	e0 00 00 02 	bi 8003d9c <sched_get_priority_min+0x34>       
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MINIMUM_PRIORITY;                            
 8003d98:	34 01 00 01 	mvi r1,1                                       
}                                                                     
 8003d9c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003da0:	37 9c 00 04 	addi sp,sp,4                                   
 8003da4:	c3 a0 00 00 	ret                                            
                                                                      

08003da8 <sched_rr_get_interval>: int sched_rr_get_interval( pid_t pid, struct timespec *interval ) {
 8003da8:	37 9c ff f4 	addi sp,sp,-12                                 
 8003dac:	5b 8b 00 08 	sw (sp+8),r11                                  
 8003db0:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003db4:	b8 20 58 00 	mv r11,r1                                      
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
                                                                      
  if ( pid && pid != getpid() )                                       
 8003db8:	5c 20 00 0b 	bne r1,r0,8003de4 <sched_rr_get_interval+0x3c> <== ALWAYS TAKEN
    rtems_set_errno_and_return_minus_one( ESRCH );                    
                                                                      
  if ( !interval )                                                    
 8003dbc:	44 40 00 13 	be r2,r0,8003e08 <sched_rr_get_interval+0x60>  
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  _Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval );      
 8003dc0:	78 01 08 01 	mvhi r1,0x801                                  
 8003dc4:	38 21 f7 f0 	ori r1,r1,0xf7f0                               
 8003dc8:	28 21 00 00 	lw r1,(r1+0)                                   
 8003dcc:	f8 00 0e 6c 	calli 800777c <_Timespec_From_ticks>           
  return 0;                                                           
 8003dd0:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8003dd4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003dd8:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8003ddc:	37 9c 00 0c 	addi sp,sp,12                                  
 8003de0:	c3 a0 00 00 	ret                                            
{                                                                     
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
                                                                      
  if ( pid && pid != getpid() )                                       
 8003de4:	5b 82 00 0c 	sw (sp+12),r2                                  
 8003de8:	fb ff f8 21 	calli 8001e6c <getpid>                         
 8003dec:	2b 82 00 0c 	lw r2,(sp+12)                                  
 8003df0:	44 2b ff f3 	be r1,r11,8003dbc <sched_rr_get_interval+0x14> 
    rtems_set_errno_and_return_minus_one( ESRCH );                    
 8003df4:	f8 00 27 9d 	calli 800dc68 <__errno>                        
 8003df8:	34 02 00 03 	mvi r2,3                                       
 8003dfc:	58 22 00 00 	sw (r1+0),r2                                   
 8003e00:	34 01 ff ff 	mvi r1,-1                                      
 8003e04:	e3 ff ff f4 	bi 8003dd4 <sched_rr_get_interval+0x2c>        
                                                                      
  if ( !interval )                                                    
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8003e08:	f8 00 27 98 	calli 800dc68 <__errno>                        
 8003e0c:	34 02 00 16 	mvi r2,22                                      
 8003e10:	58 22 00 00 	sw (r1+0),r2                                   
 8003e14:	34 01 ff ff 	mvi r1,-1                                      
 8003e18:	e3 ff ff ef 	bi 8003dd4 <sched_rr_get_interval+0x2c>        
                                                                      

08006190 <sem_open>: int oflag, ... /* mode_t mode, */ /* unsigned int value */ ) {
 8006190:	37 9c ff c0 	addi sp,sp,-64                                 
 8006194:	5b 8b 00 18 	sw (sp+24),r11                                 
 8006198:	5b 8c 00 14 	sw (sp+20),r12                                 
 800619c:	5b 8d 00 10 	sw (sp+16),r13                                 
 80061a0:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80061a4:	5b 8f 00 08 	sw (sp+8),r15                                  
 80061a8:	5b 9d 00 04 	sw (sp+4),ra                                   
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 80061ac:	78 09 08 02 	mvhi r9,0x802                                  
 80061b0:	39 29 4a 50 	ori r9,r9,0x4a50                               
 80061b4:	29 2a 00 00 	lw r10,(r9+0)                                  
 80061b8:	b8 20 70 00 	mv r14,r1                                      
 80061bc:	5b 82 00 28 	sw (sp+40),r2                                  
 80061c0:	35 41 00 01 	addi r1,r10,1                                  
 80061c4:	5b 83 00 2c 	sw (sp+44),r3                                  
 80061c8:	5b 84 00 30 	sw (sp+48),r4                                  
 80061cc:	5b 85 00 34 	sw (sp+52),r5                                  
 80061d0:	5b 86 00 38 	sw (sp+56),r6                                  
 80061d4:	5b 87 00 3c 	sw (sp+60),r7                                  
 80061d8:	5b 88 00 40 	sw (sp+64),r8                                  
 80061dc:	b8 40 60 00 	mv r12,r2                                      
 80061e0:	59 21 00 00 	sw (r9+0),r1                                   
  POSIX_Semaphore_Control   *the_semaphore;                           
  Objects_Locations          location;                                
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
 80061e4:	20 4d 02 00 	andi r13,r2,0x200                              
  /* unsigned int value */                                            
)                                                                     
{                                                                     
  va_list                    arg;                                     
  mode_t                     mode;                                    
  unsigned int               value = 0;                               
 80061e8:	34 0f 00 00 	mvi r15,0                                      
  POSIX_Semaphore_Control   *the_semaphore;                           
  Objects_Locations          location;                                
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
 80061ec:	5d a0 00 2d 	bne r13,r0,80062a0 <sem_open+0x110>            
    mode = (mode_t) va_arg( arg, unsigned int );                      
    value = va_arg( arg, unsigned int );                              
    va_end(arg);                                                      
  }                                                                   
                                                                      
  status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );    
 80061f0:	b9 c0 08 00 	mv r1,r14                                      
 80061f4:	37 82 00 24 	addi r2,sp,36                                  
 80061f8:	f8 00 1b fa 	calli 800d1e0 <_POSIX_Semaphore_Name_to_id>    
 80061fc:	b8 20 58 00 	mv r11,r1                                      
   *  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 ) {                                                     
 8006200:	44 20 00 10 	be r1,r0,8006240 <sem_open+0xb0>               
    /*                                                                
     * 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) ) ) {               
 8006204:	34 01 00 02 	mvi r1,2                                       
 8006208:	5d 61 00 02 	bne r11,r1,8006210 <sem_open+0x80>             <== NEVER TAKEN
 800620c:	5d a0 00 27 	bne r13,r0,80062a8 <sem_open+0x118>            
      _Thread_Enable_dispatch();                                      
 8006210:	f8 00 0b 15 	calli 8008e64 <_Thread_Enable_dispatch>        
      rtems_set_errno_and_return_minus_one_cast( status, sem_t * );   
 8006214:	f8 00 2b cd 	calli 8011148 <__errno>                        
 8006218:	58 2b 00 00 	sw (r1+0),r11                                  
 800621c:	34 01 ff ff 	mvi r1,-1                                      
    id = &the_semaphore->Semaphore_id;                                
  #else                                                               
    id = (sem_t *)&the_semaphore->Object.id;                          
  #endif                                                              
  return id;                                                          
}                                                                     
 8006220:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006224:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8006228:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800622c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8006230:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8006234:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8006238:	37 9c 00 40 	addi sp,sp,64                                  
 800623c:	c3 a0 00 00 	ret                                            
                                                                      
    /*                                                                
     * Check for existence with creation.                             
     */                                                               
                                                                      
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
 8006240:	21 8c 0a 00 	andi r12,r12,0xa00                             
 8006244:	34 01 0a 00 	mvi r1,2560                                    
 8006248:	45 81 00 22 	be r12,r1,80062d0 <sem_open+0x140>             
 800624c:	2b 82 00 24 	lw r2,(sp+36)                                  
 8006250:	78 01 08 02 	mvhi r1,0x802                                  
 8006254:	37 83 00 1c 	addi r3,sp,28                                  
 8006258:	38 21 4c a8 	ori r1,r1,0x4ca8                               
 800625c:	f8 00 07 9c 	calli 80080cc <_Objects_Get>                   
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );   
    }                                                                 
                                                                      
    the_semaphore = _POSIX_Semaphore_Get( &the_semaphore_id, &location );
    the_semaphore->open_count += 1;                                   
 8006260:	28 22 00 18 	lw r2,(r1+24)                                  
    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( &the_semaphore_id, &location );
 8006264:	5b 81 00 20 	sw (sp+32),r1                                  
    the_semaphore->open_count += 1;                                   
 8006268:	34 42 00 01 	addi r2,r2,1                                   
 800626c:	58 22 00 18 	sw (r1+24),r2                                  
    _Thread_Enable_dispatch();                                        
 8006270:	f8 00 0a fd 	calli 8008e64 <_Thread_Enable_dispatch>        
    _Thread_Enable_dispatch();                                        
 8006274:	f8 00 0a fc 	calli 8008e64 <_Thread_Enable_dispatch>        
return_id:                                                            
  #if defined(RTEMS_USE_16_BIT_OBJECT)                                
    the_semaphore->Semaphore_id = the_semaphore->Object.id;           
    id = &the_semaphore->Semaphore_id;                                
  #else                                                               
    id = (sem_t *)&the_semaphore->Object.id;                          
 8006278:	2b 81 00 20 	lw r1,(sp+32)                                  
 800627c:	34 21 00 08 	addi r1,r1,8                                   
  #endif                                                              
  return id;                                                          
}                                                                     
 8006280:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006284:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8006288:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800628c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8006290:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8006294:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8006298:	37 9c 00 40 	addi sp,sp,64                                  
 800629c:	c3 a0 00 00 	ret                                            
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
    va_start(arg, oflag);                                             
    mode = (mode_t) va_arg( arg, unsigned int );                      
    value = va_arg( arg, unsigned int );                              
 80062a0:	2b 8f 00 30 	lw r15,(sp+48)                                 
 80062a4:	e3 ff ff d3 	bi 80061f0 <sem_open+0x60>                     
  /*                                                                  
   *  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(                            
 80062a8:	34 02 00 00 	mvi r2,0                                       
 80062ac:	b9 e0 18 00 	mv r3,r15                                      
 80062b0:	37 84 00 20 	addi r4,sp,32                                  
 80062b4:	b9 c0 08 00 	mv r1,r14                                      
 80062b8:	f8 00 1b 5c 	calli 800d028 <_POSIX_Semaphore_Create_support>
 80062bc:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  /*                                                                  
   * errno was set by Create_support, so don't set it again.          
   */                                                                 
                                                                      
  _Thread_Enable_dispatch();                                          
 80062c0:	f8 00 0a e9 	calli 8008e64 <_Thread_Enable_dispatch>        
                                                                      
  if ( status == -1 )                                                 
    return SEM_FAILED;                                                
 80062c4:	34 01 ff ff 	mvi r1,-1                                      
   * errno was set by Create_support, so don't set it again.          
   */                                                                 
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  if ( status == -1 )                                                 
 80062c8:	5d 61 ff ec 	bne r11,r1,8006278 <sem_open+0xe8>             
 80062cc:	e3 ff ff ed 	bi 8006280 <sem_open+0xf0>                     
    /*                                                                
     * Check for existence with creation.                             
     */                                                               
                                                                      
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
      _Thread_Enable_dispatch();                                      
 80062d0:	f8 00 0a e5 	calli 8008e64 <_Thread_Enable_dispatch>        
      rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );   
 80062d4:	f8 00 2b 9d 	calli 8011148 <__errno>                        
 80062d8:	34 02 00 11 	mvi r2,17                                      
 80062dc:	58 22 00 00 	sw (r1+0),r2                                   
 80062e0:	34 01 ff ff 	mvi r1,-1                                      
 80062e4:	e3 ff ff e7 	bi 8006280 <sem_open+0xf0>                     
                                                                      

0800634c <sem_timedwait>: int sem_timedwait( sem_t *sem, const struct timespec *abstime ) {
 800634c:	37 9c ff f4 	addi sp,sp,-12                                 
 8006350:	5b 8b 00 08 	sw (sp+8),r11                                  
 8006354:	5b 9d 00 04 	sw (sp+4),ra                                   
 8006358:	b8 20 58 00 	mv r11,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 );       
 800635c:	b8 40 08 00 	mv r1,r2                                       
 8006360:	37 82 00 0c 	addi r2,sp,12                                  
 8006364:	f8 00 17 f1 	calli 800c328 <_POSIX_Absolute_timeout_to_ticks>
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
 8006368:	34 02 00 03 	mvi r2,3                                       
 800636c:	44 22 00 09 	be r1,r2,8006390 <sem_timedwait+0x44>          <== ALWAYS TAKEN
    do_wait = false;                                                  
                                                                      
  lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks ); 
 8006370:	2b 83 00 0c 	lw r3,(sp+12)                                  <== NOT EXECUTED
 8006374:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8006378:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 800637c:	f8 00 1b bf 	calli 800d278 <_POSIX_Semaphore_Wait_support>  <== NOT EXECUTED
         lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )               
      rtems_set_errno_and_return_minus_one( ETIMEDOUT );              
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
 8006380:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8006384:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8006388:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 800638c:	c3 a0 00 00 	ret                                            <== 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 ); 
 8006390:	2b 83 00 0c 	lw r3,(sp+12)                                  
 8006394:	b9 60 08 00 	mv r1,r11                                      
 8006398:	34 02 00 01 	mvi r2,1                                       
 800639c:	f8 00 1b b7 	calli 800d278 <_POSIX_Semaphore_Wait_support>  
         lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )               
      rtems_set_errno_and_return_minus_one( ETIMEDOUT );              
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
 80063a0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80063a4:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80063a8:	37 9c 00 0c 	addi sp,sp,12                                  
 80063ac:	c3 a0 00 00 	ret                                            
                                                                      

08003c74 <sigaction>: int sigaction( int sig, const struct sigaction *act, struct sigaction *oact ) {
 8003c74:	37 9c ff f0 	addi sp,sp,-16                                 
 8003c78:	5b 8b 00 10 	sw (sp+16),r11                                 
 8003c7c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8003c80:	5b 8d 00 08 	sw (sp+8),r13                                  
 8003c84:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003c88:	b8 20 58 00 	mv r11,r1                                      
 8003c8c:	b8 40 60 00 	mv r12,r2                                      
  ISR_Level     level;                                                
                                                                      
  if ( oact )                                                         
 8003c90:	44 60 00 0e 	be r3,r0,8003cc8 <sigaction+0x54>              
    *oact = _POSIX_signals_Vectors[ sig ];                            
 8003c94:	b4 21 08 00 	add r1,r1,r1                                   
 8003c98:	b4 2b 08 00 	add r1,r1,r11                                  
 8003c9c:	78 02 08 02 	mvhi r2,0x802                                  
 8003ca0:	b4 21 08 00 	add r1,r1,r1                                   
 8003ca4:	38 42 0d d8 	ori r2,r2,0xdd8                                
 8003ca8:	b4 21 08 00 	add r1,r1,r1                                   
 8003cac:	b4 41 08 00 	add r1,r2,r1                                   
 8003cb0:	28 22 00 00 	lw r2,(r1+0)                                   
 8003cb4:	58 62 00 00 	sw (r3+0),r2                                   
 8003cb8:	28 22 00 04 	lw r2,(r1+4)                                   
 8003cbc:	58 62 00 04 	sw (r3+4),r2                                   
 8003cc0:	28 21 00 08 	lw r1,(r1+8)                                   
 8003cc4:	58 61 00 08 	sw (r3+8),r1                                   
                                                                      
  if ( !sig )                                                         
 8003cc8:	45 60 00 04 	be r11,r0,8003cd8 <sigaction+0x64>             
                                                                      
static inline bool is_valid_signo(                                    
  int signo                                                           
)                                                                     
{                                                                     
  return ((signo) >= 1 && (signo) <= 32 );                            
 8003ccc:	35 61 ff ff 	addi r1,r11,-1                                 
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
 8003cd0:	34 02 00 1f 	mvi r2,31                                      
 8003cd4:	50 41 00 06 	bgeu r2,r1,8003cec <sigaction+0x78>            
   *  NOTE: Solaris documentation claims to "silently enforce" this which
   *        contradicts the POSIX specification.                      
   */                                                                 
                                                                      
  if ( sig == SIGKILL )                                               
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8003cd8:	f8 00 29 5b 	calli 800e244 <__errno>                        
 8003cdc:	34 02 00 16 	mvi r2,22                                      
 8003ce0:	58 22 00 00 	sw (r1+0),r2                                   
 8003ce4:	34 01 ff ff 	mvi r1,-1                                      
 8003ce8:	e0 00 00 1c 	bi 8003d58 <sigaction+0xe4>                    
   *                                                                  
   *  NOTE: Solaris documentation claims to "silently enforce" this which
   *        contradicts the POSIX specification.                      
   */                                                                 
                                                                      
  if ( sig == SIGKILL )                                               
 8003cec:	34 01 00 09 	mvi r1,9                                       
 8003cf0:	45 61 ff fa 	be r11,r1,8003cd8 <sigaction+0x64>             
   *      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;                                                           
 8003cf4:	34 01 00 00 	mvi r1,0                                       
  /*                                                                  
   *  Evaluate the new action structure and set the global signal vector
   *  appropriately.                                                  
   */                                                                 
                                                                      
  if ( act ) {                                                        
 8003cf8:	45 80 00 18 	be r12,r0,8003d58 <sigaction+0xe4>             <== NEVER TAKEN
    /*                                                                
     *  Unless the user is installing the default signal actions, then
     *  we can just copy the provided sigaction structure into the vectors.
     */                                                               
                                                                      
    _ISR_Disable( level );                                            
 8003cfc:	90 00 68 00 	rcsr r13,IE                                    
 8003d00:	34 01 ff fe 	mvi r1,-2                                      
 8003d04:	a1 a1 08 00 	and r1,r13,r1                                  
 8003d08:	d0 01 00 00 	wcsr IE,r1                                     
      if ( act->sa_handler == SIG_DFL ) {                             
 8003d0c:	29 81 00 08 	lw r1,(r12+8)                                  
 8003d10:	44 20 00 18 	be r1,r0,8003d70 <sigaction+0xfc>              
        _POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ];
      } else {                                                        
         _POSIX_signals_Clear_process_signals( sig );                 
 8003d14:	b9 60 08 00 	mv r1,r11                                      
 8003d18:	f8 00 19 6c 	calli 800a2c8 <_POSIX_signals_Clear_process_signals>
         _POSIX_signals_Vectors[ sig ] = *act;                        
 8003d1c:	b5 6b 08 00 	add r1,r11,r11                                 
 8003d20:	b4 2b 58 00 	add r11,r1,r11                                 
 8003d24:	29 82 00 00 	lw r2,(r12+0)                                  
 8003d28:	78 01 08 02 	mvhi r1,0x802                                  
 8003d2c:	b5 6b 58 00 	add r11,r11,r11                                
 8003d30:	38 21 0d d8 	ori r1,r1,0xdd8                                
 8003d34:	b5 6b 58 00 	add r11,r11,r11                                
 8003d38:	b4 2b 58 00 	add r11,r1,r11                                 
 8003d3c:	59 62 00 00 	sw (r11+0),r2                                  
 8003d40:	29 81 00 04 	lw r1,(r12+4)                                  
 8003d44:	59 61 00 04 	sw (r11+4),r1                                  
 8003d48:	29 81 00 08 	lw r1,(r12+8)                                  
 8003d4c:	59 61 00 08 	sw (r11+8),r1                                  
      }                                                               
    _ISR_Enable( level );                                             
 8003d50:	d0 0d 00 00 	wcsr IE,r13                                    
   *      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;                                                           
 8003d54:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8003d58:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003d5c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003d60:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003d64:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003d68:	37 9c 00 10 	addi sp,sp,16                                  
 8003d6c:	c3 a0 00 00 	ret                                            
     *  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 ];
 8003d70:	b5 6b 08 00 	add r1,r11,r11                                 
 8003d74:	b4 2b 58 00 	add r11,r1,r11                                 
 8003d78:	b5 6b 58 00 	add r11,r11,r11                                
 8003d7c:	78 02 08 01 	mvhi r2,0x801                                  
 8003d80:	b5 6b 58 00 	add r11,r11,r11                                
 8003d84:	38 42 f1 50 	ori r2,r2,0xf150                               
 8003d88:	b4 4b 10 00 	add r2,r2,r11                                  
 8003d8c:	28 44 00 00 	lw r4,(r2+0)                                   
 8003d90:	28 43 00 04 	lw r3,(r2+4)                                   
 8003d94:	78 01 08 02 	mvhi r1,0x802                                  
 8003d98:	28 42 00 08 	lw r2,(r2+8)                                   
 8003d9c:	38 21 0d d8 	ori r1,r1,0xdd8                                
 8003da0:	b4 2b 58 00 	add r11,r1,r11                                 
 8003da4:	59 64 00 00 	sw (r11+0),r4                                  
 8003da8:	59 63 00 04 	sw (r11+4),r3                                  
 8003dac:	59 62 00 08 	sw (r11+8),r2                                  
 8003db0:	e3 ff ff e8 	bi 8003d50 <sigaction+0xdc>                    
                                                                      

0800421c <sigtimedwait>: int sigtimedwait( const sigset_t *set, siginfo_t *info, const struct timespec *timeout ) {
 800421c:	37 9c ff d8 	addi sp,sp,-40                                 
 8004220:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8004224:	5b 8c 00 18 	sw (sp+24),r12                                 
 8004228:	5b 8d 00 14 	sw (sp+20),r13                                 
 800422c:	5b 8e 00 10 	sw (sp+16),r14                                 
 8004230:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8004234:	5b 90 00 08 	sw (sp+8),r16                                  
 8004238:	5b 9d 00 04 	sw (sp+4),ra                                   
 800423c:	b8 20 68 00 	mv r13,r1                                      
 8004240:	b8 40 58 00 	mv r11,r2                                      
 8004244:	b8 60 60 00 	mv r12,r3                                      
  ISR_Level          level;                                           
                                                                      
  /*                                                                  
   *  Error check parameters before disabling interrupts.             
   */                                                                 
  if ( !set )                                                         
 8004248:	44 20 00 70 	be r1,r0,8004408 <sigtimedwait+0x1ec>          
  /*  NOTE: This is very specifically a RELATIVE not ABSOLUTE time    
   *        in the Open Group specification.                          
   */                                                                 
                                                                      
  interval = 0;                                                       
  if ( timeout ) {                                                    
 800424c:	44 60 00 5c 	be r3,r0,80043bc <sigtimedwait+0x1a0>          
                                                                      
    if ( !_Timespec_Is_valid( timeout ) )                             
 8004250:	b8 60 08 00 	mv r1,r3                                       
 8004254:	f8 00 0e 85 	calli 8007c68 <_Timespec_Is_valid>             
 8004258:	44 20 00 6c 	be r1,r0,8004408 <sigtimedwait+0x1ec>          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    interval = _Timespec_To_ticks( timeout );                         
 800425c:	b9 80 08 00 	mv r1,r12                                      
 8004260:	f8 00 0e a4 	calli 8007cf0 <_Timespec_To_ticks>             
                                                                      
    if ( !interval )                                                  
 8004264:	44 20 00 69 	be r1,r0,8004408 <sigtimedwait+0x1ec>          <== NEVER TAKEN
                                                                      
  /*                                                                  
   *  Initialize local variables.                                     
   */                                                                 
                                                                      
  the_info = ( info ) ? info : &signal_information;                   
 8004268:	45 60 00 57 	be r11,r0,80043c4 <sigtimedwait+0x1a8>         <== NEVER TAKEN
                                                                      
  the_thread = _Thread_Executing;                                     
 800426c:	78 0c 08 02 	mvhi r12,0x802                                 
 8004270:	39 8c 1d 88 	ori r12,r12,0x1d88                             
 8004274:	29 83 00 0c 	lw r3,(r12+12)                                 
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
 8004278:	28 6f 01 20 	lw r15,(r3+288)                                
   *  What if they are already pending?                               
   */                                                                 
                                                                      
  /* API signals pending? */                                          
                                                                      
  _ISR_Disable( level );                                              
 800427c:	90 00 80 00 	rcsr r16,IE                                    
 8004280:	34 02 ff fe 	mvi r2,-2                                      
 8004284:	a2 02 10 00 	and r2,r16,r2                                  
 8004288:	d0 02 00 00 	wcsr IE,r2                                     
  if ( *set & api->signals_pending ) {                                
 800428c:	29 a5 00 00 	lw r5,(r13+0)                                  
 8004290:	29 e4 00 d4 	lw r4,(r15+212)                                
 8004294:	a0 a4 10 00 	and r2,r5,r4                                   
 8004298:	5c 40 00 4d 	bne r2,r0,80043cc <sigtimedwait+0x1b0>         
    return the_info->si_signo;                                        
  }                                                                   
                                                                      
  /* Process pending signals? */                                      
                                                                      
  if ( *set & _POSIX_signals_Pending ) {                              
 800429c:	78 04 08 02 	mvhi r4,0x802                                  
 80042a0:	38 84 1f cc 	ori r4,r4,0x1fcc                               
 80042a4:	28 84 00 00 	lw r4,(r4+0)                                   
 80042a8:	a0 a4 28 00 	and r5,r5,r4                                   
 80042ac:	5c a2 00 35 	bne r5,r2,8004380 <sigtimedwait+0x164>         
 80042b0:	78 02 08 02 	mvhi r2,0x802                                  
 80042b4:	38 42 18 b8 	ori r2,r2,0x18b8                               
 80042b8:	28 44 00 00 	lw r4,(r2+0)                                   
    the_info->si_code = SI_USER;                                      
    the_info->si_value.sival_int = 0;                                 
    return signo;                                                     
  }                                                                   
                                                                      
  the_info->si_signo = -1;                                            
 80042bc:	34 05 ff ff 	mvi r5,-1                                      
 80042c0:	59 65 00 00 	sw (r11+0),r5                                  
 80042c4:	34 84 00 01 	addi r4,r4,1                                   
 80042c8:	58 44 00 00 	sw (r2+0),r4                                   
                                                                      
  _Thread_Disable_dispatch();                                         
    the_thread->Wait.queue           = &_POSIX_signals_Wait_queue;    
    the_thread->Wait.return_code     = EINTR;                         
 80042cc:	34 02 00 04 	mvi r2,4                                       
 80042d0:	58 62 00 34 	sw (r3+52),r2                                  
    the_thread->Wait.option          = *set;                          
 80042d4:	29 a4 00 00 	lw r4,(r13+0)                                  
  }                                                                   
                                                                      
  the_info->si_signo = -1;                                            
                                                                      
  _Thread_Disable_dispatch();                                         
    the_thread->Wait.queue           = &_POSIX_signals_Wait_queue;    
 80042d8:	78 02 08 02 	mvhi r2,0x802                                  
 80042dc:	38 42 1f 64 	ori r2,r2,0x1f64                               
    the_thread->Wait.return_code     = EINTR;                         
    the_thread->Wait.option          = *set;                          
 80042e0:	58 64 00 30 	sw (r3+48),r4                                  
    the_thread->Wait.return_argument = the_info;                      
 80042e4:	58 6b 00 28 	sw (r3+40),r11                                 
  }                                                                   
                                                                      
  the_info->si_signo = -1;                                            
                                                                      
  _Thread_Disable_dispatch();                                         
    the_thread->Wait.queue           = &_POSIX_signals_Wait_queue;    
 80042e8:	58 62 00 44 	sw (r3+68),r2                                  
                                                                      
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;
 80042ec:	34 03 00 01 	mvi r3,1                                       
 80042f0:	58 43 00 30 	sw (r2+48),r3                                  
    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 );                                             
 80042f4:	d0 10 00 00 	wcsr IE,r16                                    
    _Thread_queue_Enqueue( &_POSIX_signals_Wait_queue, interval );    
 80042f8:	78 03 08 00 	mvhi r3,0x800                                  
 80042fc:	b8 20 10 00 	mv r2,r1                                       
 8004300:	78 01 08 02 	mvhi r1,0x802                                  
 8004304:	38 63 78 88 	ori r3,r3,0x7888                               
 8004308:	38 21 1f 64 	ori r1,r1,0x1f64                               
 800430c:	f8 00 0c 52 	calli 8007454 <_Thread_queue_Enqueue_with_handler>
  _Thread_Enable_dispatch();                                          
 8004310:	f8 00 0b 17 	calli 8006f6c <_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 );
 8004314:	29 62 00 00 	lw r2,(r11+0)                                  
 8004318:	b9 e0 08 00 	mv r1,r15                                      
 800431c:	b9 60 18 00 	mv r3,r11                                      
 8004320:	34 04 00 00 	mvi r4,0                                       
 8004324:	34 05 00 00 	mvi r5,0                                       
 8004328:	f8 00 1a 4a 	calli 800ac50 <_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)                 
 800432c:	29 81 00 0c 	lw r1,(r12+12)                                 
 8004330:	28 22 00 34 	lw r2,(r1+52)                                  
 8004334:	34 01 00 04 	mvi r1,4                                       
 8004338:	5c 41 00 39 	bne r2,r1,800441c <sigtimedwait+0x200>         
       || !(*set & signo_to_mask( the_info->si_signo )) ) {           
 800433c:	29 6e 00 00 	lw r14,(r11+0)                                 
 8004340:	34 01 00 01 	mvi r1,1                                       
 8004344:	35 c2 ff ff 	addi r2,r14,-1                                 
 8004348:	f8 00 66 9e 	calli 801ddc0 <__ashlsi3>                      
 800434c:	29 a2 00 00 	lw r2,(r13+0)                                  
 8004350:	a0 22 08 00 	and r1,r1,r2                                   
 8004354:	44 20 00 32 	be r1,r0,800441c <sigtimedwait+0x200>          
    errno = _Thread_Executing->Wait.return_code;                      
    return -1;                                                        
  }                                                                   
                                                                      
  return the_info->si_signo;                                          
}                                                                     
 8004358:	b9 c0 08 00 	mv r1,r14                                      
 800435c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004360:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8004364:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8004368:	2b 8d 00 14 	lw r13,(sp+20)                                 
 800436c:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8004370:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8004374:	2b 90 00 08 	lw r16,(sp+8)                                  
 8004378:	37 9c 00 28 	addi sp,sp,40                                  
 800437c:	c3 a0 00 00 	ret                                            
  }                                                                   
                                                                      
  /* Process pending signals? */                                      
                                                                      
  if ( *set & _POSIX_signals_Pending ) {                              
    signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending );      
 8004380:	b8 80 08 00 	mv r1,r4                                       
 8004384:	fb ff ff 86 	calli 800419c <_POSIX_signals_Get_lowest>      
 8004388:	b8 20 70 00 	mv r14,r1                                      
    _POSIX_signals_Clear_signals( api, signo, the_info, true, false );
 800438c:	b9 c0 10 00 	mv r2,r14                                      
 8004390:	b9 e0 08 00 	mv r1,r15                                      
 8004394:	b9 60 18 00 	mv r3,r11                                      
 8004398:	34 04 00 01 	mvi r4,1                                       
 800439c:	34 05 00 00 	mvi r5,0                                       
 80043a0:	f8 00 1a 2c 	calli 800ac50 <_POSIX_signals_Clear_signals>   
    _ISR_Enable( level );                                             
 80043a4:	d0 10 00 00 	wcsr IE,r16                                    
                                                                      
    the_info->si_signo = signo;                                       
    the_info->si_code = SI_USER;                                      
 80043a8:	34 01 00 01 	mvi r1,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;                                       
 80043ac:	59 6e 00 00 	sw (r11+0),r14                                 
    the_info->si_code = SI_USER;                                      
 80043b0:	59 61 00 04 	sw (r11+4),r1                                  
    the_info->si_value.sival_int = 0;                                 
 80043b4:	59 60 00 08 	sw (r11+8),r0                                  
    return signo;                                                     
 80043b8:	e3 ff ff e8 	bi 8004358 <sigtimedwait+0x13c>                
                                                                      
  /*  NOTE: This is very specifically a RELATIVE not ABSOLUTE time    
   *        in the Open Group specification.                          
   */                                                                 
                                                                      
  interval = 0;                                                       
 80043bc:	34 01 00 00 	mvi r1,0                                       
                                                                      
  /*                                                                  
   *  Initialize local variables.                                     
   */                                                                 
                                                                      
  the_info = ( info ) ? info : &signal_information;                   
 80043c0:	5d 60 ff ab 	bne r11,r0,800426c <sigtimedwait+0x50>         
 80043c4:	37 8b 00 20 	addi r11,sp,32                                 
 80043c8:	e3 ff ff a9 	bi 800426c <sigtimedwait+0x50>                 
  /* 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 );
 80043cc:	b8 80 08 00 	mv r1,r4                                       
 80043d0:	fb ff ff 73 	calli 800419c <_POSIX_signals_Get_lowest>      
 80043d4:	b8 20 10 00 	mv r2,r1                                       
 80043d8:	59 61 00 00 	sw (r11+0),r1                                  
    _POSIX_signals_Clear_signals(                                     
 80043dc:	b9 60 18 00 	mv r3,r11                                      
 80043e0:	b9 e0 08 00 	mv r1,r15                                      
 80043e4:	34 04 00 00 	mvi r4,0                                       
 80043e8:	34 05 00 00 	mvi r5,0                                       
 80043ec:	f8 00 1a 19 	calli 800ac50 <_POSIX_signals_Clear_signals>   
      the_info->si_signo,                                             
      the_info,                                                       
      false,                                                          
      false                                                           
    );                                                                
    _ISR_Enable( level );                                             
 80043f0:	d0 10 00 00 	wcsr IE,r16                                    
                                                                      
    the_info->si_code = SI_USER;                                      
 80043f4:	34 01 00 01 	mvi r1,1                                       
 80043f8:	59 61 00 04 	sw (r11+4),r1                                  
    the_info->si_value.sival_int = 0;                                 
 80043fc:	59 60 00 08 	sw (r11+8),r0                                  
    return the_info->si_signo;                                        
 8004400:	29 6e 00 00 	lw r14,(r11+0)                                 
 8004404:	e3 ff ff d5 	bi 8004358 <sigtimedwait+0x13c>                
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    interval = _Timespec_To_ticks( timeout );                         
                                                                      
    if ( !interval )                                                  
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 8004408:	f8 00 29 49 	calli 800e92c <__errno>                        
 800440c:	34 02 00 16 	mvi r2,22                                      
 8004410:	58 22 00 00 	sw (r1+0),r2                                   
 8004414:	34 0e ff ff 	mvi r14,-1                                     
 8004418:	e3 ff ff d0 	bi 8004358 <sigtimedwait+0x13c>                
   * 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;                      
 800441c:	f8 00 29 44 	calli 800e92c <__errno>                        
 8004420:	29 82 00 0c 	lw r2,(r12+12)                                 
    return -1;                                                        
 8004424:	34 0e ff ff 	mvi r14,-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;                      
 8004428:	28 42 00 34 	lw r2,(r2+52)                                  
 800442c:	58 22 00 00 	sw (r1+0),r2                                   
    return -1;                                                        
 8004430:	e3 ff ff ca 	bi 8004358 <sigtimedwait+0x13c>                
                                                                      

080064dc <sigwait>: int sigwait( const sigset_t *set, int *sig ) {
 80064dc:	37 9c ff f8 	addi sp,sp,-8                                  
 80064e0:	5b 8b 00 08 	sw (sp+8),r11                                  
 80064e4:	5b 9d 00 04 	sw (sp+4),ra                                   
  int status;                                                         
                                                                      
  status = sigtimedwait( set, NULL, NULL );                           
 80064e8:	34 03 00 00 	mvi r3,0                                       
                                                                      
int sigwait(                                                          
  const sigset_t  *set,                                               
  int             *sig                                                
)                                                                     
{                                                                     
 80064ec:	b8 40 58 00 	mv r11,r2                                      
  int status;                                                         
                                                                      
  status = sigtimedwait( set, NULL, NULL );                           
 80064f0:	34 02 00 00 	mvi r2,0                                       
 80064f4:	fb ff ff 6d 	calli 80062a8 <sigtimedwait>                   
                                                                      
  if ( status != -1 ) {                                               
 80064f8:	34 02 ff ff 	mvi r2,-1                                      
 80064fc:	44 22 00 09 	be r1,r2,8006520 <sigwait+0x44>                
    if ( sig )                                                        
      *sig = status;                                                  
    return 0;                                                         
 8006500:	34 03 00 00 	mvi r3,0                                       
  int status;                                                         
                                                                      
  status = sigtimedwait( set, NULL, NULL );                           
                                                                      
  if ( status != -1 ) {                                               
    if ( sig )                                                        
 8006504:	45 60 00 02 	be r11,r0,800650c <sigwait+0x30>               <== NEVER TAKEN
      *sig = status;                                                  
 8006508:	59 61 00 00 	sw (r11+0),r1                                  
    return 0;                                                         
  }                                                                   
                                                                      
  return errno;                                                       
}                                                                     
 800650c:	b8 60 08 00 	mv r1,r3                                       
 8006510:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006514:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8006518:	37 9c 00 08 	addi sp,sp,8                                   
 800651c:	c3 a0 00 00 	ret                                            
    if ( sig )                                                        
      *sig = status;                                                  
    return 0;                                                         
  }                                                                   
                                                                      
  return errno;                                                       
 8006520:	f8 00 28 1e 	calli 8010598 <__errno>                        
 8006524:	28 23 00 00 	lw r3,(r1+0)                                   
}                                                                     
 8006528:	b8 60 08 00 	mv r1,r3                                       
 800652c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006530:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8006534:	37 9c 00 08 	addi sp,sp,8                                   
 8006538:	c3 a0 00 00 	ret                                            
                                                                      

0800312c <timer_create>: int timer_create( clockid_t clock_id, struct sigevent *evp, timer_t *timerid ) {
 800312c:	37 9c ff f0 	addi sp,sp,-16                                 
 8003130:	5b 8b 00 10 	sw (sp+16),r11                                 
 8003134:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8003138:	5b 8d 00 08 	sw (sp+8),r13                                  
 800313c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003140:	b8 40 58 00 	mv r11,r2                                      
  POSIX_Timer_Control *ptimer;                                        
                                                                      
  if ( clock_id != CLOCK_REALTIME )                                   
 8003144:	34 02 00 01 	mvi r2,1                                       
int timer_create(                                                     
  clockid_t        clock_id,                                          
  struct sigevent *evp,                                               
  timer_t         *timerid                                            
)                                                                     
{                                                                     
 8003148:	b8 60 68 00 	mv r13,r3                                      
  POSIX_Timer_Control *ptimer;                                        
                                                                      
  if ( clock_id != CLOCK_REALTIME )                                   
 800314c:	5c 22 00 06 	bne r1,r2,8003164 <timer_create+0x38>          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !timerid )                                                     
 8003150:	44 60 00 05 	be r3,r0,8003164 <timer_create+0x38>           
 /*                                                                   
  *  The data of the structure evp are checked in order to verify if they
  *  are coherent.                                                    
  */                                                                  
                                                                      
  if (evp != NULL) {                                                  
 8003154:	45 60 00 14 	be r11,r0,80031a4 <timer_create+0x78>          
    /* The structure has data */                                      
    if ( ( evp->sigev_notify != SIGEV_NONE ) &&                       
 8003158:	29 62 00 00 	lw r2,(r11+0)                                  
 800315c:	34 42 ff ff 	addi r2,r2,-1                                  
 8003160:	50 22 00 0b 	bgeu r1,r2,800318c <timer_create+0x60>         <== ALWAYS TAKEN
                                                                      
     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 );                
 8003164:	f8 00 2b 43 	calli 800de70 <__errno>                        
 8003168:	34 02 00 16 	mvi r2,22                                      
 800316c:	58 22 00 00 	sw (r1+0),r2                                   
 8003170:	34 01 ff ff 	mvi r1,-1                                      
  _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);   
                                                                      
  *timerid  = ptimer->Object.id;                                      
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
 8003174:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003178:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800317c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003180:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003184:	37 9c 00 10 	addi sp,sp,16                                  
 8003188:	c3 a0 00 00 	ret                                            
         ( 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 )                                         
 800318c:	29 61 00 04 	lw r1,(r11+4)                                  
 8003190:	44 20 ff f5 	be r1,r0,8003164 <timer_create+0x38>           <== NEVER TAKEN
                                                                      
static inline bool is_valid_signo(                                    
  int signo                                                           
)                                                                     
{                                                                     
  return ((signo) >= 1 && (signo) <= 32 );                            
 8003194:	34 21 ff ff 	addi r1,r1,-1                                  
       rtems_set_errno_and_return_minus_one( EINVAL );                
                                                                      
     if ( !is_valid_signo(evp->sigev_signo) )                         
 8003198:	34 02 00 1f 	mvi r2,31                                      
 800319c:	50 41 00 02 	bgeu r2,r1,80031a4 <timer_create+0x78>         <== ALWAYS TAKEN
 80031a0:	e3 ff ff f1 	bi 8003164 <timer_create+0x38>                 <== NOT EXECUTED
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 80031a4:	78 01 08 01 	mvhi r1,0x801                                  
 80031a8:	38 21 f8 b8 	ori r1,r1,0xf8b8                               
 80031ac:	28 22 00 00 	lw r2,(r1+0)                                   
 80031b0:	34 42 00 01 	addi r2,r2,1                                   
 80031b4:	58 22 00 00 	sw (r1+0),r2                                   
 *  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 );
 80031b8:	78 0c 08 01 	mvhi r12,0x801                                 
 80031bc:	39 8c fb 50 	ori r12,r12,0xfb50                             
 80031c0:	b9 80 08 00 	mv r1,r12                                      
 80031c4:	f8 00 07 63 	calli 8004f50 <_Objects_Allocate>              
                                                                      
  /*                                                                  
   *  Allocate a timer                                                
   */                                                                 
  ptimer = _POSIX_Timer_Allocate();                                   
  if ( !ptimer ) {                                                    
 80031c8:	44 20 00 29 	be r1,r0,800326c <timer_create+0x140>          
  }                                                                   
                                                                      
  /* The data of the created timer are stored to use them later */    
                                                                      
  ptimer->state     = POSIX_TIMER_STATE_CREATE_NEW;                   
  ptimer->thread_id = _Thread_Executing->Object.id;                   
 80031cc:	78 02 08 01 	mvhi r2,0x801                                  
    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;                   
 80031d0:	34 03 00 02 	mvi r3,2                                       
 80031d4:	30 23 00 3c 	sb (r1+60),r3                                  
  ptimer->thread_id = _Thread_Executing->Object.id;                   
 80031d8:	38 42 fd 88 	ori r2,r2,0xfd88                               
 80031dc:	28 42 00 0c 	lw r2,(r2+12)                                  
 80031e0:	28 42 00 08 	lw r2,(r2+8)                                   
 80031e4:	58 22 00 38 	sw (r1+56),r2                                  
                                                                      
  if ( evp != NULL ) {                                                
 80031e8:	45 60 00 07 	be r11,r0,8003204 <timer_create+0xd8>          
    ptimer->inf.sigev_notify = evp->sigev_notify;                     
 80031ec:	29 64 00 00 	lw r4,(r11+0)                                  
    ptimer->inf.sigev_signo  = evp->sigev_signo;                      
 80031f0:	29 63 00 04 	lw r3,(r11+4)                                  
    ptimer->inf.sigev_value  = evp->sigev_value;                      
 80031f4:	29 62 00 08 	lw r2,(r11+8)                                  
                                                                      
  ptimer->state     = POSIX_TIMER_STATE_CREATE_NEW;                   
  ptimer->thread_id = _Thread_Executing->Object.id;                   
                                                                      
  if ( evp != NULL ) {                                                
    ptimer->inf.sigev_notify = evp->sigev_notify;                     
 80031f8:	58 24 00 40 	sw (r1+64),r4                                  
    ptimer->inf.sigev_signo  = evp->sigev_signo;                      
 80031fc:	58 23 00 44 	sw (r1+68),r3                                  
    ptimer->inf.sigev_value  = evp->sigev_value;                      
 8003200:	58 22 00 48 	sw (r1+72),r2                                  
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 8003204:	28 23 00 08 	lw r3,(r1+8)                                   
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8003208:	29 84 00 1c 	lw r4,(r12+28)                                 
  }                                                                   
                                                                      
  ptimer->overrun  = 0;                                               
 800320c:	58 20 00 68 	sw (r1+104),r0                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 8003210:	20 62 ff ff 	andi r2,r3,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8003214:	b4 42 10 00 	add r2,r2,r2                                   
 8003218:	b4 42 10 00 	add r2,r2,r2                                   
  ptimer->timer_data.it_value.tv_sec     = 0;                         
 800321c:	58 20 00 5c 	sw (r1+92),r0                                  
  ptimer->timer_data.it_value.tv_nsec    = 0;                         
 8003220:	58 20 00 60 	sw (r1+96),r0                                  
  ptimer->timer_data.it_interval.tv_sec  = 0;                         
 8003224:	58 20 00 54 	sw (r1+84),r0                                  
  ptimer->timer_data.it_interval.tv_nsec = 0;                         
 8003228:	58 20 00 58 	sw (r1+88),r0                                  
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 800322c:	58 20 00 18 	sw (r1+24),r0                                  
  the_watchdog->routine   = routine;                                  
 8003230:	58 20 00 2c 	sw (r1+44),r0                                  
  the_watchdog->id        = id;                                       
 8003234:	58 20 00 30 	sw (r1+48),r0                                  
  the_watchdog->user_data = user_data;                                
 8003238:	58 20 00 34 	sw (r1+52),r0                                  
 800323c:	b4 82 10 00 	add r2,r4,r2                                   
 8003240:	58 41 00 00 	sw (r2+0),r1                                   
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
 8003244:	58 20 00 0c 	sw (r1+12),r0                                  
                                                                      
  _Watchdog_Initialize( &ptimer->Timer, NULL, 0, NULL );              
  _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);   
                                                                      
  *timerid  = ptimer->Object.id;                                      
 8003248:	59 a3 00 00 	sw (r13+0),r3                                  
  _Thread_Enable_dispatch();                                          
 800324c:	f8 00 0b b2 	calli 8006114 <_Thread_Enable_dispatch>        
  return 0;                                                           
 8003250:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8003254:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003258:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800325c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003260:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003264:	37 9c 00 10 	addi sp,sp,16                                  
 8003268:	c3 a0 00 00 	ret                                            
  /*                                                                  
   *  Allocate a timer                                                
   */                                                                 
  ptimer = _POSIX_Timer_Allocate();                                   
  if ( !ptimer ) {                                                    
    _Thread_Enable_dispatch();                                        
 800326c:	f8 00 0b aa 	calli 8006114 <_Thread_Enable_dispatch>        
    rtems_set_errno_and_return_minus_one( EAGAIN );                   
 8003270:	f8 00 2b 00 	calli 800de70 <__errno>                        
 8003274:	34 02 00 0b 	mvi r2,11                                      
 8003278:	58 22 00 00 	sw (r1+0),r2                                   
 800327c:	34 01 ff ff 	mvi r1,-1                                      
 8003280:	e3 ff ff f5 	bi 8003254 <timer_create+0x128>                
                                                                      

08003284 <timer_settime>: timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue ) {
 8003284:	37 9c ff cc 	addi sp,sp,-52                                 
 8003288:	5b 8b 00 18 	sw (sp+24),r11                                 
 800328c:	5b 8c 00 14 	sw (sp+20),r12                                 
 8003290:	5b 8d 00 10 	sw (sp+16),r13                                 
 8003294:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8003298:	5b 8f 00 08 	sw (sp+8),r15                                  
 800329c:	5b 9d 00 04 	sw (sp+4),ra                                   
 80032a0:	b8 60 60 00 	mv r12,r3                                      
 80032a4:	b8 20 70 00 	mv r14,r1                                      
 80032a8:	b8 40 58 00 	mv r11,r2                                      
 80032ac:	b8 80 68 00 	mv r13,r4                                      
  Objects_Locations    location;                                      
  bool                 activated;                                     
  uint32_t             initial_period;                                
  struct itimerspec    normalize;                                     
                                                                      
  if ( !value )                                                       
 80032b0:	44 60 00 1e 	be r3,r0,8003328 <timer_settime+0xa4>          <== NEVER TAKEN
                                                                      
  /*                                                                  
   * 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) ) ) {                  
 80032b4:	34 61 00 08 	addi r1,r3,8                                   
 80032b8:	f8 00 0f 18 	calli 8006f18 <_Timespec_Is_valid>             
 80032bc:	44 20 00 1b 	be r1,r0,8003328 <timer_settime+0xa4>          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
  if ( !_Timespec_Is_valid( &(value->it_interval) ) ) {               
 80032c0:	b9 80 08 00 	mv r1,r12                                      
 80032c4:	f8 00 0f 15 	calli 8006f18 <_Timespec_Is_valid>             
 80032c8:	44 20 00 18 	be r1,r0,8003328 <timer_settime+0xa4>          <== NEVER TAKEN
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
                                                                      
  if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) {    
 80032cc:	7d 62 00 00 	cmpnei r2,r11,0                                
 80032d0:	7d 61 00 04 	cmpnei r1,r11,4                                
 80032d4:	a0 41 08 00 	and r1,r2,r1                                   
 80032d8:	5c 20 00 14 	bne r1,r0,8003328 <timer_settime+0xa4>         
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
                                                                      
  normalize = *value;                                                 
 80032dc:	29 81 00 0c 	lw r1,(r12+12)                                 
 80032e0:	29 84 00 00 	lw r4,(r12+0)                                  
 80032e4:	29 83 00 04 	lw r3,(r12+4)                                  
 80032e8:	29 82 00 08 	lw r2,(r12+8)                                  
 80032ec:	5b 81 00 28 	sw (sp+40),r1                                  
 80032f0:	5b 84 00 1c 	sw (sp+28),r4                                  
 80032f4:	5b 83 00 20 	sw (sp+32),r3                                  
 80032f8:	5b 82 00 24 	sw (sp+36),r2                                  
                                                                      
  /* Convert absolute to relative time */                             
  if (flags == TIMER_ABSTIME) {                                       
 80032fc:	34 01 00 04 	mvi r1,4                                       
 8003300:	45 61 00 46 	be r11,r1,8003418 <timer_settime+0x194>        
  timer_t            id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (POSIX_Timer_Control *)                                      
    _Objects_Get( &_POSIX_Timer_Information, (Objects_Id) id, location );
 8003304:	78 03 08 01 	mvhi r3,0x801                                  
 8003308:	b8 60 08 00 	mv r1,r3                                       
 800330c:	38 21 fb 50 	ori r1,r1,0xfb50                               
 8003310:	b9 c0 10 00 	mv r2,r14                                      
 8003314:	37 83 00 34 	addi r3,sp,52                                  
 8003318:	f8 00 08 54 	calli 8005468 <_Objects_Get>                   
 800331c:	b8 20 58 00 	mv r11,r1                                      
   * something with the structure of times of the timer: to stop, start
   * or start it again                                                
   */                                                                 
                                                                      
  ptimer = _POSIX_Timer_Get( timerid, &location );                    
  switch ( location ) {                                               
 8003320:	2b 81 00 34 	lw r1,(sp+52)                                  
 8003324:	44 20 00 0d 	be r1,r0,8003358 <timer_settime+0xd4>          
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
 8003328:	f8 00 2a d2 	calli 800de70 <__errno>                        
 800332c:	34 02 00 16 	mvi r2,22                                      
 8003330:	58 22 00 00 	sw (r1+0),r2                                   
 8003334:	34 01 ff ff 	mvi r1,-1                                      
}                                                                     
 8003338:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800333c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003340:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003344:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003348:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800334c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003350:	37 9c 00 34 	addi sp,sp,52                                  
 8003354:	c3 a0 00 00 	ret                                            
  ptimer = _POSIX_Timer_Get( timerid, &location );                    
  switch ( location ) {                                               
                                                                      
    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 ) {
 8003358:	2b 82 00 24 	lw r2,(sp+36)                                  
 800335c:	5c 41 00 03 	bne r2,r1,8003368 <timer_settime+0xe4>         
 8003360:	2b 8e 00 28 	lw r14,(sp+40)                                 
 8003364:	45 c2 00 3a 	be r14,r2,800344c <timer_settime+0x1c8>        
        _Thread_Enable_dispatch();                                    
        return 0;                                                     
       }                                                              
                                                                      
       /* Convert from seconds and nanoseconds to ticks */            
       ptimer->ticks  = _Timespec_To_ticks( &value->it_interval );    
 8003368:	b9 80 08 00 	mv r1,r12                                      
 800336c:	f8 00 0f 0d 	calli 8006fa0 <_Timespec_To_ticks>             
 8003370:	59 61 00 64 	sw (r11+100),r1                                
       initial_period = _Timespec_To_ticks( &normalize.it_value );    
 8003374:	37 81 00 24 	addi r1,sp,36                                  
 8003378:	f8 00 0f 0a 	calli 8006fa0 <_Timespec_To_ticks>             
                                                                      
                                                                      
       activated = _POSIX_Timer_Insert_helper(                        
 800337c:	29 63 00 08 	lw r3,(r11+8)                                  
 8003380:	78 04 08 00 	mvhi r4,0x800                                  
        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 );    
 8003384:	b8 20 10 00 	mv r2,r1                                       
                                                                      
                                                                      
       activated = _POSIX_Timer_Insert_helper(                        
 8003388:	38 84 34 c8 	ori r4,r4,0x34c8                               
 800338c:	35 61 00 10 	addi r1,r11,16                                 
 8003390:	b9 60 28 00 	mv r5,r11                                      
 8003394:	f8 00 1b ad 	calli 800a248 <_POSIX_Timer_Insert_helper>     
         initial_period,                                              
         ptimer->Object.id,                                           
         _POSIX_Timer_TSR,                                            
         ptimer                                                       
       );                                                             
       if ( !activated ) {                                            
 8003398:	44 20 00 16 	be r1,r0,80033f0 <timer_settime+0x16c>         
                                                                      
       /*                                                             
        * The timer has been started and is running.  So we return the
        * old ones in "ovalue"                                        
        */                                                            
       if ( ovalue )                                                  
 800339c:	45 a0 00 09 	be r13,r0,80033c0 <timer_settime+0x13c>        
         *ovalue = ptimer->timer_data;                                
 80033a0:	29 61 00 54 	lw r1,(r11+84)                                 
 80033a4:	59 a1 00 00 	sw (r13+0),r1                                  
 80033a8:	29 61 00 58 	lw r1,(r11+88)                                 
 80033ac:	59 a1 00 04 	sw (r13+4),r1                                  
 80033b0:	29 61 00 5c 	lw r1,(r11+92)                                 
 80033b4:	59 a1 00 08 	sw (r13+8),r1                                  
 80033b8:	29 61 00 60 	lw r1,(r11+96)                                 
 80033bc:	59 a1 00 0c 	sw (r13+12),r1                                 
       ptimer->timer_data = normalize;                                
 80033c0:	2b 82 00 1c 	lw r2,(sp+28)                                  
                                                                      
       /* Indicate that the time is running */                        
       ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;                  
       _TOD_Get( &ptimer->time );                                     
 80033c4:	35 61 00 6c 	addi r1,r11,108                                
        * The timer has been started and is running.  So we return the
        * old ones in "ovalue"                                        
        */                                                            
       if ( ovalue )                                                  
         *ovalue = ptimer->timer_data;                                
       ptimer->timer_data = normalize;                                
 80033c8:	59 62 00 54 	sw (r11+84),r2                                 
 80033cc:	2b 82 00 20 	lw r2,(sp+32)                                  
 80033d0:	59 62 00 58 	sw (r11+88),r2                                 
 80033d4:	2b 82 00 24 	lw r2,(sp+36)                                  
 80033d8:	59 62 00 5c 	sw (r11+92),r2                                 
 80033dc:	2b 82 00 28 	lw r2,(sp+40)                                  
 80033e0:	59 62 00 60 	sw (r11+96),r2                                 
                                                                      
       /* Indicate that the time is running */                        
       ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;                  
 80033e4:	34 02 00 03 	mvi r2,3                                       
 80033e8:	31 62 00 3c 	sb (r11+60),r2                                 
       _TOD_Get( &ptimer->time );                                     
 80033ec:	f8 00 05 04 	calli 80047fc <_TOD_Get>                       
       _Thread_Enable_dispatch();                                     
 80033f0:	f8 00 0b 49 	calli 8006114 <_Thread_Enable_dispatch>        
       return 0;                                                      
 80033f4:	34 01 00 00 	mvi r1,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
}                                                                     
 80033f8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80033fc:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003400:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003404:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003408:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800340c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003410:	37 9c 00 34 	addi sp,sp,52                                  
 8003414:	c3 a0 00 00 	ret                                            
  normalize = *value;                                                 
                                                                      
  /* Convert absolute to relative time */                             
  if (flags == TIMER_ABSTIME) {                                       
    struct timespec now;                                              
    _TOD_Get( &now );                                                 
 8003418:	37 8b 00 2c 	addi r11,sp,44                                 
 800341c:	b9 60 08 00 	mv r1,r11                                      
 8003420:	f8 00 04 f7 	calli 80047fc <_TOD_Get>                       
    /* Check for seconds in the past */                               
    if ( _Timespec_Greater_than( &now, &normalize.it_value ) )        
 8003424:	37 8f 00 24 	addi r15,sp,36                                 
 8003428:	b9 60 08 00 	mv r1,r11                                      
 800342c:	b9 e0 10 00 	mv r2,r15                                      
 8003430:	f8 00 0e af 	calli 8006eec <_Timespec_Greater_than>         
 8003434:	5c 20 ff bd 	bne r1,r0,8003328 <timer_settime+0xa4>         
      rtems_set_errno_and_return_minus_one( EINVAL );                 
    _Timespec_Subtract( &now, &normalize.it_value, &normalize.it_value );
 8003438:	b9 e0 10 00 	mv r2,r15                                      
 800343c:	b9 60 08 00 	mv r1,r11                                      
 8003440:	b9 e0 18 00 	mv r3,r15                                      
 8003444:	f8 00 0e c1 	calli 8006f48 <_Timespec_Subtract>             
 8003448:	e3 ff ff af 	bi 8003304 <timer_settime+0x80>                
                                                                      
    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 );                   
 800344c:	35 61 00 10 	addi r1,r11,16                                 
 8003450:	f8 00 10 5a 	calli 80075b8 <_Watchdog_Remove>               
         /* The old data of the timer are returned */                 
         if ( ovalue )                                                
 8003454:	45 ae 00 09 	be r13,r14,8003478 <timer_settime+0x1f4>       
           *ovalue = ptimer->timer_data;                              
 8003458:	29 61 00 54 	lw r1,(r11+84)                                 
 800345c:	59 a1 00 00 	sw (r13+0),r1                                  
 8003460:	29 61 00 58 	lw r1,(r11+88)                                 
 8003464:	59 a1 00 04 	sw (r13+4),r1                                  
 8003468:	29 61 00 5c 	lw r1,(r11+92)                                 
 800346c:	59 a1 00 08 	sw (r13+8),r1                                  
 8003470:	29 61 00 60 	lw r1,(r11+96)                                 
 8003474:	59 a1 00 0c 	sw (r13+12),r1                                 
         /* The new data are set */                                   
         ptimer->timer_data = normalize;                              
 8003478:	2b 81 00 1c 	lw r1,(sp+28)                                  
 800347c:	59 61 00 54 	sw (r11+84),r1                                 
 8003480:	2b 81 00 20 	lw r1,(sp+32)                                  
 8003484:	59 61 00 58 	sw (r11+88),r1                                 
 8003488:	2b 81 00 24 	lw r1,(sp+36)                                  
 800348c:	59 61 00 5c 	sw (r11+92),r1                                 
 8003490:	2b 81 00 28 	lw r1,(sp+40)                                  
 8003494:	59 61 00 60 	sw (r11+96),r1                                 
         /* Indicates that the timer is created and stopped */        
         ptimer->state = POSIX_TIMER_STATE_CREATE_STOP;               
 8003498:	34 01 00 04 	mvi r1,4                                       
 800349c:	31 61 00 3c 	sb (r11+60),r1                                 
         /* Returns with success */                                   
        _Thread_Enable_dispatch();                                    
 80034a0:	f8 00 0b 1d 	calli 8006114 <_Thread_Enable_dispatch>        
        return 0;                                                     
 80034a4:	34 01 00 00 	mvi r1,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
}                                                                     
 80034a8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80034ac:	2b 8b 00 18 	lw r11,(sp+24)                                 
 80034b0:	2b 8c 00 14 	lw r12,(sp+20)                                 
 80034b4:	2b 8d 00 10 	lw r13,(sp+16)                                 
 80034b8:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 80034bc:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80034c0:	37 9c 00 34 	addi sp,sp,52                                  
 80034c4:	c3 a0 00 00 	ret                                            
                                                                      

08003054 <ualarm>: useconds_t ualarm( useconds_t useconds, useconds_t interval ) {
 8003054:	37 9c ff e4 	addi sp,sp,-28                                 
 8003058:	5b 8b 00 14 	sw (sp+20),r11                                 
 800305c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8003060:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8003064:	5b 8e 00 08 	sw (sp+8),r14                                  
 8003068:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Initialize the timer used to implement alarm().                 
   */                                                                 
                                                                      
  if ( !the_timer->routine ) {                                        
 800306c:	78 0b 08 01 	mvhi r11,0x801                                 
 8003070:	39 6b 81 60 	ori r11,r11,0x8160                             
 8003074:	29 62 00 1c 	lw r2,(r11+28)                                 
                                                                      
useconds_t ualarm(                                                    
  useconds_t useconds,                                                
  useconds_t interval                                                 
)                                                                     
{                                                                     
 8003078:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  /*                                                                  
   *  Initialize the timer used to implement alarm().                 
   */                                                                 
                                                                      
  if ( !the_timer->routine ) {                                        
 800307c:	44 40 00 55 	be r2,r0,80031d0 <ualarm+0x17c>                
    _Watchdog_Initialize( the_timer, _POSIX_signals_Ualarm_TSR, 0, NULL );
  } else {                                                            
    Watchdog_States state;                                            
                                                                      
    state = _Watchdog_Remove( the_timer );                            
 8003080:	b9 60 08 00 	mv r1,r11                                      
 8003084:	f8 00 0f be 	calli 8006f7c <_Watchdog_Remove>               
    if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) {
 8003088:	34 21 ff fe 	addi r1,r1,-2                                  
 800308c:	34 02 00 01 	mvi r2,1                                       
useconds_t ualarm(                                                    
  useconds_t useconds,                                                
  useconds_t interval                                                 
)                                                                     
{                                                                     
  useconds_t        remaining = 0;                                    
 8003090:	34 0d 00 00 	mvi r13,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) ) {
 8003094:	54 22 00 24 	bgu r1,r2,8003124 <ualarm+0xd0>                <== NEVER TAKEN
       *  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);        
 8003098:	29 64 00 14 	lw r4,(r11+20)                                 
 800309c:	29 61 00 0c 	lw r1,(r11+12)                                 
 80030a0:	29 63 00 18 	lw r3,(r11+24)                                 
      /* remaining is now in ticks */                                 
                                                                      
      _Timespec_From_ticks( ticks, &tp );                             
 80030a4:	37 82 00 18 	addi r2,sp,24                                  
       *  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);        
 80030a8:	b4 81 08 00 	add r1,r4,r1                                   
      /* remaining is now in ticks */                                 
                                                                      
      _Timespec_From_ticks( ticks, &tp );                             
 80030ac:	c8 23 08 00 	sub r1,r1,r3                                   
 80030b0:	f8 00 0d b3 	calli 800677c <_Timespec_From_ticks>           
      remaining  = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;           
 80030b4:	2b 85 00 18 	lw r5,(sp+24)                                  
      remaining += tp.tv_nsec / 1000;                                 
 80030b8:	2b 81 00 1c 	lw r1,(sp+28)                                  
 80030bc:	34 02 03 e8 	mvi r2,1000                                    
      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;           
 80030c0:	b4 a5 18 00 	add r3,r5,r5                                   
 80030c4:	b4 63 18 00 	add r3,r3,r3                                   
 80030c8:	b4 63 18 00 	add r3,r3,r3                                   
 80030cc:	b4 63 20 00 	add r4,r3,r3                                   
 80030d0:	b4 84 20 00 	add r4,r4,r4                                   
 80030d4:	b4 84 20 00 	add r4,r4,r4                                   
 80030d8:	b4 84 20 00 	add r4,r4,r4                                   
 80030dc:	b4 84 20 00 	add r4,r4,r4                                   
 80030e0:	c8 83 20 00 	sub r4,r4,r3                                   
 80030e4:	b4 84 18 00 	add r3,r4,r4                                   
 80030e8:	b4 63 18 00 	add r3,r3,r3                                   
 80030ec:	b4 63 18 00 	add r3,r3,r3                                   
 80030f0:	b4 63 18 00 	add r3,r3,r3                                   
 80030f4:	b4 63 18 00 	add r3,r3,r3                                   
 80030f8:	b4 63 18 00 	add r3,r3,r3                                   
 80030fc:	c8 64 18 00 	sub r3,r3,r4                                   
 8003100:	b4 65 68 00 	add r13,r3,r5                                  
 8003104:	b5 ad 68 00 	add r13,r13,r13                                
 8003108:	b5 ad 68 00 	add r13,r13,r13                                
 800310c:	b5 ad 68 00 	add r13,r13,r13                                
 8003110:	b5 ad 68 00 	add r13,r13,r13                                
 8003114:	b5 ad 68 00 	add r13,r13,r13                                
 8003118:	b5 ad 68 00 	add r13,r13,r13                                
      remaining += tp.tv_nsec / 1000;                                 
 800311c:	f8 00 44 7d 	calli 8014310 <__divsi3>                       
 8003120:	b4 2d 68 00 	add r13,r1,r13                                 
  /*                                                                  
   *  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 ) {                                                   
 8003124:	45 80 00 23 	be r12,r0,80031b0 <ualarm+0x15c>               
    Watchdog_Interval ticks;                                          
                                                                      
    tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;               
 8003128:	78 01 08 01 	mvhi r1,0x801                                  
 800312c:	38 21 56 0c 	ori r1,r1,0x560c                               
 8003130:	28 22 00 00 	lw r2,(r1+0)                                   
 8003134:	b9 80 08 00 	mv r1,r12                                      
    tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;     
    ticks = _Timespec_To_ticks( &tp );                                
 8003138:	37 8e 00 18 	addi r14,sp,24                                 
   *  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;               
 800313c:	f8 00 44 ce 	calli 8014474 <__udivsi3>                      
    tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;     
 8003140:	78 03 08 01 	mvhi r3,0x801                                  
 8003144:	38 63 56 0c 	ori r3,r3,0x560c                               
 8003148:	28 62 00 00 	lw r2,(r3+0)                                   
   *  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;               
 800314c:	5b 81 00 18 	sw (sp+24),r1                                  
    tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;     
 8003150:	b9 80 08 00 	mv r1,r12                                      
 8003154:	f8 00 44 d8 	calli 80144b4 <__umodsi3>                      
 8003158:	b4 21 10 00 	add r2,r1,r1                                   
 800315c:	b4 42 10 00 	add r2,r2,r2                                   
 8003160:	b4 42 10 00 	add r2,r2,r2                                   
 8003164:	b4 42 18 00 	add r3,r2,r2                                   
 8003168:	b4 63 18 00 	add r3,r3,r3                                   
 800316c:	b4 43 10 00 	add r2,r2,r3                                   
 8003170:	b4 42 18 00 	add r3,r2,r2                                   
 8003174:	b4 63 18 00 	add r3,r3,r3                                   
 8003178:	b4 43 10 00 	add r2,r2,r3                                   
 800317c:	b4 42 18 00 	add r3,r2,r2                                   
 8003180:	b4 63 18 00 	add r3,r3,r3                                   
 8003184:	b4 43 18 00 	add r3,r2,r3                                   
    ticks = _Timespec_To_ticks( &tp );                                
 8003188:	b9 c0 08 00 	mv r1,r14                                      
   */                                                                 
  if ( useconds ) {                                                   
    Watchdog_Interval ticks;                                          
                                                                      
    tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;               
    tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;     
 800318c:	5b 83 00 1c 	sw (sp+28),r3                                  
    ticks = _Timespec_To_ticks( &tp );                                
 8003190:	f8 00 0d b7 	calli 800686c <_Timespec_To_ticks>             
    if ( ticks == 0 )                                                 
      ticks = 1;                                                      
                                                                      
    _Watchdog_Insert_ticks( the_timer, _Timespec_To_ticks( &tp ) );   
 8003194:	b9 c0 08 00 	mv r1,r14                                      
 8003198:	f8 00 0d b5 	calli 800686c <_Timespec_To_ticks>             
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 800319c:	59 61 00 0c 	sw (r11+12),r1                                 
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 80031a0:	78 01 08 01 	mvhi r1,0x801                                  
 80031a4:	b9 60 10 00 	mv r2,r11                                      
 80031a8:	38 21 79 a8 	ori r1,r1,0x79a8                               
 80031ac:	f8 00 0f 0b 	calli 8006dd8 <_Watchdog_Insert>               
  }                                                                   
                                                                      
  return remaining;                                                   
}                                                                     
 80031b0:	b9 a0 08 00 	mv r1,r13                                      
 80031b4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80031b8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80031bc:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80031c0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80031c4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80031c8:	37 9c 00 1c 	addi sp,sp,28                                  
 80031cc:	c3 a0 00 00 	ret                                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
 80031d0:	78 01 08 00 	mvhi r1,0x800                                  
 80031d4:	38 21 30 0c 	ori r1,r1,0x300c                               
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 80031d8:	59 60 00 08 	sw (r11+8),r0                                  
  the_watchdog->routine   = routine;                                  
 80031dc:	59 61 00 1c 	sw (r11+28),r1                                 
  the_watchdog->id        = id;                                       
 80031e0:	59 60 00 20 	sw (r11+32),r0                                 
  the_watchdog->user_data = user_data;                                
 80031e4:	59 60 00 24 	sw (r11+36),r0                                 
useconds_t ualarm(                                                    
  useconds_t useconds,                                                
  useconds_t interval                                                 
)                                                                     
{                                                                     
  useconds_t        remaining = 0;                                    
 80031e8:	34 0d 00 00 	mvi r13,0                                      
 80031ec:	e3 ff ff ce 	bi 8003124 <ualarm+0xd0>