RTEMS-5
Annotated Report
Wed Aug 22 16:17:19 2018

400080a4 <_API_Mutex_Is_owner>:
                                      
#include <rtems/score/apimutex.h>
                                    
#include <rtems/score/percpu.h>
                                      

                                                                     
bool _API_Mutex_Is_owner( const API_Mutex_Control *the_mutex )
       
{
                                                                    
  return the_mutex->Mutex._Mutex._Queue._owner == _Thread_Get_executing();

400080a4:	c2 02 20 0c 	ld  [ %o0 + 0xc ], %g1
                        <== NOT EXECUTED
400080a8:	c4 01 a0 20 	ld  [ %g6 + 0x20 ], %g2
                       <== NOT EXECUTED
400080ac:	82 18 40 02 	xor  %g1, %g2, %g1
                            
}
                                                                    
400080b0:	80 a0 00 01 	cmp  %g0, %g1
                                 
400080b4:	81 c3 e0 08 	retl 
                                         
400080b8:	90 60 3f ff 	subx  %g0, -1, %o0
                            

                                                                     

40007084 <_API_Mutex_Lock>: #include <rtems/score/apimutex.h> #include <rtems/score/threadimpl.h> void _API_Mutex_Lock( API_Mutex_Control *the_mutex ) {
40007084:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  Thread_Life_state previous_thread_life_state;
                      

                                                                     
  previous_thread_life_state =
                                       
40007088:	40 00 12 51 	call  4000b9cc <_Thread_Set_life_protection>
  
4000708c:	90 10 20 01 	mov  1, %o0
                                   
40007090:	ba 10 00 08 	mov  %o0, %i5
                                 
    _Thread_Set_life_protection( THREAD_LIFE_PROTECTED );
            

                                                                     
  _Mutex_recursive_Acquire( &the_mutex->Mutex );
                     
40007094:	40 00 06 f7 	call  40008c70 <_Mutex_recursive_Acquire>
     
40007098:	90 10 00 18 	mov  %i0, %o0
                                 

                                                                     
  if ( the_mutex->Mutex._nest_level == 0 ) {
                         
4000709c:	c2 06 20 14 	ld  [ %i0 + 0x14 ], %g1
                       
400070a0:	80 a0 60 00 	cmp  %g1, 0
                                   
400070a4:	22 80 00 02 	be,a   400070ac <_API_Mutex_Lock+0x28>
        
400070a8:	fa 26 20 18 	st  %i5, [ %i0 + 0x18 ]
                       
    the_mutex->previous_thread_life_state = previous_thread_life_state;

  }
                                                                  
}
                                                                    
400070ac:	81 c7 e0 08 	ret 
                                          
400070b0:	81 e8 00 00 	restore 
                                      

                                                                     

400070b4 <_API_Mutex_Unlock>: #include <rtems/score/apimutex.h> #include <rtems/score/threadimpl.h> void _API_Mutex_Unlock( API_Mutex_Control *the_mutex ) {
400070b4:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  Thread_Life_state previous_thread_life_state;
                      
  bool              restore_thread_life_protection;
                  

                                                                     
  previous_thread_life_state = the_mutex->previous_thread_life_state;

  restore_thread_life_protection = the_mutex->Mutex._nest_level == 0;

400070b8:	fa 06 20 14 	ld  [ %i0 + 0x14 ], %i5
                       <== NOT EXECUTED
{
                                                                    
400070bc:	90 10 00 18 	mov  %i0, %o0
                                 

                                                                     
  _Mutex_recursive_Release( &the_mutex->Mutex );
                     
400070c0:	40 00 07 11 	call  40008d04 <_Mutex_recursive_Release>
     
400070c4:	f0 06 20 18 	ld  [ %i0 + 0x18 ], %i0
                       

                                                                     
  if ( restore_thread_life_protection ) {
                            
400070c8:	80 a7 60 00 	cmp  %i5, 0
                                   
400070cc:	02 80 00 04 	be  400070dc <_API_Mutex_Unlock+0x28>
         
400070d0:	01 00 00 00 	nop 
                                          
    _Thread_Set_life_protection( previous_thread_life_state );
       
  }
                                                                  
}
                                                                    
400070d4:	81 c7 e0 08 	ret 
                                          
400070d8:	81 e8 00 00 	restore 
                                      
    _Thread_Set_life_protection( previous_thread_life_state );
       
400070dc:	40 00 12 3c 	call  4000b9cc <_Thread_Set_life_protection>
  
400070e0:	81 e8 00 00 	restore 
                                      

                                                                     

400098f0 <_CORE_RWLock_Initialize>: void _CORE_RWLock_Initialize( CORE_RWLock_Control *the_rwlock ) { the_rwlock->number_of_readers = 0;
400098f0:	c0 22 20 18 	clr  [ %o0 + 0x18 ]
                           <== NOT EXECUTED
  the_rwlock->current_state = CORE_RWLOCK_UNLOCKED;
                  
400098f4:	c0 22 20 14 	clr  [ %o0 + 0x14 ]
                           <== NOT EXECUTED
  queue->heads = NULL;
                                               
400098f8:	c0 22 20 08 	clr  [ %o0 + 8 ]
                              <== NOT EXECUTED
  queue->owner = NULL;
                                               
400098fc:	c0 22 20 0c 	clr  [ %o0 + 0xc ]
                            <== NOT EXECUTED
  _Thread_queue_Queue_initialize( &the_rwlock->Queue.Queue, NULL );
  
}
                                                                    
40009900:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
40009904:	c0 22 20 10 	clr  [ %o0 + 0x10 ]
                           

                                                                     

40009908 <_CORE_RWLock_Seize_for_reading>: Status_Control _CORE_RWLock_Seize_for_reading( CORE_RWLock_Control *the_rwlock, bool wait, Thread_queue_Context *queue_context ) {
40009908:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000990c:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
40009910:	c2 26 80 00 	st  %g1, [ %i2 ]
                              
   *  If any thread is waiting, then we wait.
                        
   */
                                                                

                                                                     
  executing = _CORE_RWLock_Acquire( the_rwlock, queue_context );
     

                                                                     
  switch ( the_rwlock->current_state ) {
                             
40009914:	c2 06 20 14 	ld  [ %i0 + 0x14 ], %g1
                       
40009918:	80 a0 60 00 	cmp  %g1, 0
                                   
4000991c:	02 80 00 1f 	be  40009998 <_CORE_RWLock_Seize_for_reading+0x90>

40009920:	84 10 00 06 	mov  %g6, %g2
                                 
40009924:	80 a0 60 01 	cmp  %g1, 1
                                   
40009928:	12 80 00 06 	bne  40009940 <_CORE_RWLock_Seize_for_reading+0x38>

4000992c:	80 a6 60 00 	cmp  %i1, 0
                                   
      the_rwlock->number_of_readers += 1;
                            
      _CORE_RWLock_Release( the_rwlock, queue_context );
             
      return STATUS_SUCCESSFUL;
                                      

                                                                     
    case CORE_RWLOCK_LOCKED_FOR_READING:
                             
      if ( _Thread_queue_Is_empty( &the_rwlock->Queue.Queue ) ) {
    
40009930:	c2 06 20 08 	ld  [ %i0 + 8 ], %g1
                          
40009934:	80 a0 60 00 	cmp  %g1, 0
                                   
40009938:	02 80 00 23 	be  400099c4 <_CORE_RWLock_Seize_for_reading+0xbc>

4000993c:	80 a6 60 00 	cmp  %i1, 0
                                   

                                                                     
  /*
                                                                 
   *  If the thread is not willing to wait, then return immediately.
 
   */
                                                                

                                                                     
  if ( !wait ) {
                                                     
40009940:	02 80 00 0f 	be  4000997c <_CORE_RWLock_Seize_for_reading+0x74>

40009944:	03 00 00 04 	sethi  %hi(0x1000), %g1
                       
  ISR_Level       level;
                                             
  Thread_Control *executing;
                                         

                                                                     
  _Thread_queue_Context_ISR_disable( queue_context, level );
         
  _Thread_queue_Context_set_ISR_level( queue_context, level );
       
  executing = _Thread_Executing;
                                     
40009948:	fa 00 a0 20 	ld  [ %g2 + 0x20 ], %i5
                       

                                                                     
  /*
                                                                 
   *  We need to wait to enter this critical section
                 
   */
                                                                

                                                                     
  executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_READ;
      
4000994c:	c0 27 60 48 	clr  [ %i5 + 0x48 ]
                           
  queue_context->thread_state = thread_state;
                        
40009950:	c2 26 a0 04 	st  %g1, [ %i2 + 4 ]
                          

                                                                     
  _Thread_queue_Context_set_thread_state(
                            
    queue_context,
                                                   
   STATES_WAITING_FOR_RWLOCK
                                         
  );
                                                                 
  _Thread_queue_Enqueue(
                                             
40009954:	90 06 20 08 	add  %i0, 8, %o0
                              
40009958:	96 10 00 1a 	mov  %i2, %o3
                                 
4000995c:	94 10 00 1d 	mov  %i5, %o2
                                 
40009960:	13 10 00 52 	sethi  %hi(0x40014800), %o1
                   
     CORE_RWLOCK_TQ_OPERATIONS,
                                      
     executing,
                                                      
     queue_context
                                                   
  );
                                                                 
  return _Thread_Wait_get_status( executing );
                       
}
                                                                    
40009964:	b0 10 20 00 	clr  %i0
                                      
  _Thread_queue_Enqueue(
                                             
40009968:	40 00 11 a0 	call  4000dfe8 <_Thread_queue_Enqueue>
        
4000996c:	92 12 61 54 	or  %o1, 0x154, %o1
                           
40009970:	f2 07 60 4c 	ld  [ %i5 + 0x4c ], %i1
                       
}
                                                                    
40009974:	81 c7 e0 08 	ret 
                                          
40009978:	81 e8 00 00 	restore 
                                      
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000997c:	c2 06 80 00 	ld  [ %i2 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40009980:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40009984:	01 00 00 00 	nop 
                                          
    return STATUS_UNAVAILABLE;
                                       
40009988:	33 00 00 04 	sethi  %hi(0x1000), %i1
                       
4000998c:	b2 16 60 0d 	or  %i1, 0xd, %i1	! 100d <_Configuration_Interrupt_stack_size+0xd>

}
                                                                    
40009990:	81 c7 e0 08 	ret 
                                          
40009994:	91 e8 20 00 	restore  %g0, 0, %o0
                          
      the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING;
    
40009998:	84 10 20 01 	mov  1, %g2
                                   <== NOT EXECUTED
4000999c:	c4 26 20 14 	st  %g2, [ %i0 + 0x14 ]
                       <== NOT EXECUTED
      the_rwlock->number_of_readers += 1;
                            
400099a0:	c2 06 20 18 	ld  [ %i0 + 0x18 ], %g1
                       <== NOT EXECUTED
400099a4:	82 00 60 01 	inc  %g1
                                      <== NOT EXECUTED
        the_rwlock->number_of_readers += 1;
                          
400099a8:	c2 26 20 18 	st  %g1, [ %i0 + 0x18 ]
                       <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

400099ac:	c2 06 80 00 	ld  [ %i2 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

400099b0:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
400099b4:	01 00 00 00 	nop 
                                          
        return STATUS_SUCCESSFUL;
                                    
400099b8:	b2 10 20 00 	clr  %i1	! 0 <PROM_START>
                     
}
                                                                    
400099bc:	81 c7 e0 08 	ret 
                                          
400099c0:	91 e8 20 00 	restore  %g0, 0, %o0
                          
        the_rwlock->number_of_readers += 1;
                          
400099c4:	c2 06 20 18 	ld  [ %i0 + 0x18 ], %g1
                       
400099c8:	10 bf ff f8 	b  400099a8 <_CORE_RWLock_Seize_for_reading+0xa0>

400099cc:	82 00 60 01 	inc  %g1
                                      

                                                                     

400099d0 <_CORE_RWLock_Seize_for_writing>: Status_Control _CORE_RWLock_Seize_for_writing( CORE_RWLock_Control *the_rwlock, bool wait, Thread_queue_Context *queue_context ) {
400099d0:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

400099d4:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
400099d8:	c2 26 80 00 	st  %g1, [ %i2 ]
                              
   *  If any thread is waiting, then we wait.
                        
   */
                                                                

                                                                     
  executing = _CORE_RWLock_Acquire( the_rwlock, queue_context );
     

                                                                     
  switch ( the_rwlock->current_state ) {
                             
400099dc:	c2 06 20 14 	ld  [ %i0 + 0x14 ], %g1
                       
400099e0:	80 a0 60 00 	cmp  %g1, 0
                                   
400099e4:	02 80 00 19 	be  40009a48 <_CORE_RWLock_Seize_for_writing+0x78>

400099e8:	80 a6 60 00 	cmp  %i1, 0
                                   

                                                                     
  /*
                                                                 
   *  If the thread is not willing to wait, then return immediately.
 
   */
                                                                

                                                                     
  if ( !wait ) {
                                                     
400099ec:	02 80 00 10 	be  40009a2c <_CORE_RWLock_Seize_for_writing+0x5c>

400099f0:	82 10 20 01 	mov  1, %g1
                                   
400099f4:	fa 01 a0 20 	ld  [ %g6 + 0x20 ], %i5
                       

                                                                     
  /*
                                                                 
   *  We need to wait to enter this critical section
                 
   */
                                                                

                                                                     
  executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE;
     
400099f8:	c2 27 60 48 	st  %g1, [ %i5 + 0x48 ]
                       
400099fc:	03 00 00 04 	sethi  %hi(0x1000), %g1
                       
40009a00:	c2 26 a0 04 	st  %g1, [ %i2 + 4 ]
                          

                                                                     
  _Thread_queue_Context_set_thread_state(
                            
    queue_context,
                                                   
    STATES_WAITING_FOR_RWLOCK
                                        
  );
                                                                 
  _Thread_queue_Enqueue(
                                             
40009a04:	90 06 20 08 	add  %i0, 8, %o0
                              
40009a08:	96 10 00 1a 	mov  %i2, %o3
                                 
40009a0c:	94 10 00 1d 	mov  %i5, %o2
                                 
40009a10:	13 10 00 52 	sethi  %hi(0x40014800), %o1
                   
     CORE_RWLOCK_TQ_OPERATIONS,
                                      
     executing,
                                                      
     queue_context
                                                   
  );
                                                                 
  return _Thread_Wait_get_status( executing );
                       
}
                                                                    
40009a14:	b0 10 20 00 	clr  %i0
                                      
  _Thread_queue_Enqueue(
                                             
40009a18:	40 00 11 74 	call  4000dfe8 <_Thread_queue_Enqueue>
        
40009a1c:	92 12 61 54 	or  %o1, 0x154, %o1
                           
40009a20:	f2 07 60 4c 	ld  [ %i5 + 0x4c ], %i1
                       
}
                                                                    
40009a24:	81 c7 e0 08 	ret 
                                          
40009a28:	81 e8 00 00 	restore 
                                      
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

40009a2c:	c2 06 80 00 	ld  [ %i2 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40009a30:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40009a34:	01 00 00 00 	nop 
                                          
    return STATUS_UNAVAILABLE;
                                       
40009a38:	33 00 00 04 	sethi  %hi(0x1000), %i1
                       
40009a3c:	b2 16 60 0d 	or  %i1, 0xd, %i1	! 100d <_Configuration_Interrupt_stack_size+0xd>

}
                                                                    
40009a40:	81 c7 e0 08 	ret 
                                          
40009a44:	91 e8 20 00 	restore  %g0, 0, %o0
                          
      the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING;
    
40009a48:	82 10 20 02 	mov  2, %g1
                                   <== NOT EXECUTED
40009a4c:	c2 26 20 14 	st  %g1, [ %i0 + 0x14 ]
                       <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

40009a50:	c2 06 80 00 	ld  [ %i2 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40009a54:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40009a58:	01 00 00 00 	nop 
                                          
      return STATUS_SUCCESSFUL;
                                      
40009a5c:	b2 10 20 00 	clr  %i1	! 0 <PROM_START>
                     
}
                                                                    
40009a60:	81 c7 e0 08 	ret 
                                          
40009a64:	91 e8 20 00 	restore  %g0, 0, %o0
                          

                                                                     

40009aec <_CORE_RWLock_Surrender>: Status_Control _CORE_RWLock_Surrender( CORE_RWLock_Control *the_rwlock ) {
40009aec:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

40009af0:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
40009af4:	c2 27 bf dc 	st  %g1, [ %fp + -36 ]
                        
   */
                                                                

                                                                     
  _Thread_queue_Context_initialize( &queue_context );
                
  _CORE_RWLock_Acquire( the_rwlock, &queue_context );
                

                                                                     
  if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){
           
40009af8:	c2 06 20 14 	ld  [ %i0 + 0x14 ], %g1
                       
40009afc:	80 a0 60 00 	cmp  %g1, 0
                                   
40009b00:	02 80 00 14 	be  40009b50 <_CORE_RWLock_Surrender+0x64>
    
40009b04:	80 a0 60 01 	cmp  %g1, 1
                                   
    /* This is an error at the caller site */
                        
    _CORE_RWLock_Release( the_rwlock, &queue_context );
              
    return STATUS_SUCCESSFUL;
                                        
  }
                                                                  

                                                                     
  if ( the_rwlock->current_state == CORE_RWLOCK_LOCKED_FOR_READING ) {

40009b08:	32 80 00 08 	bne,a   40009b28 <_CORE_RWLock_Surrender+0x3c>

40009b0c:	c0 26 20 14 	clr  [ %i0 + 0x14 ]
                           
    the_rwlock->number_of_readers -= 1;
                              
40009b10:	c2 06 20 18 	ld  [ %i0 + 0x18 ], %g1
                       
40009b14:	82 00 7f ff 	add  %g1, -1, %g1
                             

                                                                     
    if ( the_rwlock->number_of_readers != 0 ) {
                      
40009b18:	80 a0 60 00 	cmp  %g1, 0
                                   
40009b1c:	12 80 00 0d 	bne  40009b50 <_CORE_RWLock_Surrender+0x64>
   
40009b20:	c2 26 20 18 	st  %g1, [ %i0 + 0x18 ]
                       

                                                                     
  /*
                                                                 
   * Implicitly transition to "unlocked" and find another thread interested

   * in obtaining this rwlock.
                                       
   */
                                                                
  the_rwlock->current_state = CORE_RWLOCK_UNLOCKED;
                  
40009b24:	c0 26 20 14 	clr  [ %i0 + 0x14 ]
                           

                                                                     
  _Thread_queue_Flush_critical(
                                      
40009b28:	96 07 bf dc 	add  %fp, -36, %o3
                            
40009b2c:	90 06 20 08 	add  %i0, 8, %o0
                              
40009b30:	15 10 00 26 	sethi  %hi(0x40009800), %o2
                   
40009b34:	13 10 00 52 	sethi  %hi(0x40014800), %o1
                   
40009b38:	94 12 a2 68 	or  %o2, 0x268, %o2
                           
40009b3c:	92 12 61 54 	or  %o1, 0x154, %o1
                           
40009b40:	40 00 12 2b 	call  4000e3ec <_Thread_queue_Flush_critical>
 
40009b44:	b0 10 20 00 	clr  %i0
                                      
    CORE_RWLOCK_TQ_OPERATIONS,
                                       
    _CORE_RWLock_Flush_filter,
                                       
    &queue_context
                                                   
  );
                                                                 
  return STATUS_SUCCESSFUL;
                                          
}
                                                                    
40009b48:	81 c7 e0 08 	ret 
                                          
40009b4c:	93 e8 20 00 	restore  %g0, 0, %o1
                          
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

40009b50:	c2 07 bf dc 	ld  [ %fp + -36 ], %g1
                        <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40009b54:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40009b58:	01 00 00 00 	nop 
                                          
40009b5c:	b0 10 20 00 	clr  %i0	! 0 <PROM_START>
                     
40009b60:	81 c7 e0 08 	ret 
                                          
40009b64:	93 e8 20 00 	restore  %g0, 0, %o1
                          

                                                                     

4000effc <_CORE_barrier_Seize>: CORE_barrier_Control *the_barrier, Thread_Control *executing, bool wait, Thread_queue_Context *queue_context ) {
4000effc:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  uint32_t number_of_waiting_threads;
                                

                                                                     
  _CORE_barrier_Acquire_critical( the_barrier, queue_context );
      

                                                                     
  number_of_waiting_threads = the_barrier->number_of_waiting_threads;

4000f000:	c2 06 20 14 	ld  [ %i0 + 0x14 ], %g1
                       <== NOT EXECUTED
  ++number_of_waiting_threads;
                                       

                                                                     
  if (
                                                               
4000f004:	c4 06 20 0c 	ld  [ %i0 + 0xc ], %g2
                        <== NOT EXECUTED
4000f008:	80 a0 a0 00 	cmp  %g2, 0
                                   <== NOT EXECUTED
4000f00c:	12 80 00 06 	bne  4000f024 <_CORE_barrier_Seize+0x28>
      <== NOT EXECUTED
4000f010:	82 00 60 01 	inc  %g1
                                      
    _CORE_barrier_Is_automatic( &the_barrier->Attributes )
           
      && number_of_waiting_threads == the_barrier->Attributes.maximum_count

4000f014:	c4 06 20 10 	ld  [ %i0 + 0x10 ], %g2
                       
4000f018:	80 a0 80 01 	cmp  %g2, %g1
                                 
4000f01c:	02 80 00 0e 	be  4000f054 <_CORE_barrier_Seize+0x58>
       
4000f020:	94 10 00 1b 	mov  %i3, %o2
                                 
  ) {
                                                                
    _CORE_barrier_Surrender( the_barrier, queue_context );
           
    return STATUS_BARRIER_AUTOMATICALLY_RELEASED;
                    
  } else {
                                                           
    the_barrier->number_of_waiting_threads = number_of_waiting_threads;

4000f024:	c2 26 20 14 	st  %g1, [ %i0 + 0x14 ]
                       
  queue_context->thread_state = thread_state;
                        
4000f028:	82 10 28 00 	mov  0x800, %g1
                               
4000f02c:	c2 26 e0 04 	st  %g1, [ %i3 + 4 ]
                          
    _Thread_queue_Context_set_thread_state(
                          
      queue_context,
                                                 
      STATES_WAITING_FOR_BARRIER
                                     
    );
                                                               
    _Thread_queue_Enqueue(
                                           
4000f030:	94 10 00 19 	mov  %i1, %o2
                                 
4000f034:	96 10 00 1b 	mov  %i3, %o3
                                 
4000f038:	90 10 00 18 	mov  %i0, %o0
                                 
4000f03c:	13 10 00 65 	sethi  %hi(0x40019400), %o1
                   
4000f040:	7f ff ef 6b 	call  4000adec <_Thread_queue_Enqueue>
        
4000f044:	92 12 61 f8 	or  %o1, 0x1f8, %o1	! 400195f8 <_Thread_queue_Operations_FIFO>

  return (Status_Control) the_thread->Wait.return_code;
              
4000f048:	f2 06 60 4c 	ld  [ %i1 + 0x4c ], %i1
                       
      executing,
                                                     
      queue_context
                                                  
    );
                                                               
    return _Thread_Wait_get_status( executing );
                     
  }
                                                                  
}
                                                                    
4000f04c:	81 c7 e0 08 	ret 
                                          
4000f050:	91 e8 20 00 	restore  %g0, 0, %o0
                          
4000f054:	90 10 00 18 	mov  %i0, %o0
                                 
4000f058:	13 10 00 3e 	sethi  %hi(0x4000f800), %o1
                   
    return STATUS_BARRIER_AUTOMATICALLY_RELEASED;
                    
4000f05c:	b2 10 3f 00 	mov  -256, %i1
                                
4000f060:	7f ff ff df 	call  4000efdc <_CORE_barrier_Do_flush>
       
4000f064:	92 12 62 bc 	or  %o1, 0x2bc, %o1
                           
4000f068:	30 bf ff f9 	b,a   4000f04c <_CORE_barrier_Seize+0x50>
     

                                                                     

40009ed8 <_CORE_message_queue_Broadcast>: const void *buffer, size_t size, uint32_t *count, Thread_queue_Context *queue_context ) {
40009ed8:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  Thread_Control             *the_thread;
                            
  uint32_t                    number_broadcasted;
                    

                                                                     
  if ( size > the_message_queue->maximum_message_size ) {
            
40009edc:	c2 06 20 18 	ld  [ %i0 + 0x18 ], %g1
                       <== NOT EXECUTED
40009ee0:	80 a0 40 1a 	cmp  %g1, %i2
                                 <== NOT EXECUTED
40009ee4:	0a 80 00 2a 	bcs  40009f8c <_CORE_message_queue_Broadcast+0xb4>
<== NOT EXECUTED
40009ee8:	01 00 00 00 	nop 
                                          
   *
                                                                 
   *  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 ) {
        
40009eec:	e0 06 20 14 	ld  [ %i0 + 0x14 ], %l0
                       
40009ef0:	80 a4 20 00 	cmp  %l0, 0
                                   
40009ef4:	32 80 00 1f 	bne,a   40009f70 <_CORE_message_queue_Broadcast+0x98>

40009ef8:	a0 10 20 00 	clr  %l0
                                      
40009efc:	d0 06 00 00 	ld  [ %i0 ], %o0
                              
  const Thread_queue_Operations *operations
                          
)
                                                                    
{
                                                                    
  Thread_queue_Heads *heads = the_thread_queue->Queue.heads;
         

                                                                     
  if ( heads != NULL ) {
                                             
40009f00:	80 a2 20 00 	cmp  %o0, 0
                                   
40009f04:	02 80 00 1b 	be  40009f70 <_CORE_message_queue_Broadcast+0x98>

40009f08:	c2 06 20 0c 	ld  [ %i0 + 0xc ], %g1
                        
    return ( *operations->first )( heads );
                          
40009f0c:	c2 00 60 10 	ld  [ %g1 + 0x10 ], %g1
                       
40009f10:	9f c0 40 00 	call  %g1
                                     
40009f14:	01 00 00 00 	nop 
                                          
  memcpy(destination, source, size);
                                 
40009f18:	92 10 00 19 	mov  %i1, %o1
                                 
40009f1c:	ba 10 00 08 	mov  %o0, %i5
                                 
   */
                                                                
  the_thread = _Thread_queue_First_locked(
                           
    &the_message_queue->Wait_queue,
                                  
    the_message_queue->operations
                                    
  );
                                                                 
  if ( the_thread == NULL ) {
                                        
40009f20:	80 a2 20 00 	cmp  %o0, 0
                                   
40009f24:	02 80 00 13 	be  40009f70 <_CORE_message_queue_Broadcast+0x98>
<== NEVER TAKEN
40009f28:	94 10 00 1a 	mov  %i2, %o2
                                 
    return NULL;
                                                     
  }
                                                                  

                                                                     
   *(size_t *) the_thread->Wait.return_argument = size;
              
40009f2c:	c2 02 20 40 	ld  [ %o0 + 0x40 ], %g1
                       
40009f30:	f4 20 40 00 	st  %i2, [ %g1 ]
                              
        0,
                                                           
        queue_context
                                                
      )
                                                              
    )
                                                                
  ) {
                                                                
    number_broadcasted += 1;
                                         
40009f34:	a0 04 20 01 	inc  %l0
                                      
   the_thread->Wait.count = (uint32_t) submit_type;
                  
40009f38:	c0 22 20 3c 	clr  [ %o0 + 0x3c ]
                           
  memcpy(destination, source, size);
                                 
40009f3c:	40 00 21 6c 	call  400124ec <memcpy>
                       
40009f40:	d0 02 20 44 	ld  [ %o0 + 0x44 ], %o0
                       
    buffer,
                                                          
    the_thread->Wait.return_argument_second.mutable_object,
          
    size
                                                             
  );
                                                                 

                                                                     
  _Thread_queue_Extract_critical(
                                    
40009f44:	d2 06 20 0c 	ld  [ %i0 + 0xc ], %o1
                        
40009f48:	96 10 00 1c 	mov  %i4, %o3
                                 
40009f4c:	94 10 00 1d 	mov  %i5, %o2
                                 
40009f50:	40 00 11 b9 	call  4000e634 <_Thread_queue_Extract_critical>

40009f54:	90 10 00 18 	mov  %i0, %o0
                                 
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

40009f58:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  _ISR_lock_ISR_disable( &queue_context->Lock_context.Lock_context );

40009f5c:	c2 27 00 00 	st  %g1, [ %i4 ]
                              
  if ( the_message_queue->number_of_pending_messages != 0 ) {
        
40009f60:	c2 06 20 14 	ld  [ %i0 + 0x14 ], %g1
                       
40009f64:	80 a0 60 00 	cmp  %g1, 0
                                   
40009f68:	22 bf ff e6 	be,a   40009f00 <_CORE_message_queue_Broadcast+0x28>
<== ALWAYS TAKEN
40009f6c:	d0 06 00 00 	ld  [ %i0 ], %o0
                              
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

40009f70:	c2 07 00 00 	ld  [ %i4 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40009f74:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40009f78:	01 00 00 00 	nop 
                                          
  }
                                                                  

                                                                     
  _CORE_message_queue_Release( the_message_queue, queue_context );
   

                                                                     
  *count = number_broadcasted;
                                       
  return STATUS_SUCCESSFUL;
                                          
40009f7c:	b0 10 20 00 	clr  %i0	! 0 <PROM_START>
                     
  *count = number_broadcasted;
                                       
40009f80:	e0 26 c0 00 	st  %l0, [ %i3 ]
                              
}
                                                                    
40009f84:	81 c7 e0 08 	ret 
                                          
40009f88:	93 e8 20 00 	restore  %g0, 0, %o1
                          
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

40009f8c:	c2 07 00 00 	ld  [ %i4 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40009f90:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40009f94:	01 00 00 00 	nop 
                                          
    return STATUS_MESSAGE_INVALID_SIZE;
                              
40009f98:	33 00 00 1e 	sethi  %hi(0x7800), %i1
                       
40009f9c:	b2 16 62 08 	or  %i1, 0x208, %i1	! 7a08 <_Configuration_Interrupt_stack_size+0x6a08>

40009fa0:	81 c7 e0 08 	ret 
                                          
40009fa4:	91 e8 20 00 	restore  %g0, 0, %o0
                          

                                                                     

40009fdc <_CORE_message_queue_Flush>: uint32_t _CORE_message_queue_Flush( CORE_message_queue_Control *the_message_queue, Thread_queue_Context *queue_context ) {
40009fdc:	82 10 00 08 	mov  %o0, %g1
                                 <== NOT EXECUTED
   *  fixed execution time that only deals with pending messages.
    
   */
                                                                

                                                                     
  _CORE_message_queue_Acquire_critical( the_message_queue, queue_context );


                                                                     
  count = the_message_queue->number_of_pending_messages;
             
40009fe0:	d0 02 20 14 	ld  [ %o0 + 0x14 ], %o0
                       <== NOT EXECUTED
  if ( count != 0 ) {
                                                
40009fe4:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
40009fe8:	02 80 00 0f 	be  4000a024 <_CORE_message_queue_Flush+0x48>
 <== NOT EXECUTED
40009fec:	96 00 60 30 	add  %g1, 0x30, %o3
                           
  return _Chain_Immutable_head( the_chain )->next;
                   
40009ff0:	c4 00 60 1c 	ld  [ %g1 + 0x1c ], %g2
                       
    the_message_queue->number_of_pending_messages = 0;
               

                                                                     
    inactive_head = _Chain_Head( &the_message_queue->Inactive_messages );

    inactive_first = inactive_head->next;
                            
40009ff4:	c6 00 60 30 	ld  [ %g1 + 0x30 ], %g3
                       
  return _Chain_Immutable_tail( the_chain )->previous;
               
40009ff8:	c8 00 60 24 	ld  [ %g1 + 0x24 ], %g4
                       
    the_message_queue->number_of_pending_messages = 0;
               
40009ffc:	c0 20 60 14 	clr  [ %g1 + 0x14 ]
                           
    message_queue_first = _Chain_First( &the_message_queue->Pending_messages );

    message_queue_last = _Chain_Last( &the_message_queue->Pending_messages );


                                                                     
    inactive_head->next = message_queue_first;
                       
4000a000:	c4 20 60 30 	st  %g2, [ %g1 + 0x30 ]
                       <== NOT EXECUTED
  return &the_chain->Tail.Node;
                                      
4000a004:	9a 00 60 1c 	add  %g1, 0x1c, %o5
                           <== NOT EXECUTED
    message_queue_last->next = inactive_first;
                       
4000a008:	c6 21 00 00 	st  %g3, [ %g4 ]
                              <== NOT EXECUTED
4000a00c:	98 00 60 20 	add  %g1, 0x20, %o4
                           <== NOT EXECUTED
    inactive_first->previous = message_queue_last;
                   
4000a010:	c8 20 e0 04 	st  %g4, [ %g3 + 4 ]
                          <== NOT EXECUTED
    message_queue_first->previous = inactive_head;
                   
4000a014:	d6 20 a0 04 	st  %o3, [ %g2 + 4 ]
                          <== NOT EXECUTED
  head->next = tail;
                                                 
4000a018:	d8 20 60 1c 	st  %o4, [ %g1 + 0x1c ]
                       <== NOT EXECUTED
  head->previous = NULL;
                                             
4000a01c:	c0 20 60 20 	clr  [ %g1 + 0x20 ]
                           <== NOT EXECUTED
  tail->previous = head;
                                             
4000a020:	da 20 60 24 	st  %o5, [ %g1 + 0x24 ]
                       <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000a024:	c2 02 40 00 	ld  [ %o1 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000a028:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000a02c:	01 00 00 00 	nop 
                                          
    _Chain_Initialize_empty( &the_message_queue->Pending_messages );
 
  }
                                                                  

                                                                     
  _CORE_message_queue_Release( the_message_queue, queue_context );
   
  return count;
                                                      
}
                                                                    
4000a030:	81 c3 e0 08 	retl 
                                         
4000a034:	01 00 00 00 	nop 
                                          

                                                                     

400108f8 <_CORE_message_queue_Initialize>: CORE_message_queue_Control *the_message_queue, CORE_message_queue_Disciplines discipline, uint32_t maximum_pending_messages, size_t maximum_message_size ) {
400108f8:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  size_t message_buffering_required = 0;
                             
  size_t aligned_message_size;
                                       
  size_t align_mask;
                                                 

                                                                     
  the_message_queue->maximum_pending_messages   = maximum_pending_messages;

  the_message_queue->number_of_pending_messages = 0;
                 
400108fc:	c0 26 20 14 	clr  [ %i0 + 0x14 ]
                           
  /*
                                                                 
   * Align up the maximum message size to be an integral multiple of the

   * pointer size.
                                                   
   */
                                                                
  align_mask = sizeof(uintptr_t) - 1;
                                
  aligned_message_size = ( maximum_message_size + align_mask ) & ~align_mask;

40010900:	96 06 e0 03 	add  %i3, 3, %o3
                              
  the_message_queue->maximum_pending_messages   = maximum_pending_messages;

40010904:	f4 26 20 10 	st  %i2, [ %i0 + 0x10 ]
                       
  aligned_message_size = ( maximum_message_size + align_mask ) & ~align_mask;

40010908:	96 0a ff fc 	and  %o3, -4, %o3
                             
  the_message_queue->maximum_message_size       = maximum_message_size;

4001090c:	f6 26 20 18 	st  %i3, [ %i0 + 0x18 ]
                       

                                                                     
  /*
                                                                 
   * Check for an integer overflow.  It can occur while aligning up the maximum

   * message size.
                                                   
   */
                                                                
  if (aligned_message_size < maximum_message_size)
                   
40010910:	80 a6 c0 0b 	cmp  %i3, %o3
                                 
40010914:	18 80 00 08 	bgu  40010934 <_CORE_message_queue_Initialize+0x3c>
<== NEVER TAKEN
40010918:	c0 26 20 2c 	clr  [ %i0 + 0x2c ]
                           

                                                                     
  /*
                                                                 
   *  Calculate how much total memory is required for message buffering and

   *  check for overflow on the multiplication.
                      
   */
                                                                
  if ( !size_t_mult32_with_overflow(
                                 
4001091c:	ba 02 e0 14 	add  %o3, 0x14, %i5
                           
  long long x = (long long)a*b;
                                      
40010920:	86 56 80 1d 	umul  %i2, %i5, %g3
                           
40010924:	85 40 00 00 	rd  %y, %g2
                                   
  if ( x > SIZE_MAX )
                                                
40010928:	80 a0 a0 00 	cmp  %g2, 0
                                   
4001092c:	04 80 00 06 	ble  40010944 <_CORE_message_queue_Initialize+0x4c>

40010930:	01 00 00 00 	nop 
                                          
    return false;
                                                    
40010934:	82 10 20 00 	clr  %g1	! 0 <PROM_START>
                     
  } else {
                                                           
    the_message_queue->operations = &_Thread_queue_Operations_FIFO;
  
  }
                                                                  

                                                                     
  return true;
                                                       
}
                                                                    
40010938:	b0 08 60 01 	and  %g1, 1, %i0
                              
4001093c:	81 c7 e0 08 	ret 
                                          
40010940:	81 e8 00 00 	restore 
                                      
     _Workspace_Allocate( message_buffering_required );
              
40010944:	40 00 1a 5a 	call  400172ac <_Workspace_Allocate>
          
40010948:	90 10 00 03 	mov  %g3, %o0
                                 
  if (the_message_queue->message_buffers == 0)
                       
4001094c:	80 a2 20 00 	cmp  %o0, 0
                                   
40010950:	02 bf ff f9 	be  40010934 <_CORE_message_queue_Initialize+0x3c>

40010954:	d0 26 20 28 	st  %o0, [ %i0 + 0x28 ]
                       
  _Chain_Initialize (
                                                
40010958:	92 10 00 08 	mov  %o0, %o1
                                 
4001095c:	96 10 00 1d 	mov  %i5, %o3
                                 
40010960:	94 10 00 1a 	mov  %i2, %o2
                                 
40010964:	7f ff ff 98 	call  400107c4 <_Chain_Initialize>
            
40010968:	90 06 20 30 	add  %i0, 0x30, %o0
                           
4001096c:	82 06 20 1c 	add  %i0, 0x1c, %g1
                           
40010970:	84 06 20 20 	add  %i0, 0x20, %g2
                           
  head->previous = NULL;
                                             
40010974:	c0 26 20 20 	clr  [ %i0 + 0x20 ]
                           
  _Thread_queue_Object_initialize( &the_message_queue->Wait_queue );
 
40010978:	90 10 00 18 	mov  %i0, %o0
                                 
  head->next = tail;
                                                 
4001097c:	c4 26 20 1c 	st  %g2, [ %i0 + 0x1c ]
                       
40010980:	40 00 13 2d 	call  40015634 <_Thread_queue_Object_initialize>

40010984:	c2 26 20 24 	st  %g1, [ %i0 + 0x24 ]
                       
  if ( discipline == CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY ) {
     
40010988:	80 a6 60 01 	cmp  %i1, 1
                                   
4001098c:	02 80 00 07 	be  400109a8 <_CORE_message_queue_Initialize+0xb0>

40010990:	05 10 00 6e 	sethi  %hi(0x4001b800), %g2
                   
    the_message_queue->operations = &_Thread_queue_Operations_FIFO;
  
40010994:	03 10 00 6e 	sethi  %hi(0x4001b800), %g1
                   
40010998:	82 10 61 34 	or  %g1, 0x134, %g1	! 4001b934 <_Thread_queue_Operations_FIFO>

4001099c:	c2 26 20 0c 	st  %g1, [ %i0 + 0xc ]
                        
  return true;
                                                       
400109a0:	10 bf ff e6 	b  40010938 <_CORE_message_queue_Initialize+0x40>

400109a4:	82 10 20 01 	mov  1, %g1
                                   
400109a8:	82 10 20 01 	mov  1, %g1
                                   
    the_message_queue->operations = &_Thread_queue_Operations_priority;

400109ac:	84 10 a1 20 	or  %g2, 0x120, %g2
                           
400109b0:	10 bf ff e2 	b  40010938 <_CORE_message_queue_Initialize+0x40>

400109b4:	c4 26 20 0c 	st  %g2, [ %i0 + 0xc ]
                        

                                                                     

400109b8 <_CORE_message_queue_Seize>: void *buffer, size_t *size_p, bool wait, Thread_queue_Context *queue_context ) {
400109b8:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  return _Chain_Immutable_head( the_chain )->next;
                   
400109bc:	e0 06 20 1c 	ld  [ %i0 + 0x1c ], %l0
                       <== NOT EXECUTED
  return &the_chain->Tail.Node;
                                      
400109c0:	82 06 20 20 	add  %i0, 0x20, %g1
                           <== NOT EXECUTED
  if ( !_Chain_Is_empty(the_chain))
                                  
400109c4:	80 a4 00 01 	cmp  %l0, %g1
                                 <== NOT EXECUTED
400109c8:	02 80 00 33 	be  40010a94 <_CORE_message_queue_Seize+0xdc>
 <== NOT EXECUTED
400109cc:	86 06 20 1c 	add  %i0, 0x1c, %g3
                           
  new_first = old_first->next;
                                       
400109d0:	c4 04 00 00 	ld  [ %l0 ], %g2
                              
  head->next = new_first;
                                            
400109d4:	c4 26 20 1c 	st  %g2, [ %i0 + 0x1c ]
                       
  const void *source,
                                                
  void       *destination,
                                           
  size_t      size
                                                   
)
                                                                    
{
                                                                    
  memcpy(destination, source, size);
                                 
400109d8:	92 04 20 10 	add  %l0, 0x10, %o1
                           
  CORE_message_queue_Buffer_control *the_message;
                    

                                                                     
  the_message = _CORE_message_queue_Get_pending_message( the_message_queue );

  if ( the_message != NULL ) {
                                       
    the_message_queue->number_of_pending_messages -= 1;
              
400109dc:	c2 06 20 14 	ld  [ %i0 + 0x14 ], %g1
                       
  new_first->previous = head;
                                        
400109e0:	c6 20 a0 04 	st  %g3, [ %g2 + 4 ]
                          
400109e4:	82 00 7f ff 	add  %g1, -1, %g1
                             

                                                                     
    *size_p = the_message->Contents.size;
                            
400109e8:	c4 04 20 0c 	ld  [ %l0 + 0xc ], %g2
                        
    the_message_queue->number_of_pending_messages -= 1;
              
400109ec:	c2 26 20 14 	st  %g1, [ %i0 + 0x14 ]
                       
400109f0:	94 10 00 02 	mov  %g2, %o2
                                 
    *size_p = the_message->Contents.size;
                            
400109f4:	c4 26 c0 00 	st  %g2, [ %i3 ]
                              
400109f8:	90 10 00 1a 	mov  %i2, %o0
                                 
    executing->Wait.count =
                                          
400109fc:	c2 04 20 08 	ld  [ %l0 + 8 ], %g1
                          
40010a00:	40 00 21 7e 	call  40018ff8 <memcpy>
                       
40010a04:	c2 26 60 3c 	st  %g1, [ %i1 + 0x3c ]
                       
40010a08:	d0 06 00 00 	ld  [ %i0 ], %o0
                              
  if ( heads != NULL ) {
                                             
40010a0c:	80 a2 20 00 	cmp  %o0, 0
                                   
40010a10:	02 80 00 15 	be  40010a64 <_CORE_message_queue_Seize+0xac>
 
40010a14:	c2 06 20 0c 	ld  [ %i0 + 0xc ], %g1
                        
    return ( *operations->first )( heads );
                          
40010a18:	c2 00 60 10 	ld  [ %g1 + 0x10 ], %g1
                       
40010a1c:	9f c0 40 00 	call  %g1
                                     
40010a20:	01 00 00 00 	nop 
                                          
       */
                                                            
      the_thread = _Thread_queue_First_locked(
                       
        &the_message_queue->Wait_queue,
                              
        the_message_queue->operations
                                
      );
                                                             
      if ( the_thread == NULL ) {
                                    
40010a24:	b8 92 20 00 	orcc  %o0, 0, %i4
                             
40010a28:	02 80 00 0f 	be  40010a64 <_CORE_message_queue_Seize+0xac>
 <== NEVER TAKEN
40010a2c:	92 10 00 10 	mov  %l0, %o1
                                 
      /*
                                                             
       *  There was a thread waiting to send a message.  This code
   
       *  puts the messages in the message queue on behalf of the
    
       *  waiting task.
                                              
       */
                                                            
      _CORE_message_queue_Insert_message(
                            
40010a30:	d8 07 20 3c 	ld  [ %i4 + 0x3c ], %o4
                       
40010a34:	d6 07 20 48 	ld  [ %i4 + 0x48 ], %o3
                       
40010a38:	d4 07 20 44 	ld  [ %i4 + 0x44 ], %o2
                       
40010a3c:	40 00 1f d1 	call  40018980 <_CORE_message_queue_Insert_message>

40010a40:	90 10 00 18 	mov  %i0, %o0
                                 
        the_message,
                                                 
        the_thread->Wait.return_argument_second.immutable_object,
    
        (size_t) the_thread->Wait.option,
                            
        (CORE_message_queue_Submit_types) the_thread->Wait.count
     
      );
                                                             
      _Thread_queue_Extract_critical(
                                
40010a44:	d2 06 20 0c 	ld  [ %i0 + 0xc ], %o1
                        
40010a48:	90 10 00 18 	mov  %i0, %o0
                                 
40010a4c:	96 10 00 1d 	mov  %i5, %o3
                                 
40010a50:	94 10 00 1c 	mov  %i4, %o2
                                 
40010a54:	40 00 11 fe 	call  4001524c <_Thread_queue_Extract_critical>

40010a58:	b2 10 20 00 	clr  %i1
                                      
    the_message_queue->operations,
                                   
    executing,
                                                       
    queue_context
                                                    
  );
                                                                 
  return _Thread_Wait_get_status( executing );
                       
}
                                                                    
40010a5c:	81 c7 e0 08 	ret 
                                          
40010a60:	91 e8 20 00 	restore  %g0, 0, %o0
                          
  old_last = tail->previous;
                                         
40010a64:	c2 06 20 38 	ld  [ %i0 + 0x38 ], %g1
                       
  return &the_chain->Tail.Node;
                                      
40010a68:	84 06 20 34 	add  %i0, 0x34, %g2
                           
  the_node->next = tail;
                                             
40010a6c:	c4 24 00 00 	st  %g2, [ %l0 ]
                              
  tail->previous = the_node;
                                         
40010a70:	e0 26 20 38 	st  %l0, [ %i0 + 0x38 ]
                       
  old_last->next = the_node;
                                         
40010a74:	e0 20 40 00 	st  %l0, [ %g1 ]
                              
  the_node->previous = old_last;
                                     
40010a78:	c2 24 20 04 	st  %g1, [ %l0 + 4 ]
                          
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

40010a7c:	c2 07 40 00 	ld  [ %i5 ], %g1
                              
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40010a80:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40010a84:	01 00 00 00 	nop 
                                          
        return STATUS_SUCCESSFUL;
                                    
40010a88:	b2 10 20 00 	clr  %i1	! 0 <PROM_START>
                     
}
                                                                    
40010a8c:	81 c7 e0 08 	ret 
                                          
40010a90:	91 e8 20 00 	restore  %g0, 0, %o0
                          
  if ( !wait ) {
                                                     
40010a94:	80 a7 20 00 	cmp  %i4, 0
                                   
40010a98:	32 80 00 08 	bne,a   40010ab8 <_CORE_message_queue_Seize+0x100>

40010a9c:	f4 26 60 44 	st  %i2, [ %i1 + 0x44 ]
                       
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

40010aa0:	c2 07 40 00 	ld  [ %i5 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40010aa4:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40010aa8:	01 00 00 00 	nop 
                                          
    return STATUS_UNSATISFIED;
                                       
40010aac:	b2 10 2b 0d 	mov  0xb0d, %i1	! b0d <SPARC_THREAD_CONTROL_FP_CONTEXT_OFFSET+0x9bd>

}
                                                                    
40010ab0:	81 c7 e0 08 	ret 
                                          
40010ab4:	91 e8 20 00 	restore  %g0, 0, %o0
                          
  queue_context->thread_state = thread_state;
                        
40010ab8:	82 10 20 10 	mov  0x10, %g1
                                
  executing->Wait.return_argument = size_p;
                          
40010abc:	f6 26 60 40 	st  %i3, [ %i1 + 0x40 ]
                       
  _Thread_queue_Enqueue(
                                             
40010ac0:	94 10 00 19 	mov  %i1, %o2
                                 
40010ac4:	c2 27 60 04 	st  %g1, [ %i5 + 4 ]
                          
40010ac8:	90 10 00 18 	mov  %i0, %o0
                                 
40010acc:	d2 06 20 0c 	ld  [ %i0 + 0xc ], %o1
                        
40010ad0:	96 10 00 1d 	mov  %i5, %o3
                                 
40010ad4:	40 00 11 68 	call  40015074 <_Thread_queue_Enqueue>
        
40010ad8:	b0 10 20 00 	clr  %i0
                                      
  return (Status_Control) the_thread->Wait.return_code;
              
40010adc:	f2 06 60 4c 	ld  [ %i1 + 0x4c ], %i1
                       
}
                                                                    
40010ae0:	81 c7 e0 08 	ret 
                                          
40010ae4:	81 e8 00 00 	restore 
                                      

                                                                     

40010ae8 <_CORE_message_queue_Submit>: size_t size, CORE_message_queue_Submit_types submit_type, bool wait, Thread_queue_Context *queue_context ) {
40010ae8:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  CORE_message_queue_Buffer_control *the_message;
                    
  Thread_Control                    *the_thread;
                     

                                                                     
  if ( size > the_message_queue->maximum_message_size ) {
            
40010aec:	c2 06 20 18 	ld  [ %i0 + 0x18 ], %g1
                       <== NOT EXECUTED
40010af0:	80 a0 40 1b 	cmp  %g1, %i3
                                 <== NOT EXECUTED
40010af4:	0a 80 00 1e 	bcs  40010b6c <_CORE_message_queue_Submit+0x84>
<== NOT EXECUTED
40010af8:	01 00 00 00 	nop 
                                          
   *
                                                                 
   *  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 ) {
        
40010afc:	c2 06 20 14 	ld  [ %i0 + 0x14 ], %g1
                       
40010b00:	80 a0 60 00 	cmp  %g1, 0
                                   
40010b04:	32 80 00 23 	bne,a   40010b90 <_CORE_message_queue_Submit+0xa8>

40010b08:	d2 06 20 30 	ld  [ %i0 + 0x30 ], %o1
                       
40010b0c:	d0 06 00 00 	ld  [ %i0 ], %o0
                              
  if ( heads != NULL ) {
                                             
40010b10:	80 a2 20 00 	cmp  %o0, 0
                                   
40010b14:	02 80 00 1e 	be  40010b8c <_CORE_message_queue_Submit+0xa4>

40010b18:	c2 06 20 0c 	ld  [ %i0 + 0xc ], %g1
                        
    return ( *operations->first )( heads );
                          
40010b1c:	c2 00 60 10 	ld  [ %g1 + 0x10 ], %g1
                       
40010b20:	9f c0 40 00 	call  %g1
                                     
40010b24:	01 00 00 00 	nop 
                                          
   */
                                                                
  the_thread = _Thread_queue_First_locked(
                           
    &the_message_queue->Wait_queue,
                                  
    the_message_queue->operations
                                    
  );
                                                                 
  if ( the_thread == NULL ) {
                                        
40010b28:	a0 92 20 00 	orcc  %o0, 0, %l0
                             
40010b2c:	02 80 00 18 	be  40010b8c <_CORE_message_queue_Submit+0xa4>
<== NEVER TAKEN
40010b30:	92 10 00 1a 	mov  %i2, %o1
                                 
    return NULL;
                                                     
  }
                                                                  

                                                                     
   *(size_t *) the_thread->Wait.return_argument = size;
              
40010b34:	c2 04 20 40 	ld  [ %l0 + 0x40 ], %g1
                       
40010b38:	f6 20 40 00 	st  %i3, [ %g1 ]
                              
   the_thread->Wait.count = (uint32_t) submit_type;
                  
40010b3c:	f8 24 20 3c 	st  %i4, [ %l0 + 0x3c ]
                       
  memcpy(destination, source, size);
                                 
40010b40:	94 10 00 1b 	mov  %i3, %o2
                                 
40010b44:	40 00 21 2d 	call  40018ff8 <memcpy>
                       
40010b48:	d0 04 20 44 	ld  [ %l0 + 0x44 ], %o0
                       
    buffer,
                                                          
    the_thread->Wait.return_argument_second.mutable_object,
          
    size
                                                             
  );
                                                                 

                                                                     
  _Thread_queue_Extract_critical(
                                    
40010b4c:	d6 07 a0 5c 	ld  [ %fp + 0x5c ], %o3
                       
40010b50:	d2 06 20 0c 	ld  [ %i0 + 0xc ], %o1
                        
40010b54:	94 10 00 10 	mov  %l0, %o2
                                 
40010b58:	90 10 00 18 	mov  %i0, %o0
                                 
40010b5c:	40 00 11 bc 	call  4001524c <_Thread_queue_Extract_critical>

40010b60:	b2 10 20 00 	clr  %i1
                                      
      executing,
                                                     
      queue_context
                                                  
    );
                                                               
    return _Thread_Wait_get_status( executing );
                     
  #endif
                                                             
}
                                                                    
40010b64:	81 c7 e0 08 	ret 
                                          
40010b68:	91 e8 20 00 	restore  %g0, 0, %o0
                          
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

40010b6c:	c2 07 a0 5c 	ld  [ %fp + 0x5c ], %g1
                       <== NOT EXECUTED
40010b70:	c2 00 40 00 	ld  [ %g1 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40010b74:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40010b78:	01 00 00 00 	nop 
                                          
    return STATUS_MESSAGE_INVALID_SIZE;
                              
40010b7c:	33 00 00 1e 	sethi  %hi(0x7800), %i1
                       
40010b80:	b2 16 62 08 	or  %i1, 0x208, %i1	! 7a08 <_Configuration_Interrupt_stack_size+0x6a08>

}
                                                                    
40010b84:	81 c7 e0 08 	ret 
                                          
40010b88:	91 e8 20 00 	restore  %g0, 0, %o0
                          
  return _Chain_Immutable_head( the_chain )->next;
                   
40010b8c:	d2 06 20 30 	ld  [ %i0 + 0x30 ], %o1
                       
  return &the_chain->Tail.Node;
                                      
40010b90:	82 06 20 34 	add  %i0, 0x34, %g1
                           
  if ( !_Chain_Is_empty(the_chain))
                                  
40010b94:	80 a2 40 01 	cmp  %o1, %g1
                                 
40010b98:	02 80 00 14 	be  40010be8 <_CORE_message_queue_Submit+0x100>

40010b9c:	84 06 20 30 	add  %i0, 0x30, %g2
                           
  new_first = old_first->next;
                                       
40010ba0:	c2 02 40 00 	ld  [ %o1 ], %g1
                              
  head->next = new_first;
                                            
40010ba4:	c2 26 20 30 	st  %g1, [ %i0 + 0x30 ]
                       
    _CORE_message_queue_Insert_message(
                              
40010ba8:	98 10 00 1c 	mov  %i4, %o4
                                 
  new_first->previous = head;
                                        
40010bac:	c4 20 60 04 	st  %g2, [ %g1 + 4 ]
                          
40010bb0:	96 10 00 1b 	mov  %i3, %o3
                                 
40010bb4:	94 10 00 1a 	mov  %i2, %o2
                                 
40010bb8:	40 00 1f 72 	call  40018980 <_CORE_message_queue_Insert_message>

40010bbc:	90 10 00 18 	mov  %i0, %o0
                                 
    if (
                                                             
40010bc0:	c2 06 20 14 	ld  [ %i0 + 0x14 ], %g1
                       
40010bc4:	80 a0 60 01 	cmp  %g1, 1
                                   
40010bc8:	22 80 00 1c 	be,a   40010c38 <_CORE_message_queue_Submit+0x150>

40010bcc:	c2 06 20 2c 	ld  [ %i0 + 0x2c ], %g1
                       
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

40010bd0:	c2 07 a0 5c 	ld  [ %fp + 0x5c ], %g1
                       <== NOT EXECUTED
40010bd4:	c2 00 40 00 	ld  [ %g1 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40010bd8:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40010bdc:	01 00 00 00 	nop 
                                          
    return STATUS_SUCCESSFUL;
                                        
40010be0:	10 bf ff e1 	b  40010b64 <_CORE_message_queue_Submit+0x7c>
 
40010be4:	b2 10 20 00 	clr  %i1	! 0 <PROM_START>
                     
    if ( !wait ) {
                                                   
40010be8:	80 a7 60 00 	cmp  %i5, 0
                                   
40010bec:	02 80 00 0d 	be  40010c20 <_CORE_message_queue_Submit+0x138>

40010bf0:	01 00 00 00 	nop 
                                          
    if ( _ISR_Is_in_progress() ) {
                                   
40010bf4:	40 00 05 93 	call  40012240 <_ISR_Is_in_progress>
          
40010bf8:	01 00 00 00 	nop 
                                          
40010bfc:	80 a2 20 00 	cmp  %o0, 0
                                   
40010c00:	22 80 00 15 	be,a   40010c54 <_CORE_message_queue_Submit+0x16c>

40010c04:	f4 26 60 44 	st  %i2, [ %i1 + 0x44 ]
                       
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

40010c08:	c2 07 a0 5c 	ld  [ %fp + 0x5c ], %g1
                       <== NOT EXECUTED
40010c0c:	c2 00 40 00 	ld  [ %g1 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40010c10:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40010c14:	01 00 00 00 	nop 
                                          
      return STATUS_MESSAGE_QUEUE_WAIT_IN_ISR;
                       
40010c18:	10 bf ff d3 	b  40010b64 <_CORE_message_queue_Submit+0x7c>
 
40010c1c:	b2 10 2c 0d 	mov  0xc0d, %i1	! c0d <SPARC_THREAD_CONTROL_FP_CONTEXT_OFFSET+0xabd>

  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

40010c20:	c2 07 a0 5c 	ld  [ %fp + 0x5c ], %g1
                       <== NOT EXECUTED
40010c24:	c2 00 40 00 	ld  [ %g1 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40010c28:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40010c2c:	01 00 00 00 	nop 
                                          
      return STATUS_TOO_MANY;
                                        
40010c30:	10 bf ff cd 	b  40010b64 <_CORE_message_queue_Submit+0x7c>
 
40010c34:	b2 10 2b 05 	mov  0xb05, %i1	! b05 <SPARC_THREAD_CONTROL_FP_CONTEXT_OFFSET+0x9b5>

        && the_message_queue->notify_handler != NULL
                 
40010c38:	80 a0 60 00 	cmp  %g1, 0
                                   
40010c3c:	02 bf ff e5 	be  40010bd0 <_CORE_message_queue_Submit+0xe8>

40010c40:	d2 07 a0 5c 	ld  [ %fp + 0x5c ], %o1
                       
      ( *the_message_queue->notify_handler )(
                        
40010c44:	90 10 00 18 	mov  %i0, %o0
                                 
40010c48:	9f c0 40 00 	call  %g1
                                     
40010c4c:	b2 10 20 00 	clr  %i1
                                      
40010c50:	30 bf ff c5 	b,a   40010b64 <_CORE_message_queue_Submit+0x7c>

  queue_context->thread_state = thread_state;
                        
40010c54:	82 10 20 10 	mov  0x10, %g1
                                
    executing->Wait.option = (uint32_t) size;
                        
40010c58:	f6 26 60 48 	st  %i3, [ %i1 + 0x48 ]
                       
    _Thread_queue_Enqueue(
                                           
40010c5c:	94 10 00 19 	mov  %i1, %o2
                                 
    executing->Wait.count = submit_type;
                             
40010c60:	f8 26 60 3c 	st  %i4, [ %i1 + 0x3c ]
                       
    _Thread_queue_Enqueue(
                                           
40010c64:	90 10 00 18 	mov  %i0, %o0
                                 
40010c68:	d6 07 a0 5c 	ld  [ %fp + 0x5c ], %o3
                       
40010c6c:	c2 22 e0 04 	st  %g1, [ %o3 + 4 ]
                          
40010c70:	40 00 11 01 	call  40015074 <_Thread_queue_Enqueue>
        
40010c74:	d2 06 20 0c 	ld  [ %i0 + 0xc ], %o1
                        
    return _Thread_Wait_get_status( executing );
                     
40010c78:	10 bf ff bb 	b  40010b64 <_CORE_message_queue_Submit+0x7c>
 
40010c7c:	f2 06 60 4c 	ld  [ %i1 + 0x4c ], %i1
                       

                                                                     

4000cb84 <_CORE_mutex_Seize_slow>: const Thread_queue_Operations *operations, Thread_Control *executing, bool wait, Thread_queue_Context *queue_context ) {
4000cb84:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  if ( wait ) {
                                                      
4000cb88:	80 a6 e0 00 	cmp  %i3, 0
                                   <== NOT EXECUTED
4000cb8c:	02 80 00 0f 	be  4000cbc8 <_CORE_mutex_Seize_slow+0x44>
    <== NOT EXECUTED
4000cb90:	82 10 20 01 	mov  1, %g1
                                   
4000cb94:	c2 27 20 04 	st  %g1, [ %i4 + 4 ]
                          
  queue_context->deadlock_callout = deadlock_callout;
                
4000cb98:	03 10 00 43 	sethi  %hi(0x40010c00), %g1
                   
4000cb9c:	82 10 62 b8 	or  %g1, 0x2b8, %g1	! 40010eb8 <_Thread_queue_Deadlock_status>

4000cba0:	c2 27 20 20 	st  %g1, [ %i4 + 0x20 ]
                       
    );
                                                               
    _Thread_queue_Context_set_deadlock_callout(
                      
      queue_context,
                                                 
      _Thread_queue_Deadlock_status
                                  
    );
                                                               
    _Thread_queue_Enqueue(
                                           
4000cba4:	92 10 00 19 	mov  %i1, %o1
                                 
4000cba8:	90 10 00 18 	mov  %i0, %o0
                                 
4000cbac:	96 10 00 1c 	mov  %i4, %o3
                                 
4000cbb0:	94 10 00 1a 	mov  %i2, %o2
                                 
4000cbb4:	40 00 10 c9 	call  40010ed8 <_Thread_queue_Enqueue>
        
4000cbb8:	b0 10 20 00 	clr  %i0
                                      
  return (Status_Control) the_thread->Wait.return_code;
              
4000cbbc:	f2 06 a0 4c 	ld  [ %i2 + 0x4c ], %i1
                       
    return _Thread_Wait_get_status( executing );
                     
  } else {
                                                           
    _CORE_mutex_Release( the_mutex, queue_context );
                 
    return STATUS_UNAVAILABLE;
                                       
  }
                                                                  
}
                                                                    
4000cbc0:	81 c7 e0 08 	ret 
                                          
4000cbc4:	81 e8 00 00 	restore 
                                      
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000cbc8:	c2 07 00 00 	ld  [ %i4 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000cbcc:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000cbd0:	01 00 00 00 	nop 
                                          
    return STATUS_UNAVAILABLE;
                                       
4000cbd4:	33 00 00 04 	sethi  %hi(0x1000), %i1
                       
4000cbd8:	b2 16 60 0d 	or  %i1, 0xd, %i1	! 100d <_Configuration_Interrupt_stack_size+0xd>

}
                                                                    
4000cbdc:	81 c7 e0 08 	ret 
                                          
4000cbe0:	91 e8 20 00 	restore  %g0, 0, %o0
                          

                                                                     

4000cbe4 <_CORE_semaphore_Initialize>: void _CORE_semaphore_Initialize( CORE_semaphore_Control *the_semaphore, uint32_t initial_value ) { the_semaphore->count = initial_value;
4000cbe4:	d2 22 20 0c 	st  %o1, [ %o0 + 0xc ]
                        <== NOT EXECUTED

                                                                     
  _Thread_queue_Object_initialize( &the_semaphore->Wait_queue );
     
4000cbe8:	82 13 c0 00 	mov  %o7, %g1
                                 <== NOT EXECUTED
4000cbec:	40 00 12 2b 	call  40011498 <_Thread_queue_Object_initialize>
<== NOT EXECUTED
4000cbf0:	9e 10 40 00 	mov  %g1, %o7
                                 <== NOT EXECUTED

                                                                     

40009bb0 <_Chain_Node_count_unprotected>: return _Chain_Immutable_head( the_chain )->next;
40009bb0:	c2 02 00 00 	ld  [ %o0 ], %g1
                              
  return &the_chain->Tail.Node;
                                      
40009bb4:	84 02 20 04 	add  %o0, 4, %g2
                              
{
                                                                    
  size_t            count = 0;
                                       
  const Chain_Node *tail  = _Chain_Immutable_tail( chain );
          
  const Chain_Node *node  = _Chain_Immutable_first( chain );
         

                                                                     
  while ( node != tail ) {
                                           
40009bb8:	80 a0 80 01 	cmp  %g2, %g1
                                 
40009bbc:	02 80 00 06 	be  40009bd4 <_Chain_Node_count_unprotected+0x24>
<== NEVER TAKEN
40009bc0:	90 10 20 00 	clr  %o0
                                      
40009bc4:	c2 00 40 00 	ld  [ %g1 ], %g1
                              
40009bc8:	80 a0 80 01 	cmp  %g2, %g1
                                 
40009bcc:	12 bf ff fe 	bne  40009bc4 <_Chain_Node_count_unprotected+0x14>

40009bd0:	90 02 20 01 	inc  %o0
                                      
40009bd4:	81 c3 e0 08 	retl 
                                         
40009bd8:	01 00 00 00 	nop 
                                          

                                                                     

40014154 <_Condition_Broadcast>: _Condition_Wake( _condition, 1 ); } void _Condition_Broadcast( struct _Condition_Control *_condition ) { _Condition_Wake( _condition, INT_MAX );
40014154:	13 1f ff ff 	sethi  %hi(0x7ffffc00), %o1
                   <== NOT EXECUTED
40014158:	92 12 63 ff 	or  %o1, 0x3ff, %o1	! 7fffffff <RAM_END+0x3fbfffff>
<== NOT EXECUTED
4001415c:	82 13 c0 00 	mov  %o7, %g1
                                 
40014160:	7f ff ff d5 	call  400140b4 <_Condition_Wake>
              
40014164:	9e 10 40 00 	mov  %g1, %o7
                                 

                                                                     

4001005c <_Condition_Signal>: void _Condition_Signal( struct _Condition_Control *_condition ) { _Condition_Wake( _condition, 1 );
4001005c:	92 10 20 01 	mov  1, %o1
                                   <== NOT EXECUTED
40010060:	82 13 c0 00 	mov  %o7, %g1
                                 <== NOT EXECUTED
40010064:	7f ff ff b9 	call  4000ff48 <_Condition_Wake>
              <== NOT EXECUTED
40010068:	9e 10 40 00 	mov  %g1, %o7
                                 <== NOT EXECUTED

                                                                     

40014108 <_Condition_Wait>: {
40014108:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  queue_context->enqueue_callout = enqueue_callout;
                  
4001410c:	03 10 00 50 	sethi  %hi(0x40014000), %g1
                   <== NOT EXECUTED
  context->mutex = _mutex;
                                           
40014110:	f2 27 bf fc 	st  %i1, [ %fp + -4 ]
                         <== NOT EXECUTED
40014114:	82 10 60 a4 	or  %g1, 0xa4, %g1
                            <== NOT EXECUTED
40014118:	c2 27 bf e0 	st  %g1, [ %fp + -32 ]
                        <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4001411c:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  _ISR_lock_ISR_disable( &context->Base.Lock_context.Lock_context );
 
40014120:	c2 27 bf d8 	st  %g1, [ %fp + -40 ]
                        
  queue_context->thread_state = thread_state;
                        
40014124:	82 10 20 20 	mov  0x20, %g1
                                
  _Thread_queue_Enqueue(
                                             
40014128:	d4 01 a0 20 	ld  [ %g6 + 0x20 ], %o2
                       
4001412c:	90 06 20 08 	add  %i0, 8, %o0
                              
40014130:	96 07 bf d8 	add  %fp, -40, %o3
                            
40014134:	c2 27 bf dc 	st  %g1, [ %fp + -36 ]
                        
40014138:	13 10 00 8d 	sethi  %hi(0x40023400), %o1
                   
4001413c:	7f ff e5 bd 	call  4000d830 <_Thread_queue_Enqueue>
        
40014140:	92 12 61 b8 	or  %o1, 0x1b8, %o1	! 400235b8 <_Thread_queue_Operations_FIFO>

  _Mutex_Acquire( _mutex );
                                          
40014144:	7f ff de 0a 	call  4000b96c <_Mutex_Acquire>
               
40014148:	90 10 00 19 	mov  %i1, %o0
                                 
}
                                                                    
4001414c:	81 c7 e0 08 	ret 
                                          
40014150:	81 e8 00 00 	restore 
                                      

                                                                     

400578a4 <_Condition_Wait_recursive>: {
400578a4:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
_Thread_queue_Context_set_enqueue_callout(
                           
  Thread_queue_Context         *queue_context,
                       
  Thread_queue_Enqueue_callout  enqueue_callout
                      
)
                                                                    
{
                                                                    
  queue_context->enqueue_callout = enqueue_callout;
                  
400578a8:	03 10 01 5e 	sethi  %hi(0x40057800), %g1
                   <== NOT EXECUTED
  nest_level = _mutex->_nest_level;
                                  
400578ac:	fa 06 60 14 	ld  [ %i1 + 0x14 ], %i5
                       <== NOT EXECUTED
400578b0:	82 10 60 40 	or  %g1, 0x40, %g1
                            <== NOT EXECUTED
  _mutex->_nest_level = 0;
                                           
400578b4:	c0 26 60 14 	clr  [ %i1 + 0x14 ]
                           <== NOT EXECUTED
400578b8:	c2 27 bf e0 	st  %g1, [ %fp + -32 ]
                        <== NOT EXECUTED
  context->mutex = _mutex;
                                           
400578bc:	f2 27 bf fc 	st  %i1, [ %fp + -4 ]
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

400578c0:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  _ISR_lock_ISR_disable( &context->Base.Lock_context.Lock_context );
 
400578c4:	c2 27 bf d8 	st  %g1, [ %fp + -40 ]
                        
  queue_context->thread_state = thread_state;
                        
400578c8:	82 10 20 20 	mov  0x20, %g1
                                
  _Thread_queue_Enqueue(
                                             
400578cc:	d4 01 a0 20 	ld  [ %g6 + 0x20 ], %o2
                       
400578d0:	96 07 bf d8 	add  %fp, -40, %o3
                            
400578d4:	90 06 20 08 	add  %i0, 8, %o0
                              
400578d8:	c2 27 bf dc 	st  %g1, [ %fp + -36 ]
                        
400578dc:	13 10 02 46 	sethi  %hi(0x40091800), %o1
                   
400578e0:	40 00 0d e5 	call  4005b074 <_Thread_queue_Enqueue>
        
400578e4:	92 12 63 b8 	or  %o1, 0x3b8, %o1	! 40091bb8 <_Thread_queue_Operations_FIFO>

  _Mutex_recursive_Acquire( _mutex );
                                
400578e8:	40 00 06 14 	call  40059138 <_Mutex_recursive_Acquire>
     
400578ec:	90 10 00 19 	mov  %i1, %o0
                                 
  _mutex->_nest_level = nest_level;
                                  
400578f0:	fa 26 60 14 	st  %i5, [ %i1 + 0x14 ]
                       
}
                                                                    
400578f4:	81 c7 e0 08 	ret 
                                          
400578f8:	81 e8 00 00 	restore 
                                      

                                                                     

4000fff4 <_Condition_Wait_recursive_timed>: {
4000fff4:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  queue_context->enqueue_callout = enqueue_callout;
                  
4000fff8:	03 10 00 3f 	sethi  %hi(0x4000fc00), %g1
                   <== NOT EXECUTED
  nest_level = _mutex->_nest_level;
                                  
4000fffc:	f8 06 60 14 	ld  [ %i1 + 0x14 ], %i4
                       <== NOT EXECUTED
40010000:	82 10 63 24 	or  %g1, 0x324, %g1
                           <== NOT EXECUTED
  queue_context->Timeout.arg = arg;
                                  
40010004:	f4 27 bf e4 	st  %i2, [ %fp + -28 ]
                        <== NOT EXECUTED
  queue_context->enqueue_callout = enqueue_callout;
                  
40010008:	c2 27 bf e0 	st  %g1, [ %fp + -32 ]
                        <== NOT EXECUTED
  _mutex->_nest_level = 0;
                                           
4001000c:	c0 26 60 14 	clr  [ %i1 + 0x14 ]
                           <== NOT EXECUTED
  context->mutex = _mutex;
                                           
40010010:	f2 27 bf fc 	st  %i1, [ %fp + -4 ]
                         <== NOT EXECUTED
40010014:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  _ISR_lock_ISR_disable( &context->Base.Lock_context.Lock_context );
 
40010018:	c2 27 bf d8 	st  %g1, [ %fp + -40 ]
                        
  queue_context->thread_state = thread_state;
                        
4001001c:	82 10 20 20 	mov  0x20, %g1
                                
  executing = _Thread_Executing;
                                     
40010020:	fa 01 a0 20 	ld  [ %g6 + 0x20 ], %i5
                       
  _Thread_queue_Enqueue(
                                             
40010024:	96 07 bf d8 	add  %fp, -40, %o3
                            
40010028:	94 10 00 1d 	mov  %i5, %o2
                                 
4001002c:	90 06 20 08 	add  %i0, 8, %o0
                              
40010030:	c2 27 bf dc 	st  %g1, [ %fp + -36 ]
                        
40010034:	13 10 00 4a 	sethi  %hi(0x40012800), %o1
                   
40010038:	7f ff ee 7a 	call  4000ba20 <_Thread_queue_Enqueue>
        
4001003c:	92 12 63 14 	or  %o1, 0x314, %o1	! 40012b14 <_Thread_queue_Operations_FIFO>

  eno = STATUS_GET_POSIX( _Thread_Wait_get_status( executing ) );
    
40010040:	f0 07 60 4c 	ld  [ %i5 + 0x4c ], %i0
                       
  _Mutex_recursive_Acquire( _mutex );
                                
40010044:	90 10 00 19 	mov  %i1, %o0
                                 
40010048:	7f ff e5 c3 	call  40009754 <_Mutex_recursive_Acquire>
     
4001004c:	b1 3e 20 08 	sra  %i0, 8, %i0
                              
  _mutex->_nest_level = nest_level;
                                  
40010050:	f8 26 60 14 	st  %i4, [ %i1 + 0x14 ]
                       
}
                                                                    
40010054:	81 c7 e0 08 	ret 
                                          
40010058:	81 e8 00 00 	restore 
                                      

                                                                     

4000837c <_Condition_Wait_timed>: {
4000837c:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  queue_context->enqueue_callout = enqueue_callout;
                  
40008380:	03 10 00 20 	sethi  %hi(0x40008000), %g1
                   <== NOT EXECUTED
  queue_context->Timeout.arg = arg;
                                  
40008384:	f4 27 bf e4 	st  %i2, [ %fp + -28 ]
                        <== NOT EXECUTED
  queue_context->enqueue_callout = enqueue_callout;
                  
40008388:	82 10 62 b8 	or  %g1, 0x2b8, %g1
                           <== NOT EXECUTED
  context->mutex = _mutex;
                                           
4000838c:	f2 27 bf fc 	st  %i1, [ %fp + -4 ]
                         <== NOT EXECUTED
40008390:	c2 27 bf e0 	st  %g1, [ %fp + -32 ]
                        <== NOT EXECUTED
40008394:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  _ISR_lock_ISR_disable( &context->Base.Lock_context.Lock_context );
 
40008398:	c2 27 bf d8 	st  %g1, [ %fp + -40 ]
                        
  queue_context->thread_state = thread_state;
                        
4000839c:	82 10 20 20 	mov  0x20, %g1
                                
  executing = _Thread_Executing;
                                     
400083a0:	fa 01 a0 20 	ld  [ %g6 + 0x20 ], %i5
                       
  _Thread_queue_Enqueue(
                                             
400083a4:	90 06 20 08 	add  %i0, 8, %o0
                              
400083a8:	96 07 bf d8 	add  %fp, -40, %o3
                            
400083ac:	94 10 00 1d 	mov  %i5, %o2
                                 
400083b0:	c2 27 bf dc 	st  %g1, [ %fp + -36 ]
                        
400083b4:	13 10 00 49 	sethi  %hi(0x40012400), %o1
                   
400083b8:	40 00 10 c4 	call  4000c6c8 <_Thread_queue_Enqueue>
        
400083bc:	92 12 63 10 	or  %o1, 0x310, %o1	! 40012710 <_Thread_queue_Operations_FIFO>

  eno = STATUS_GET_POSIX( _Thread_Wait_get_status( executing ) );
    
400083c0:	f0 07 60 4c 	ld  [ %i5 + 0x4c ], %i0
                       
400083c4:	b1 3e 20 08 	sra  %i0, 8, %i0
                              
  _Mutex_Acquire( _mutex );
                                          
400083c8:	40 00 07 89 	call  4000a1ec <_Mutex_Acquire>
               
400083cc:	90 10 00 19 	mov  %i1, %o0
                                 
}
                                                                    
400083d0:	81 c7 e0 08 	ret 
                                          
400083d4:	81 e8 00 00 	restore 
                                      

                                                                     

40007168 <_Freechain_Get>: Freechain_Control *freechain, Freechain_Allocator allocator, size_t number_nodes_to_extend, size_t node_size ) {
40007168:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
4000716c:	ba 10 00 18 	mov  %i0, %i5
                                 <== NOT EXECUTED
  return _Chain_Immutable_head( the_chain )->next;
                   
40007170:	f0 06 00 00 	ld  [ %i0 ], %i0
                              
  return &the_chain->Tail.Node;
                                      
40007174:	b8 07 60 04 	add  %i5, 4, %i4
                              
  _Assert( node_size >= sizeof( Chain_Node ) );
                      

                                                                     
  if ( _Chain_Is_empty( &freechain->Free ) && number_nodes_to_extend > 0 ) {

40007178:	80 a6 00 1c 	cmp  %i0, %i4
                                 
4000717c:	12 80 00 04 	bne  4000718c <_Freechain_Get+0x24>
           <== ALWAYS TAKEN
40007180:	80 a6 a0 00 	cmp  %i2, 0
                                   
40007184:	12 80 00 0a 	bne  400071ac <_Freechain_Get+0x44>
           
40007188:	01 00 00 00 	nop 
                                          
  if ( !_Chain_Is_empty(the_chain))
                                  
4000718c:	80 a7 00 18 	cmp  %i4, %i0
                                 
40007190:	02 80 00 12 	be  400071d8 <_Freechain_Get+0x70>
            
40007194:	01 00 00 00 	nop 
                                          
  new_first = old_first->next;
                                       
40007198:	c2 06 00 00 	ld  [ %i0 ], %g1
                              
  head->next = new_first;
                                            
4000719c:	c2 27 40 00 	st  %g1, [ %i5 ]
                              
  new_first->previous = head;
                                        
400071a0:	fa 20 60 04 	st  %i5, [ %g1 + 4 ]
                          
400071a4:	81 c7 e0 08 	ret 
                                          
400071a8:	81 e8 00 00 	restore 
                                      
    void *starting_address;
                                          

                                                                     
    starting_address = ( *allocator )( number_nodes_to_extend * node_size );

400071ac:	9f c6 40 00 	call  %i1
                                     
400071b0:	90 5e 80 1b 	smul  %i2, %i3, %o0
                           
    number_nodes_to_extend *= ( starting_address != NULL );
          
400071b4:	80 a0 00 08 	cmp  %g0, %o0
                                 
    starting_address = ( *allocator )( number_nodes_to_extend * node_size );

400071b8:	92 10 00 08 	mov  %o0, %o1
                                 
    number_nodes_to_extend *= ( starting_address != NULL );
          
400071bc:	94 40 20 00 	addx  %g0, 0, %o2
                             

                                                                     
    _Chain_Initialize(
                                               
400071c0:	96 10 00 1b 	mov  %i3, %o3
                                 
400071c4:	94 5a 80 1a 	smul  %o2, %i2, %o2
                           
400071c8:	7f ff ff c7 	call  400070e4 <_Chain_Initialize>
            
400071cc:	90 10 00 1d 	mov  %i5, %o0
                                 
400071d0:	10 bf ff ef 	b  4000718c <_Freechain_Get+0x24>
             
400071d4:	f0 07 40 00 	ld  [ %i5 ], %i0
                              
      node_size
                                                      
    );
                                                               
  }
                                                                  

                                                                     
  return _Chain_Get_unprotected( &freechain->Free );
                 
}
                                                                    
400071d8:	81 c7 e0 08 	ret 
                                          
400071dc:	91 e8 20 00 	restore  %g0, 0, %o0
                          

                                                                     

400071e0 <_Freechain_Put>: void _Freechain_Put( Freechain_Control *freechain, void *node ) { if ( node != NULL ) {
400071e0:	80 a2 60 00 	cmp  %o1, 0
                                   <== NOT EXECUTED
400071e4:	02 80 00 07 	be  40007200 <_Freechain_Put+0x20>
            <== NOT EXECUTED
400071e8:	01 00 00 00 	nop 
                                          
  the_node->previous    = after_node;
                                
400071ec:	d0 22 60 04 	st  %o0, [ %o1 + 4 ]
                          
  before_node           = after_node->next;
                          
400071f0:	c2 02 00 00 	ld  [ %o0 ], %g1
                              
  after_node->next      = the_node;
                                  
400071f4:	d2 22 00 00 	st  %o1, [ %o0 ]
                              
  the_node->next        = before_node;
                               
400071f8:	c2 22 40 00 	st  %g1, [ %o1 ]
                              
  before_node->previous = the_node;
                                  
400071fc:	d2 20 60 04 	st  %o1, [ %g1 + 4 ]
                          
    _Chain_Initialize_node( node );
                                  
    _Chain_Prepend_unprotected( &freechain->Free, node );
            
  }
                                                                  
}
                                                                    
40007200:	81 c3 e0 08 	retl 
                                         
40007204:	01 00 00 00 	nop 
                                          

                                                                     

400085b0 <_Futex_Wait>: {
400085b0:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
400085b4:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return psr;
                                                        
400085b8:	86 10 00 01 	mov  %g1, %g3
                                 
  if ( *uaddr == val ) {
                                             
400085bc:	c4 06 40 00 	ld  [ %i1 ], %g2
                              
400085c0:	80 a0 80 1a 	cmp  %g2, %i2
                                 
400085c4:	22 80 00 06 	be,a   400085dc <_Futex_Wait+0x2c>
            
400085c8:	82 10 20 40 	mov  0x40, %g1
                                
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

400085cc:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
400085d0:	01 00 00 00 	nop 
                                          
}
                                                                    
400085d4:	81 c7 e0 08 	ret 
                                          
400085d8:	91 e8 20 0b 	restore  %g0, 0xb, %o0
                        
  executing = _Thread_Executing;
                                     
400085dc:	d4 01 a0 20 	ld  [ %g6 + 0x20 ], %o2
                       
400085e0:	c2 27 bf e0 	st  %g1, [ %fp + -32 ]
                        
RTEMS_INLINE_ROUTINE void
                                            
_Thread_queue_Context_set_enqueue_do_nothing_extra(
                  
  Thread_queue_Context *queue_context
                                
)
                                                                    
{
                                                                    
  queue_context->enqueue_callout = _Thread_queue_Enqueue_do_nothing_extra;

400085e4:	03 10 00 31 	sethi  %hi(0x4000c400), %g1
                   
400085e8:	82 10 62 b0 	or  %g1, 0x2b0, %g1	! 4000c6b0 <_Thread_queue_Enqueue_do_nothing_extra>

    _Thread_queue_Enqueue(
                                           
400085ec:	90 06 20 08 	add  %i0, 8, %o0
                              
)
                                                                    
{
                                                                    
#if defined( RTEMS_SMP )
                                             
  context->Lock_context.isr_level = level;
                           
#else
                                                                
  context->isr_level = level;
                                        
400085f0:	c6 27 bf dc 	st  %g3, [ %fp + -36 ]
                        
400085f4:	96 07 bf dc 	add  %fp, -36, %o3
                            
400085f8:	c2 27 bf e4 	st  %g1, [ %fp + -28 ]
                        
400085fc:	13 10 00 49 	sethi  %hi(0x40012400), %o1
                   
    eno = 0;
                                                         
40008600:	b0 10 20 00 	clr  %i0
                                      
    _Thread_queue_Enqueue(
                                           
40008604:	40 00 10 31 	call  4000c6c8 <_Thread_queue_Enqueue>
        
40008608:	92 12 63 10 	or  %o1, 0x310, %o1
                           
4000860c:	81 c7 e0 08 	ret 
                                          
40008610:	81 e8 00 00 	restore 
                                      

                                                                     

40008614 <_Futex_Wake>: int _Futex_Wake( struct _Futex_Control *_futex, int count ) {
40008614:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

40008618:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  /*
                                                                 
   * For some synchronization objects like barriers the _Futex_Wake() must be

   * called in the fast path.  Normally there are no threads on the queue, so

   * check this condition early.
                                     
   */
                                                                
  if ( __predict_true( _Thread_queue_Is_empty( &futex->Queue.Queue ) ) ) {

4000861c:	c4 06 20 08 	ld  [ %i0 + 8 ], %g2
                          
40008620:	80 a0 a0 00 	cmp  %g2, 0
                                   
40008624:	32 80 00 06 	bne,a   4000863c <_Futex_Wake+0x28>
           
40008628:	f2 27 bf fc 	st  %i1, [ %fp + -4 ]
                         
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000862c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40008630:	01 00 00 00 	nop 
                                          
    _Futex_Queue_release( futex, level, &context.Base );
             
    return 0;
                                                        
40008634:	81 c7 e0 08 	ret 
                                          
40008638:	91 e8 20 00 	restore  %g0, 0, %o0
                          
  }
                                                                  

                                                                     
  context.count = count;
                                             
  _Thread_queue_Context_set_ISR_level( &context.Base, level );
       
  return (int) _Thread_queue_Flush_critical(
                         
4000863c:	96 07 bf d8 	add  %fp, -40, %o3
                            
40008640:	c2 27 bf d8 	st  %g1, [ %fp + -40 ]
                        
40008644:	90 06 20 08 	add  %i0, 8, %o0
                              
40008648:	15 10 00 21 	sethi  %hi(0x40008400), %o2
                   
4000864c:	13 10 00 49 	sethi  %hi(0x40012400), %o1
                   
40008650:	94 12 a1 90 	or  %o2, 0x190, %o2
                           
40008654:	40 00 11 1e 	call  4000cacc <_Thread_queue_Flush_critical>
 
40008658:	92 12 63 10 	or  %o1, 0x310, %o1
                           
    &futex->Queue.Queue,
                                             
    FUTEX_TQ_OPERATIONS,
                                             
    _Futex_Flush_filter,
                                             
    &context.Base
                                                    
  );
                                                                 
}
                                                                    
4000865c:	81 c7 e0 08 	ret 
                                          
40008660:	91 e8 00 08 	restore  %g0, %o0, %o0
                        

                                                                     

40007208 <_Heap_Allocate_aligned_with_boundary>: Heap_Control *heap, uintptr_t alloc_size, uintptr_t alignment, uintptr_t boundary ) {
40007208:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
4000720c:	88 06 60 04 	add  %i1, 4, %g4
                              
  Heap_Block *block = NULL;
                                          
  uintptr_t alloc_begin = 0;
                                         
  uint32_t search_count = 0;
                                         
  bool search_again = false;
                                         

                                                                     
  if ( block_size_floor < alloc_size ) {
                             
40007210:	80 a6 7f fc 	cmp  %i1, -4
                                  
40007214:	1a 80 00 8a 	bcc  4000743c <_Heap_Allocate_aligned_with_boundary+0x234>
<== NEVER TAKEN
40007218:	da 06 20 10 	ld  [ %i0 + 0x10 ], %o5
                       
    /* Integer overflow occured */
                                   
    return NULL;
                                                     
  }
                                                                  

                                                                     
  if ( boundary != 0 ) {
                                             
4000721c:	80 a6 e0 00 	cmp  %i3, 0
                                   
40007220:	12 80 00 81 	bne  40007424 <_Heap_Allocate_aligned_with_boundary+0x21c>

40007224:	80 a6 40 1b 	cmp  %i1, %i3
                                 
  return &heap->free_list;
                                           
}
                                                                    

                                                                     
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )

{
                                                                    
  return _Heap_Free_list_head(heap)->next;
                           
40007228:	d2 06 20 08 	ld  [ %i0 + 8 ], %o1
                          

                                                                     
  do {
                                                               
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
 

                                                                     
    block = _Heap_Free_list_first( heap );
                           
    while ( block != free_list_tail ) {
                              
4000722c:	80 a6 00 09 	cmp  %i0, %o1
                                 
40007230:	02 80 00 78 	be  40007410 <_Heap_Allocate_aligned_with_boundary+0x208>

40007234:	ba 10 20 00 	clr  %i5
                                      
  uintptr_t alloc_begin = alloc_end - alloc_size;
                    
40007238:	9e 10 20 04 	mov  4, %o7
                                   
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size
   
4000723c:	96 03 60 07 	add  %o5, 7, %o3
                              
  uintptr_t alloc_begin = alloc_end - alloc_size;
                    
40007240:	9e 23 c0 19 	sub  %o7, %i1, %o7
                            
    uintptr_t const free_size = alloc_block_begin - block_begin;
     
40007244:	10 80 00 09 	b  40007268 <_Heap_Allocate_aligned_with_boundary+0x60>

40007248:	94 10 3f f8 	mov  -8, %o2
                                  
      }
                                                              

                                                                     
      /* Statistics */
                                               
      ++search_count;
                                                

                                                                     
      if ( alloc_begin != 0 ) {
                                      
4000724c:	80 a7 20 00 	cmp  %i4, 0
                                   
40007250:	32 80 00 5b 	bne,a   400073bc <_Heap_Allocate_aligned_with_boundary+0x1b4>
<== ALWAYS TAKEN
40007254:	96 10 00 19 	mov  %i1, %o3
                                 
        break;
                                                       
      }
                                                              

                                                                     
      block = block->next;
                                           
40007258:	d2 02 60 08 	ld  [ %o1 + 8 ], %o1
                          
    while ( block != free_list_tail ) {
                              
4000725c:	80 a6 00 09 	cmp  %i0, %o1
                                 
40007260:	22 80 00 6d 	be,a   40007414 <_Heap_Allocate_aligned_with_boundary+0x20c>

40007264:	c2 06 20 5c 	ld  [ %i0 + 0x5c ], %g1
                       
      if ( block->size_and_flag > block_size_floor ) {
               
40007268:	c2 02 60 04 	ld  [ %o1 + 4 ], %g1
                          
4000726c:	80 a0 40 04 	cmp  %g1, %g4
                                 
40007270:	08 bf ff fa 	bleu  40007258 <_Heap_Allocate_aligned_with_boundary+0x50>

40007274:	ba 07 60 01 	inc  %i5
                                      
        if ( alignment == 0 ) {
                                      
40007278:	80 a6 a0 00 	cmp  %i2, 0
                                   
4000727c:	02 bf ff f4 	be  4000724c <_Heap_Allocate_aligned_with_boundary+0x44>

40007280:	b8 02 60 08 	add  %o1, 8, %i4
                              
40007284:	d8 06 20 14 	ld  [ %i0 + 0x14 ], %o4
                       
    - 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;
               
40007288:	82 08 7f fe 	and  %g1, -2, %g1
                             
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size
   
4000728c:	86 22 c0 0c 	sub  %o3, %o4, %g3
                            
  uintptr_t const block_end = block_begin + block_size;
              
40007290:	82 00 40 09 	add  %g1, %o1, %g1
                            
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size
   
40007294:	86 00 c0 01 	add  %g3, %g1, %g3
                            
  uintptr_t alloc_begin = alloc_end - alloc_size;
                    
40007298:	82 03 c0 01 	add  %o7, %g1, %g1
                            
  return value - (value % alignment);
                                
4000729c:	81 80 20 00 	wr  %g0, %y
                                   
400072a0:	01 00 00 00 	nop 
                                          
400072a4:	01 00 00 00 	nop 
                                          
400072a8:	01 00 00 00 	nop 
                                          
400072ac:	84 70 40 1a 	udiv  %g1, %i2, %g2
                           
400072b0:	84 58 80 1a 	smul  %g2, %i2, %g2
                           
  if ( alloc_begin > alloc_begin_ceiling ) {
                         
400072b4:	80 a0 c0 02 	cmp  %g3, %g2
                                 
400072b8:	1a 80 00 08 	bcc  400072d8 <_Heap_Allocate_aligned_with_boundary+0xd0>

400072bc:	80 a6 e0 00 	cmp  %i3, 0
                                   
400072c0:	81 80 20 00 	wr  %g0, %y
                                   
400072c4:	01 00 00 00 	nop 
                                          
400072c8:	01 00 00 00 	nop 
                                          
400072cc:	01 00 00 00 	nop 
                                          
400072d0:	84 70 c0 1a 	udiv  %g3, %i2, %g2
                           
400072d4:	84 58 80 1a 	smul  %g2, %i2, %g2
                           
  if ( boundary != 0 ) {
                                             
400072d8:	02 80 00 26 	be  40007370 <_Heap_Allocate_aligned_with_boundary+0x168>

400072dc:	80 a7 00 02 	cmp  %i4, %g2
                                 
  alloc_end = alloc_begin + alloc_size;
                              
400072e0:	86 06 40 02 	add  %i1, %g2, %g3
                            
400072e4:	81 80 20 00 	wr  %g0, %y
                                   
400072e8:	01 00 00 00 	nop 
                                          
400072ec:	01 00 00 00 	nop 
                                          
400072f0:	01 00 00 00 	nop 
                                          
400072f4:	82 70 c0 1b 	udiv  %g3, %i3, %g1
                           
400072f8:	82 58 40 1b 	smul  %g1, %i3, %g1
                           
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {

400072fc:	80 a0 40 03 	cmp  %g1, %g3
                                 
40007300:	1a 80 00 1b 	bcc  4000736c <_Heap_Allocate_aligned_with_boundary+0x164>

40007304:	90 06 40 1c 	add  %i1, %i4, %o0
                            
40007308:	80 a0 80 01 	cmp  %g2, %g1
                                 
4000730c:	2a 80 00 06 	bcs,a   40007324 <_Heap_Allocate_aligned_with_boundary+0x11c>

40007310:	80 a2 00 01 	cmp  %o0, %g1
                                 
  if ( alloc_begin >= alloc_begin_floor ) {
                          
40007314:	10 80 00 17 	b  40007370 <_Heap_Allocate_aligned_with_boundary+0x168>

40007318:	80 a7 00 02 	cmp  %i4, %g2
                                 
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {

4000731c:	1a 80 00 14 	bcc  4000736c <_Heap_Allocate_aligned_with_boundary+0x164>

40007320:	80 a2 00 01 	cmp  %o0, %g1
                                 
      if ( boundary_line < boundary_floor ) {
                        
40007324:	18 bf ff cd 	bgu  40007258 <_Heap_Allocate_aligned_with_boundary+0x50>

40007328:	82 20 40 19 	sub  %g1, %i1, %g1
                            
4000732c:	81 80 20 00 	wr  %g0, %y
                                   
40007330:	01 00 00 00 	nop 
                                          
40007334:	01 00 00 00 	nop 
                                          
40007338:	01 00 00 00 	nop 
                                          
4000733c:	84 70 40 1a 	udiv  %g1, %i2, %g2
                           
40007340:	84 58 80 1a 	smul  %g2, %i2, %g2
                           
      alloc_end = alloc_begin + alloc_size;
                          
40007344:	86 06 40 02 	add  %i1, %g2, %g3
                            
40007348:	81 80 20 00 	wr  %g0, %y
                                   
4000734c:	01 00 00 00 	nop 
                                          
40007350:	01 00 00 00 	nop 
                                          
40007354:	01 00 00 00 	nop 
                                          
40007358:	82 70 c0 1b 	udiv  %g3, %i3, %g1
                           
4000735c:	82 58 40 1b 	smul  %g1, %i3, %g1
                           
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {

40007360:	80 a0 80 01 	cmp  %g2, %g1
                                 
40007364:	0a bf ff ee 	bcs  4000731c <_Heap_Allocate_aligned_with_boundary+0x114>

40007368:	80 a0 40 03 	cmp  %g1, %g3
                                 
  if ( alloc_begin >= alloc_begin_floor ) {
                          
4000736c:	80 a7 00 02 	cmp  %i4, %g2
                                 
40007370:	18 bf ff ba 	bgu  40007258 <_Heap_Allocate_aligned_with_boundary+0x50>

40007374:	82 22 80 09 	sub  %o2, %o1, %g1
                            
40007378:	81 80 20 00 	wr  %g0, %y
                                   
4000737c:	01 00 00 00 	nop 
                                          
40007380:	01 00 00 00 	nop 
                                          
40007384:	01 00 00 00 	nop 
                                          
40007388:	86 70 80 0d 	udiv  %g2, %o5, %g3
                           
4000738c:	86 58 c0 0d 	smul  %g3, %o5, %g3
                           
    uintptr_t const free_size = alloc_block_begin - block_begin;
     
40007390:	82 00 40 03 	add  %g1, %g3, %g1
                            
    if ( free_size >= min_block_size || free_size == 0 ) {
           
40007394:	80 a0 40 0c 	cmp  %g1, %o4
                                 
40007398:	1a 80 00 04 	bcc  400073a8 <_Heap_Allocate_aligned_with_boundary+0x1a0>

4000739c:	80 a0 60 00 	cmp  %g1, 0
                                   
400073a0:	32 bf ff af 	bne,a   4000725c <_Heap_Allocate_aligned_with_boundary+0x54>

400073a4:	d2 02 60 08 	ld  [ %o1 + 8 ], %o1
                          
400073a8:	b8 10 00 02 	mov  %g2, %i4
                                 
      if ( alloc_begin != 0 ) {
                                      
400073ac:	80 a7 20 00 	cmp  %i4, 0
                                   
400073b0:	22 bf ff ab 	be,a   4000725c <_Heap_Allocate_aligned_with_boundary+0x54>
<== NEVER TAKEN
400073b4:	d2 02 60 08 	ld  [ %o1 + 8 ], %o1
                          <== NOT EXECUTED

                                                                     
    search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );

  } while ( search_again );
                                          

                                                                     
  if ( alloc_begin != 0 ) {
                                          
    block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );

400073b8:	96 10 00 19 	mov  %i1, %o3
                                 
400073bc:	94 10 00 1c 	mov  %i4, %o2
                                 
400073c0:	40 00 00 d3 	call  4000770c <_Heap_Block_allocate>
         
400073c4:	90 10 00 18 	mov  %i0, %o0
                                 
      alignment,
                                                     
      boundary
                                                       
    );
                                                               

                                                                     
    /* Statistics */
                                                 
    ++stats->allocs;
                                                 
400073c8:	f6 06 20 58 	ld  [ %i0 + 0x58 ], %i3
                       
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
400073cc:	c8 02 20 04 	ld  [ %o0 + 4 ], %g4
                          
    stats->searches += search_count;
                                 
    stats->lifetime_allocated += _Heap_Block_size( block );
          
400073d0:	c4 1e 20 28 	ldd  [ %i0 + 0x28 ], %g2
                      
    stats->searches += search_count;
                                 
400073d4:	c2 06 20 54 	ld  [ %i0 + 0x54 ], %g1
                       
    ++stats->allocs;
                                                 
400073d8:	b6 06 e0 01 	inc  %i3
                                      
    stats->searches += search_count;
                                 
400073dc:	82 00 40 1d 	add  %g1, %i5, %g1
                            
400073e0:	88 09 3f fe 	and  %g4, -2, %g4
                             
    ++stats->allocs;
                                                 
400073e4:	f6 26 20 58 	st  %i3, [ %i0 + 0x58 ]
                       
    stats->lifetime_allocated += _Heap_Block_size( block );
          
400073e8:	b6 80 c0 04 	addcc  %g3, %g4, %i3
                          
    stats->searches += search_count;
                                 
400073ec:	c2 26 20 54 	st  %g1, [ %i0 + 0x54 ]
                       
    stats->lifetime_allocated += _Heap_Block_size( block );
          
400073f0:	b4 40 a0 00 	addx  %g2, 0, %i2
                             
400073f4:	f4 3e 20 28 	std  %i2, [ %i0 + 0x28 ]
                      
    /* Statistics */
                                                 
    ++stats->failed_allocs;
                                          
  }
                                                                  

                                                                     
  /* Statistics */
                                                   
  if ( stats->max_search < search_count ) {
                          
400073f8:	c2 06 20 50 	ld  [ %i0 + 0x50 ], %g1
                       
400073fc:	80 a0 40 1d 	cmp  %g1, %i5
                                 
40007400:	2a 80 00 02 	bcs,a   40007408 <_Heap_Allocate_aligned_with_boundary+0x200>

40007404:	fa 26 20 50 	st  %i5, [ %i0 + 0x50 ]
                       
    stats->max_search = search_count;
                                
  }
                                                                  

                                                                     
  return (void *) alloc_begin;
                                       
}
                                                                    
40007408:	81 c7 e0 08 	ret 
                                          
4000740c:	91 e8 00 1c 	restore  %g0, %i4, %o0
                        
    ++stats->failed_allocs;
                                          
40007410:	c2 06 20 5c 	ld  [ %i0 + 0x5c ], %g1
                       
40007414:	82 00 60 01 	inc  %g1
                                      
40007418:	b8 10 20 00 	clr  %i4
                                      
4000741c:	10 bf ff f7 	b  400073f8 <_Heap_Allocate_aligned_with_boundary+0x1f0>

40007420:	c2 26 20 5c 	st  %g1, [ %i0 + 0x5c ]
                       
    if ( boundary < alloc_size ) {
                                   
40007424:	18 80 00 06 	bgu  4000743c <_Heap_Allocate_aligned_with_boundary+0x234>

40007428:	80 a6 a0 00 	cmp  %i2, 0
                                   
    if ( alignment == 0 ) {
                                          
4000742c:	22 bf ff 7f 	be,a   40007228 <_Heap_Allocate_aligned_with_boundary+0x20>

40007430:	b4 10 00 0d 	mov  %o5, %i2
                                 
  return _Heap_Free_list_head(heap)->next;
                           
40007434:	10 bf ff 7e 	b  4000722c <_Heap_Allocate_aligned_with_boundary+0x24>

40007438:	d2 06 20 08 	ld  [ %i0 + 8 ], %o1
                          
    return NULL;
                                                     
4000743c:	b8 10 20 00 	clr  %i4
                                      
}
                                                                    
40007440:	81 c7 e0 08 	ret 
                                          
40007444:	91 e8 00 1c 	restore  %g0, %i4, %o0
                        

                                                                     

4000770c <_Heap_Block_allocate>: Heap_Control *heap, Heap_Block *block, uintptr_t alloc_begin, uintptr_t alloc_size ) {
4000770c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
40007710:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          <== NOT EXECUTED
40007714:	82 08 7f fe 	and  %g1, -2, %g1
                             <== NOT EXECUTED
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;
                
40007718:	84 06 40 01 	add  %i1, %g1, %g2
                            <== NOT EXECUTED
4000771c:	c4 00 a0 04 	ld  [ %g2 + 4 ], %g2
                          
40007720:	ba 10 00 18 	mov  %i0, %i5
                                 

                                                                     
  Heap_Block *free_list_anchor = NULL;
                               

                                                                     
  _HAssert( alloc_area_begin <= alloc_begin );
                       

                                                                     
  if ( _Heap_Is_free( block ) ) {
                                    
40007724:	80 88 a0 01 	btst  1, %g2
                                  
40007728:	b0 06 bf f8 	add  %i2, -8, %i0
                             
  return &heap->free_list;
                                           
4000772c:	94 10 00 1d 	mov  %i5, %o2
                                 
40007730:	12 80 00 0f 	bne  4000776c <_Heap_Block_allocate+0x60>
     <== NEVER TAKEN
40007734:	96 26 00 19 	sub  %i0, %i1, %o3
                            
40007738:	c4 06 60 08 	ld  [ %i1 + 8 ], %g2
                          
    free_list_anchor = block->prev;
                                  
4000773c:	d4 06 60 0c 	ld  [ %i1 + 0xc ], %o2
                        
  prev->next = next;
                                                 
40007740:	c4 22 a0 08 	st  %g2, [ %o2 + 8 ]
                          
  next->prev = prev;
                                                 
40007744:	d4 20 a0 0c 	st  %o2, [ %g2 + 0xc ]
                        

                                                                     
    _Heap_Free_list_remove( block );
                                 

                                                                     
    /* Statistics */
                                                 
    --stats->free_blocks;
                                            
40007748:	f8 07 60 44 	ld  [ %i5 + 0x44 ], %i4
                       
    ++stats->used_blocks;
                                            
4000774c:	c8 07 60 4c 	ld  [ %i5 + 0x4c ], %g4
                       
    stats->free_size -= _Heap_Block_size( block );
                   
40007750:	c4 07 60 3c 	ld  [ %i5 + 0x3c ], %g2
                       
    --stats->free_blocks;
                                            
40007754:	b8 07 3f ff 	add  %i4, -1, %i4
                             
    ++stats->used_blocks;
                                            
40007758:	88 01 20 01 	inc  %g4
                                      
    stats->free_size -= _Heap_Block_size( block );
                   
4000775c:	82 20 80 01 	sub  %g2, %g1, %g1
                            
    --stats->free_blocks;
                                            
40007760:	f8 27 60 44 	st  %i4, [ %i5 + 0x44 ]
                       
    ++stats->used_blocks;
                                            
40007764:	c8 27 60 4c 	st  %g4, [ %i5 + 0x4c ]
                       
    stats->free_size -= _Heap_Block_size( block );
                   
40007768:	c2 27 60 3c 	st  %g1, [ %i5 + 0x3c ]
                       
  } else {
                                                           
    free_list_anchor = _Heap_Free_list_head( heap );
                 
  }
                                                                  

                                                                     
  if ( alloc_area_offset < heap->page_size ) {
                       
4000776c:	c4 07 60 10 	ld  [ %i5 + 0x10 ], %g2
                       
40007770:	80 a0 80 0b 	cmp  %g2, %o3
                                 
40007774:	28 80 00 0e 	bleu,a   400077ac <_Heap_Block_allocate+0xa0>
 
40007778:	c6 07 60 3c 	ld  [ %i5 + 0x3c ], %g3
                       
  _Heap_Block_split( heap, block, free_list_anchor, alloc_size );
    
4000777c:	96 02 c0 1b 	add  %o3, %i3, %o3
                            
40007780:	92 10 00 19 	mov  %i1, %o1
                                 
40007784:	90 10 00 1d 	mov  %i5, %o0
                                 
40007788:	7f ff ff 30 	call  40007448 <_Heap_Block_split>
            
4000778c:	b0 10 00 19 	mov  %i1, %i0
                                 
      alloc_size
                                                     
    );
                                                               
  }
                                                                  

                                                                     
  /* Statistics */
                                                   
  if ( stats->min_free_size > stats->free_size ) {
                   
40007790:	c2 07 60 3c 	ld  [ %i5 + 0x3c ], %g1
                       
40007794:	c4 07 60 40 	ld  [ %i5 + 0x40 ], %g2
                       
40007798:	80 a0 80 01 	cmp  %g2, %g1
                                 
4000779c:	38 80 00 02 	bgu,a   400077a4 <_Heap_Block_allocate+0x98>
  
400077a0:	c2 27 60 40 	st  %g1, [ %i5 + 0x40 ]
                       
  }
                                                                  

                                                                     
  _Heap_Protection_block_initialize( heap, block );
                  

                                                                     
  return block;
                                                      
}
                                                                    
400077a4:	81 c7 e0 08 	ret 
                                          
400077a8:	81 e8 00 00 	restore 
                                      
  return value - (value % alignment);
                                
400077ac:	81 80 20 00 	wr  %g0, %y
                                   
400077b0:	01 00 00 00 	nop 
                                          
400077b4:	01 00 00 00 	nop 
                                          
400077b8:	01 00 00 00 	nop 
                                          
400077bc:	88 76 80 02 	udiv  %i2, %g2, %g4
                           
400077c0:	84 59 00 02 	smul  %g4, %g2, %g2
                           
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
400077c4:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          
  return value - (value % alignment);
                                
400077c8:	b4 26 80 02 	sub  %i2, %g2, %i2
                            
    - HEAP_BLOCK_HEADER_SIZE);
                                       
400077cc:	b0 26 00 1a 	sub  %i0, %i2, %i0
                            
  block_size = block_end - block_begin;
                              
400077d0:	84 26 00 19 	sub  %i0, %i1, %g2
                            
  stats->free_size += block_size;
                                    
400077d4:	86 00 c0 02 	add  %g3, %g2, %g3
                            
400077d8:	c6 27 60 3c 	st  %g3, [ %i5 + 0x3c ]
                       
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
400077dc:	82 08 7f fe 	and  %g1, -2, %g1
                             
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;
                
400077e0:	c6 06 60 04 	ld  [ %i1 + 4 ], %g3
                          
  uintptr_t block_end = block_begin + block_size;
                    
400077e4:	82 06 40 01 	add  %i1, %g1, %g1
                            
  if ( _Heap_Is_prev_used( block ) ) {
                               
400077e8:	80 88 e0 01 	btst  1, %g3
                                  
400077ec:	12 80 00 11 	bne  40007830 <_Heap_Block_allocate+0x124>
    
400077f0:	82 20 40 18 	sub  %g1, %i0, %g1
                            
  return (Heap_Block *) ((uintptr_t) block - block->prev_size);
      
400077f4:	c6 06 40 00 	ld  [ %i1 ], %g3
                              
400077f8:	b2 26 40 03 	sub  %i1, %g3, %i1
                            
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
400077fc:	c6 06 60 04 	ld  [ %i1 + 4 ], %g3
                          
40007800:	86 08 ff fe 	and  %g3, -2, %g3
                             
    block_size += prev_block_size;
                                   
40007804:	84 00 80 03 	add  %g2, %g3, %g2
                            
  block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
          
40007808:	86 10 a0 01 	or  %g2, 1, %g3
                               
4000780c:	c6 26 60 04 	st  %g3, [ %i1 + 4 ]
                          
  _Heap_Block_split( heap, new_block, free_list_anchor, alloc_size );

40007810:	96 10 00 1b 	mov  %i3, %o3
                                 
  new_block->prev_size = block_size;
                                 
40007814:	c4 26 00 00 	st  %g2, [ %i0 ]
                              
  _Heap_Block_split( heap, new_block, free_list_anchor, alloc_size );

40007818:	92 10 00 18 	mov  %i0, %o1
                                 
  new_block->size_and_flag = new_block_size;
                         
4000781c:	c2 26 20 04 	st  %g1, [ %i0 + 4 ]
                          
  _Heap_Block_split( heap, new_block, free_list_anchor, alloc_size );

40007820:	7f ff ff 0a 	call  40007448 <_Heap_Block_split>
            
40007824:	90 10 00 1d 	mov  %i5, %o0
                                 
  if ( stats->min_free_size > stats->free_size ) {
                   
40007828:	10 bf ff db 	b  40007794 <_Heap_Block_allocate+0x88>
       
4000782c:	c2 07 60 3c 	ld  [ %i5 + 0x3c ], %g1
                       
  Heap_Block *next = block_before->next;
                             
40007830:	c8 02 a0 08 	ld  [ %o2 + 8 ], %g4
                          
  new_block->next = next;
                                            
40007834:	c8 26 60 08 	st  %g4, [ %i1 + 8 ]
                          
  new_block->prev = block_before;
                                    
40007838:	d4 26 60 0c 	st  %o2, [ %i1 + 0xc ]
                        
  block_before->next = new_block;
                                    
4000783c:	f2 22 a0 08 	st  %i1, [ %o2 + 8 ]
                          
    ++stats->free_blocks;
                                            
40007840:	94 10 00 19 	mov  %i1, %o2
                                 
40007844:	c6 07 60 44 	ld  [ %i5 + 0x44 ], %g3
                       
  next->prev = new_block;
                                            
40007848:	f2 21 20 0c 	st  %i1, [ %g4 + 0xc ]
                        
4000784c:	86 00 e0 01 	inc  %g3
                                      
40007850:	10 bf ff ee 	b  40007808 <_Heap_Block_allocate+0xfc>
       
40007854:	c6 27 60 44 	st  %g3, [ %i5 + 0x44 ]
                       

                                                                     

4000d6bc <_Heap_Extend>: Heap_Control *heap, void *extend_area_begin_ptr, uintptr_t extend_area_size, uintptr_t unused RTEMS_UNUSED ) {
4000d6bc:	9d e3 bf 98 	save  %sp, -104, %sp
                          
  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;
                             
4000d6c0:	c0 27 bf f8 	clr  [ %fp + -8 ]
                             
{
                                                                    
4000d6c4:	ba 10 00 18 	mov  %i0, %i5
                                 
  Heap_Block *extend_last_block = NULL;
                              
4000d6c8:	c0 27 bf fc 	clr  [ %fp + -4 ]
                             
4000d6cc:	b6 86 40 1a 	addcc  %i1, %i2, %i3
                          
  Heap_Block *const first_block = heap->first_block;
                 
4000d6d0:	0a 80 00 83 	bcs  4000d8dc <_Heap_Extend+0x220>
            
4000d6d4:	e0 06 20 20 	ld  [ %i0 + 0x20 ], %l0
                       
  uintptr_t const page_size = heap->page_size;
                       
4000d6d8:	f8 06 20 10 	ld  [ %i0 + 0x10 ], %i4
                       

                                                                     
  if ( extend_area_end < extend_area_begin ) {
                       
    return 0;
                                                        
  }
                                                                  

                                                                     
  extend_area_ok = _Heap_Get_first_and_last_block(
                   
4000d6dc:	d6 06 20 14 	ld  [ %i0 + 0x14 ], %o3
                       
4000d6e0:	9a 07 bf fc 	add  %fp, -4, %o5
                             
  uintptr_t const free_size = stats->free_size;
                      
4000d6e4:	f0 06 20 3c 	ld  [ %i0 + 0x3c ], %i0
                       
  extend_area_ok = _Heap_Get_first_and_last_block(
                   
4000d6e8:	98 07 bf f8 	add  %fp, -8, %o4
                             
4000d6ec:	94 10 00 1c 	mov  %i4, %o2
                                 
4000d6f0:	92 10 00 1a 	mov  %i2, %o1
                                 
4000d6f4:	7f ff e5 e1 	call  40006e78 <_Heap_Get_first_and_last_block>

4000d6f8:	90 10 00 19 	mov  %i1, %o0
                                 
    page_size,
                                                       
    min_block_size,
                                                  
    &extend_first_block,
                                             
    &extend_last_block
                                               
  );
                                                                 
  if (!extend_area_ok ) {
                                            
4000d6fc:	80 a2 20 00 	cmp  %o0, 0
                                   
4000d700:	02 80 00 77 	be  4000d8dc <_Heap_Extend+0x220>
             
4000d704:	82 10 00 10 	mov  %l0, %g1
                                 
  Heap_Block *link_above_block = NULL;
                               
4000d708:	a4 10 20 00 	clr  %l2
                                      
  Heap_Block *link_below_block = NULL;
                               
4000d70c:	9e 10 20 00 	clr  %o7
                                      
  Heap_Block *merge_above_block = NULL;
                              
4000d710:	b4 10 20 00 	clr  %i2
                                      
  Heap_Block *merge_below_block = NULL;
                              
4000d714:	a2 10 20 00 	clr  %l1
                                      
    return 0;
                                                        
  }
                                                                  

                                                                     
  do {
                                                               
    uintptr_t const sub_area_begin = (start_block != first_block) ?
  
      (uintptr_t) start_block : heap->area_begin;
                    
4000d718:	80 a0 40 10 	cmp  %g1, %l0
                                 
4000d71c:	02 80 00 7f 	be  4000d918 <_Heap_Extend+0x25c>
             
4000d720:	88 10 00 01 	mov  %g1, %g4
                                 
    uintptr_t const sub_area_end = start_block->prev_size;
           
4000d724:	c6 00 40 00 	ld  [ %g1 ], %g3
                              
  return value - (value % alignment);
                                
4000d728:	81 80 20 00 	wr  %g0, %y
                                   
4000d72c:	01 00 00 00 	nop 
                                          
4000d730:	01 00 00 00 	nop 
                                          
4000d734:	01 00 00 00 	nop 
                                          
4000d738:	84 70 c0 1c 	udiv  %g3, %i4, %g2
                           
    Heap_Block *const end_block =
                                    
      _Heap_Block_of_alloc_area( sub_area_end, page_size );
          

                                                                     
    if (
                                                             
4000d73c:	80 a6 40 03 	cmp  %i1, %g3
                                 
4000d740:	84 58 80 1c 	smul  %g2, %i4, %g2
                           
4000d744:	1a 80 00 05 	bcc  4000d758 <_Heap_Extend+0x9c>
             
4000d748:	84 00 bf f8 	add  %g2, -8, %g2
                             
4000d74c:	80 a1 00 1b 	cmp  %g4, %i3
                                 
4000d750:	0a 80 00 63 	bcs  4000d8dc <_Heap_Extend+0x220>
            
4000d754:	01 00 00 00 	nop 
                                          
      sub_area_end > extend_area_begin && extend_area_end > sub_area_begin

    ) {
                                                              
      return 0;
                                                      
    }
                                                                

                                                                     
    if ( extend_area_end == sub_area_begin ) {
                       
4000d758:	80 a1 00 1b 	cmp  %g4, %i3
                                 
4000d75c:	02 80 00 6d 	be  4000d910 <_Heap_Extend+0x254>
             
4000d760:	80 a6 c0 03 	cmp  %i3, %g3
                                 
      merge_below_block = start_block;
                               
    } else if ( extend_area_end < sub_area_end ) {
                   
4000d764:	0a 80 00 60 	bcs  4000d8e4 <_Heap_Extend+0x228>
            
4000d768:	80 a6 40 03 	cmp  %i1, %g3
                                 
      link_below_block = start_block;
                                
    }
                                                                

                                                                     
    if ( sub_area_end == extend_area_begin ) {
                       
4000d76c:	80 a6 40 03 	cmp  %i1, %g3
                                 
4000d770:	22 80 00 60 	be,a   4000d8f0 <_Heap_Extend+0x234>
          
4000d774:	f6 20 40 00 	st  %i3, [ %g1 ]
                              
      start_block->prev_size = extend_area_end;
                      

                                                                     
      merge_above_block = end_block;
                                 
    } else if ( sub_area_end < extend_area_begin ) {
                 
4000d778:	38 80 00 02 	bgu,a   4000d780 <_Heap_Extend+0xc4>
          
4000d77c:	a4 10 00 02 	mov  %g2, %l2
                                 
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
4000d780:	c2 00 a0 04 	ld  [ %g2 + 4 ], %g1
                          
4000d784:	82 08 7f fe 	and  %g1, -2, %g1
                             
  return (Heap_Block *) ((uintptr_t) block + offset);
                
4000d788:	82 00 40 02 	add  %g1, %g2, %g1
                            
      link_above_block = end_block;
                                  
    }
                                                                

                                                                     
    start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );

  } while ( start_block != first_block );
                            
4000d78c:	80 a4 00 01 	cmp  %l0, %g1
                                 
4000d790:	12 bf ff e3 	bne  4000d71c <_Heap_Extend+0x60>
             
4000d794:	80 a0 40 10 	cmp  %g1, %l0
                                 

                                                                     
  if ( extend_area_begin < heap->area_begin ) {
                      
4000d798:	c2 07 60 18 	ld  [ %i5 + 0x18 ], %g1
                       
4000d79c:	80 a0 40 19 	cmp  %g1, %i1
                                 
4000d7a0:	38 80 00 06 	bgu,a   4000d7b8 <_Heap_Extend+0xfc>
          
4000d7a4:	f2 27 60 18 	st  %i1, [ %i5 + 0x18 ]
                       
    heap->area_begin = extend_area_begin;
                            
  } else if ( heap->area_end < extend_area_end ) {
                   
4000d7a8:	c2 07 60 1c 	ld  [ %i5 + 0x1c ], %g1
                       
4000d7ac:	80 a0 40 1b 	cmp  %g1, %i3
                                 
4000d7b0:	2a 80 00 02 	bcs,a   4000d7b8 <_Heap_Extend+0xfc>
          
4000d7b4:	f6 27 60 1c 	st  %i3, [ %i5 + 0x1c ]
                       
    heap->area_end = extend_area_end;
                                
  }
                                                                  

                                                                     
  extend_first_block_size =
                                          
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
  
4000d7b8:	c2 07 bf f8 	ld  [ %fp + -8 ], %g1
                         
4000d7bc:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         
  extend_first_block_size =
                                          
4000d7c0:	86 20 80 01 	sub  %g2, %g1, %g3
                            

                                                                     
  extend_first_block->prev_size = extend_area_end;
                   
4000d7c4:	f6 20 40 00 	st  %i3, [ %g1 ]
                              
  extend_first_block->size_and_flag =
                                
    extend_first_block_size | HEAP_PREV_BLOCK_USED;
                  
4000d7c8:	88 10 e0 01 	or  %g3, 1, %g4
                               
  extend_first_block->size_and_flag =
                                
4000d7cc:	c8 20 60 04 	st  %g4, [ %g1 + 4 ]
                          
  _Heap_Protection_block_initialize( heap, extend_first_block );
     

                                                                     
  extend_last_block->prev_size = extend_first_block_size;
            
4000d7d0:	c6 20 80 00 	st  %g3, [ %g2 ]
                              
  extend_last_block->size_and_flag = 0;
                              
4000d7d4:	c0 20 a0 04 	clr  [ %g2 + 4 ]
                              
  _Heap_Protection_block_initialize( heap, extend_last_block );
      

                                                                     
  if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {

4000d7d8:	c6 07 60 20 	ld  [ %i5 + 0x20 ], %g3
                       
4000d7dc:	80 a0 c0 01 	cmp  %g3, %g1
                                 
4000d7e0:	28 80 00 50 	bleu,a   4000d920 <_Heap_Extend+0x264>
        
4000d7e4:	c2 07 60 24 	ld  [ %i5 + 0x24 ], %g1
                       
    heap->first_block = extend_first_block;
                          
4000d7e8:	c2 27 60 20 	st  %g1, [ %i5 + 0x20 ]
                       
  } else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {

    heap->last_block = extend_last_block;
                            
  }
                                                                  

                                                                     
  if ( merge_below_block != NULL ) {
                                 
4000d7ec:	80 a4 60 00 	cmp  %l1, 0
                                   
4000d7f0:	02 80 00 51 	be  4000d934 <_Heap_Extend+0x278>
             
4000d7f4:	b2 06 60 08 	add  %i1, 8, %i1
                              
  uintptr_t const page_size = heap->page_size;
                       
4000d7f8:	c4 07 60 10 	ld  [ %i5 + 0x10 ], %g2
                       
  uintptr_t remainder = value % alignment;
                           
4000d7fc:	81 80 20 00 	wr  %g0, %y
                                   
4000d800:	01 00 00 00 	nop 
                                          
4000d804:	01 00 00 00 	nop 
                                          
4000d808:	01 00 00 00 	nop 
                                          
4000d80c:	82 76 40 02 	udiv  %i1, %g2, %g1
                           
4000d810:	82 58 40 02 	smul  %g1, %g2, %g1
                           
  if ( remainder != 0 ) {
                                            
4000d814:	82 a6 40 01 	subcc  %i1, %g1, %g1
                          
4000d818:	22 80 00 05 	be,a   4000d82c <_Heap_Extend+0x170>
          
4000d81c:	c2 04 40 00 	ld  [ %l1 ], %g1
                              
    return value - remainder + alignment;
                            
4000d820:	b2 00 80 19 	add  %g2, %i1, %i1
                            
4000d824:	b2 26 40 01 	sub  %i1, %g1, %i1
                            
  new_first_block->prev_size = first_block->prev_size;
               
4000d828:	c2 04 40 00 	ld  [ %l1 ], %g1
                              
4000d82c:	c2 26 7f f8 	st  %g1, [ %i1 + -8 ]
                         
  uintptr_t const new_first_block_begin =
                            
4000d830:	92 06 7f f8 	add  %i1, -8, %o1
                             
  uintptr_t const new_first_block_size =
                             
4000d834:	82 24 40 09 	sub  %l1, %o1, %g1
                            
  new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;

4000d838:	82 10 60 01 	or  %g1, 1, %g1
                               
4000d83c:	c2 22 60 04 	st  %g1, [ %o1 + 4 ]
                          
  _Heap_Free_block( heap, new_first_block );
                         
4000d840:	7f ff ff 89 	call  4000d664 <_Heap_Free_block>
             
4000d844:	90 10 00 1d 	mov  %i5, %o0
                                 
      link_below_block,
                                              
      extend_last_block
                                              
    );
                                                               
  }
                                                                  

                                                                     
  if ( merge_above_block != NULL ) {
                                 
4000d848:	80 a6 a0 00 	cmp  %i2, 0
                                   
4000d84c:	02 80 00 40 	be  4000d94c <_Heap_Extend+0x290>
             
4000d850:	b6 06 ff f8 	add  %i3, -8, %i3
                             
  return value - (value % alignment);
                                
4000d854:	c4 07 60 10 	ld  [ %i5 + 0x10 ], %g2
                       
    (last_block->size_and_flag - last_block_new_size)
                
4000d858:	c6 06 a0 04 	ld  [ %i2 + 4 ], %g3
                          
  uintptr_t const last_block_new_size = _Heap_Align_down(
            
4000d85c:	b6 26 c0 1a 	sub  %i3, %i2, %i3
                            
4000d860:	81 80 20 00 	wr  %g0, %y
                                   
4000d864:	01 00 00 00 	nop 
                                          
4000d868:	01 00 00 00 	nop 
                                          
4000d86c:	01 00 00 00 	nop 
                                          
4000d870:	82 76 c0 02 	udiv  %i3, %g2, %g1
                           
4000d874:	84 58 40 02 	smul  %g1, %g2, %g2
                           
  new_last_block->size_and_flag =
                                    
4000d878:	88 06 80 02 	add  %i2, %g2, %g4
                            
    (last_block->size_and_flag - last_block_new_size)
                
4000d87c:	82 20 c0 02 	sub  %g3, %g2, %g1
                            
      | HEAP_PREV_BLOCK_USED;
                                        
4000d880:	82 10 60 01 	or  %g1, 1, %g1
                               
  new_last_block->size_and_flag =
                                    
4000d884:	c2 21 20 04 	st  %g1, [ %g4 + 4 ]
                          
  _Heap_Free_block( heap, last_block );
                              
4000d888:	92 10 00 1a 	mov  %i2, %o1
                                 
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
      
4000d88c:	c2 06 a0 04 	ld  [ %i2 + 4 ], %g1
                          
4000d890:	82 08 60 01 	and  %g1, 1, %g1
                              
  block->size_and_flag = size | flag;
                                
4000d894:	82 10 40 02 	or  %g1, %g2, %g1
                             
4000d898:	c2 26 a0 04 	st  %g1, [ %i2 + 4 ]
                          
4000d89c:	7f ff ff 72 	call  4000d664 <_Heap_Free_block>
             
4000d8a0:	90 10 00 1d 	mov  %i5, %o0
                                 
4000d8a4:	c4 07 60 24 	ld  [ %i5 + 0x24 ], %g2
                       
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
      
4000d8a8:	c6 00 a0 04 	ld  [ %g2 + 4 ], %g3
                          
  _Heap_Block_set_size(
                                              
4000d8ac:	c2 07 60 20 	ld  [ %i5 + 0x20 ], %g1
                       
4000d8b0:	82 20 40 02 	sub  %g1, %g2, %g1
                            
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
      
4000d8b4:	86 08 e0 01 	and  %g3, 1, %g3
                              
  block->size_and_flag = size | flag;
                                
4000d8b8:	82 10 40 03 	or  %g1, %g3, %g1
                             
4000d8bc:	c2 20 a0 04 	st  %g1, [ %g2 + 4 ]
                          
  _Heap_Set_last_block_size( heap );
                                 

                                                                     
  extended_size = stats->free_size - free_size;
                      

                                                                     
  /* Statistics */
                                                   
  stats->size += extended_size;
                                      
4000d8c0:	c4 07 60 38 	ld  [ %i5 + 0x38 ], %g2
                       
  extended_size = stats->free_size - free_size;
                      
4000d8c4:	c2 07 60 3c 	ld  [ %i5 + 0x3c ], %g1
                       
4000d8c8:	b0 20 40 18 	sub  %g1, %i0, %i0
                            
  stats->size += extended_size;
                                      
4000d8cc:	82 00 80 18 	add  %g2, %i0, %g1
                            
4000d8d0:	c2 27 60 38 	st  %g1, [ %i5 + 0x38 ]
                       

                                                                     
  return extended_size;
                                              
}
                                                                    
4000d8d4:	81 c7 e0 08 	ret 
                                          
4000d8d8:	81 e8 00 00 	restore 
                                      
    return 0;
                                                        
4000d8dc:	81 c7 e0 08 	ret 
                                          
4000d8e0:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    if ( sub_area_end == extend_area_begin ) {
                       
4000d8e4:	12 bf ff a5 	bne  4000d778 <_Heap_Extend+0xbc>
             <== ALWAYS TAKEN
4000d8e8:	9e 10 00 01 	mov  %g1, %o7
                                 
      start_block->prev_size = extend_area_end;
                      
4000d8ec:	f6 20 40 00 	st  %i3, [ %g1 ]
                              <== NOT EXECUTED
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
4000d8f0:	c2 00 a0 04 	ld  [ %g2 + 4 ], %g1
                          
4000d8f4:	82 08 7f fe 	and  %g1, -2, %g1
                             
  return (Heap_Block *) ((uintptr_t) block + offset);
                
4000d8f8:	82 00 40 02 	add  %g1, %g2, %g1
                            
  } while ( start_block != first_block );
                            
4000d8fc:	80 a4 00 01 	cmp  %l0, %g1
                                 
4000d900:	12 bf ff 86 	bne  4000d718 <_Heap_Extend+0x5c>
             <== NEVER TAKEN
4000d904:	b4 10 00 02 	mov  %g2, %i2
                                 
  if ( extend_area_begin < heap->area_begin ) {
                      
4000d908:	10 bf ff a5 	b  4000d79c <_Heap_Extend+0xe0>
               
4000d90c:	c2 07 60 18 	ld  [ %i5 + 0x18 ], %g1
                       
4000d910:	10 bf ff 97 	b  4000d76c <_Heap_Extend+0xb0>
               
4000d914:	a2 10 00 01 	mov  %g1, %l1
                                 
4000d918:	10 bf ff 83 	b  4000d724 <_Heap_Extend+0x68>
               
4000d91c:	c8 07 60 18 	ld  [ %i5 + 0x18 ], %g4
                       
  } else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {

4000d920:	80 a0 40 02 	cmp  %g1, %g2
                                 
4000d924:	2a bf ff b2 	bcs,a   4000d7ec <_Heap_Extend+0x130>
         
4000d928:	c4 27 60 24 	st  %g2, [ %i5 + 0x24 ]
                       
  if ( merge_below_block != NULL ) {
                                 
4000d92c:	10 bf ff b1 	b  4000d7f0 <_Heap_Extend+0x134>
              
4000d930:	80 a4 60 00 	cmp  %l1, 0
                                   
  } else if ( link_below_block != NULL ) {
                           
4000d934:	80 a3 e0 00 	cmp  %o7, 0
                                   
4000d938:	02 bf ff c4 	be  4000d848 <_Heap_Extend+0x18c>
             
4000d93c:	9e 23 c0 02 	sub  %o7, %g2, %o7
                            
    (link_begin - last_block_begin) | HEAP_PREV_BLOCK_USED;
          
4000d940:	9e 13 e0 01 	or  %o7, 1, %o7
                               
  last_block->size_and_flag =
                                        
4000d944:	10 bf ff c1 	b  4000d848 <_Heap_Extend+0x18c>
              
4000d948:	de 20 a0 04 	st  %o7, [ %g2 + 4 ]
                          
  } else if ( link_above_block != NULL ) {
                           
4000d94c:	80 a4 a0 00 	cmp  %l2, 0
                                   
4000d950:	02 80 00 0b 	be  4000d97c <_Heap_Extend+0x2c0>
             
4000d954:	c2 07 bf f8 	ld  [ %fp + -8 ], %g1
                         
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
      
4000d958:	c4 04 a0 04 	ld  [ %l2 + 4 ], %g2
                          
4000d95c:	84 08 a0 01 	and  %g2, 1, %g2
                              
  _Heap_Block_set_size( link, first_block_begin - link_begin );
      
4000d960:	82 20 40 12 	sub  %g1, %l2, %g1
                            
  block->size_and_flag = size | flag;
                                
4000d964:	82 10 40 02 	or  %g1, %g2, %g1
                             
4000d968:	c2 24 a0 04 	st  %g1, [ %l2 + 4 ]
                          
    _Heap_Link_above(
                                                
4000d96c:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         
  last_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
                 
4000d970:	c2 00 a0 04 	ld  [ %g2 + 4 ], %g1
                          
4000d974:	82 10 60 01 	or  %g1, 1, %g1
                               
4000d978:	c2 20 a0 04 	st  %g1, [ %g2 + 4 ]
                          
  if ( merge_below_block == NULL && merge_above_block == NULL ) {
    
4000d97c:	80 a4 60 00 	cmp  %l1, 0
                                   
4000d980:	12 bf ff c9 	bne  4000d8a4 <_Heap_Extend+0x1e8>
            
4000d984:	d2 07 bf f8 	ld  [ %fp + -8 ], %o1
                         
    _Heap_Free_block( heap, extend_first_block );
                    
4000d988:	7f ff ff 37 	call  4000d664 <_Heap_Free_block>
             
4000d98c:	90 10 00 1d 	mov  %i5, %o0
                                 
4000d990:	10 bf ff c6 	b  4000d8a8 <_Heap_Extend+0x1ec>
              
4000d994:	c4 07 60 24 	ld  [ %i5 + 0x24 ], %g2
                       

                                                                     

4000dcdc <_Heap_Free>: return do_free; } #endif bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr ) {
4000dcdc:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  /*
                                                                 
   * If NULL return true so a free on NULL is considered a valid release. This

   * is a special case that could be handled by the in heap check how-ever that

   * would result in false being returned which is wrong.
            
   */
                                                                
  if ( alloc_begin_ptr == NULL ) {
                                   
4000dce0:	80 a6 60 00 	cmp  %i1, 0
                                   
4000dce4:	02 80 00 41 	be  4000dde8 <_Heap_Free+0x10c>
               
4000dce8:	84 10 20 01 	mov  1, %g2
                                   
  return value - (value % alignment);
                                
4000dcec:	c8 06 20 10 	ld  [ %i0 + 0x10 ], %g4
                       
  return (uintptr_t) block >= (uintptr_t) heap->first_block
          
4000dcf0:	c6 06 20 20 	ld  [ %i0 + 0x20 ], %g3
                       
  return value - (value % alignment);
                                
4000dcf4:	81 80 20 00 	wr  %g0, %y
                                   
4000dcf8:	01 00 00 00 	nop 
                                          
4000dcfc:	01 00 00 00 	nop 
                                          
4000dd00:	01 00 00 00 	nop 
                                          
4000dd04:	82 76 40 04 	udiv  %i1, %g4, %g1
                           
4000dd08:	82 58 40 04 	smul  %g1, %g4, %g1
                           
    - HEAP_BLOCK_HEADER_SIZE);
                                       
4000dd0c:	82 00 7f f8 	add  %g1, -8, %g1
                             
    && (uintptr_t) block <= (uintptr_t) heap->last_block;
            
4000dd10:	80 a0 40 03 	cmp  %g1, %g3
                                 
4000dd14:	0a 80 00 35 	bcs  4000dde8 <_Heap_Free+0x10c>
              
4000dd18:	84 10 20 00 	clr  %g2
                                      
4000dd1c:	f6 06 20 24 	ld  [ %i0 + 0x24 ], %i3
                       
4000dd20:	80 a0 40 1b 	cmp  %g1, %i3
                                 
4000dd24:	38 80 00 32 	bgu,a   4000ddec <_Heap_Free+0x110>
           
4000dd28:	b0 08 a0 ff 	and  %g2, 0xff, %i0
                           
4000dd2c:	fa 00 60 04 	ld  [ %g1 + 4 ], %i5
                          
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
4000dd30:	b8 0f 7f fe 	and  %i5, -2, %i4
                             
  return (Heap_Block *) ((uintptr_t) block + offset);
                
4000dd34:	88 00 40 1c 	add  %g1, %i4, %g4
                            
    && (uintptr_t) block <= (uintptr_t) heap->last_block;
            
4000dd38:	80 a0 c0 04 	cmp  %g3, %g4
                                 
4000dd3c:	38 80 00 2c 	bgu,a   4000ddec <_Heap_Free+0x110>
           <== NEVER TAKEN
4000dd40:	b0 08 a0 ff 	and  %g2, 0xff, %i0
                           <== NOT EXECUTED
4000dd44:	80 a6 c0 04 	cmp  %i3, %g4
                                 
4000dd48:	2a 80 00 29 	bcs,a   4000ddec <_Heap_Free+0x110>
           
4000dd4c:	b0 08 a0 ff 	and  %g2, 0xff, %i0
                           
4000dd50:	f4 01 20 04 	ld  [ %g4 + 4 ], %i2
                          
    return false;
                                                    
  }
                                                                  

                                                                     
  _Heap_Protection_block_check( heap, next_block );
                  

                                                                     
  if ( !_Heap_Is_prev_used( next_block ) ) {
                         
4000dd54:	80 8e a0 01 	btst  1, %i2
                                  
4000dd58:	02 80 00 24 	be  4000dde8 <_Heap_Free+0x10c>
               <== NEVER TAKEN
4000dd5c:	b4 0e bf fe 	and  %i2, -2, %i2
                             
    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 ));

4000dd60:	80 a6 c0 04 	cmp  %i3, %g4
                                 
4000dd64:	02 80 00 24 	be  4000ddf4 <_Heap_Free+0x118>
               
4000dd68:	ba 0f 60 01 	and  %i5, 1, %i5
                              
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;
                
4000dd6c:	84 01 00 1a 	add  %g4, %i2, %g2
                            
4000dd70:	c4 00 a0 04 	ld  [ %g2 + 4 ], %g2
                          
4000dd74:	80 88 a0 01 	btst  1, %g2
                                  
4000dd78:	12 80 00 20 	bne  4000ddf8 <_Heap_Free+0x11c>
              
4000dd7c:	80 a7 60 00 	cmp  %i5, 0
                                   

                                                                     
  if ( !_Heap_Is_prev_used( block ) ) {
                              
4000dd80:	02 80 00 20 	be  4000de00 <_Heap_Free+0x124>
               
4000dd84:	9e 10 20 01 	mov  1, %o7
                                   
4000dd88:	c6 01 20 08 	ld  [ %g4 + 8 ], %g3
                          
4000dd8c:	c4 01 20 0c 	ld  [ %g4 + 0xc ], %g2
                        
  new_block->prev = prev;
                                            
4000dd90:	c4 20 60 0c 	st  %g2, [ %g1 + 0xc ]
                        
      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;
             
4000dd94:	b4 07 00 1a 	add  %i4, %i2, %i2
                            
  new_block->next = next;
                                            
4000dd98:	c6 20 60 08 	st  %g3, [ %g1 + 8 ]
                          
    _Heap_Free_list_replace( next_block, block );
                    
    block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
              
4000dd9c:	88 16 a0 01 	or  %i2, 1, %g4
                               
  next->prev = new_block;
                                            
4000dda0:	c2 20 e0 0c 	st  %g1, [ %g3 + 0xc ]
                        
  prev->next = new_block;
                                            
4000dda4:	c2 20 a0 08 	st  %g1, [ %g2 + 8 ]
                          
4000dda8:	c8 20 60 04 	st  %g4, [ %g1 + 4 ]
                          
    next_block  = _Heap_Block_at( block, size );
                     
    next_block->prev_size = size;
                                    
4000ddac:	f4 20 40 1a 	st  %i2, [ %g1 + %i2 ]
                        
  --stats->used_blocks;
                                              
  ++stats->frees;
                                                    
  stats->free_size += block_size;
                                    
  stats->lifetime_freed += block_size;
                               

                                                                     
  return( true );
                                                    
4000ddb0:	84 10 20 01 	mov  1, %g2
                                   
  stats->lifetime_freed += block_size;
                               
4000ddb4:	f4 1e 20 30 	ldd  [ %i0 + 0x30 ], %i2
                      
  --stats->used_blocks;
                                              
4000ddb8:	c8 06 20 4c 	ld  [ %i0 + 0x4c ], %g4
                       
  ++stats->frees;
                                                    
4000ddbc:	c6 06 20 60 	ld  [ %i0 + 0x60 ], %g3
                       
  stats->free_size += block_size;
                                    
4000ddc0:	c2 06 20 3c 	ld  [ %i0 + 0x3c ], %g1
                       
  stats->lifetime_freed += block_size;
                               
4000ddc4:	9a 86 c0 1c 	addcc  %i3, %i4, %o5
                          
  --stats->used_blocks;
                                              
4000ddc8:	88 01 3f ff 	add  %g4, -1, %g4
                             
  ++stats->frees;
                                                    
4000ddcc:	86 00 e0 01 	inc  %g3
                                      
  stats->free_size += block_size;
                                    
4000ddd0:	82 00 40 1c 	add  %g1, %i4, %g1
                            
  stats->lifetime_freed += block_size;
                               
4000ddd4:	98 46 a0 00 	addx  %i2, 0, %o4
                             
  --stats->used_blocks;
                                              
4000ddd8:	c8 26 20 4c 	st  %g4, [ %i0 + 0x4c ]
                       
  ++stats->frees;
                                                    
4000dddc:	c6 26 20 60 	st  %g3, [ %i0 + 0x60 ]
                       
  stats->free_size += block_size;
                                    
4000dde0:	c2 26 20 3c 	st  %g1, [ %i0 + 0x3c ]
                       
  stats->lifetime_freed += block_size;
                               
4000dde4:	d8 3e 20 30 	std  %o4, [ %i0 + 0x30 ]
                      
4000dde8:	b0 08 a0 ff 	and  %g2, 0xff, %i0
                           
}
                                                                    
4000ddec:	81 c7 e0 08 	ret 
                                          
4000ddf0:	81 e8 00 00 	restore 
                                      
  if ( !_Heap_Is_prev_used( block ) ) {
                              
4000ddf4:	80 a7 60 00 	cmp  %i5, 0
                                   
4000ddf8:	12 80 00 1c 	bne  4000de68 <_Heap_Free+0x18c>
              
4000ddfc:	9e 10 20 00 	clr  %o7
                                      
    uintptr_t const prev_size = block->prev_size;
                    
4000de00:	f2 00 40 00 	ld  [ %g1 ], %i1
                              
4000de04:	ba 20 40 19 	sub  %g1, %i1, %i5
                            
    && (uintptr_t) block <= (uintptr_t) heap->last_block;
            
4000de08:	80 a7 40 03 	cmp  %i5, %g3
                                 
4000de0c:	0a bf ff f7 	bcs  4000dde8 <_Heap_Free+0x10c>
              <== NEVER TAKEN
4000de10:	84 10 20 00 	clr  %g2
                                      
4000de14:	80 a7 40 1b 	cmp  %i5, %i3
                                 
4000de18:	38 bf ff f5 	bgu,a   4000ddec <_Heap_Free+0x110>
           <== NEVER TAKEN
4000de1c:	b0 08 a0 ff 	and  %g2, 0xff, %i0
                           <== NOT EXECUTED
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;
                
4000de20:	c6 07 60 04 	ld  [ %i5 + 4 ], %g3
                          
    if ( !_Heap_Is_prev_used ( prev_block) ) {
                       
4000de24:	80 88 e0 01 	btst  1, %g3
                                  
4000de28:	02 bf ff f0 	be  4000dde8 <_Heap_Free+0x10c>
               <== NEVER TAKEN
4000de2c:	80 a3 e0 00 	cmp  %o7, 0
                                   
    if ( next_is_free ) {       /* coalesce both */
                  
4000de30:	02 80 00 22 	be  4000deb8 <_Heap_Free+0x1dc>
               
4000de34:	b2 06 40 1c 	add  %i1, %i4, %i1
                            
4000de38:	c4 01 20 08 	ld  [ %g4 + 8 ], %g2
                          
4000de3c:	c6 01 20 0c 	ld  [ %g4 + 0xc ], %g3
                        
  prev->next = next;
                                                 
4000de40:	c4 20 e0 08 	st  %g2, [ %g3 + 8 ]
                          
      uintptr_t const size = block_size + prev_size + next_block_size;

4000de44:	b4 06 80 19 	add  %i2, %i1, %i2
                            
      stats->free_blocks -= 1;
                                       
4000de48:	c2 06 20 44 	ld  [ %i0 + 0x44 ], %g1
                       
  next->prev = prev;
                                                 
4000de4c:	c6 20 a0 0c 	st  %g3, [ %g2 + 0xc ]
                        
4000de50:	82 00 7f ff 	add  %g1, -1, %g1
                             
4000de54:	c2 26 20 44 	st  %g1, [ %i0 + 0x44 ]
                       
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
       
4000de58:	82 16 a0 01 	or  %i2, 1, %g1
                               
4000de5c:	c2 27 60 04 	st  %g1, [ %i5 + 4 ]
                          
4000de60:	10 bf ff d4 	b  4000ddb0 <_Heap_Free+0xd4>
                 
4000de64:	f4 27 40 1a 	st  %i2, [ %i5 + %i2 ]
                        
  Heap_Block *next = block_before->next;
                             
4000de68:	c6 06 20 08 	ld  [ %i0 + 8 ], %g3
                          
  new_block->next = next;
                                            
4000de6c:	c6 20 60 08 	st  %g3, [ %g1 + 8 ]
                          
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
        
4000de70:	84 17 20 01 	or  %i4, 1, %g2
                               
  new_block->prev = block_before;
                                    
4000de74:	f0 20 60 0c 	st  %i0, [ %g1 + 0xc ]
                        
  block_before->next = new_block;
                                    
4000de78:	c2 26 20 08 	st  %g1, [ %i0 + 8 ]
                          
  next->prev = new_block;
                                            
4000de7c:	c2 20 e0 0c 	st  %g1, [ %g3 + 0xc ]
                        
4000de80:	c4 20 60 04 	st  %g2, [ %g1 + 4 ]
                          
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
              
4000de84:	c4 01 20 04 	ld  [ %g4 + 4 ], %g2
                          
4000de88:	84 08 bf fe 	and  %g2, -2, %g2
                             
4000de8c:	c4 21 20 04 	st  %g2, [ %g4 + 4 ]
                          
    ++stats->free_blocks;
                                            
4000de90:	c4 06 20 44 	ld  [ %i0 + 0x44 ], %g2
                       
    next_block->prev_size = block_size;
                              
4000de94:	f8 20 40 1c 	st  %i4, [ %g1 + %i4 ]
                        
    ++stats->free_blocks;
                                            
4000de98:	82 00 a0 01 	add  %g2, 1, %g1
                              
4000de9c:	c2 26 20 44 	st  %g1, [ %i0 + 0x44 ]
                       
    if ( stats->max_free_blocks < stats->free_blocks ) {
             
4000dea0:	c4 06 20 48 	ld  [ %i0 + 0x48 ], %g2
                       
4000dea4:	80 a0 40 02 	cmp  %g1, %g2
                                 
4000dea8:	38 bf ff c2 	bgu,a   4000ddb0 <_Heap_Free+0xd4>
            
4000deac:	c2 26 20 48 	st  %g1, [ %i0 + 0x48 ]
                       
  return( true );
                                                    
4000deb0:	10 bf ff c1 	b  4000ddb4 <_Heap_Free+0xd8>
                 
4000deb4:	84 10 20 01 	mov  1, %g2
                                   
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
       
4000deb8:	84 16 60 01 	or  %i1, 1, %g2
                               
4000debc:	c4 27 60 04 	st  %g2, [ %i5 + 4 ]
                          
      next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
            
4000dec0:	c4 01 20 04 	ld  [ %g4 + 4 ], %g2
                          
4000dec4:	84 08 bf fe 	and  %g2, -2, %g2
                             
4000dec8:	c4 21 20 04 	st  %g2, [ %g4 + 4 ]
                          
      next_block->prev_size = size;
                                  
4000decc:	10 bf ff b9 	b  4000ddb0 <_Heap_Free+0xd4>
                 
4000ded0:	f2 20 40 1c 	st  %i1, [ %g1 + %i4 ]
                        

                                                                     

40006e78 <_Heap_Get_first_and_last_block>: _Heap_Align_up( heap_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );
40006e78:	84 02 20 08 	add  %o0, 8, %g2
                              <== NOT EXECUTED
  uintptr_t remainder = value % alignment;
                           
40006e7c:	81 80 20 00 	wr  %g0, %y
                                   <== NOT EXECUTED
40006e80:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
40006e84:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
40006e88:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
40006e8c:	82 70 80 0a 	udiv  %g2, %o2, %g1
                           <== NOT EXECUTED
40006e90:	82 58 40 0a 	smul  %g1, %o2, %g1
                           <== NOT EXECUTED
  if ( remainder != 0 ) {
                                            
40006e94:	82 a0 80 01 	subcc  %g2, %g1, %g1
                          <== NOT EXECUTED
40006e98:	02 80 00 1a 	be  40006f00 <_Heap_Get_first_and_last_block+0x88>
<== NOT EXECUTED
40006e9c:	88 02 00 09 	add  %o0, %o1, %g4
                            <== NOT EXECUTED
40006ea0:	86 02 bf f8 	add  %o2, -8, %g3
                             <== NOT EXECUTED
40006ea4:	84 00 c0 02 	add  %g3, %g2, %g2
                            <== NOT EXECUTED
40006ea8:	82 20 80 01 	sub  %g2, %g1, %g1
                            <== NOT EXECUTED
40006eac:	84 20 40 08 	sub  %g1, %o0, %g2
                            <== NOT EXECUTED
40006eb0:	84 00 a0 08 	add  %g2, 8, %g2
                              <== NOT EXECUTED
    heap_area_end < heap_area_begin
                                  
40006eb4:	80 a1 00 08 	cmp  %g4, %o0
                                 <== NOT EXECUTED
40006eb8:	88 40 20 00 	addx  %g0, 0, %g4
                             <== NOT EXECUTED
      || heap_area_size <= overhead
                                  
40006ebc:	80 a0 80 09 	cmp  %g2, %o1
                                 <== NOT EXECUTED
    _Heap_Align_down( heap_area_size - overhead, page_size );
        
40006ec0:	92 22 40 02 	sub  %o1, %g2, %o1
                            <== NOT EXECUTED
      || heap_area_size <= overhead
                                  
40006ec4:	86 60 3f ff 	subx  %g0, -1, %g3
                            <== NOT EXECUTED
  return value - (value % alignment);
                                
40006ec8:	81 80 20 00 	wr  %g0, %y
                                   <== NOT EXECUTED
40006ecc:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
40006ed0:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
40006ed4:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
40006ed8:	84 72 40 0a 	udiv  %o1, %o2, %g2
                           <== NOT EXECUTED
      || first_block_size < min_block_size
                           
40006edc:	80 91 00 03 	orcc  %g4, %g3, %g0
                           <== NOT EXECUTED
40006ee0:	12 80 00 05 	bne  40006ef4 <_Heap_Get_first_and_last_block+0x7c>
<== NOT EXECUTED
40006ee4:	94 58 80 0a 	smul  %g2, %o2, %o2
                           <== NOT EXECUTED
40006ee8:	80 a2 80 0b 	cmp  %o2, %o3
                                 <== NOT EXECUTED
40006eec:	3a 80 00 08 	bcc,a   40006f0c <_Heap_Get_first_and_last_block+0x94>
<== NOT EXECUTED
40006ef0:	c2 23 00 00 	st  %g1, [ %o4 ]
                              <== NOT EXECUTED
    return false;
                                                    
40006ef4:	90 10 20 00 	clr  %o0
                                      <== NOT EXECUTED
}
                                                                    
40006ef8:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
40006efc:	90 0a 20 01 	and  %o0, 1, %o0
                              <== NOT EXECUTED
40006f00:	82 10 00 08 	mov  %o0, %g1
                                 <== NOT EXECUTED
40006f04:	10 bf ff ec 	b  40006eb4 <_Heap_Get_first_and_last_block+0x3c>
<== NOT EXECUTED
40006f08:	84 10 20 08 	mov  8, %g2
                                   <== NOT EXECUTED
  return (Heap_Block *) ((uintptr_t) block + offset);
                
40006f0c:	94 02 80 01 	add  %o2, %g1, %o2
                            <== NOT EXECUTED
  return true;
                                                       
40006f10:	90 10 20 01 	mov  1, %o0
                                   <== NOT EXECUTED
  *last_block_ptr = last_block;
                                      
40006f14:	d4 23 40 00 	st  %o2, [ %o5 ]
                              <== NOT EXECUTED
}
                                                                    
40006f18:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
40006f1c:	90 0a 20 01 	and  %o0, 1, %o0
                              <== NOT EXECUTED

                                                                     

400123c4 <_Heap_Get_free_information>: ) { Heap_Block *the_block; Heap_Block *const tail = _Heap_Free_list_tail(the_heap); info->number = 0;
400123c4:	c0 22 40 00 	clr  [ %o1 ]
                                  <== NOT EXECUTED
  info->largest = 0;
                                                 
400123c8:	c0 22 60 04 	clr  [ %o1 + 4 ]
                              <== NOT EXECUTED
  info->total = 0;
                                                   
400123cc:	c0 22 60 08 	clr  [ %o1 + 8 ]
                              <== NOT EXECUTED
  return _Heap_Free_list_head(heap)->next;
                           
400123d0:	c4 02 20 08 	ld  [ %o0 + 8 ], %g2
                          <== NOT EXECUTED

                                                                     
  for(the_block = _Heap_Free_list_first(the_heap);
                   
400123d4:	80 a2 00 02 	cmp  %o0, %g2
                                 <== NOT EXECUTED
400123d8:	02 80 00 12 	be  40012420 <_Heap_Get_free_information+0x5c>
<== NOT EXECUTED
400123dc:	88 10 20 01 	mov  1, %g4
                                   
400123e0:	9a 10 20 00 	clr  %o5
                                      
400123e4:	10 80 00 03 	b  400123f0 <_Heap_Get_free_information+0x2c>
 
400123e8:	86 10 20 00 	clr  %g3
                                      
400123ec:	da 02 60 04 	ld  [ %o1 + 4 ], %o5
                          
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
400123f0:	c2 00 a0 04 	ld  [ %g2 + 4 ], %g1
                          
400123f4:	82 08 7f fe 	and  %g1, -2, %g1
                             
    uint32_t const the_size = _Heap_Block_size(the_block);
           

                                                                     
    /* As we always coalesce free blocks, prev block must have been used. */

    _HAssert(_Heap_Is_prev_used(the_block));
                         

                                                                     
    info->number++;
                                                  
400123f8:	c8 22 40 00 	st  %g4, [ %o1 ]
                              
    info->total += the_size;
                                         
400123fc:	86 00 c0 01 	add  %g3, %g1, %g3
                            
    if ( info->largest < the_size )
                                  
40012400:	80 a0 40 0d 	cmp  %g1, %o5
                                 
40012404:	08 80 00 03 	bleu  40012410 <_Heap_Get_free_information+0x4c>

40012408:	c6 22 60 08 	st  %g3, [ %o1 + 8 ]
                          
        info->largest = the_size;
                                    
4001240c:	c2 22 60 04 	st  %g1, [ %o1 + 4 ]
                          
      the_block = the_block->next)
                                   
40012410:	c4 00 a0 08 	ld  [ %g2 + 8 ], %g2
                          
  for(the_block = _Heap_Free_list_first(the_heap);
                   
40012414:	80 a2 00 02 	cmp  %o0, %g2
                                 
40012418:	12 bf ff f5 	bne  400123ec <_Heap_Get_free_information+0x28>

4001241c:	88 01 20 01 	inc  %g4
                                      
  }
                                                                  
}
                                                                    
40012420:	81 c3 e0 08 	retl 
                                         
40012424:	01 00 00 00 	nop 
                                          

                                                                     

400087fc <_Heap_Greedy_allocate>: Heap_Block *_Heap_Greedy_allocate( Heap_Control *heap, const uintptr_t *block_sizes, size_t block_count ) {
400087fc:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  Heap_Block *current;
                                               
  size_t i;
                                                          

                                                                     
  _Heap_Protection_free_all_delayed_blocks( heap );
                  

                                                                     
  for (i = 0; i < block_count; ++i) {
                                
40008800:	80 a6 a0 00 	cmp  %i2, 0
                                   <== NOT EXECUTED
40008804:	02 80 00 3a 	be  400088ec <_Heap_Greedy_allocate+0xf0>
     <== NOT EXECUTED
40008808:	ba 10 00 18 	mov  %i0, %i5
                                 
4000880c:	b5 2e a0 02 	sll  %i2, 2, %i2
                              
  Heap_Block *allocated_blocks = NULL;
                               
40008810:	b8 10 20 00 	clr  %i4
                                      
40008814:	b4 06 40 1a 	add  %i1, %i2, %i2
                            
  return _Heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );
   
40008818:	d2 06 40 00 	ld  [ %i1 ], %o1
                              
4000881c:	96 10 20 00 	clr  %o3
                                      
40008820:	94 10 20 00 	clr  %o2
                                      
40008824:	7f ff ff 47 	call  40008540 <_Heap_Allocate_aligned_with_boundary>

40008828:	90 10 00 1d 	mov  %i5, %o0
                                 
    void *next = _Heap_Allocate( heap, block_sizes [i] );
            

                                                                     
    if ( next != NULL ) {
                                            
4000882c:	80 a2 20 00 	cmp  %o0, 0
                                   
40008830:	02 80 00 0c 	be  40008860 <_Heap_Greedy_allocate+0x64>
     
40008834:	b2 06 60 04 	add  %i1, 4, %i1
                              
  return value - (value % alignment);
                                
40008838:	c4 07 60 10 	ld  [ %i5 + 0x10 ], %g2
                       
4000883c:	81 80 20 00 	wr  %g0, %y
                                   
40008840:	01 00 00 00 	nop 
                                          
40008844:	01 00 00 00 	nop 
                                          
40008848:	01 00 00 00 	nop 
                                          
4000884c:	82 72 00 02 	udiv  %o0, %g2, %g1
                           
40008850:	82 58 40 02 	smul  %g1, %g2, %g1
                           
      Heap_Block *next_block = _Heap_Block_of_alloc_area(
            
        (uintptr_t) next,
                                            
        heap->page_size
                                              
      );
                                                             

                                                                     
      next_block->next = allocated_blocks;
                           
40008854:	f8 20 40 00 	st  %i4, [ %g1 ]
                              
    - HEAP_BLOCK_HEADER_SIZE);
                                       
40008858:	82 00 7f f8 	add  %g1, -8, %g1
                             
4000885c:	b8 10 00 01 	mov  %g1, %i4
                                 
  for (i = 0; i < block_count; ++i) {
                                
40008860:	80 a6 80 19 	cmp  %i2, %i1
                                 
40008864:	32 bf ff ee 	bne,a   4000881c <_Heap_Greedy_allocate+0x20>
 
40008868:	d2 06 40 00 	ld  [ %i1 ], %o1
                              
  return _Heap_Free_list_head(heap)->next;
                           
4000886c:	f0 07 60 08 	ld  [ %i5 + 8 ], %i0
                          
      allocated_blocks = next_block;
                                 
    }
                                                                
  }
                                                                  

                                                                     
  while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {

40008870:	80 a7 40 18 	cmp  %i5, %i0
                                 
40008874:	22 80 00 19 	be,a   400088d8 <_Heap_Greedy_allocate+0xdc>
  
40008878:	b0 10 20 00 	clr  %i0
                                      
  Heap_Block *allocated_blocks = NULL;
                               
4000887c:	10 80 00 03 	b  40008888 <_Heap_Greedy_allocate+0x8c>
      
40008880:	b6 10 20 00 	clr  %i3
                                      
40008884:	b0 10 00 01 	mov  %g1, %i0
                                 
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
40008888:	d6 06 20 04 	ld  [ %i0 + 4 ], %o3
                          
4000888c:	96 0a ff fe 	and  %o3, -2, %o3
                             
    _Heap_Block_allocate(
                                            
40008890:	94 06 20 08 	add  %i0, 8, %o2
                              
40008894:	92 10 00 18 	mov  %i0, %o1
                                 
40008898:	96 02 ff f8 	add  %o3, -8, %o3
                             
4000889c:	40 00 00 f0 	call  40008c5c <_Heap_Block_allocate>
         
400088a0:	90 10 00 1d 	mov  %i5, %o0
                                 
      current,
                                                       
      _Heap_Alloc_area_of_block( current ),
                          
      _Heap_Block_size( current ) - HEAP_BLOCK_HEADER_SIZE
           
    );
                                                               

                                                                     
    current->next = blocks;
                                          
400088a4:	f6 26 20 08 	st  %i3, [ %i0 + 8 ]
                          
  return _Heap_Free_list_head(heap)->next;
                           
400088a8:	c2 07 60 08 	ld  [ %i5 + 8 ], %g1
                          
  while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {

400088ac:	80 a7 40 01 	cmp  %i5, %g1
                                 
400088b0:	12 bf ff f5 	bne  40008884 <_Heap_Greedy_allocate+0x88>
    
400088b4:	b6 10 00 18 	mov  %i0, %i3
                                 
    blocks = current;
                                                
  }
                                                                  

                                                                     
  while ( allocated_blocks != NULL ) {
                               
400088b8:	80 a7 20 00 	cmp  %i4, 0
                                   
400088bc:	02 80 00 0a 	be  400088e4 <_Heap_Greedy_allocate+0xe8>
     
400088c0:	01 00 00 00 	nop 
                                          
    current = allocated_blocks;
                                      
    allocated_blocks = allocated_blocks->next;
                       
400088c4:	f6 07 20 08 	ld  [ %i4 + 8 ], %i3
                          
    _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );

400088c8:	92 07 20 08 	add  %i4, 8, %o1
                              
400088cc:	90 10 00 1d 	mov  %i5, %o0
                                 
400088d0:	40 00 19 eb 	call  4000f07c <_Heap_Free>
                   
400088d4:	b8 10 00 1b 	mov  %i3, %i4
                                 
  while ( allocated_blocks != NULL ) {
                               
400088d8:	80 a7 20 00 	cmp  %i4, 0
                                   
400088dc:	32 bf ff fb 	bne,a   400088c8 <_Heap_Greedy_allocate+0xcc>
 
400088e0:	f6 07 20 08 	ld  [ %i4 + 8 ], %i3
                          
  }
                                                                  

                                                                     
  return blocks;
                                                     
}
                                                                    
400088e4:	81 c7 e0 08 	ret 
                                          
400088e8:	81 e8 00 00 	restore 
                                      
400088ec:	f0 06 20 08 	ld  [ %i0 + 8 ], %i0
                          
  while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {

400088f0:	80 a7 40 18 	cmp  %i5, %i0
                                 
400088f4:	12 bf ff e2 	bne  4000887c <_Heap_Greedy_allocate+0x80>
    <== ALWAYS TAKEN
400088f8:	b8 10 20 00 	clr  %i4
                                      
  Heap_Block *blocks = NULL;
                                         
400088fc:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40008900:	91 e8 20 00 	restore  %g0, 0, %o0
                          <== NOT EXECUTED

                                                                     

40006ab0 <_Heap_Greedy_allocate_all_except_largest>: Heap_Block *_Heap_Greedy_allocate_all_except_largest( Heap_Control *heap, uintptr_t *allocatable_size ) {
40006ab0:	9d e3 bf 90 	save  %sp, -112, %sp
                          <== NOT EXECUTED
  Heap_Information info;
                                             

                                                                     
  _Heap_Get_free_information( heap, &info );
                         
40006ab4:	92 07 bf f4 	add  %fp, -12, %o1
                            <== NOT EXECUTED
40006ab8:	40 00 1a 76 	call  4000d490 <_Heap_Get_free_information>
   <== NOT EXECUTED
40006abc:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED

                                                                     
  if ( info.largest > 0 ) {
                                          
40006ac0:	c2 07 bf f8 	ld  [ %fp + -8 ], %g1
                         
40006ac4:	80 a0 60 00 	cmp  %g1, 0
                                   
40006ac8:	12 80 00 08 	bne  40006ae8 <_Heap_Greedy_allocate_all_except_largest+0x38>
<== ALWAYS TAKEN
40006acc:	94 10 20 01 	mov  1, %o2
                                   
    *allocatable_size = info.largest - HEAP_BLOCK_HEADER_SIZE + HEAP_ALLOC_BONUS;

  } else {
                                                           
    *allocatable_size = 0;
                                           
40006ad0:	c0 26 40 00 	clr  [ %i1 ]
                                  <== NOT EXECUTED
  }
                                                                  

                                                                     
  return _Heap_Greedy_allocate( heap, allocatable_size, 1 );
         
40006ad4:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
40006ad8:	7f ff ff b4 	call  400069a8 <_Heap_Greedy_allocate>
        <== NOT EXECUTED
40006adc:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
}
                                                                    
40006ae0:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006ae4:	91 e8 00 08 	restore  %g0, %o0, %o0
                        <== NOT EXECUTED
    *allocatable_size = info.largest - HEAP_BLOCK_HEADER_SIZE + HEAP_ALLOC_BONUS;

40006ae8:	82 00 7f fc 	add  %g1, -4, %g1
                             
40006aec:	c2 26 40 00 	st  %g1, [ %i1 ]
                              
  return _Heap_Greedy_allocate( heap, allocatable_size, 1 );
         
40006af0:	92 10 00 19 	mov  %i1, %o1
                                 
40006af4:	7f ff ff ad 	call  400069a8 <_Heap_Greedy_allocate>
        
40006af8:	90 10 00 18 	mov  %i0, %o0
                                 
}
                                                                    
40006afc:	81 c7 e0 08 	ret 
                                          
40006b00:	91 e8 00 08 	restore  %g0, %o0, %o0
                        

                                                                     

40008904 <_Heap_Greedy_free>: void _Heap_Greedy_free( Heap_Control *heap, Heap_Block *blocks ) {
40008904:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  while ( blocks != NULL ) {
                                         
40008908:	80 a6 60 00 	cmp  %i1, 0
                                   <== NOT EXECUTED
4000890c:	02 80 00 09 	be  40008930 <_Heap_Greedy_free+0x2c>
         <== NOT EXECUTED
40008910:	01 00 00 00 	nop 
                                          
    Heap_Block *current = blocks;
                                    

                                                                     
    blocks = blocks->next;
                                           
40008914:	fa 06 60 08 	ld  [ %i1 + 8 ], %i5
                          
    _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );

40008918:	92 06 60 08 	add  %i1, 8, %o1
                              
4000891c:	40 00 19 d8 	call  4000f07c <_Heap_Free>
                   
40008920:	90 10 00 18 	mov  %i0, %o0
                                 
  while ( blocks != NULL ) {
                                         
40008924:	b2 97 60 00 	orcc  %i5, 0, %i1
                             
40008928:	32 bf ff fc 	bne,a   40008918 <_Heap_Greedy_free+0x14>
     
4000892c:	fa 06 60 08 	ld  [ %i1 + 8 ], %i5
                          
  }
                                                                  
}
                                                                    
40008930:	81 c7 e0 08 	ret 
                                          
40008934:	81 e8 00 00 	restore 
                                      

                                                                     

40007580 <_Heap_Initialize>: {
40007580:	9d e3 bf a0 	save  %sp, -96, %sp
                           
40007584:	a2 86 40 1a 	addcc  %i1, %i2, %l1
                          
40007588:	84 40 20 00 	addx  %g0, 0, %g2
                             
  if ( page_size == 0 ) {
                                            
4000758c:	80 a6 e0 00 	cmp  %i3, 0
                                   
40007590:	22 80 00 33 	be,a   4000765c <_Heap_Initialize+0xdc>
       
40007594:	b6 10 20 08 	mov  8, %i3
                                   
  if ( remainder != 0 ) {
                                            
40007598:	82 8e e0 07 	andcc  %i3, 7, %g1
                            
4000759c:	02 80 00 05 	be  400075b0 <_Heap_Initialize+0x30>
          
400075a0:	80 a6 e0 07 	cmp  %i3, 7
                                   
    return value - remainder + alignment;
                            
400075a4:	b6 06 e0 08 	add  %i3, 8, %i3
                              
400075a8:	b6 26 c0 01 	sub  %i3, %g1, %i3
                            
    if ( page_size < CPU_ALIGNMENT ) {
                               
400075ac:	80 a6 e0 07 	cmp  %i3, 7
                                   
400075b0:	08 80 00 29 	bleu  40007654 <_Heap_Initialize+0xd4>
        
400075b4:	ba 10 20 00 	clr  %i5
                                      
  uintptr_t remainder = value % alignment;
                           
400075b8:	82 10 20 10 	mov  0x10, %g1
                                
400075bc:	81 80 20 00 	wr  %g0, %y
                                   
400075c0:	01 00 00 00 	nop 
                                          
400075c4:	01 00 00 00 	nop 
                                          
400075c8:	01 00 00 00 	nop 
                                          
400075cc:	86 70 40 1b 	udiv  %g1, %i3, %g3
                           
400075d0:	86 58 c0 1b 	smul  %g3, %i3, %g3
                           
  if ( remainder != 0 ) {
                                            
400075d4:	82 a0 40 03 	subcc  %g1, %g3, %g1
                          
400075d8:	02 80 00 22 	be  40007660 <_Heap_Initialize+0xe0>
          
400075dc:	a0 10 20 10 	mov  0x10, %l0
                                
    _Heap_Align_up( heap_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );

400075e0:	b8 06 60 08 	add  %i1, 8, %i4
                              
    return value - remainder + alignment;
                            
400075e4:	a0 06 e0 10 	add  %i3, 0x10, %l0
                           
400075e8:	a0 24 00 01 	sub  %l0, %g1, %l0
                            
  uintptr_t remainder = value % alignment;
                           
400075ec:	81 80 20 00 	wr  %g0, %y
                                   
400075f0:	01 00 00 00 	nop 
                                          
400075f4:	01 00 00 00 	nop 
                                          
400075f8:	01 00 00 00 	nop 
                                          
400075fc:	82 77 00 1b 	udiv  %i4, %i3, %g1
                           
40007600:	82 58 40 1b 	smul  %g1, %i3, %g1
                           
  if ( remainder != 0 ) {
                                            
40007604:	82 a7 00 01 	subcc  %i4, %g1, %g1
                          
40007608:	12 80 00 21 	bne  4000768c <_Heap_Initialize+0x10c>
        <== ALWAYS TAKEN
4000760c:	b8 06 40 1b 	add  %i1, %i3, %i4
                            
  uintptr_t const heap_area_begin = (uintptr_t) heap_area_begin_ptr;
 
40007610:	b8 10 00 19 	mov  %i1, %i4
                                 <== NOT EXECUTED
40007614:	82 10 20 08 	mov  8, %g1
                                   
      || heap_area_size <= overhead
                                  
40007618:	80 a0 40 1a 	cmp  %g1, %i2
                                 
    _Heap_Align_down( heap_area_size - overhead, page_size );
        
4000761c:	b4 26 80 01 	sub  %i2, %g1, %i2
                            
      || heap_area_size <= overhead
                                  
40007620:	82 60 3f ff 	subx  %g0, -1, %g1
                            
  return value - (value % alignment);
                                
40007624:	81 80 20 00 	wr  %g0, %y
                                   
40007628:	01 00 00 00 	nop 
                                          
4000762c:	01 00 00 00 	nop 
                                          
40007630:	01 00 00 00 	nop 
                                          
40007634:	ba 76 80 1b 	udiv  %i2, %i3, %i5
                           
      || first_block_size < min_block_size
                           
40007638:	80 90 80 01 	orcc  %g2, %g1, %g0
                           
4000763c:	12 80 00 05 	bne  40007650 <_Heap_Initialize+0xd0>
         
40007640:	ba 5f 40 1b 	smul  %i5, %i3, %i5
                           
40007644:	80 a7 40 10 	cmp  %i5, %l0
                                 
40007648:	1a 80 00 15 	bcc  4000769c <_Heap_Initialize+0x11c>
        
4000764c:	94 10 20 68 	mov  0x68, %o2
                                
      return 0;
                                                      
40007650:	ba 10 20 00 	clr  %i5
                                      
}
                                                                    
40007654:	81 c7 e0 08 	ret 
                                          
40007658:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
  } else {
                                                           
    return value;
                                                    
4000765c:	a0 10 20 10 	mov  0x10, %l0
                                
    _Heap_Align_up( heap_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );

40007660:	b8 06 60 08 	add  %i1, 8, %i4
                              
  uintptr_t remainder = value % alignment;
                           
40007664:	81 80 20 00 	wr  %g0, %y
                                   
40007668:	01 00 00 00 	nop 
                                          
4000766c:	01 00 00 00 	nop 
                                          
40007670:	01 00 00 00 	nop 
                                          
40007674:	82 77 00 1b 	udiv  %i4, %i3, %g1
                           
40007678:	82 58 40 1b 	smul  %g1, %i3, %g1
                           
  if ( remainder != 0 ) {
                                            
4000767c:	82 a7 00 01 	subcc  %i4, %g1, %g1
                          
40007680:	22 bf ff e5 	be,a   40007614 <_Heap_Initialize+0x94>
       
40007684:	b8 10 00 19 	mov  %i1, %i4
                                 
40007688:	b8 06 40 1b 	add  %i1, %i3, %i4
                            
4000768c:	b8 27 00 01 	sub  %i4, %g1, %i4
                            
40007690:	82 27 00 19 	sub  %i4, %i1, %g1
                            
40007694:	10 bf ff e1 	b  40007618 <_Heap_Initialize+0x98>
           
40007698:	82 00 60 08 	add  %g1, 8, %g1
                              
  memset(heap, 0, sizeof(*heap));
                                    
4000769c:	92 10 20 00 	clr  %o1
                                      
400076a0:	40 00 1e d8 	call  4000f200 <memset>
                       
400076a4:	90 10 00 18 	mov  %i0, %o0
                                 
  first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED;

400076a8:	82 17 60 01 	or  %i5, 1, %g1
                               
  first_block->next = _Heap_Free_list_tail( heap );
                  
400076ac:	f0 27 20 08 	st  %i0, [ %i4 + 8 ]
                          
  return (Heap_Block *) ((uintptr_t) block + offset);
                
400076b0:	86 07 40 1c 	add  %i5, %i4, %g3
                            
  first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED;

400076b4:	c2 27 20 04 	st  %g1, [ %i4 + 4 ]
                          
  _Heap_Block_set_size(
                                              
400076b8:	82 20 00 1d 	neg  %i5, %g1
                                 
  first_block->prev = _Heap_Free_list_head( heap );
                  
400076bc:	f0 27 20 0c 	st  %i0, [ %i4 + 0xc ]
                        
  stats->free_blocks = 1;
                                            
400076c0:	84 10 20 01 	mov  1, %g2
                                   
  first_block->prev_size = heap_area_end;
                            
400076c4:	e2 27 00 00 	st  %l1, [ %i4 ]
                              
  heap->page_size = page_size;
                                       
400076c8:	f6 26 20 10 	st  %i3, [ %i0 + 0x10 ]
                       
  heap->min_block_size = min_block_size;
                             
400076cc:	e0 26 20 14 	st  %l0, [ %i0 + 0x14 ]
                       
  heap->area_begin = heap_area_begin;
                                
400076d0:	f2 26 20 18 	st  %i1, [ %i0 + 0x18 ]
                       
  heap->area_end = heap_area_end;
                                    
400076d4:	e2 26 20 1c 	st  %l1, [ %i0 + 0x1c ]
                       
  heap->first_block = first_block;
                                   
400076d8:	f8 26 20 20 	st  %i4, [ %i0 + 0x20 ]
                       
  heap->last_block = last_block;
                                     
400076dc:	c6 26 20 24 	st  %g3, [ %i0 + 0x24 ]
                       
  _Heap_Free_list_head( heap )->next = first_block;
                  
400076e0:	f8 26 20 08 	st  %i4, [ %i0 + 8 ]
                          
  _Heap_Free_list_tail( heap )->prev = first_block;
                  
400076e4:	f8 26 20 0c 	st  %i4, [ %i0 + 0xc ]
                        
  last_block->prev_size = first_block_size;
                          
400076e8:	fa 27 40 1c 	st  %i5, [ %i5 + %i4 ]
                        
  block->size_and_flag = size | flag;
                                
400076ec:	c2 20 e0 04 	st  %g1, [ %g3 + 4 ]
                          
  stats->size = first_block_size;
                                    
400076f0:	fa 26 20 38 	st  %i5, [ %i0 + 0x38 ]
                       
  stats->free_size = first_block_size;
                               
400076f4:	fa 26 20 3c 	st  %i5, [ %i0 + 0x3c ]
                       
  stats->min_free_size = first_block_size;
                           
400076f8:	fa 26 20 40 	st  %i5, [ %i0 + 0x40 ]
                       
  stats->free_blocks = 1;
                                            
400076fc:	c4 26 20 44 	st  %g2, [ %i0 + 0x44 ]
                       
  stats->max_free_blocks = 1;
                                        
40007700:	c4 26 20 48 	st  %g2, [ %i0 + 0x48 ]
                       
}
                                                                    
40007704:	81 c7 e0 08 	ret 
                                          
40007708:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        

                                                                     

40009fbc <_Heap_Iterate>: void _Heap_Iterate( Heap_Control *heap, Heap_Block_visitor visitor, void *visitor_arg ) {
40009fbc:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  Heap_Block *current = heap->first_block;
                           
40009fc0:	c2 06 20 20 	ld  [ %i0 + 0x20 ], %g1
                       <== NOT EXECUTED
  Heap_Block *end = heap->last_block;
                                
40009fc4:	f8 06 20 24 	ld  [ %i0 + 0x24 ], %i4
                       <== NOT EXECUTED
  bool stop = false;
                                                 

                                                                     
  while ( !stop && current != end ) {
                                
40009fc8:	80 a0 40 1c 	cmp  %g1, %i4
                                 <== NOT EXECUTED
40009fcc:	32 80 00 07 	bne,a   40009fe8 <_Heap_Iterate+0x2c>
         <== NOT EXECUTED
40009fd0:	d2 00 60 04 	ld  [ %g1 + 4 ], %o1
                          
40009fd4:	30 80 00 10 	b,a   4000a014 <_Heap_Iterate+0x58>
           <== NOT EXECUTED
40009fd8:	80 a7 00 1d 	cmp  %i4, %i5
                                 
40009fdc:	02 80 00 0e 	be  4000a014 <_Heap_Iterate+0x58>
             
40009fe0:	01 00 00 00 	nop 
                                          
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
40009fe4:	d2 00 60 04 	ld  [ %g1 + 4 ], %o1
                          
40009fe8:	92 0a 7f fe 	and  %o1, -2, %o1
                             
  return (Heap_Block *) ((uintptr_t) block + offset);
                
40009fec:	ba 00 40 09 	add  %g1, %o1, %i5
                            
  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;
                
40009ff0:	d4 07 60 04 	ld  [ %i5 + 4 ], %o2
                          
    uintptr_t size = _Heap_Block_size( current );
                    
    Heap_Block *next = _Heap_Block_at( current, size );
              
    bool used = _Heap_Is_prev_used( next );
                          

                                                                     
    stop = (*visitor)( current, size, used, visitor_arg );
           
40009ff4:	90 10 00 01 	mov  %g1, %o0
                                 
40009ff8:	96 10 00 1a 	mov  %i2, %o3
                                 
40009ffc:	9f c6 40 00 	call  %i1
                                     
4000a000:	94 0a a0 01 	and  %o2, 1, %o2
                              
  while ( !stop && current != end ) {
                                
4000a004:	90 1a 20 01 	xor  %o0, 1, %o0
                              
4000a008:	80 8a 20 ff 	btst  0xff, %o0
                               
4000a00c:	12 bf ff f3 	bne  40009fd8 <_Heap_Iterate+0x1c>
            <== ALWAYS TAKEN
4000a010:	82 10 00 1d 	mov  %i5, %g1
                                 

                                                                     
    current = next;
                                                  
  }
                                                                  
}
                                                                    
4000a014:	81 c7 e0 08 	ret 
                                          
4000a018:	81 e8 00 00 	restore 
                                      

                                                                     

4000a600 <_Heap_No_extend>: uintptr_t unused_2 RTEMS_UNUSED, uintptr_t unused_3 RTEMS_UNUSED ) { return 0; }
4000a600:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000a604:	90 10 20 00 	clr  %o0
                                      

                                                                     

40018a28 <_Heap_Resize_block>: void *alloc_begin_ptr, uintptr_t new_alloc_size, uintptr_t *old_size, uintptr_t *new_size ) {
40018a28:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  return value - (value % alignment);
                                
40018a2c:	c2 06 20 10 	ld  [ %i0 + 0x10 ], %g1
                       <== NOT EXECUTED

                                                                     
  uintptr_t const alloc_begin = (uintptr_t) alloc_begin_ptr;
         

                                                                     
  Heap_Block *const block = _Heap_Block_of_alloc_area( alloc_begin, page_size );


                                                                     
  *old_size = 0;
                                                     
40018a30:	c0 26 c0 00 	clr  [ %i3 ]
                                  <== NOT EXECUTED
40018a34:	81 80 20 00 	wr  %g0, %y
                                   <== NOT EXECUTED
40018a38:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
40018a3c:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
40018a40:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
40018a44:	92 76 40 01 	udiv  %i1, %g1, %o1
                           <== NOT EXECUTED
  *new_size = 0;
                                                     
40018a48:	c0 27 00 00 	clr  [ %i4 ]
                                  <== NOT EXECUTED
40018a4c:	92 5a 40 01 	smul  %o1, %g1, %o1
                           <== NOT EXECUTED
    && (uintptr_t) block <= (uintptr_t) heap->last_block;
            
40018a50:	c2 06 20 20 	ld  [ %i0 + 0x20 ], %g1
                       <== NOT EXECUTED
{
                                                                    
40018a54:	ba 10 00 18 	mov  %i0, %i5
                                 <== NOT EXECUTED
    - HEAP_BLOCK_HEADER_SIZE);
                                       
40018a58:	92 02 7f f8 	add  %o1, -8, %o1
                             <== NOT EXECUTED
    && (uintptr_t) block <= (uintptr_t) heap->last_block;
            
40018a5c:	80 a0 40 09 	cmp  %g1, %o1
                                 <== NOT EXECUTED
40018a60:	18 80 00 3a 	bgu  40018b48 <_Heap_Resize_block+0x120>
      <== NOT EXECUTED
40018a64:	b0 10 20 02 	mov  2, %i0
                                   
40018a68:	c2 07 60 24 	ld  [ %i5 + 0x24 ], %g1
                       
40018a6c:	80 a0 40 09 	cmp  %g1, %o1
                                 
40018a70:	0a 80 00 36 	bcs  40018b48 <_Heap_Resize_block+0x120>
      
40018a74:	90 10 20 04 	mov  4, %o0
                                   
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
40018a78:	c2 02 60 04 	ld  [ %o1 + 4 ], %g1
                          
40018a7c:	82 08 7f fe 	and  %g1, -2, %g1
                             
  uintptr_t block_end = block_begin + block_size;
                    
40018a80:	86 02 40 01 	add  %o1, %g1, %g3
                            
40018a84:	c4 00 e0 04 	ld  [ %g3 + 4 ], %g2
                          
40018a88:	84 08 bf fe 	and  %g2, -2, %g2
                             
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;
                
40018a8c:	b0 00 c0 02 	add  %g3, %g2, %i0
                            
40018a90:	a0 22 00 19 	sub  %o0, %i1, %l0
                            
40018a94:	f0 06 20 04 	ld  [ %i0 + 4 ], %i0
                          
  uintptr_t alloc_size = block_end - alloc_begin + HEAP_ALLOC_BONUS;
 
40018a98:	88 00 c0 10 	add  %g3, %l0, %g4
                            
  if ( next_block_is_free ) {
                                        
40018a9c:	80 8e 20 01 	btst  1, %i0
                                  
40018aa0:	12 80 00 27 	bne  40018b3c <_Heap_Resize_block+0x114>
      
40018aa4:	c8 26 c0 00 	st  %g4, [ %i3 ]
                              
    alloc_size += next_block_size;
                                   
40018aa8:	88 01 00 02 	add  %g4, %g2, %g4
                            
  if ( new_alloc_size > alloc_size ) {
                               
40018aac:	80 a6 80 04 	cmp  %i2, %g4
                                 
40018ab0:	18 80 00 26 	bgu  40018b48 <_Heap_Resize_block+0x120>
      
40018ab4:	b0 10 20 01 	mov  1, %i0
                                   
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
      
40018ab8:	c8 02 60 04 	ld  [ %o1 + 4 ], %g4
                          
40018abc:	f6 00 e0 08 	ld  [ %g3 + 8 ], %i3
                          
40018ac0:	f0 00 e0 0c 	ld  [ %g3 + 0xc ], %i0
                        
    block_size += next_block_size;
                                   
40018ac4:	82 00 40 02 	add  %g1, %g2, %g1
                            
40018ac8:	86 09 20 01 	and  %g4, 1, %g3
                              
  block->size_and_flag = size | flag;
                                
40018acc:	86 10 c0 01 	or  %g3, %g1, %g3
                             
40018ad0:	c6 22 60 04 	st  %g3, [ %o1 + 4 ]
                          
  return (Heap_Block *) ((uintptr_t) block + offset);
                
40018ad4:	82 02 40 01 	add  %o1, %g1, %g1
                            
  prev->next = next;
                                                 
40018ad8:	f6 26 20 08 	st  %i3, [ %i0 + 8 ]
                          
    next_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
               
40018adc:	c8 00 60 04 	ld  [ %g1 + 4 ], %g4
                          
  next->prev = prev;
                                                 
40018ae0:	f0 26 e0 0c 	st  %i0, [ %i3 + 0xc ]
                        
40018ae4:	88 11 20 01 	or  %g4, 1, %g4
                               
    --stats->free_blocks;
                                            
40018ae8:	c6 07 60 44 	ld  [ %i5 + 0x44 ], %g3
                       
    next_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
               
40018aec:	c8 20 60 04 	st  %g4, [ %g1 + 4 ]
                          
    --stats->free_blocks;
                                            
40018af0:	86 00 ff ff 	add  %g3, -1, %g3
                             
    stats->free_size -= next_block_size;
                             
40018af4:	c2 07 60 3c 	ld  [ %i5 + 0x3c ], %g1
                       
40018af8:	84 20 40 02 	sub  %g1, %g2, %g2
                            
    --stats->free_blocks;
                                            
40018afc:	c6 27 60 44 	st  %g3, [ %i5 + 0x44 ]
                       
    stats->free_size -= next_block_size;
                             
40018b00:	c4 27 60 3c 	st  %g2, [ %i5 + 0x3c ]
                       
  block = _Heap_Block_allocate( heap, block, alloc_begin, new_alloc_size );

40018b04:	96 10 00 1a 	mov  %i2, %o3
                                 
40018b08:	94 10 00 19 	mov  %i1, %o2
                                 
40018b0c:	7f ff bb 00 	call  4000770c <_Heap_Block_allocate>
         
40018b10:	90 10 00 1d 	mov  %i5, %o0
                                 
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
40018b14:	c2 02 20 04 	ld  [ %o0 + 4 ], %g1
                          
  ++stats->resizes;
                                                  
40018b18:	c4 07 60 64 	ld  [ %i5 + 0x64 ], %g2
                       
40018b1c:	82 08 7f fe 	and  %g1, -2, %g1
                             
  *new_size = (uintptr_t) next_block - alloc_begin + HEAP_ALLOC_BONUS;

40018b20:	90 02 00 10 	add  %o0, %l0, %o0
                            
40018b24:	90 00 40 08 	add  %g1, %o0, %o0
                            
40018b28:	d0 27 00 00 	st  %o0, [ %i4 ]
                              
  ++stats->resizes;
                                                  
40018b2c:	82 00 a0 01 	add  %g2, 1, %g1
                              
40018b30:	c2 27 60 64 	st  %g1, [ %i5 + 0x64 ]
                       
  return HEAP_RESIZE_SUCCESSFUL;
                                     
40018b34:	81 c7 e0 08 	ret 
                                          
40018b38:	91 e8 20 00 	restore  %g0, 0, %o0
                          
  if ( new_alloc_size > alloc_size ) {
                               
40018b3c:	80 a6 80 04 	cmp  %i2, %g4
                                 
40018b40:	08 bf ff f1 	bleu  40018b04 <_Heap_Resize_block+0xdc>
      
40018b44:	b0 10 20 01 	mov  1, %i0
                                   
      old_size,
                                                      
      new_size
                                                       
    );
                                                               
  }
                                                                  
  return HEAP_RESIZE_FATAL_ERROR;
                                    
}
                                                                    
40018b48:	81 c7 e0 08 	ret 
                                          
40018b4c:	81 e8 00 00 	restore 
                                      

                                                                     

400085c0 <_Heap_Size_of_alloc_area>: return value - (value % alignment);
400085c0:	c4 02 20 10 	ld  [ %o0 + 0x10 ], %g2
                       <== NOT EXECUTED
  return (uintptr_t) block >= (uintptr_t) heap->first_block
          
400085c4:	c8 02 20 20 	ld  [ %o0 + 0x20 ], %g4
                       <== NOT EXECUTED
  return value - (value % alignment);
                                
400085c8:	81 80 20 00 	wr  %g0, %y
                                   <== NOT EXECUTED
400085cc:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
400085d0:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
400085d4:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
400085d8:	82 72 40 02 	udiv  %o1, %g2, %g1
                           <== NOT EXECUTED
400085dc:	82 58 40 02 	smul  %g1, %g2, %g1
                           <== NOT EXECUTED
    - HEAP_BLOCK_HEADER_SIZE);
                                       
400085e0:	82 00 7f f8 	add  %g1, -8, %g1
                             <== NOT EXECUTED
    && (uintptr_t) block <= (uintptr_t) heap->last_block;
            
400085e4:	80 a1 00 01 	cmp  %g4, %g1
                                 <== NOT EXECUTED
400085e8:	18 80 00 15 	bgu  4000863c <_Heap_Size_of_alloc_area+0x7c>
 <== NOT EXECUTED
400085ec:	86 10 20 00 	clr  %g3
                                      
400085f0:	da 02 20 24 	ld  [ %o0 + 0x24 ], %o5
                       
400085f4:	80 a3 40 01 	cmp  %o5, %g1
                                 
400085f8:	0a 80 00 11 	bcs  4000863c <_Heap_Size_of_alloc_area+0x7c>
 <== NEVER TAKEN
400085fc:	01 00 00 00 	nop 
                                          
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
40008600:	c4 00 60 04 	ld  [ %g1 + 4 ], %g2
                          
40008604:	84 08 bf fe 	and  %g2, -2, %g2
                             
  return (Heap_Block *) ((uintptr_t) block + offset);
                
40008608:	82 00 80 01 	add  %g2, %g1, %g1
                            
    && (uintptr_t) block <= (uintptr_t) heap->last_block;
            
4000860c:	80 a1 00 01 	cmp  %g4, %g1
                                 
40008610:	18 80 00 0b 	bgu  4000863c <_Heap_Size_of_alloc_area+0x7c>
 <== NEVER TAKEN
40008614:	80 a3 40 01 	cmp  %o5, %g1
                                 
40008618:	0a 80 00 09 	bcs  4000863c <_Heap_Size_of_alloc_area+0x7c>
 <== NEVER TAKEN
4000861c:	01 00 00 00 	nop 
                                          
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;
                
40008620:	c4 00 60 04 	ld  [ %g1 + 4 ], %g2
                          
  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 )
                           
40008624:	80 88 a0 01 	btst  1, %g2
                                  
40008628:	02 80 00 05 	be  4000863c <_Heap_Size_of_alloc_area+0x7c>
  <== NEVER TAKEN
4000862c:	82 20 40 09 	sub  %g1, %o1, %g1
                            
  ) {
                                                                
    return false;
                                                    
  }
                                                                  

                                                                     
  *alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;

40008630:	82 00 60 04 	add  %g1, 4, %g1
                              
40008634:	c2 22 80 00 	st  %g1, [ %o2 ]
                              

                                                                     
  return true;
                                                       
40008638:	86 10 20 01 	mov  1, %g3
                                   
}
                                                                    
4000863c:	81 c3 e0 08 	retl 
                                         
40008640:	90 08 e0 ff 	and  %g3, 0xff, %o0
                           

                                                                     

4000777c <_Heap_Walk>: bool _Heap_Walk( Heap_Control *heap, int source, bool dump ) {
4000777c:	9d e3 bf 78 	save  %sp, -136, %sp
                          
  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;
                     
40007780:	80 a6 a0 00 	cmp  %i2, 0
                                   
40007784:	02 80 00 0b 	be  400077b0 <_Heap_Walk+0x34>
                
40007788:	03 10 00 54 	sethi  %hi(0x40015000), %g1
                   

                                                                     
  if ( !_System_state_Is_up( _System_state_Get() ) ) {
               
4000778c:	c2 00 60 3c 	ld  [ %g1 + 0x3c ], %g1	! 4001503c <_System_state_Current>

    _Heap_Walk_print : _Heap_Walk_print_nothing;
                     
40007790:	21 10 00 1d 	sethi  %hi(0x40007400), %l0
                   
  if ( !_System_state_Is_up( _System_state_Get() ) ) {
               
40007794:	80 a0 60 02 	cmp  %g1, 2
                                   
40007798:	02 80 00 0b 	be  400077c4 <_Heap_Walk+0x48>
                <== ALWAYS TAKEN
4000779c:	a0 14 23 18 	or  %l0, 0x318, %l0
                           
    return true;
                                                     
400077a0:	b4 10 20 01 	mov  1, %i2
                                   
400077a4:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           

                                                                     
    block = next_block;
                                              
  } while ( block != first_block );
                                  

                                                                     
  return true;
                                                       
}
                                                                    
400077a8:	81 c7 e0 08 	ret 
                                          
400077ac:	81 e8 00 00 	restore 
                                      
  if ( !_System_state_Is_up( _System_state_Get() ) ) {
               
400077b0:	c2 00 60 3c 	ld  [ %g1 + 0x3c ], %g1
                       
    _Heap_Walk_print : _Heap_Walk_print_nothing;
                     
400077b4:	21 10 00 1d 	sethi  %hi(0x40007400), %l0
                   
  if ( !_System_state_Is_up( _System_state_Get() ) ) {
               
400077b8:	80 a0 60 02 	cmp  %g1, 2
                                   
400077bc:	12 bf ff f9 	bne  400077a0 <_Heap_Walk+0x24>
               
400077c0:	a0 14 23 10 	or  %l0, 0x310, %l0
                           
  Heap_Block *const first_block = heap->first_block;
                 
400077c4:	e4 06 20 20 	ld  [ %i0 + 0x20 ], %l2
                       
  Heap_Block *const last_block = heap->last_block;
                   
400077c8:	e2 06 20 24 	ld  [ %i0 + 0x24 ], %l1
                       
  (*printer)(
                                                        
400077cc:	c6 06 20 0c 	ld  [ %i0 + 0xc ], %g3
                        
400077d0:	c4 06 20 08 	ld  [ %i0 + 8 ], %g2
                          
400077d4:	c2 06 20 1c 	ld  [ %i0 + 0x1c ], %g1
                       
400077d8:	c2 23 a0 5c 	st  %g1, [ %sp + 0x5c ]
                       
400077dc:	15 10 00 43 	sethi  %hi(0x40010c00), %o2
                   
400077e0:	c6 23 a0 6c 	st  %g3, [ %sp + 0x6c ]
                       
400077e4:	94 12 a2 60 	or  %o2, 0x260, %o2
                           
400077e8:	c4 23 a0 68 	st  %g2, [ %sp + 0x68 ]
                       
400077ec:	92 10 20 00 	clr  %o1
                                      
400077f0:	e2 23 a0 64 	st  %l1, [ %sp + 0x64 ]
                       
400077f4:	90 10 00 19 	mov  %i1, %o0
                                 
400077f8:	e4 23 a0 60 	st  %l2, [ %sp + 0x60 ]
                       
  uintptr_t const page_size = heap->page_size;
                       
400077fc:	ec 06 20 10 	ld  [ %i0 + 0x10 ], %l6
                       
  uintptr_t const min_block_size = heap->min_block_size;
             
40007800:	e6 06 20 14 	ld  [ %i0 + 0x14 ], %l3
                       
  (*printer)(
                                                        
40007804:	da 06 20 18 	ld  [ %i0 + 0x18 ], %o5
                       
40007808:	98 10 00 13 	mov  %l3, %o4
                                 
4000780c:	9f c4 00 00 	call  %l0
                                     
40007810:	96 10 00 16 	mov  %l6, %o3
                                 
  if ( page_size == 0 ) {
                                            
40007814:	80 a5 a0 00 	cmp  %l6, 0
                                   
40007818:	12 80 00 0a 	bne  40007840 <_Heap_Walk+0xc4>
               
4000781c:	92 10 20 01 	mov  1, %o1
                                   
    (*printer)( source, true, "page size is zero\n" );
               
40007820:	90 10 00 19 	mov  %i1, %o0
                                 
    return false;
                                                    
40007824:	b4 10 20 00 	clr  %i2
                                      
    (*printer)( source, true, "page size is zero\n" );
               
40007828:	15 10 00 43 	sethi  %hi(0x40010c00), %o2
                   
4000782c:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
40007830:	9f c4 00 00 	call  %l0
                                     
40007834:	94 12 a2 f8 	or  %o2, 0x2f8, %o2
                           
}
                                                                    
40007838:	81 c7 e0 08 	ret 
                                          
4000783c:	81 e8 00 00 	restore 
                                      
  if ( !_Addresses_Is_aligned( (void *) page_size ) ) {
              
40007840:	80 8d a0 07 	btst  7, %l6
                                  
40007844:	02 80 00 0b 	be  40007870 <_Heap_Walk+0xf4>
                
40007848:	96 10 00 16 	mov  %l6, %o3
                                 
    (*printer)(
                                                      
4000784c:	92 10 20 01 	mov  1, %o1
                                   
40007850:	15 10 00 43 	sethi  %hi(0x40010c00), %o2
                   
40007854:	90 10 00 19 	mov  %i1, %o0
                                 
40007858:	94 12 a3 10 	or  %o2, 0x310, %o2
                           
4000785c:	9f c4 00 00 	call  %l0
                                     
40007860:	b4 10 20 00 	clr  %i2
                                      
40007864:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
40007868:	81 c7 e0 08 	ret 
                                          
4000786c:	81 e8 00 00 	restore 
                                      
  return (value % alignment) == 0;
                                   
40007870:	81 80 20 00 	wr  %g0, %y
                                   
40007874:	01 00 00 00 	nop 
                                          
40007878:	01 00 00 00 	nop 
                                          
4000787c:	01 00 00 00 	nop 
                                          
40007880:	82 74 c0 16 	udiv  %l3, %l6, %g1
                           
40007884:	82 58 40 16 	smul  %g1, %l6, %g1
                           
  if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {
            
40007888:	80 a4 c0 01 	cmp  %l3, %g1
                                 
4000788c:	02 80 00 0b 	be  400078b8 <_Heap_Walk+0x13c>
               
40007890:	96 10 00 13 	mov  %l3, %o3
                                 
    (*printer)(
                                                      
40007894:	92 10 20 01 	mov  1, %o1
                                   
40007898:	15 10 00 43 	sethi  %hi(0x40010c00), %o2
                   
4000789c:	90 10 00 19 	mov  %i1, %o0
                                 
400078a0:	94 12 a3 30 	or  %o2, 0x330, %o2
                           
400078a4:	9f c4 00 00 	call  %l0
                                     
400078a8:	b4 10 20 00 	clr  %i2
                                      
400078ac:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
400078b0:	81 c7 e0 08 	ret 
                                          
400078b4:	81 e8 00 00 	restore 
                                      
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
                 
400078b8:	86 04 a0 08 	add  %l2, 8, %g3
                              
  return (value % alignment) == 0;
                                   
400078bc:	81 80 20 00 	wr  %g0, %y
                                   
400078c0:	01 00 00 00 	nop 
                                          
400078c4:	01 00 00 00 	nop 
                                          
400078c8:	01 00 00 00 	nop 
                                          
400078cc:	82 70 c0 16 	udiv  %g3, %l6, %g1
                           
400078d0:	82 58 40 16 	smul  %g1, %l6, %g1
                           
  if (
                                                               
400078d4:	80 a0 c0 01 	cmp  %g3, %g1
                                 
400078d8:	02 80 00 0b 	be  40007904 <_Heap_Walk+0x188>
               
400078dc:	96 10 00 12 	mov  %l2, %o3
                                 
    (*printer)(
                                                      
400078e0:	92 10 20 01 	mov  1, %o1
                                   
400078e4:	15 10 00 43 	sethi  %hi(0x40010c00), %o2
                   
400078e8:	90 10 00 19 	mov  %i1, %o0
                                 
400078ec:	94 12 a3 58 	or  %o2, 0x358, %o2
                           
400078f0:	9f c4 00 00 	call  %l0
                                     
400078f4:	b4 10 20 00 	clr  %i2
                                      
400078f8:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
400078fc:	81 c7 e0 08 	ret 
                                          
40007900:	81 e8 00 00 	restore 
                                      
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;
                
40007904:	c2 04 a0 04 	ld  [ %l2 + 4 ], %g1
                          
  if ( !_Heap_Is_prev_used( first_block ) ) {
                        
40007908:	80 88 60 01 	btst  1, %g1
                                  
4000790c:	12 80 00 0a 	bne  40007934 <_Heap_Walk+0x1b8>
              
40007910:	92 10 20 01 	mov  1, %o1
                                   
    (*printer)(
                                                      
40007914:	15 10 00 43 	sethi  %hi(0x40010c00), %o2
                   
40007918:	90 10 00 19 	mov  %i1, %o0
                                 
4000791c:	94 12 a3 90 	or  %o2, 0x390, %o2
                           
40007920:	9f c4 00 00 	call  %l0
                                     
40007924:	b4 10 20 00 	clr  %i2
                                      
40007928:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
4000792c:	81 c7 e0 08 	ret 
                                          
40007930:	81 e8 00 00 	restore 
                                      
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
40007934:	c2 04 60 04 	ld  [ %l1 + 4 ], %g1
                          
40007938:	82 08 7f fe 	and  %g1, -2, %g1
                             
  return (Heap_Block *) ((uintptr_t) block + offset);
                
4000793c:	82 04 40 01 	add  %l1, %g1, %g1
                            
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;
                
40007940:	c6 00 60 04 	ld  [ %g1 + 4 ], %g3
                          
  if ( _Heap_Is_free( last_block ) ) {
                               
40007944:	80 88 e0 01 	btst  1, %g3
                                  
40007948:	12 80 00 09 	bne  4000796c <_Heap_Walk+0x1f0>
              
4000794c:	15 10 00 43 	sethi  %hi(0x40010c00), %o2
                   
    (*printer)(
                                                      
40007950:	90 10 00 19 	mov  %i1, %o0
                                 
40007954:	94 12 a3 c0 	or  %o2, 0x3c0, %o2
                           
40007958:	9f c4 00 00 	call  %l0
                                     
4000795c:	b4 10 20 00 	clr  %i2
                                      
40007960:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
40007964:	81 c7 e0 08 	ret 
                                          
40007968:	81 e8 00 00 	restore 
                                      
  if (
                                                               
4000796c:	80 a4 80 01 	cmp  %l2, %g1
                                 
40007970:	02 80 00 0a 	be  40007998 <_Heap_Walk+0x21c>
               
40007974:	92 10 20 01 	mov  1, %o1
                                   
    (*printer)(
                                                      
40007978:	15 10 00 43 	sethi  %hi(0x40010c00), %o2
                   
4000797c:	90 10 00 19 	mov  %i1, %o0
                                 
40007980:	94 12 a3 d8 	or  %o2, 0x3d8, %o2
                           
40007984:	9f c4 00 00 	call  %l0
                                     
40007988:	b4 10 20 00 	clr  %i2
                                      
4000798c:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
40007990:	81 c7 e0 08 	ret 
                                          
40007994:	81 e8 00 00 	restore 
                                      
  uintptr_t const page_size = heap->page_size;
                       
40007998:	fa 06 20 10 	ld  [ %i0 + 0x10 ], %i5
                       
  return _Heap_Free_list_head(heap)->next;
                           
4000799c:	e8 06 20 08 	ld  [ %i0 + 8 ], %l4
                          
400079a0:	c6 06 20 20 	ld  [ %i0 + 0x20 ], %g3
                       
  const Heap_Block *prev_block = free_list_tail;
                     
400079a4:	88 10 00 18 	mov  %i0, %g4
                                 
  while ( free_block != free_list_tail ) {
                           
400079a8:	80 a6 00 14 	cmp  %i0, %l4
                                 
400079ac:	02 80 00 1f 	be  40007a28 <_Heap_Walk+0x2ac>
               
400079b0:	80 a5 00 03 	cmp  %l4, %g3
                                 
    && (uintptr_t) block <= (uintptr_t) heap->last_block;
            
400079b4:	0a 80 00 f9 	bcs  40007d98 <_Heap_Walk+0x61c>
              
400079b8:	96 10 00 14 	mov  %l4, %o3
                                 
400079bc:	c2 06 20 24 	ld  [ %i0 + 0x24 ], %g1
                       
400079c0:	80 a0 40 14 	cmp  %g1, %l4
                                 
400079c4:	0a 80 00 f6 	bcs  40007d9c <_Heap_Walk+0x620>
              <== NEVER TAKEN
400079c8:	92 10 20 01 	mov  1, %o1
                                   
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
                 
400079cc:	b8 05 20 08 	add  %l4, 8, %i4
                              
  return (value % alignment) == 0;
                                   
400079d0:	81 80 20 00 	wr  %g0, %y
                                   
400079d4:	01 00 00 00 	nop 
                                          
400079d8:	01 00 00 00 	nop 
                                          
400079dc:	01 00 00 00 	nop 
                                          
400079e0:	82 77 00 1d 	udiv  %i4, %i5, %g1
                           
400079e4:	82 58 40 1d 	smul  %g1, %i5, %g1
                           
    if (
                                                             
400079e8:	80 a7 00 01 	cmp  %i4, %g1
                                 
400079ec:	12 80 00 e4 	bne  40007d7c <_Heap_Walk+0x600>
              
400079f0:	15 10 00 44 	sethi  %hi(0x40011000), %o2
                   
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
400079f4:	c2 05 20 04 	ld  [ %l4 + 4 ], %g1
                          
400079f8:	82 08 7f fe 	and  %g1, -2, %g1
                             
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;
                
400079fc:	82 05 00 01 	add  %l4, %g1, %g1
                            
40007a00:	c2 00 60 04 	ld  [ %g1 + 4 ], %g1
                          
    if ( _Heap_Is_used( free_block ) ) {
                             
40007a04:	80 88 60 01 	btst  1, %g1
                                  
40007a08:	12 80 00 d6 	bne  40007d60 <_Heap_Walk+0x5e4>
              
40007a0c:	15 10 00 44 	sethi  %hi(0x40011000), %o2
                   
    if ( free_block->prev != prev_block ) {
                          
40007a10:	d8 05 20 0c 	ld  [ %l4 + 0xc ], %o4
                        
40007a14:	80 a3 00 04 	cmp  %o4, %g4
                                 
40007a18:	12 80 00 c9 	bne  40007d3c <_Heap_Walk+0x5c0>
              
40007a1c:	88 10 00 14 	mov  %l4, %g4
                                 
    free_block = free_block->next;
                                   
40007a20:	10 bf ff e2 	b  400079a8 <_Heap_Walk+0x22c>
                
40007a24:	e8 05 20 08 	ld  [ %l4 + 8 ], %l4
                          
  (*printer)(
                                                        
40007a28:	2f 10 00 43 	sethi  %hi(0x40010c00), %l7
                   
40007a2c:	82 15 e2 40 	or  %l7, 0x240, %g1	! 40010e40 <_Objects_Information_table+0x60>

40007a30:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
        : (block->next == free_list_tail ? " (= tail)" : "")
         
40007a34:	03 10 00 43 	sethi  %hi(0x40010c00), %g1
                   
40007a38:	82 10 62 50 	or  %g1, 0x250, %g1	! 40010e50 <_Objects_Information_table+0x70>

40007a3c:	c2 27 bf f4 	st  %g1, [ %fp + -12 ]
                        
  (*printer)(
                                                        
40007a40:	03 10 00 43 	sethi  %hi(0x40010c00), %g1
                   
40007a44:	82 10 62 20 	or  %g1, 0x220, %g1	! 40010e20 <_Objects_Information_table+0x40>

40007a48:	c2 27 bf f8 	st  %g1, [ %fp + -8 ]
                         
        : (block->prev == free_list_head ? " (= head)" : ""),
        
40007a4c:	03 10 00 43 	sethi  %hi(0x40010c00), %g1
                   
40007a50:	82 10 62 30 	or  %g1, 0x230, %g1	! 40010e30 <_Objects_Information_table+0x50>

40007a54:	c2 27 bf f0 	st  %g1, [ %fp + -16 ]
                        
        : (block->next == free_list_tail ? " (= tail)" : "")
         
40007a58:	2b 10 00 44 	sethi  %hi(0x40011000), %l5
                   
  while ( free_block != free_list_tail ) {
                           
40007a5c:	ba 10 00 12 	mov  %l2, %i5
                                 
        : (block->next == free_list_tail ? " (= tail)" : "")
         
40007a60:	aa 15 61 98 	or  %l5, 0x198, %l5
                           
40007a64:	c2 07 60 04 	ld  [ %i5 + 4 ], %g1
                          
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
               
40007a68:	b6 08 7f fe 	and  %g1, -2, %i3
                             
  return (Heap_Block *) ((uintptr_t) block + offset);
                
40007a6c:	b8 07 40 1b 	add  %i5, %i3, %i4
                            
    && (uintptr_t) block <= (uintptr_t) heap->last_block;
            
40007a70:	80 a0 c0 1c 	cmp  %g3, %i4
                                 
40007a74:	18 80 00 06 	bgu  40007a8c <_Heap_Walk+0x310>
              <== NEVER TAKEN
40007a78:	ae 08 60 01 	and  %g1, 1, %l7
                              
40007a7c:	c6 06 20 24 	ld  [ %i0 + 0x24 ], %g3
                       
40007a80:	80 a0 c0 1c 	cmp  %g3, %i4
                                 
40007a84:	1a 80 00 0d 	bcc  40007ab8 <_Heap_Walk+0x33c>
              
40007a88:	01 00 00 00 	nop 
                                          
      (*printer)(
                                                    
40007a8c:	98 10 00 1c 	mov  %i4, %o4
                                 
40007a90:	96 10 00 1d 	mov  %i5, %o3
                                 
40007a94:	92 10 20 01 	mov  1, %o1
                                   
40007a98:	90 10 00 19 	mov  %i1, %o0
                                 
      return false;
                                                  
40007a9c:	b4 10 20 00 	clr  %i2
                                      
      (*printer)(
                                                    
40007aa0:	15 10 00 44 	sethi  %hi(0x40011000), %o2
                   
40007aa4:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
40007aa8:	9f c4 00 00 	call  %l0
                                     
40007aac:	94 12 a2 30 	or  %o2, 0x230, %o2
                           
}
                                                                    
40007ab0:	81 c7 e0 08 	ret 
                                          
40007ab4:	81 e8 00 00 	restore 
                                      
  return (value % alignment) == 0;
                                   
40007ab8:	81 80 20 00 	wr  %g0, %y
                                   
40007abc:	01 00 00 00 	nop 
                                          
40007ac0:	01 00 00 00 	nop 
                                          
40007ac4:	01 00 00 00 	nop 
                                          
40007ac8:	86 76 c0 16 	udiv  %i3, %l6, %g3
                           
40007acc:	86 58 c0 16 	smul  %g3, %l6, %g3
                           
    if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {

40007ad0:	80 a6 c0 03 	cmp  %i3, %g3
                                 
40007ad4:	02 80 00 17 	be  40007b30 <_Heap_Walk+0x3b4>
               
40007ad8:	86 1f 40 11 	xor  %i5, %l1, %g3
                            
40007adc:	80 a7 40 11 	cmp  %i5, %l1
                                 
40007ae0:	12 80 00 79 	bne  40007cc4 <_Heap_Walk+0x548>
              
40007ae4:	98 10 00 1b 	mov  %i3, %o4
                                 
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;
                
40007ae8:	c6 07 20 04 	ld  [ %i4 + 4 ], %g3
                          
    if ( !_Heap_Is_prev_used( next_block ) ) {
                       
40007aec:	80 88 e0 01 	btst  1, %g3
                                  
40007af0:	02 80 00 30 	be  40007bb0 <_Heap_Walk+0x434>
               
40007af4:	80 a5 e0 00 	cmp  %l7, 0
                                   
    } else if (prev_used) {
                                          
40007af8:	22 80 00 25 	be,a   40007b8c <_Heap_Walk+0x410>
            
40007afc:	da 07 40 00 	ld  [ %i5 ], %o5
                              
      (*printer)(
                                                    
40007b00:	15 10 00 44 	sethi  %hi(0x40011000), %o2
                   
40007b04:	98 10 00 1b 	mov  %i3, %o4
                                 
40007b08:	96 10 00 1d 	mov  %i5, %o3
                                 
40007b0c:	94 12 a1 d0 	or  %o2, 0x1d0, %o2
                           
40007b10:	92 10 20 00 	clr  %o1
                                      
40007b14:	9f c4 00 00 	call  %l0
                                     
40007b18:	90 10 00 19 	mov  %i1, %o0
                                 
  } while ( block != first_block );
                                  
40007b1c:	80 a4 80 1c 	cmp  %l2, %i4
                                 
40007b20:	02 bf ff 20 	be  400077a0 <_Heap_Walk+0x24>
                
40007b24:	ba 10 00 1c 	mov  %i4, %i5
                                 
40007b28:	10 bf ff cf 	b  40007a64 <_Heap_Walk+0x2e8>
                
40007b2c:	c6 06 20 20 	ld  [ %i0 + 0x20 ], %g3
                       
    bool const is_not_last_block = block != last_block;
              
40007b30:	80 a0 00 03 	cmp  %g0, %g3
                                 
40007b34:	88 40 20 00 	addx  %g0, 0, %g4
                             
    if ( block_size < min_block_size && is_not_last_block ) {
        
40007b38:	80 a6 c0 13 	cmp  %i3, %l3
                                 
40007b3c:	86 40 20 00 	addx  %g0, 0, %g3
                             
40007b40:	86 09 00 03 	and  %g4, %g3, %g3
                            
40007b44:	80 a0 e0 00 	cmp  %g3, 0
                                   
40007b48:	12 80 00 53 	bne  40007c94 <_Heap_Walk+0x518>
              
40007b4c:	b4 10 00 03 	mov  %g3, %i2
                                 
    if ( next_block_begin <= block_begin && is_not_last_block ) {
    
40007b50:	80 a7 40 1c 	cmp  %i5, %i4
                                 
40007b54:	0a bf ff e5 	bcs  40007ae8 <_Heap_Walk+0x36c>
              
40007b58:	80 a1 20 00 	cmp  %g4, 0
                                   
40007b5c:	22 bf ff e4 	be,a   40007aec <_Heap_Walk+0x370>
            
40007b60:	c6 07 20 04 	ld  [ %i4 + 4 ], %g3
                          
      (*printer)(
                                                    
40007b64:	98 10 00 1c 	mov  %i4, %o4
                                 
40007b68:	96 10 00 1d 	mov  %i5, %o3
                                 
40007b6c:	15 10 00 44 	sethi  %hi(0x40011000), %o2
                   
40007b70:	92 10 20 01 	mov  1, %o1
                                   
40007b74:	94 12 a0 f0 	or  %o2, 0xf0, %o2
                            
40007b78:	9f c4 00 00 	call  %l0
                                     
40007b7c:	90 10 00 19 	mov  %i1, %o0
                                 
40007b80:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
40007b84:	81 c7 e0 08 	ret 
                                          
40007b88:	81 e8 00 00 	restore 
                                      
      (*printer)(
                                                    
40007b8c:	98 10 00 1b 	mov  %i3, %o4
                                 
40007b90:	96 10 00 1d 	mov  %i5, %o3
                                 
40007b94:	15 10 00 44 	sethi  %hi(0x40011000), %o2
                   
40007b98:	92 10 20 00 	clr  %o1
                                      
40007b9c:	94 12 a1 e8 	or  %o2, 0x1e8, %o2
                           
40007ba0:	9f c4 00 00 	call  %l0
                                     
40007ba4:	90 10 00 19 	mov  %i1, %o0
                                 
  } while ( block != first_block );
                                  
40007ba8:	10 bf ff de 	b  40007b20 <_Heap_Walk+0x3a4>
                
40007bac:	80 a4 80 1c 	cmp  %l2, %i4
                                 
  (*printer)(
                                                        
40007bb0:	da 07 60 0c 	ld  [ %i5 + 0xc ], %o5
                        
40007bb4:	c6 06 20 08 	ld  [ %i0 + 8 ], %g3
                          
  return _Heap_Free_list_tail(heap)->prev;
                           
40007bb8:	de 06 20 0c 	ld  [ %i0 + 0xc ], %o7
                        
40007bbc:	80 a0 c0 0d 	cmp  %g3, %o5
                                 
40007bc0:	02 80 00 05 	be  40007bd4 <_Heap_Walk+0x458>
               
40007bc4:	c8 07 bf f8 	ld  [ %fp + -8 ], %g4
                         
        : (block->prev == free_list_head ? " (= head)" : ""),
        
40007bc8:	80 a5 00 0d 	cmp  %l4, %o5
                                 
40007bcc:	02 80 00 22 	be  40007c54 <_Heap_Walk+0x4d8>
               
40007bd0:	88 10 00 15 	mov  %l5, %g4
                                 
  (*printer)(
                                                        
40007bd4:	c6 07 60 08 	ld  [ %i5 + 8 ], %g3
                          
40007bd8:	80 a3 c0 03 	cmp  %o7, %g3
                                 
40007bdc:	02 80 00 05 	be  40007bf0 <_Heap_Walk+0x474>
               
40007be0:	f4 07 bf fc 	ld  [ %fp + -4 ], %i2
                         
        : (block->next == free_list_tail ? " (= tail)" : "")
         
40007be4:	80 a5 00 03 	cmp  %l4, %g3
                                 
40007be8:	02 80 00 1d 	be  40007c5c <_Heap_Walk+0x4e0>
               
40007bec:	b4 10 00 15 	mov  %l5, %i2
                                 
  (*printer)(
                                                        
40007bf0:	f4 23 a0 64 	st  %i2, [ %sp + 0x64 ]
                       
40007bf4:	98 10 00 1b 	mov  %i3, %o4
                                 
40007bf8:	c6 23 a0 60 	st  %g3, [ %sp + 0x60 ]
                       
40007bfc:	96 10 00 1d 	mov  %i5, %o3
                                 
40007c00:	c8 23 a0 5c 	st  %g4, [ %sp + 0x5c ]
                       
40007c04:	92 10 20 00 	clr  %o1
                                      
40007c08:	15 10 00 44 	sethi  %hi(0x40011000), %o2
                   
40007c0c:	90 10 00 19 	mov  %i1, %o0
                                 
40007c10:	9f c4 00 00 	call  %l0
                                     
40007c14:	94 12 a1 28 	or  %o2, 0x128, %o2
                           
  if ( block_size != next_block->prev_size ) {
                       
40007c18:	da 07 00 00 	ld  [ %i4 ], %o5
                              
40007c1c:	80 a6 c0 0d 	cmp  %i3, %o5
                                 
40007c20:	02 80 00 11 	be  40007c64 <_Heap_Walk+0x4e8>
               
40007c24:	98 10 00 1b 	mov  %i3, %o4
                                 
    (*printer)(
                                                      
40007c28:	f8 23 a0 5c 	st  %i4, [ %sp + 0x5c ]
                       
40007c2c:	96 10 00 1d 	mov  %i5, %o3
                                 
40007c30:	92 10 20 01 	mov  1, %o1
                                   
40007c34:	15 10 00 44 	sethi  %hi(0x40011000), %o2
                   
40007c38:	90 10 00 19 	mov  %i1, %o0
                                 
40007c3c:	94 12 a1 60 	or  %o2, 0x160, %o2
                           
40007c40:	9f c4 00 00 	call  %l0
                                     
40007c44:	b4 10 20 00 	clr  %i2
                                      
40007c48:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
40007c4c:	81 c7 e0 08 	ret 
                                          
40007c50:	81 e8 00 00 	restore 
                                      
        : (block->prev == free_list_head ? " (= head)" : ""),
        
40007c54:	10 bf ff e0 	b  40007bd4 <_Heap_Walk+0x458>
                
40007c58:	c8 07 bf f0 	ld  [ %fp + -16 ], %g4
                        
        : (block->next == free_list_tail ? " (= tail)" : "")
         
40007c5c:	10 bf ff e5 	b  40007bf0 <_Heap_Walk+0x474>
                
40007c60:	f4 07 bf f4 	ld  [ %fp + -12 ], %i2
                        
  if ( !prev_used ) {
                                                
40007c64:	80 a5 e0 00 	cmp  %l7, 0
                                   
40007c68:	12 80 00 21 	bne  40007cec <_Heap_Walk+0x570>
              
40007c6c:	96 10 00 1d 	mov  %i5, %o3
                                 
    (*printer)(
                                                      
40007c70:	92 10 20 01 	mov  1, %o1
                                   
40007c74:	15 10 00 44 	sethi  %hi(0x40011000), %o2
                   
40007c78:	90 10 00 19 	mov  %i1, %o0
                                 
40007c7c:	94 12 a1 a0 	or  %o2, 0x1a0, %o2
                           
40007c80:	9f c4 00 00 	call  %l0
                                     
40007c84:	b4 10 20 00 	clr  %i2
                                      
40007c88:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
40007c8c:	81 c7 e0 08 	ret 
                                          
40007c90:	81 e8 00 00 	restore 
                                      
      (*printer)(
                                                    
40007c94:	9a 10 00 13 	mov  %l3, %o5
                                 
40007c98:	98 10 00 1b 	mov  %i3, %o4
                                 
40007c9c:	96 10 00 1d 	mov  %i5, %o3
                                 
40007ca0:	92 10 20 01 	mov  1, %o1
                                   
40007ca4:	15 10 00 44 	sethi  %hi(0x40011000), %o2
                   
40007ca8:	90 10 00 19 	mov  %i1, %o0
                                 
40007cac:	94 12 a0 c0 	or  %o2, 0xc0, %o2
                            
40007cb0:	9f c4 00 00 	call  %l0
                                     
40007cb4:	b4 10 20 00 	clr  %i2
                                      
40007cb8:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
40007cbc:	81 c7 e0 08 	ret 
                                          
40007cc0:	81 e8 00 00 	restore 
                                      
      (*printer)(
                                                    
40007cc4:	96 10 00 1d 	mov  %i5, %o3
                                 
40007cc8:	92 10 20 01 	mov  1, %o1
                                   
40007ccc:	15 10 00 44 	sethi  %hi(0x40011000), %o2
                   
40007cd0:	90 10 00 19 	mov  %i1, %o0
                                 
40007cd4:	94 12 a0 90 	or  %o2, 0x90, %o2
                            
40007cd8:	9f c4 00 00 	call  %l0
                                     
40007cdc:	b4 10 20 00 	clr  %i2
                                      
40007ce0:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
40007ce4:	81 c7 e0 08 	ret 
                                          
40007ce8:	81 e8 00 00 	restore 
                                      
  return _Heap_Free_list_head(heap)->next;
                           
40007cec:	c2 06 20 08 	ld  [ %i0 + 8 ], %g1
                          
  while ( free_block != free_list_tail ) {
                           
40007cf0:	80 a5 00 01 	cmp  %l4, %g1
                                 
40007cf4:	02 80 00 09 	be  40007d18 <_Heap_Walk+0x59c>
               <== NEVER TAKEN
40007cf8:	80 a7 40 01 	cmp  %i5, %g1
                                 
    if ( free_block == block ) {
                                     
40007cfc:	02 bf ff 89 	be  40007b20 <_Heap_Walk+0x3a4>
               
40007d00:	80 a4 80 1c 	cmp  %l2, %i4
                                 
    free_block = free_block->next;
                                   
40007d04:	c2 00 60 08 	ld  [ %g1 + 8 ], %g1
                          
  while ( free_block != free_list_tail ) {
                           
40007d08:	80 a5 00 01 	cmp  %l4, %g1
                                 
40007d0c:	12 bf ff fc 	bne  40007cfc <_Heap_Walk+0x580>
              
40007d10:	80 a7 40 01 	cmp  %i5, %g1
                                 
    (*printer)(
                                                      
40007d14:	96 10 00 1d 	mov  %i5, %o3
                                 
40007d18:	92 10 20 01 	mov  1, %o1
                                   
40007d1c:	15 10 00 44 	sethi  %hi(0x40011000), %o2
                   
40007d20:	90 10 00 19 	mov  %i1, %o0
                                 
40007d24:	94 12 a2 60 	or  %o2, 0x260, %o2
                           
40007d28:	9f c4 00 00 	call  %l0
                                     
40007d2c:	b4 10 20 00 	clr  %i2
                                      
40007d30:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
40007d34:	81 c7 e0 08 	ret 
                                          
40007d38:	81 e8 00 00 	restore 
                                      
      (*printer)(
                                                    
40007d3c:	92 10 20 01 	mov  1, %o1
                                   
40007d40:	15 10 00 44 	sethi  %hi(0x40011000), %o2
                   
40007d44:	90 10 00 19 	mov  %i1, %o0
                                 
40007d48:	94 12 a0 58 	or  %o2, 0x58, %o2
                            
40007d4c:	9f c4 00 00 	call  %l0
                                     
40007d50:	b4 10 20 00 	clr  %i2
                                      
40007d54:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
40007d58:	81 c7 e0 08 	ret 
                                          
40007d5c:	81 e8 00 00 	restore 
                                      
      (*printer)(
                                                    
40007d60:	90 10 00 19 	mov  %i1, %o0
                                 
40007d64:	94 12 a0 38 	or  %o2, 0x38, %o2
                            
40007d68:	9f c4 00 00 	call  %l0
                                     
40007d6c:	b4 10 20 00 	clr  %i2
                                      
40007d70:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
40007d74:	81 c7 e0 08 	ret 
                                          
40007d78:	81 e8 00 00 	restore 
                                      
      (*printer)(
                                                    
40007d7c:	90 10 00 19 	mov  %i1, %o0
                                 
40007d80:	94 12 a0 08 	or  %o2, 8, %o2
                               
40007d84:	9f c4 00 00 	call  %l0
                                     
40007d88:	b4 10 20 00 	clr  %i2
                                      
40007d8c:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
40007d90:	81 c7 e0 08 	ret 
                                          
40007d94:	81 e8 00 00 	restore 
                                      
      (*printer)(
                                                    
40007d98:	92 10 20 01 	mov  1, %o1
                                   
40007d9c:	15 10 00 44 	sethi  %hi(0x40011000), %o2
                   
40007da0:	90 10 00 19 	mov  %i1, %o0
                                 
40007da4:	94 12 a2 10 	or  %o2, 0x210, %o2
                           
40007da8:	9f c4 00 00 	call  %l0
                                     
40007dac:	b4 10 20 00 	clr  %i2
                                      
40007db0:	b0 0e a0 ff 	and  %i2, 0xff, %i0
                           
40007db4:	81 c7 e0 08 	ret 
                                          
40007db8:	81 e8 00 00 	restore 
                                      

                                                                     

4000710c <_IO_Printf>: #endif #include <rtems/score/io.h> int _IO_Printf( IO_Put_char put_char, void *arg, char const *fmt, ... ) {
4000710c:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  va_list ap;
                                                        
  int     len;
                                                       

                                                                     
  va_start( ap, fmt );
                                               
40007110:	82 07 a0 50 	add  %fp, 0x50, %g1
                           <== NOT EXECUTED
40007114:	f6 27 a0 50 	st  %i3, [ %fp + 0x50 ]
                       <== NOT EXECUTED
  len = _IO_Vprintf( put_char, arg, fmt, ap );
                       
40007118:	96 10 00 01 	mov  %g1, %o3
                                 <== NOT EXECUTED
  va_start( ap, fmt );
                                               
4000711c:	f8 27 a0 54 	st  %i4, [ %fp + 0x54 ]
                       <== NOT EXECUTED
  len = _IO_Vprintf( put_char, arg, fmt, ap );
                       
40007120:	94 10 00 1a 	mov  %i2, %o2
                                 <== NOT EXECUTED
  va_start( ap, fmt );
                                               
40007124:	fa 27 a0 58 	st  %i5, [ %fp + 0x58 ]
                       <== NOT EXECUTED
  len = _IO_Vprintf( put_char, arg, fmt, ap );
                       
40007128:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
  va_start( ap, fmt );
                                               
4000712c:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         <== NOT EXECUTED
  len = _IO_Vprintf( put_char, arg, fmt, ap );
                       
40007130:	40 00 00 5c 	call  400072a0 <_IO_Vprintf>
                  <== NOT EXECUTED
40007134:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
  va_end( ap );
                                                      

                                                                     
  return len;
                                                        
}
                                                                    
40007138:	81 c7 e0 08 	ret 
                                          
4000713c:	91 e8 00 08 	restore  %g0, %o0, %o0
                        

40007a18 <_IO_Vprintf>:
                                              
	return (p);
                                                         
}
                                                                    

                                                                     
int
                                                                  
_IO_Vprintf(IO_Put_char put_char, void *arg, char const *fmt, va_list ap)

{
                                                                    
40007a18:	9d e3 bf 50 	save  %sp, -176, %sp
                          
	char padc;
                                                          
	int stop = 0, retval = 0;
                                           

                                                                     
	num = 0;
                                                            

                                                                     
	if (fmt == NULL)
                                                    
40007a1c:	80 a6 a0 00 	cmp  %i2, 0
                                   
40007a20:	02 80 00 3e 	be  40007b18 <_IO_Vprintf+0x100>
              <== NEVER TAKEN
40007a24:	b8 10 00 18 	mov  %i0, %i4
                                 
		}
                                                                  
		percent = fmt - 1;
                                                 
		lflag = 0; ladjust = 0; sharpflag = 0; neg = 0;
                    
		sign = 0; dot = 0; dwidth = 0; upper = 0;
                          
		cflag = 0; hflag = 0; jflag = 0; tflag = 0; zflag = 0;
             
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40007a28:	31 10 00 1e 	sethi  %hi(0x40007800), %i0
                   
40007a2c:	03 10 00 66 	sethi  %hi(0x40019800), %g1
                   
40007a30:	a8 10 20 00 	clr  %l4
                                      
40007a34:	a4 10 20 00 	clr  %l2
                                      
40007a38:	b0 16 20 b8 	or  %i0, 0xb8, %i0
                            
40007a3c:	ae 10 60 f7 	or  %g1, 0xf7, %l7
                            
		while ((ch = (u_char)*fmt++) != '%' || stop) {
                     
40007a40:	c2 0e 80 00 	ldub  [ %i2 ], %g1
                            
40007a44:	a4 0c a0 01 	and  %l2, 1, %l2
                              
40007a48:	ba 06 a0 01 	add  %i2, 1, %i5
                              
40007a4c:	90 10 00 01 	mov  %g1, %o0
                                 
40007a50:	80 a0 60 25 	cmp  %g1, 0x25
                                
40007a54:	12 80 00 05 	bne  40007a68 <_IO_Vprintf+0x50>
              
40007a58:	a0 10 00 12 	mov  %l2, %l0
                                 
40007a5c:	80 a4 a0 00 	cmp  %l2, 0
                                   
40007a60:	22 80 00 16 	be,a   40007ab8 <_IO_Vprintf+0xa0>
            <== ALWAYS TAKEN
40007a64:	82 10 00 1d 	mov  %i5, %g1
                                 
			if (ch == '\0')
                                                   
40007a68:	80 a0 60 00 	cmp  %g1, 0
                                   
40007a6c:	02 80 00 32 	be  40007b34 <_IO_Vprintf+0x11c>
              
40007a70:	b4 25 00 1a 	sub  %l4, %i2, %i2
                            
		while ((ch = (u_char)*fmt++) != '%' || stop) {
                     
40007a74:	a0 0c 20 ff 	and  %l0, 0xff, %l0
                           
			PCHAR(ch);
                                                        
40007a78:	9f c7 00 00 	call  %i4
                                     
40007a7c:	92 10 00 19 	mov  %i1, %o1
                                 
		while ((ch = (u_char)*fmt++) != '%' || stop) {
                     
40007a80:	82 07 60 01 	add  %i5, 1, %g1
                              
40007a84:	d0 08 7f ff 	ldub  [ %g1 + -1 ], %o0
                       
40007a88:	80 a2 20 25 	cmp  %o0, 0x25
                                
40007a8c:	12 80 00 05 	bne  40007aa0 <_IO_Vprintf+0x88>
              
40007a90:	aa 07 40 1a 	add  %i5, %i2, %l5
                            
40007a94:	80 a4 20 00 	cmp  %l0, 0
                                   
40007a98:	02 80 00 0b 	be  40007ac4 <_IO_Vprintf+0xac>
               <== ALWAYS TAKEN
40007a9c:	84 10 20 20 	mov  0x20, %g2
                                
			if (ch == '\0')
                                                   
40007aa0:	80 a2 20 00 	cmp  %o0, 0
                                   
40007aa4:	12 bf ff f5 	bne  40007a78 <_IO_Vprintf+0x60>
              
40007aa8:	ba 10 00 01 	mov  %g1, %i5
                                 
40007aac:	ac 10 00 15 	mov  %l5, %l6
                                 
			stop = 1;
                                                         
			break;
                                                            
		}
                                                                  
	}
                                                                   
#undef PCHAR
                                                         
}
                                                                    
40007ab0:	81 c7 e0 08 	ret 
                                          
40007ab4:	91 e8 00 16 	restore  %g0, %l6, %o0
                        
		while ((ch = (u_char)*fmt++) != '%' || stop) {
                     
40007ab8:	aa 10 00 14 	mov  %l4, %l5
                                 
40007abc:	ba 10 00 1a 	mov  %i2, %i5
                                 
		padc = ' ';
                                                        
40007ac0:	84 10 20 20 	mov  0x20, %g2
                                
		sign = 0; dot = 0; dwidth = 0; upper = 0;
                          
40007ac4:	c0 27 bf d0 	clr  [ %fp + -48 ]
                            
		cflag = 0; hflag = 0; jflag = 0; tflag = 0; zflag = 0;
             
40007ac8:	a8 10 20 00 	clr  %l4
                                      
		padc = ' ';
                                                        
40007acc:	c4 2f bf c3 	stb  %g2, [ %fp + -61 ]
                       
		cflag = 0; hflag = 0; jflag = 0; tflag = 0; zflag = 0;
             
40007ad0:	9e 10 20 00 	clr  %o7
                                      
		lflag = 0; ladjust = 0; sharpflag = 0; neg = 0;
                    
40007ad4:	c0 27 bf c4 	clr  [ %fp + -60 ]
                            
		cflag = 0; hflag = 0; jflag = 0; tflag = 0; zflag = 0;
             
40007ad8:	9a 10 20 00 	clr  %o5
                                      
		width = 0;
                                                         
40007adc:	c0 27 bf d4 	clr  [ %fp + -44 ]
                            
		sign = 0; dot = 0; dwidth = 0; upper = 0;
                          
40007ae0:	96 10 20 00 	clr  %o3
                                      
40007ae4:	d8 08 40 00 	ldub  [ %g1 ], %o4
                            
		lflag = 0; ladjust = 0; sharpflag = 0; neg = 0;
                    
40007ae8:	a4 10 20 00 	clr  %l2
                                      
		cflag = 0; hflag = 0; jflag = 0; tflag = 0; zflag = 0;
             
40007aec:	88 10 20 00 	clr  %g4
                                      
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40007af0:	84 03 3f dd 	add  %o4, -35, %g2
                            
40007af4:	b4 00 60 01 	add  %g1, 1, %i2
                              
40007af8:	84 08 a0 ff 	and  %g2, 0xff, %g2
                           
40007afc:	80 a0 a0 57 	cmp  %g2, 0x57
                                
40007b00:	18 80 01 d9 	bgu  40008264 <_IO_Vprintf+0x84c>
             <== NEVER TAKEN
40007b04:	90 0b 20 ff 	and  %o4, 0xff, %o0
                           
40007b08:	85 28 a0 02 	sll  %g2, 2, %g2
                              
40007b0c:	c4 06 00 02 	ld  [ %i0 + %g2 ], %g2
                        
40007b10:	81 c0 80 00 	jmp  %g2
                                      
40007b14:	01 00 00 00 	nop 
                                          
		fmt = "(fmt null)\n";
                                              
40007b18:	35 10 00 66 	sethi  %hi(0x40019800), %i2
                   <== NOT EXECUTED
40007b1c:	10 bf ff c3 	b  40007a28 <_IO_Vprintf+0x10>
                <== NOT EXECUTED
40007b20:	b4 16 a0 e0 	or  %i2, 0xe0, %i2	! 400198e0 <_Objects_Information_table+0x20>
<== NOT EXECUTED
40007b24:	d8 08 60 01 	ldub  [ %g1 + 1 ], %o4
                        
			zflag = 1;
                                                        
40007b28:	88 10 20 01 	mov  1, %g4
                                   
			goto reswitch;
                                                    
40007b2c:	10 bf ff f1 	b  40007af0 <_IO_Vprintf+0xd8>
                
40007b30:	82 10 00 1a 	mov  %i2, %g1
                                 
				return (retval);
                                                 
40007b34:	10 bf ff df 	b  40007ab0 <_IO_Vprintf+0x98>
                
40007b38:	ac 10 00 14 	mov  %l4, %l6
                                 
			if (!dot) {
                                                       
40007b3c:	80 a2 e0 00 	cmp  %o3, 0
                                   
40007b40:	32 80 02 5b 	bne,a   400084ac <_IO_Vprintf+0xa94>
          <== NEVER TAKEN
40007b44:	c6 48 60 01 	ldsb  [ %g1 + 1 ], %g3
                        <== NOT EXECUTED
				padc = '0';
                                                      
40007b48:	d8 2f bf c3 	stb  %o4, [ %fp + -61 ]
                       
			if (!dot) {
                                                       
40007b4c:	d8 08 60 01 	ldub  [ %g1 + 1 ], %o4
                        
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40007b50:	10 bf ff e8 	b  40007af0 <_IO_Vprintf+0xd8>
                
40007b54:	82 10 00 1a 	mov  %i2, %g1
                                 
40007b58:	84 10 20 00 	clr  %g2
                                      
40007b5c:	86 10 20 10 	mov  0x10, %g3
                                
			base = 16;
                                                        
40007b60:	82 10 20 10 	mov  0x10, %g1
                                
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40007b64:	c4 3f bf b0 	std  %g2, [ %fp + -80 ]
                       
		sign = 0; dot = 0; dwidth = 0; upper = 0;
                          
40007b68:	ba 10 20 00 	clr  %i5
                                      
			base = 16;
                                                        
40007b6c:	c2 27 bf bc 	st  %g1, [ %fp + -68 ]
                        
			if (jflag)
                                                        
40007b70:	80 a5 20 00 	cmp  %l4, 0
                                   
40007b74:	02 80 01 dc 	be  400082e4 <_IO_Vprintf+0x8cc>
              
40007b78:	80 a1 20 00 	cmp  %g4, 0
                                   
				num = va_arg(ap, uintmax_t);
                                     
40007b7c:	92 10 00 1b 	mov  %i3, %o1
                                 
40007b80:	94 10 20 08 	mov  8, %o2
                                   
40007b84:	40 00 1d 63 	call  4000f110 <memcpy>
                       
40007b88:	90 07 bf d8 	add  %fp, -40, %o0
                            
40007b8c:	c4 1f bf d8 	ldd  [ %fp + -40 ], %g2
                       
40007b90:	c4 3f bf c8 	std  %g2, [ %fp + -56 ]
                       
40007b94:	b6 06 e0 08 	add  %i3, 8, %i3
                              
		lflag = 0; ladjust = 0; sharpflag = 0; neg = 0;
                    
40007b98:	a8 10 20 00 	clr  %l4
                                      
40007b9c:	bb 2f 60 04 	sll  %i5, 4, %i5
                              
	*p = '\0';
                                                          
40007ba0:	c0 2f bf e8 	clrb  [ %fp + -24 ]
                           
		*++p = hex2ascii_data[upper][num % base];
                          
40007ba4:	a2 05 c0 1d 	add  %l7, %i5, %l1
                            
40007ba8:	f4 27 a0 4c 	st  %i2, [ %fp + 0x4c ]
                       
40007bac:	ac 10 00 1c 	mov  %i4, %l6
                                 
	*p = '\0';
                                                          
40007bb0:	c4 1f bf c8 	ldd  [ %fp + -56 ], %g2
                       
		*++p = hex2ascii_data[upper][num % base];
                          
40007bb4:	f8 1f bf b0 	ldd  [ %fp + -80 ], %i4
                       
40007bb8:	f6 27 a0 50 	st  %i3, [ %fp + 0x50 ]
                       
	*p = '\0';
                                                          
40007bbc:	a6 10 00 02 	mov  %g2, %l3
                                 
	p = nbuf;
                                                           
40007bc0:	a0 07 bf e8 	add  %fp, -24, %l0
                            
		*++p = hex2ascii_data[upper][num % base];
                          
40007bc4:	b6 10 00 03 	mov  %g3, %i3
                                 
40007bc8:	94 10 00 1c 	mov  %i4, %o2
                                 
40007bcc:	96 10 00 1d 	mov  %i5, %o3
                                 
40007bd0:	90 10 00 13 	mov  %l3, %o0
                                 
40007bd4:	40 00 41 48 	call  400180f4 <__umoddi3>
                    
40007bd8:	92 10 00 1b 	mov  %i3, %o1
                                 
40007bdc:	f4 0c 40 09 	ldub  [ %l1 + %o1 ], %i2
                      
40007be0:	a0 04 20 01 	inc  %l0
                                      
40007be4:	f4 2c 00 00 	stb  %i2, [ %l0 ]
                             
	} while (num /= base);
                                              
40007be8:	90 10 00 13 	mov  %l3, %o0
                                 
40007bec:	92 10 00 1b 	mov  %i3, %o1
                                 
40007bf0:	94 10 00 1c 	mov  %i4, %o2
                                 
40007bf4:	40 00 40 c7 	call  40017f10 <__udivdi3>
                    
40007bf8:	96 10 00 1d 	mov  %i5, %o3
                                 
40007bfc:	a6 10 00 08 	mov  %o0, %l3
                                 
40007c00:	80 92 40 13 	orcc  %o1, %l3, %g0
                           
40007c04:	12 bf ff f1 	bne  40007bc8 <_IO_Vprintf+0x1b0>
             
40007c08:	b6 10 00 09 	mov  %o1, %i3
                                 
			if (sharpflag && num != 0) {
                                      
40007c0c:	c4 1f bf c8 	ldd  [ %fp + -56 ], %g2
                       
40007c10:	82 10 00 02 	mov  %g2, %g1
                                 
40007c14:	c4 07 bf c4 	ld  [ %fp + -60 ], %g2
                        
40007c18:	82 10 40 03 	or  %g1, %g3, %g1
                             
40007c1c:	80 a0 00 01 	cmp  %g0, %g1
                                 
40007c20:	86 40 20 00 	addx  %g0, 0, %g3
                             
40007c24:	84 88 c0 02 	andcc  %g3, %g2, %g2
                          
40007c28:	c4 27 bf c4 	st  %g2, [ %fp + -60 ]
                        
		*lenp = p - nbuf;
                                                  
40007c2c:	82 07 bf e8 	add  %fp, -24, %g1
                            
40007c30:	ba 10 00 1a 	mov  %i2, %i5
                                 
40007c34:	a2 24 00 01 	sub  %l0, %g1, %l1
                            
40007c38:	b8 10 00 16 	mov  %l6, %i4
                                 
40007c3c:	f4 07 a0 4c 	ld  [ %fp + 0x4c ], %i2
                       
40007c40:	f6 07 a0 50 	ld  [ %fp + 0x50 ], %i3
                       
			if (sharpflag && num != 0) {
                                      
40007c44:	02 80 00 0a 	be  40007c6c <_IO_Vprintf+0x254>
              
40007c48:	82 10 20 00 	clr  %g1
                                      
				if (base == 8)
                                                   
40007c4c:	c4 07 bf bc 	ld  [ %fp + -68 ], %g2
                        
40007c50:	80 a0 a0 08 	cmp  %g2, 8
                                   
40007c54:	02 80 00 06 	be  40007c6c <_IO_Vprintf+0x254>
              <== NEVER TAKEN
40007c58:	82 10 20 01 	mov  1, %g1
                                   
			tmp = 0;
                                                          
40007c5c:	82 18 a0 10 	xor  %g2, 0x10, %g1
                           
40007c60:	80 a0 00 01 	cmp  %g0, %g1
                                 
40007c64:	82 60 3f ff 	subx  %g0, -1, %g1
                            
40007c68:	83 28 60 01 	sll  %g1, 1, %g1
                              
				tmp++;
                                                           
40007c6c:	80 a0 00 14 	cmp  %g0, %l4
                                 
40007c70:	82 40 00 01 	addx  %g0, %g1, %g1
                           
			if (!ladjust && padc == '0')
                                      
40007c74:	80 8c a0 01 	btst  1, %l2
                                  
40007c78:	12 80 01 8d 	bne  400082ac <_IO_Vprintf+0x894>
             
40007c7c:	c4 0f bf c3 	ldub  [ %fp + -61 ], %g2
                      
40007c80:	87 28 a0 18 	sll  %g2, 0x18, %g3
                           
40007c84:	87 38 e0 18 	sra  %g3, 0x18, %g3
                           
40007c88:	80 a0 e0 30 	cmp  %g3, 0x30
                                
40007c8c:	12 80 01 88 	bne  400082ac <_IO_Vprintf+0x894>
             
40007c90:	c4 07 bf d4 	ld  [ %fp + -44 ], %g2
                        
				dwidth = width - tmp;
                                            
40007c94:	ac 20 80 01 	sub  %g2, %g1, %l6
                            
static inline int imax(int a, int b) { return (a > b ? a : b); }
     
40007c98:	80 a5 80 11 	cmp  %l6, %l1
                                 
40007c9c:	16 80 00 04 	bge  40007cac <_IO_Vprintf+0x294>
             
40007ca0:	86 10 00 16 	mov  %l6, %g3
                                 
40007ca4:	86 10 00 11 	mov  %l1, %g3
                                 
			width -= tmp + imax(dwidth, n);
                                   
40007ca8:	c4 07 bf d4 	ld  [ %fp + -44 ], %g2
                        
40007cac:	82 00 c0 01 	add  %g3, %g1, %g1
                            
			dwidth -= n;
                                                      
40007cb0:	a2 25 80 11 	sub  %l6, %l1, %l1
                            
			width -= tmp + imax(dwidth, n);
                                   
40007cb4:	a6 20 80 01 	sub  %g2, %g1, %l3
                            
				while (width-- > 0)
                                              
40007cb8:	ac 04 ff ff 	add  %l3, -1, %l6
                             
40007cbc:	80 a4 e0 00 	cmp  %l3, 0
                                   
40007cc0:	04 80 00 0b 	ble  40007cec <_IO_Vprintf+0x2d4>
             
40007cc4:	a6 10 00 16 	mov  %l6, %l3
                                 
					PCHAR(' ');
                                                     
40007cc8:	92 10 00 19 	mov  %i1, %o1
                                 
40007ccc:	9f c7 00 00 	call  %i4
                                     
40007cd0:	90 10 20 20 	mov  0x20, %o0
                                
				while (width-- > 0)
                                              
40007cd4:	a6 04 ff ff 	add  %l3, -1, %l3
                             
40007cd8:	80 a4 ff ff 	cmp  %l3, -1
                                  
40007cdc:	12 bf ff fc 	bne  40007ccc <_IO_Vprintf+0x2b4>
             
40007ce0:	92 10 00 19 	mov  %i1, %o1
                                 
40007ce4:	84 05 60 01 	add  %l5, 1, %g2
                              
40007ce8:	aa 05 80 02 	add  %l6, %g2, %l5
                            
			if (neg)
                                                          
40007cec:	80 a5 20 00 	cmp  %l4, 0
                                   
40007cf0:	02 80 01 8e 	be  40008328 <_IO_Vprintf+0x910>
              
40007cf4:	92 10 00 19 	mov  %i1, %o1
                                 
				PCHAR('-');
                                                      
40007cf8:	90 10 20 2d 	mov  0x2d, %o0
                                
40007cfc:	9f c7 00 00 	call  %i4
                                     
40007d00:	a8 05 60 01 	add  %l5, 1, %l4
                              
			if (sharpflag && num != 0) {
                                      
40007d04:	c2 07 bf c4 	ld  [ %fp + -60 ], %g1
                        
40007d08:	80 a0 60 00 	cmp  %g1, 0
                                   
40007d0c:	02 80 00 0a 	be  40007d34 <_IO_Vprintf+0x31c>
              
40007d10:	80 a4 60 00 	cmp  %l1, 0
                                   
				if (base == 8) {
                                                 
40007d14:	c2 07 bf bc 	ld  [ %fp + -68 ], %g1
                        
40007d18:	80 a0 60 08 	cmp  %g1, 8
                                   
40007d1c:	12 80 01 92 	bne  40008364 <_IO_Vprintf+0x94c>
             <== ALWAYS TAKEN
40007d20:	92 10 00 19 	mov  %i1, %o1
                                 
					PCHAR('0');
                                                     
40007d24:	90 10 20 30 	mov  0x30, %o0
                                <== NOT EXECUTED
40007d28:	9f c7 00 00 	call  %i4
                                     <== NOT EXECUTED
40007d2c:	a8 05 20 01 	inc  %l4
                                      <== NOT EXECUTED
			while (dwidth-- > 0)
                                              
40007d30:	80 a4 60 00 	cmp  %l1, 0
                                   <== NOT EXECUTED
40007d34:	04 80 00 0c 	ble  40007d64 <_IO_Vprintf+0x34c>
             
40007d38:	aa 04 7f ff 	add  %l1, -1, %l5
                             
40007d3c:	a2 10 00 15 	mov  %l5, %l1
                                 
				PCHAR('0');
                                                      
40007d40:	92 10 00 19 	mov  %i1, %o1
                                 
40007d44:	9f c7 00 00 	call  %i4
                                     
40007d48:	90 10 20 30 	mov  0x30, %o0
                                
			while (dwidth-- > 0)
                                              
40007d4c:	a2 04 7f ff 	add  %l1, -1, %l1
                             
40007d50:	80 a4 7f ff 	cmp  %l1, -1
                                  
40007d54:	12 bf ff fc 	bne  40007d44 <_IO_Vprintf+0x32c>
             
40007d58:	92 10 00 19 	mov  %i1, %o1
                                 
40007d5c:	a8 05 20 01 	inc  %l4
                                      
40007d60:	a8 05 00 15 	add  %l4, %l5, %l4
                            
			while (*p)
                                                        
40007d64:	bb 2f 60 18 	sll  %i5, 0x18, %i5
                           
40007d68:	80 a7 60 00 	cmp  %i5, 0
                                   
40007d6c:	02 80 00 0c 	be  40007d9c <_IO_Vprintf+0x384>
              <== NEVER TAKEN
40007d70:	80 a4 a0 00 	cmp  %l2, 0
                                   
				PCHAR(*p--);
                                                     
40007d74:	91 3f 60 18 	sra  %i5, 0x18, %o0
                           
40007d78:	a0 04 3f ff 	add  %l0, -1, %l0
                             
40007d7c:	9f c7 00 00 	call  %i4
                                     
40007d80:	92 10 00 19 	mov  %i1, %o1
                                 
			while (*p)
                                                        
40007d84:	fa 0c 00 00 	ldub  [ %l0 ], %i5
                            
40007d88:	bb 2f 60 18 	sll  %i5, 0x18, %i5
                           
40007d8c:	80 a7 60 00 	cmp  %i5, 0
                                   
40007d90:	12 bf ff f9 	bne  40007d74 <_IO_Vprintf+0x35c>
             
40007d94:	a8 05 20 01 	inc  %l4
                                      
			if (ladjust)
                                                      
40007d98:	80 a4 a0 00 	cmp  %l2, 0
                                   
40007d9c:	22 bf ff 2a 	be,a   40007a44 <_IO_Vprintf+0x2c>
            
40007da0:	c2 0e 80 00 	ldub  [ %i2 ], %g1
                            
				while (width-- > 0)
                                              
40007da4:	80 a4 e0 00 	cmp  %l3, 0
                                   
40007da8:	04 80 01 59 	ble  4000830c <_IO_Vprintf+0x8f4>
             
40007dac:	a0 04 ff ff 	add  %l3, -1, %l0
                             
40007db0:	ba 10 00 10 	mov  %l0, %i5
                                 
					PCHAR(' ');
                                                     
40007db4:	92 10 00 19 	mov  %i1, %o1
                                 
40007db8:	9f c7 00 00 	call  %i4
                                     
40007dbc:	90 10 20 20 	mov  0x20, %o0
                                
				while (width-- > 0)
                                              
40007dc0:	ba 07 7f ff 	add  %i5, -1, %i5
                             
40007dc4:	80 a7 7f ff 	cmp  %i5, -1
                                  
40007dc8:	12 bf ff fc 	bne  40007db8 <_IO_Vprintf+0x3a0>
             <== NEVER TAKEN
40007dcc:	92 10 00 19 	mov  %i1, %o1
                                 
40007dd0:	a8 05 20 01 	inc  %l4
                                      
40007dd4:	a4 10 20 00 	clr  %l2
                                      
40007dd8:	10 bf ff 1a 	b  40007a40 <_IO_Vprintf+0x28>
                
40007ddc:	a8 04 00 14 	add  %l0, %l4, %l4
                            
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40007de0:	84 10 20 00 	clr  %g2
                                      <== NOT EXECUTED
40007de4:	86 10 20 10 	mov  0x10, %g3
                                <== NOT EXECUTED
			base = 16;
                                                        
40007de8:	82 10 20 10 	mov  0x10, %g1
                                <== NOT EXECUTED
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40007dec:	c4 3f bf b0 	std  %g2, [ %fp + -80 ]
                       <== NOT EXECUTED
			base = 16;
                                                        
40007df0:	c2 27 bf bc 	st  %g1, [ %fp + -68 ]
                        <== NOT EXECUTED
			if (jflag)
                                                        
40007df4:	80 a5 20 00 	cmp  %l4, 0
                                   
40007df8:	02 80 01 4e 	be  40008330 <_IO_Vprintf+0x918>
              
40007dfc:	82 06 e0 04 	add  %i3, 4, %g1
                              
				num = va_arg(ap, intmax_t);
                                      
40007e00:	92 10 00 1b 	mov  %i3, %o1
                                 
40007e04:	94 10 20 08 	mov  8, %o2
                                   
40007e08:	40 00 1c c2 	call  4000f110 <memcpy>
                       
40007e0c:	90 07 bf e0 	add  %fp, -32, %o0
                            
40007e10:	c4 1f bf e0 	ldd  [ %fp + -32 ], %g2
                       
40007e14:	c4 3f bf c8 	std  %g2, [ %fp + -56 ]
                       
40007e18:	b6 06 e0 08 	add  %i3, 8, %i3
                              
			if (sign && (intmax_t)num < 0) {
                                  
40007e1c:	c4 1f bf c8 	ldd  [ %fp + -56 ], %g2
                       
40007e20:	82 90 a0 00 	orcc  %g2, 0, %g1
                             
40007e24:	16 80 01 c8 	bge  40008544 <_IO_Vprintf+0xb2c>
             
40007e28:	9a a0 00 03 	subcc  %g0, %g3, %o5
                          
				num = -(intmax_t)num;
                                            
40007e2c:	ba 10 20 00 	clr  %i5
                                      
40007e30:	98 60 00 02 	subx  %g0, %g2, %o4
                           
				neg = 1;
                                                         
40007e34:	a8 10 20 01 	mov  1, %l4
                                   
				num = -(intmax_t)num;
                                            
40007e38:	10 bf ff 59 	b  40007b9c <_IO_Vprintf+0x184>
               
40007e3c:	d8 3f bf c8 	std  %o4, [ %fp + -56 ]
                       
			if (!ladjust && width > 0)
                                        
40007e40:	c2 07 bf d4 	ld  [ %fp + -44 ], %g1
                        
40007e44:	80 a0 60 01 	cmp  %g1, 1
                                   
40007e48:	14 80 00 03 	bg  40007e54 <_IO_Vprintf+0x43c>
              <== NEVER TAKEN
40007e4c:	ba 10 20 01 	mov  1, %i5
                                   
40007e50:	ba 10 20 00 	clr  %i5
                                      
40007e54:	a8 05 60 01 	add  %l5, 1, %l4
                              
40007e58:	80 8c a0 01 	btst  1, %l2
                                  
40007e5c:	12 80 01 52 	bne  400083a4 <_IO_Vprintf+0x98c>
             <== NEVER TAKEN
40007e60:	a0 06 e0 04 	add  %i3, 4, %l0
                              
40007e64:	80 8f 60 ff 	btst  0xff, %i5
                               
40007e68:	02 80 01 4f 	be  400083a4 <_IO_Vprintf+0x98c>
              <== ALWAYS TAKEN
40007e6c:	c2 07 bf d4 	ld  [ %fp + -44 ], %g1
                        
				while (width--)
                                                  
40007e70:	a6 00 7f fe 	add  %g1, -2, %l3
                             <== NOT EXECUTED
40007e74:	c2 0f bf c3 	ldub  [ %fp + -61 ], %g1
                      <== NOT EXECUTED
40007e78:	a3 28 60 18 	sll  %g1, 0x18, %l1
                           <== NOT EXECUTED
40007e7c:	ba 10 00 13 	mov  %l3, %i5
                                 <== NOT EXECUTED
40007e80:	a3 3c 60 18 	sra  %l1, 0x18, %l1
                           <== NOT EXECUTED
					PCHAR(padc);
                                                    
40007e84:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
40007e88:	9f c7 00 00 	call  %i4
                                     <== NOT EXECUTED
40007e8c:	90 10 00 11 	mov  %l1, %o0
                                 <== NOT EXECUTED
				while (width--)
                                                  
40007e90:	ba 07 7f ff 	add  %i5, -1, %i5
                             <== NOT EXECUTED
40007e94:	80 a7 7f ff 	cmp  %i5, -1
                                  <== NOT EXECUTED
40007e98:	12 bf ff fc 	bne  40007e88 <_IO_Vprintf+0x470>
             <== NOT EXECUTED
40007e9c:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
			PCHAR(va_arg(ap, int));
                                           
40007ea0:	d0 06 c0 00 	ld  [ %i3 ], %o0
                              <== NOT EXECUTED
40007ea4:	a6 05 00 13 	add  %l4, %l3, %l3
                            <== NOT EXECUTED
40007ea8:	a8 04 e0 01 	add  %l3, 1, %l4
                              <== NOT EXECUTED
40007eac:	9f c7 00 00 	call  %i4
                                     <== NOT EXECUTED
40007eb0:	b6 10 00 10 	mov  %l0, %i3
                                 <== NOT EXECUTED
40007eb4:	10 bf fe e3 	b  40007a40 <_IO_Vprintf+0x28>
                <== NOT EXECUTED
40007eb8:	a4 10 20 00 	clr  %l2
                                      <== NOT EXECUTED
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40007ebc:	84 10 20 00 	clr  %g2
                                      
40007ec0:	86 10 20 0a 	mov  0xa, %g3
                                 
			base = 10;
                                                        
40007ec4:	82 10 20 0a 	mov  0xa, %g1
                                 
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40007ec8:	c4 3f bf b0 	std  %g2, [ %fp + -80 ]
                       
			base = 10;
                                                        
40007ecc:	10 bf ff ca 	b  40007df4 <_IO_Vprintf+0x3dc>
               
40007ed0:	c2 27 bf bc 	st  %g1, [ %fp + -68 ]
                        
			if (hflag) {
                                                      
40007ed4:	80 a3 e0 00 	cmp  %o7, 0
                                   
40007ed8:	12 80 01 55 	bne  4000842c <_IO_Vprintf+0xa14>
             
40007edc:	d8 08 60 01 	ldub  [ %g1 + 1 ], %o4
                        
				hflag = 1;
                                                       
40007ee0:	9e 10 20 01 	mov  1, %o7
                                   
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40007ee4:	10 bf ff 03 	b  40007af0 <_IO_Vprintf+0xd8>
                
40007ee8:	82 10 00 1a 	mov  %i2, %g1
                                 
40007eec:	d8 08 60 01 	ldub  [ %g1 + 1 ], %o4
                        
			jflag = 1;
                                                        
40007ef0:	a8 10 20 01 	mov  1, %l4
                                   
			goto reswitch;
                                                    
40007ef4:	10 bf fe ff 	b  40007af0 <_IO_Vprintf+0xd8>
                
40007ef8:	82 10 00 1a 	mov  %i2, %g1
                                 
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40007efc:	84 10 20 00 	clr  %g2
                                      
40007f00:	86 10 20 10 	mov  0x10, %g3
                                
			base = 16;
                                                        
40007f04:	82 10 20 10 	mov  0x10, %g1
                                
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40007f08:	c4 3f bf b0 	std  %g2, [ %fp + -80 ]
                       
			upper = 1;
                                                        
40007f0c:	ba 10 20 01 	mov  1, %i5
                                   
			base = 16;
                                                        
40007f10:	10 bf ff 18 	b  40007b70 <_IO_Vprintf+0x158>
               
40007f14:	c2 27 bf bc 	st  %g1, [ %fp + -68 ]
                        
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40007f18:	84 10 20 00 	clr  %g2
                                      
40007f1c:	86 10 20 0a 	mov  0xa, %g3
                                 
			base = 10;
                                                        
40007f20:	82 10 20 0a 	mov  0xa, %g1
                                 
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40007f24:	c4 3f bf b0 	std  %g2, [ %fp + -80 ]
                       
		sign = 0; dot = 0; dwidth = 0; upper = 0;
                          
40007f28:	ba 10 20 00 	clr  %i5
                                      
			base = 10;
                                                        
40007f2c:	10 bf ff 11 	b  40007b70 <_IO_Vprintf+0x158>
               
40007f30:	c2 27 bf bc 	st  %g1, [ %fp + -68 ]
                        
40007f34:	d8 08 60 01 	ldub  [ %g1 + 1 ], %o4
                        
			dot = 1;
                                                          
40007f38:	96 10 20 01 	mov  1, %o3
                                   
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40007f3c:	10 bf fe ed 	b  40007af0 <_IO_Vprintf+0xd8>
                
40007f40:	82 10 00 1a 	mov  %i2, %g1
                                 
					ch = *fmt;
                                                      
40007f44:	c6 48 60 01 	ldsb  [ %g1 + 1 ], %g3
                        
					if (ch < '0' || ch > '9')
                                       
40007f48:	84 00 ff d0 	add  %g3, -48, %g2
                            
					n = n * 10 + ch - '0';
                                          
40007f4c:	90 02 3f d0 	add  %o0, -48, %o0
                            
					if (ch < '0' || ch > '9')
                                       
40007f50:	80 a0 a0 09 	cmp  %g2, 9
                                   
40007f54:	18 80 00 d4 	bgu  400082a4 <_IO_Vprintf+0x88c>
             
40007f58:	d8 08 60 01 	ldub  [ %g1 + 1 ], %o4
                        
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40007f5c:	82 10 00 1a 	mov  %i2, %g1
                                 
				for (n = 0;; ++fmt) {
                                            
40007f60:	82 00 60 01 	inc  %g1
                                      
					n = n * 10 + ch - '0';
                                          
40007f64:	85 2a 20 02 	sll  %o0, 2, %g2
                              
40007f68:	84 00 80 08 	add  %g2, %o0, %g2
                            
40007f6c:	85 28 a0 01 	sll  %g2, 1, %g2
                              
40007f70:	84 00 80 03 	add  %g2, %g3, %g2
                            
					ch = *fmt;
                                                      
40007f74:	c6 48 40 00 	ldsb  [ %g1 ], %g3
                            
					if (ch < '0' || ch > '9')
                                       
40007f78:	b4 00 ff d0 	add  %g3, -48, %i2
                            
					n = n * 10 + ch - '0';
                                          
40007f7c:	90 00 bf d0 	add  %g2, -48, %o0
                            
					if (ch < '0' || ch > '9')
                                       
40007f80:	80 a6 a0 09 	cmp  %i2, 9
                                   
40007f84:	08 bf ff f7 	bleu  40007f60 <_IO_Vprintf+0x548>
            <== NEVER TAKEN
40007f88:	d8 08 40 00 	ldub  [ %g1 ], %o4
                            
			if (dot)
                                                          
40007f8c:	80 a2 e0 00 	cmp  %o3, 0
                                   
40007f90:	22 bf fe d8 	be,a   40007af0 <_IO_Vprintf+0xd8>
            
40007f94:	d0 27 bf d4 	st  %o0, [ %fp + -44 ]
                        
40007f98:	10 bf fe d6 	b  40007af0 <_IO_Vprintf+0xd8>
                
40007f9c:	d0 27 bf d0 	st  %o0, [ %fp + -48 ]
                        
			if (!width)
                                                       
40007fa0:	c2 07 bf d4 	ld  [ %fp + -44 ], %g1
                        <== NOT EXECUTED
			up = va_arg(ap, u_char *);
                                        
40007fa4:	e0 06 c0 00 	ld  [ %i3 ], %l0
                              <== NOT EXECUTED
			p = va_arg(ap, char *);
                                           
40007fa8:	e2 06 e0 04 	ld  [ %i3 + 4 ], %l1
                          <== NOT EXECUTED
			if (!width)
                                                       
40007fac:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
40007fb0:	12 80 00 04 	bne  40007fc0 <_IO_Vprintf+0x5a8>
             <== NOT EXECUTED
40007fb4:	b6 06 e0 08 	add  %i3, 8, %i3
                              <== NOT EXECUTED
				width = 16;
                                                      
40007fb8:	82 10 20 10 	mov  0x10, %g1
                                <== NOT EXECUTED
40007fbc:	c2 27 bf d4 	st  %g1, [ %fp + -44 ]
                        <== NOT EXECUTED
40007fc0:	82 04 3f ff 	add  %l0, -1, %g1
                             <== NOT EXECUTED
40007fc4:	c4 07 bf d4 	ld  [ %fp + -44 ], %g2
                        <== NOT EXECUTED
					for (q=p;*q;q++)
                                                
40007fc8:	a8 10 00 15 	mov  %l5, %l4
                                 <== NOT EXECUTED
40007fcc:	a4 04 00 02 	add  %l0, %g2, %l2
                            <== NOT EXECUTED
40007fd0:	a6 00 40 02 	add  %g1, %g2, %l3
                            <== NOT EXECUTED
			while(width--) {
                                                  
40007fd4:	80 a4 80 10 	cmp  %l2, %l0
                                 <== NOT EXECUTED
40007fd8:	22 bf fe 9a 	be,a   40007a40 <_IO_Vprintf+0x28>
            <== NOT EXECUTED
40007fdc:	a4 10 20 00 	clr  %l2
                                      <== NOT EXECUTED
				PCHAR(hex2ascii(*up >> 4));
                                      
40007fe0:	c2 0c 00 00 	ldub  [ %l0 ], %g1
                            <== NOT EXECUTED
40007fe4:	83 30 60 04 	srl  %g1, 4, %g1
                              <== NOT EXECUTED
40007fe8:	d0 4d c0 01 	ldsb  [ %l7 + %g1 ], %o0
                      <== NOT EXECUTED
40007fec:	9f c7 00 00 	call  %i4
                                     <== NOT EXECUTED
40007ff0:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
				PCHAR(hex2ascii(*up & 0x0f));
                                    
40007ff4:	c2 0c 00 00 	ldub  [ %l0 ], %g1
                            <== NOT EXECUTED
40007ff8:	82 08 60 0f 	and  %g1, 0xf, %g1
                            <== NOT EXECUTED
40007ffc:	d0 4d c0 01 	ldsb  [ %l7 + %g1 ], %o0
                      <== NOT EXECUTED
40008000:	9f c7 00 00 	call  %i4
                                     <== NOT EXECUTED
40008004:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
				if (width)
                                                       
40008008:	80 a4 c0 10 	cmp  %l3, %l0
                                 <== NOT EXECUTED
4000800c:	02 80 00 c0 	be  4000830c <_IO_Vprintf+0x8f4>
              <== NOT EXECUTED
40008010:	a8 05 20 02 	add  %l4, 2, %l4
                              <== NOT EXECUTED
					for (q=p;*q;q++)
                                                
40008014:	d0 0c 40 00 	ldub  [ %l1 ], %o0
                            <== NOT EXECUTED
40008018:	91 2a 20 18 	sll  %o0, 0x18, %o0
                           <== NOT EXECUTED
4000801c:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
40008020:	22 bf ff ed 	be,a   40007fd4 <_IO_Vprintf+0x5bc>
           <== NOT EXECUTED
40008024:	a0 04 20 01 	inc  %l0
                                      <== NOT EXECUTED
40008028:	ba 10 00 11 	mov  %l1, %i5
                                 <== NOT EXECUTED
						PCHAR(*q);
                                                     
4000802c:	91 3a 20 18 	sra  %o0, 0x18, %o0
                           <== NOT EXECUTED
40008030:	9f c7 00 00 	call  %i4
                                     <== NOT EXECUTED
40008034:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
					for (q=p;*q;q++)
                                                
40008038:	ba 07 60 01 	inc  %i5
                                      <== NOT EXECUTED
4000803c:	d0 0f 40 00 	ldub  [ %i5 ], %o0
                            <== NOT EXECUTED
40008040:	91 2a 20 18 	sll  %o0, 0x18, %o0
                           <== NOT EXECUTED
40008044:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
40008048:	12 bf ff f9 	bne  4000802c <_IO_Vprintf+0x614>
             <== NOT EXECUTED
4000804c:	a8 05 20 01 	inc  %l4
                                      <== NOT EXECUTED
40008050:	10 bf ff e1 	b  40007fd4 <_IO_Vprintf+0x5bc>
               <== NOT EXECUTED
40008054:	a0 04 20 01 	inc  %l0
                                      <== NOT EXECUTED
			if (lflag) {
                                                      
40008058:	80 a1 20 00 	cmp  %g4, 0
                                   
4000805c:	02 bf fe b3 	be  40007b28 <_IO_Vprintf+0x110>
              
40008060:	d8 08 60 01 	ldub  [ %g1 + 1 ], %o4
                        
				jflag = 1;
                                                       
40008064:	a8 10 00 04 	mov  %g4, %l4
                                 
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40008068:	10 bf fe a2 	b  40007af0 <_IO_Vprintf+0xd8>
                
4000806c:	82 10 00 1a 	mov  %i2, %g1
                                 
40008070:	84 10 20 00 	clr  %g2
                                      
40008074:	86 10 20 08 	mov  8, %g3
                                   
			base = 8;
                                                         
40008078:	82 10 20 08 	mov  8, %g1
                                   
reswitch:	switch (ch = (u_char)*fmt++) {
                             
4000807c:	c4 3f bf b0 	std  %g2, [ %fp + -80 ]
                       
		sign = 0; dot = 0; dwidth = 0; upper = 0;
                          
40008080:	ba 10 20 00 	clr  %i5
                                      
			base = 8;
                                                         
40008084:	10 bf fe bb 	b  40007b70 <_IO_Vprintf+0x158>
               
40008088:	c2 27 bf bc 	st  %g1, [ %fp + -68 ]
                        
			sharpflag = (width == 0);
                                         
4000808c:	c4 07 bf d4 	ld  [ %fp + -44 ], %g2
                        
			num = (uintptr_t)va_arg(ap, void *);
                              
40008090:	c2 06 c0 00 	ld  [ %i3 ], %g1
                              
			sharpflag = (width == 0);
                                         
40008094:	80 a0 00 02 	cmp  %g0, %g2
                                 
40008098:	84 60 3f ff 	subx  %g0, -1, %g2
                            
			num = (uintptr_t)va_arg(ap, void *);
                              
4000809c:	86 10 00 01 	mov  %g1, %g3
                                 
			sharpflag = (width == 0);
                                         
400080a0:	c4 27 bf c4 	st  %g2, [ %fp + -60 ]
                        
			num = (uintptr_t)va_arg(ap, void *);
                              
400080a4:	84 10 20 00 	clr  %g2
                                      
			base = 16;
                                                        
400080a8:	82 10 20 10 	mov  0x10, %g1
                                
			num = (uintptr_t)va_arg(ap, void *);
                              
400080ac:	c4 3f bf c8 	std  %g2, [ %fp + -56 ]
                       
400080b0:	b6 06 e0 04 	add  %i3, 4, %i3
                              
			goto number;
                                                      
400080b4:	84 10 20 00 	clr  %g2
                                      
400080b8:	86 10 20 10 	mov  0x10, %g3
                                
		sign = 0; dot = 0; dwidth = 0; upper = 0;
                          
400080bc:	ba 10 20 00 	clr  %i5
                                      
			goto number;
                                                      
400080c0:	c4 3f bf b0 	std  %g2, [ %fp + -80 ]
                       
		lflag = 0; ladjust = 0; sharpflag = 0; neg = 0;
                    
400080c4:	a8 10 20 00 	clr  %l4
                                      
			goto number;
                                                      
400080c8:	10 bf fe b5 	b  40007b9c <_IO_Vprintf+0x184>
               
400080cc:	c2 27 bf bc 	st  %g1, [ %fp + -68 ]
                        
			p = va_arg(ap, char *);
                                           
400080d0:	fa 06 c0 00 	ld  [ %i3 ], %i5
                              
			if (p == NULL)
                                                    
400080d4:	80 a7 60 00 	cmp  %i5, 0
                                   
400080d8:	02 80 00 fd 	be  400084cc <_IO_Vprintf+0xab4>
              
400080dc:	b6 06 e0 04 	add  %i3, 4, %i3
                              
			if (!dot)
                                                         
400080e0:	80 a2 e0 00 	cmp  %o3, 0
                                   
400080e4:	12 80 00 db 	bne  40008450 <_IO_Vprintf+0xa38>
             <== NEVER TAKEN
400080e8:	c2 07 bf d0 	ld  [ %fp + -48 ], %g1
                        
				n = strlen (p);
                                                  
400080ec:	40 00 1d 76 	call  4000f6c4 <strlen>
                       
400080f0:	90 10 00 1d 	mov  %i5, %o0
                                 
400080f4:	a2 10 00 08 	mov  %o0, %l1
                                 
			width -= n;
                                                       
400080f8:	c2 07 bf d4 	ld  [ %fp + -44 ], %g1
                        
400080fc:	84 20 40 11 	sub  %g1, %l1, %g2
                            
40008100:	c4 27 bf d4 	st  %g2, [ %fp + -44 ]
                        
			if (!ladjust && width > 0)
                                        
40008104:	a1 38 a0 1f 	sra  %g2, 0x1f, %l0
                           
40008108:	82 0c a0 01 	and  %l2, 1, %g1
                              
4000810c:	a0 24 00 02 	sub  %l0, %g2, %l0
                            
40008110:	a8 04 7f ff 	add  %l1, -1, %l4
                             
40008114:	80 8c a0 01 	btst  1, %l2
                                  
40008118:	12 80 00 c9 	bne  4000843c <_IO_Vprintf+0xa24>
             
4000811c:	a1 34 20 1f 	srl  %l0, 0x1f, %l0
                           
40008120:	80 a4 20 00 	cmp  %l0, 0
                                   
40008124:	02 80 00 c7 	be  40008440 <_IO_Vprintf+0xa28>
              
40008128:	80 a4 60 00 	cmp  %l1, 0
                                   
				while (width--)
                                                  
4000812c:	c2 07 bf d4 	ld  [ %fp + -44 ], %g1
                        
40008130:	a6 00 7f ff 	add  %g1, -1, %l3
                             
40008134:	c2 0f bf c3 	ldub  [ %fp + -61 ], %g1
                      
40008138:	a5 28 60 18 	sll  %g1, 0x18, %l2
                           
4000813c:	a0 10 00 13 	mov  %l3, %l0
                                 
40008140:	a5 3c a0 18 	sra  %l2, 0x18, %l2
                           
					PCHAR(padc);
                                                    
40008144:	92 10 00 19 	mov  %i1, %o1
                                 
40008148:	9f c7 00 00 	call  %i4
                                     
4000814c:	90 10 00 12 	mov  %l2, %o0
                                 
				while (width--)
                                                  
40008150:	a0 04 3f ff 	add  %l0, -1, %l0
                             
40008154:	80 a4 3f ff 	cmp  %l0, -1
                                  
40008158:	12 bf ff fc 	bne  40008148 <_IO_Vprintf+0x730>
             
4000815c:	92 10 00 19 	mov  %i1, %o1
                                 
40008160:	84 05 60 01 	add  %l5, 1, %g2
                              
			while (n--)
                                                       
40008164:	80 a4 60 00 	cmp  %l1, 0
                                   
40008168:	02 80 00 fa 	be  40008550 <_IO_Vprintf+0xb38>
              <== NEVER TAKEN
4000816c:	aa 00 80 13 	add  %g2, %l3, %l5
                            
40008170:	82 10 3f ff 	mov  -1, %g1
                                  
40008174:	c2 27 bf d4 	st  %g1, [ %fp + -44 ]
                        
40008178:	a0 10 20 00 	clr  %l0
                                      
4000817c:	a2 05 20 01 	add  %l4, 1, %l1
                              
40008180:	a2 07 40 11 	add  %i5, %l1, %l1
                            
				PCHAR(*p++);
                                                     
40008184:	ba 07 60 01 	inc  %i5
                                      
40008188:	d0 4f 7f ff 	ldsb  [ %i5 + -1 ], %o0
                       
4000818c:	9f c7 00 00 	call  %i4
                                     
40008190:	92 10 00 19 	mov  %i1, %o1
                                 
			while (n--)
                                                       
40008194:	80 a7 40 11 	cmp  %i5, %l1
                                 
40008198:	32 bf ff fc 	bne,a   40008188 <_IO_Vprintf+0x770>
          
4000819c:	ba 07 60 01 	inc  %i5
                                      
400081a0:	84 05 60 01 	add  %l5, 1, %g2
                              
400081a4:	a8 05 00 02 	add  %l4, %g2, %l4
                            
			if (ladjust && width > 0)
                                         
400081a8:	80 8c 20 ff 	btst  0xff, %l0
                               
400081ac:	02 bf fe 25 	be  40007a40 <_IO_Vprintf+0x28>
               
400081b0:	a4 10 20 00 	clr  %l2
                                      
				while (width--)
                                                  
400081b4:	c2 07 bf d4 	ld  [ %fp + -44 ], %g1
                        
400081b8:	80 a0 60 00 	cmp  %g1, 0
                                   
400081bc:	02 bf fe 21 	be  40007a40 <_IO_Vprintf+0x28>
               <== NEVER TAKEN
400081c0:	a2 00 7f ff 	add  %g1, -1, %l1
                             
400081c4:	c2 0f bf c3 	ldub  [ %fp + -61 ], %g1
                      
400081c8:	a1 28 60 18 	sll  %g1, 0x18, %l0
                           
400081cc:	ba 10 00 11 	mov  %l1, %i5
                                 
400081d0:	a1 3c 20 18 	sra  %l0, 0x18, %l0
                           
					PCHAR(padc);
                                                    
400081d4:	92 10 00 19 	mov  %i1, %o1
                                 
400081d8:	9f c7 00 00 	call  %i4
                                     
400081dc:	90 10 00 10 	mov  %l0, %o0
                                 
				while (width--)
                                                  
400081e0:	ba 07 7f ff 	add  %i5, -1, %i5
                             
400081e4:	80 a7 7f ff 	cmp  %i5, -1
                                  
400081e8:	12 bf ff fc 	bne  400081d8 <_IO_Vprintf+0x7c0>
             
400081ec:	92 10 00 19 	mov  %i1, %o1
                                 
400081f0:	a8 05 20 01 	inc  %l4
                                      
400081f4:	a4 10 20 00 	clr  %l2
                                      
400081f8:	10 bf fe 12 	b  40007a40 <_IO_Vprintf+0x28>
                
400081fc:	a8 04 40 14 	add  %l1, %l4, %l4
                            
40008200:	d8 08 60 01 	ldub  [ %g1 + 1 ], %o4
                        <== NOT EXECUTED
			sharpflag = 1;
                                                    
40008204:	82 10 20 01 	mov  1, %g1
                                   <== NOT EXECUTED
40008208:	c2 27 bf c4 	st  %g1, [ %fp + -60 ]
                        <== NOT EXECUTED
			goto reswitch;
                                                    
4000820c:	10 bf fe 39 	b  40007af0 <_IO_Vprintf+0xd8>
                <== NOT EXECUTED
40008210:	82 10 00 1a 	mov  %i2, %g1
                                 <== NOT EXECUTED
			PCHAR(ch);
                                                        
40008214:	92 10 00 19 	mov  %i1, %o1
                                 
40008218:	9f c7 00 00 	call  %i4
                                     
4000821c:	a8 05 60 01 	add  %l5, 1, %l4
                              
			break;
                                                            
40008220:	10 bf fe 08 	b  40007a40 <_IO_Vprintf+0x28>
                
40008224:	a4 10 20 00 	clr  %l2
                                      
40008228:	84 06 e0 04 	add  %i3, 4, %g2
                              <== NOT EXECUTED
			if (!dot) {
                                                       
4000822c:	80 a2 e0 00 	cmp  %o3, 0
                                   <== NOT EXECUTED
40008230:	12 80 00 76 	bne  40008408 <_IO_Vprintf+0x9f0>
             <== NOT EXECUTED
40008234:	c6 06 c0 00 	ld  [ %i3 ], %g3
                              <== NOT EXECUTED
				if (width < 0) {
                                                 
40008238:	80 a0 e0 00 	cmp  %g3, 0
                                   <== NOT EXECUTED
4000823c:	06 80 00 af 	bl  400084f8 <_IO_Vprintf+0xae0>
              <== NOT EXECUTED
40008240:	c6 27 bf d4 	st  %g3, [ %fp + -44 ]
                        <== NOT EXECUTED
40008244:	d8 08 60 01 	ldub  [ %g1 + 1 ], %o4
                        <== NOT EXECUTED
				dwidth = va_arg(ap, int);
                                        
40008248:	b6 10 00 02 	mov  %g2, %i3
                                 <== NOT EXECUTED
reswitch:	switch (ch = (u_char)*fmt++) {
                             
4000824c:	10 bf fe 29 	b  40007af0 <_IO_Vprintf+0xd8>
                <== NOT EXECUTED
40008250:	82 10 00 1a 	mov  %i2, %g1
                                 <== NOT EXECUTED
40008254:	d8 08 60 01 	ldub  [ %g1 + 1 ], %o4
                        
			ladjust = 1;
                                                      
40008258:	a4 10 20 01 	mov  1, %l2
                                   
			goto reswitch;
                                                    
4000825c:	10 bf fe 25 	b  40007af0 <_IO_Vprintf+0xd8>
                
40008260:	82 10 00 1a 	mov  %i2, %g1
                                 
			while (percent < fmt)
                                             
40008264:	a0 10 00 1d 	mov  %i5, %l0
                                 
40008268:	a8 10 00 15 	mov  %l5, %l4
                                 
4000826c:	80 a6 80 1d 	cmp  %i2, %i5
                                 
40008270:	08 bf fd f4 	bleu  40007a40 <_IO_Vprintf+0x28>
             <== NEVER TAKEN
40008274:	a4 10 20 01 	mov  1, %l2
                                   
				PCHAR(*percent++);
                                               
40008278:	a0 04 20 01 	inc  %l0
                                      
4000827c:	d0 4c 3f ff 	ldsb  [ %l0 + -1 ], %o0
                       
40008280:	9f c7 00 00 	call  %i4
                                     
40008284:	92 10 00 19 	mov  %i1, %o1
                                 
			while (percent < fmt)
                                             
40008288:	80 a6 80 10 	cmp  %i2, %l0
                                 
4000828c:	32 bf ff fc 	bne,a   4000827c <_IO_Vprintf+0x864>
          
40008290:	a0 04 20 01 	inc  %l0
                                      
40008294:	84 25 40 1d 	sub  %l5, %i5, %g2
                            
			stop = 1;
                                                         
40008298:	a4 10 20 01 	mov  1, %l2
                                   
4000829c:	10 bf fd e9 	b  40007a40 <_IO_Vprintf+0x28>
                
400082a0:	a8 06 80 02 	add  %i2, %g2, %l4
                            
reswitch:	switch (ch = (u_char)*fmt++) {
                             
400082a4:	10 bf ff 3a 	b  40007f8c <_IO_Vprintf+0x574>
               
400082a8:	82 10 00 1a 	mov  %i2, %g1
                                 
static inline int imax(int a, int b) { return (a > b ? a : b); }
     
400082ac:	c4 07 bf d0 	ld  [ %fp + -48 ], %g2
                        
400082b0:	80 a0 80 11 	cmp  %g2, %l1
                                 
400082b4:	16 80 00 04 	bge  400082c4 <_IO_Vprintf+0x8ac>
             
400082b8:	86 10 00 02 	mov  %g2, %g3
                                 
400082bc:	86 10 00 11 	mov  %l1, %g3
                                 
			dwidth -= n;
                                                      
400082c0:	c4 07 bf d0 	ld  [ %fp + -48 ], %g2
                        
400082c4:	a2 20 80 11 	sub  %g2, %l1, %l1
                            
			width -= tmp + imax(dwidth, n);
                                   
400082c8:	c4 07 bf d4 	ld  [ %fp + -44 ], %g2
                        
400082cc:	82 00 c0 01 	add  %g3, %g1, %g1
                            
			if (!ladjust)
                                                     
400082d0:	80 a4 a0 00 	cmp  %l2, 0
                                   
400082d4:	12 bf fe 86 	bne  40007cec <_IO_Vprintf+0x2d4>
             
400082d8:	a6 20 80 01 	sub  %g2, %g1, %l3
                            
				while (width-- > 0)
                                              
400082dc:	10 bf fe 78 	b  40007cbc <_IO_Vprintf+0x2a4>
               
400082e0:	ac 04 ff ff 	add  %l3, -1, %l6
                             
			else if (lflag)
                                                   
400082e4:	12 80 00 0c 	bne  40008314 <_IO_Vprintf+0x8fc>
             
400082e8:	82 06 e0 04 	add  %i3, 4, %g1
                              
			else if (hflag)
                                                   
400082ec:	80 a3 e0 00 	cmp  %o7, 0
                                   
400082f0:	02 80 00 48 	be  40008410 <_IO_Vprintf+0x9f8>
              <== ALWAYS TAKEN
400082f4:	80 a3 60 00 	cmp  %o5, 0
                                   
				num = (u_short)va_arg(ap, int);
                                  
400082f8:	c6 16 e0 02 	lduh  [ %i3 + 2 ], %g3
                        <== NOT EXECUTED
400082fc:	84 10 20 00 	clr  %g2
                                      <== NOT EXECUTED
40008300:	b6 10 00 01 	mov  %g1, %i3
                                 <== NOT EXECUTED
40008304:	10 bf fe 26 	b  40007b9c <_IO_Vprintf+0x184>
               <== NOT EXECUTED
40008308:	c4 3f bf c8 	std  %g2, [ %fp + -56 ]
                       <== NOT EXECUTED
				while (width-- > 0)
                                              
4000830c:	10 bf fd cd 	b  40007a40 <_IO_Vprintf+0x28>
                
40008310:	a4 10 20 00 	clr  %l2
                                      
				num = va_arg(ap, u_int);
                                         
40008314:	c6 06 c0 00 	ld  [ %i3 ], %g3
                              
40008318:	84 10 20 00 	clr  %g2
                                      
4000831c:	b6 10 00 01 	mov  %g1, %i3
                                 
40008320:	10 bf fe 1f 	b  40007b9c <_IO_Vprintf+0x184>
               
40008324:	c4 3f bf c8 	std  %g2, [ %fp + -56 ]
                       
40008328:	10 bf fe 77 	b  40007d04 <_IO_Vprintf+0x2ec>
               
4000832c:	a8 10 00 15 	mov  %l5, %l4
                                 
			else if (tflag)
                                                   
40008330:	80 a1 20 00 	cmp  %g4, 0
                                   
40008334:	12 80 00 17 	bne  40008390 <_IO_Vprintf+0x978>
             
40008338:	c6 06 c0 00 	ld  [ %i3 ], %g3
                              
			else if (hflag)
                                                   
4000833c:	80 a3 e0 00 	cmp  %o7, 0
                                   
40008340:	02 80 00 66 	be  400084d8 <_IO_Vprintf+0xac0>
              <== ALWAYS TAKEN
40008344:	80 a3 60 00 	cmp  %o5, 0
                                   
				num = (short)va_arg(ap, int);
                                    
40008348:	87 28 e0 10 	sll  %g3, 0x10, %g3
                           <== NOT EXECUTED
4000834c:	b6 10 00 01 	mov  %g1, %i3
                                 <== NOT EXECUTED
40008350:	83 38 e0 10 	sra  %g3, 0x10, %g1
                           <== NOT EXECUTED
40008354:	c2 27 bf cc 	st  %g1, [ %fp + -52 ]
                        <== NOT EXECUTED
40008358:	83 38 e0 1f 	sra  %g3, 0x1f, %g1
                           <== NOT EXECUTED
4000835c:	10 bf fe b0 	b  40007e1c <_IO_Vprintf+0x404>
               <== NOT EXECUTED
40008360:	c2 27 bf c8 	st  %g1, [ %fp + -56 ]
                        <== NOT EXECUTED
				} else if (base == 16) {
                                         
40008364:	80 a0 60 10 	cmp  %g1, 0x10
                                
40008368:	32 bf fe 73 	bne,a   40007d34 <_IO_Vprintf+0x31c>
          <== NEVER TAKEN
4000836c:	80 a4 60 00 	cmp  %l1, 0
                                   <== NOT EXECUTED
					PCHAR('0');
                                                     
40008370:	9f c7 00 00 	call  %i4
                                     
40008374:	90 10 20 30 	mov  0x30, %o0
                                
					PCHAR('x');
                                                     
40008378:	92 10 00 19 	mov  %i1, %o1
                                 
4000837c:	90 10 20 78 	mov  0x78, %o0
                                
40008380:	9f c7 00 00 	call  %i4
                                     
40008384:	a8 05 20 02 	add  %l4, 2, %l4
                              
			while (dwidth-- > 0)
                                              
40008388:	10 bf fe 6b 	b  40007d34 <_IO_Vprintf+0x31c>
               
4000838c:	80 a4 60 00 	cmp  %l1, 0
                                   
				num = va_arg(ap, int);
                                           
40008390:	b6 10 00 01 	mov  %g1, %i3
                                 
40008394:	c6 27 bf cc 	st  %g3, [ %fp + -52 ]
                        
40008398:	83 38 e0 1f 	sra  %g3, 0x1f, %g1
                           
4000839c:	10 bf fe a0 	b  40007e1c <_IO_Vprintf+0x404>
               
400083a0:	c2 27 bf c8 	st  %g1, [ %fp + -56 ]
                        
			PCHAR(va_arg(ap, int));
                                           
400083a4:	d0 06 c0 00 	ld  [ %i3 ], %o0
                              
400083a8:	9f c7 00 00 	call  %i4
                                     
400083ac:	92 10 00 19 	mov  %i1, %o1
                                 
			if (ladjust && width > 0)
                                         
400083b0:	80 8c a0 01 	btst  1, %l2
                                  
400083b4:	02 80 00 3b 	be  400084a0 <_IO_Vprintf+0xa88>
              <== ALWAYS TAKEN
400083b8:	80 8f 60 ff 	btst  0xff, %i5
                               
400083bc:	02 80 00 39 	be  400084a0 <_IO_Vprintf+0xa88>
              <== NOT EXECUTED
400083c0:	c2 07 bf d4 	ld  [ %fp + -44 ], %g1
                        <== NOT EXECUTED
				while (width--)
                                                  
400083c4:	a8 00 7f fe 	add  %g1, -2, %l4
                             <== NOT EXECUTED
400083c8:	c2 0f bf c3 	ldub  [ %fp + -61 ], %g1
                      <== NOT EXECUTED
400083cc:	b7 28 60 18 	sll  %g1, 0x18, %i3
                           <== NOT EXECUTED
400083d0:	ba 10 00 14 	mov  %l4, %i5
                                 <== NOT EXECUTED
400083d4:	b7 3e e0 18 	sra  %i3, 0x18, %i3
                           <== NOT EXECUTED
					PCHAR(padc);
                                                    
400083d8:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
400083dc:	9f c7 00 00 	call  %i4
                                     <== NOT EXECUTED
400083e0:	90 10 00 1b 	mov  %i3, %o0
                                 <== NOT EXECUTED
				while (width--)
                                                  
400083e4:	ba 07 7f ff 	add  %i5, -1, %i5
                             <== NOT EXECUTED
400083e8:	80 a7 7f ff 	cmp  %i5, -1
                                  <== NOT EXECUTED
400083ec:	12 bf ff fc 	bne  400083dc <_IO_Vprintf+0x9c4>
             <== NOT EXECUTED
400083f0:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
400083f4:	84 05 60 02 	add  %l5, 2, %g2
                              <== NOT EXECUTED
			PCHAR(va_arg(ap, int));
                                           
400083f8:	b6 10 00 10 	mov  %l0, %i3
                                 <== NOT EXECUTED
400083fc:	a8 05 00 02 	add  %l4, %g2, %l4
                            <== NOT EXECUTED
				while (width--)
                                                  
40008400:	10 bf fd 90 	b  40007a40 <_IO_Vprintf+0x28>
                <== NOT EXECUTED
40008404:	a4 10 20 00 	clr  %l2
                                      <== NOT EXECUTED
				dwidth = va_arg(ap, int);
                                        
40008408:	10 bf ff 8f 	b  40008244 <_IO_Vprintf+0x82c>
               <== NOT EXECUTED
4000840c:	c6 27 bf d0 	st  %g3, [ %fp + -48 ]
                        <== NOT EXECUTED
			else if (cflag)
                                                   
40008410:	22 bf ff c2 	be,a   40008318 <_IO_Vprintf+0x900>
           
40008414:	c6 06 c0 00 	ld  [ %i3 ], %g3
                              
				num = (u_char)va_arg(ap, int);
                                   
40008418:	c6 0e e0 03 	ldub  [ %i3 + 3 ], %g3
                        
4000841c:	84 10 20 00 	clr  %g2
                                      
40008420:	b6 10 00 01 	mov  %g1, %i3
                                 
40008424:	10 bf fd de 	b  40007b9c <_IO_Vprintf+0x184>
               
40008428:	c4 3f bf c8 	std  %g2, [ %fp + -56 ]
                       
				cflag = 1;
                                                       
4000842c:	9a 10 00 0f 	mov  %o7, %o5
                                 
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40008430:	82 10 00 1a 	mov  %i2, %g1
                                 
				hflag = 0;
                                                       
40008434:	10 bf fd af 	b  40007af0 <_IO_Vprintf+0xd8>
                
40008438:	9e 10 20 00 	clr  %o7
                                      
			while (n--)
                                                       
4000843c:	80 a4 60 00 	cmp  %l1, 0
                                   
40008440:	12 bf ff 4f 	bne  4000817c <_IO_Vprintf+0x764>
             
40008444:	a0 0c 00 01 	and  %l0, %g1, %l0
                            
40008448:	10 bf ff 58 	b  400081a8 <_IO_Vprintf+0x790>
               
4000844c:	a8 10 00 15 	mov  %l5, %l4
                                 
				for (n = 0; n < dwidth && p[n]; n++)
                             
40008450:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
40008454:	04 80 00 06 	ble  4000846c <_IO_Vprintf+0xa54>
             <== NOT EXECUTED
40008458:	c4 07 bf d4 	ld  [ %fp + -44 ], %g2
                        <== NOT EXECUTED
4000845c:	c2 4f 40 00 	ldsb  [ %i5 ], %g1
                            <== NOT EXECUTED
40008460:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
40008464:	12 80 00 2d 	bne  40008518 <_IO_Vprintf+0xb00>
             <== NOT EXECUTED
40008468:	a2 10 20 00 	clr  %l1
                                      <== NOT EXECUTED
			if (!ladjust && width > 0)
                                        
4000846c:	a1 38 a0 1f 	sra  %g2, 0x1f, %l0
                           <== NOT EXECUTED
40008470:	82 0c a0 01 	and  %l2, 1, %g1
                              <== NOT EXECUTED
40008474:	a0 24 00 02 	sub  %l0, %g2, %l0
                            <== NOT EXECUTED
40008478:	80 8c a0 01 	btst  1, %l2
                                  <== NOT EXECUTED
4000847c:	12 80 00 06 	bne  40008494 <_IO_Vprintf+0xa7c>
             <== NOT EXECUTED
40008480:	a1 34 20 1f 	srl  %l0, 0x1f, %l0
                           <== NOT EXECUTED
40008484:	a8 10 3f ff 	mov  -1, %l4
                                  <== NOT EXECUTED
40008488:	80 a4 20 00 	cmp  %l0, 0
                                   <== NOT EXECUTED
4000848c:	12 bf ff 28 	bne  4000812c <_IO_Vprintf+0x714>
             <== NOT EXECUTED
40008490:	a2 10 20 00 	clr  %l1
                                      <== NOT EXECUTED
40008494:	a0 0c 00 01 	and  %l0, %g1, %l0
                            <== NOT EXECUTED
40008498:	10 bf ff 44 	b  400081a8 <_IO_Vprintf+0x790>
               <== NOT EXECUTED
4000849c:	a8 10 00 15 	mov  %l5, %l4
                                 <== NOT EXECUTED
			PCHAR(va_arg(ap, int));
                                           
400084a0:	b6 10 00 10 	mov  %l0, %i3
                                 
400084a4:	10 bf fd 67 	b  40007a40 <_IO_Vprintf+0x28>
                
400084a8:	a4 10 20 00 	clr  %l2
                                      
					if (ch < '0' || ch > '9')
                                       
400084ac:	84 00 ff d0 	add  %g3, -48, %g2
                            <== NOT EXECUTED
					n = n * 10 + ch - '0';
                                          
400084b0:	90 02 3f d0 	add  %o0, -48, %o0
                            <== NOT EXECUTED
					if (ch < '0' || ch > '9')
                                       
400084b4:	80 a0 a0 09 	cmp  %g2, 9
                                   <== NOT EXECUTED
400084b8:	08 bf fe a9 	bleu  40007f5c <_IO_Vprintf+0x544>
            <== NOT EXECUTED
400084bc:	d8 08 60 01 	ldub  [ %g1 + 1 ], %o4
                        <== NOT EXECUTED
					n = n * 10 + ch - '0';
                                          
400084c0:	d0 27 bf d0 	st  %o0, [ %fp + -48 ]
                        <== NOT EXECUTED
reswitch:	switch (ch = (u_char)*fmt++) {
                             
400084c4:	10 bf fd 8b 	b  40007af0 <_IO_Vprintf+0xd8>
                <== NOT EXECUTED
400084c8:	82 10 00 1a 	mov  %i2, %g1
                                 <== NOT EXECUTED
				p = "(null)";
                                                    
400084cc:	3b 10 00 66 	sethi  %hi(0x40019800), %i5
                   
400084d0:	10 bf ff 04 	b  400080e0 <_IO_Vprintf+0x6c8>
               
400084d4:	ba 17 60 f0 	or  %i5, 0xf0, %i5	! 400198f0 <_Objects_Information_table+0x30>

			else if (cflag)
                                                   
400084d8:	02 bf ff af 	be  40008394 <_IO_Vprintf+0x97c>
              <== ALWAYS TAKEN
400084dc:	b6 10 00 01 	mov  %g1, %i3
                                 
				num = (char)va_arg(ap, int);
                                     
400084e0:	87 28 e0 18 	sll  %g3, 0x18, %g3
                           <== NOT EXECUTED
400084e4:	83 38 e0 18 	sra  %g3, 0x18, %g1
                           <== NOT EXECUTED
400084e8:	c2 27 bf cc 	st  %g1, [ %fp + -52 ]
                        <== NOT EXECUTED
400084ec:	83 38 e0 1f 	sra  %g3, 0x1f, %g1
                           <== NOT EXECUTED
400084f0:	10 bf fe 4b 	b  40007e1c <_IO_Vprintf+0x404>
               <== NOT EXECUTED
400084f4:	c2 27 bf c8 	st  %g1, [ %fp + -56 ]
                        <== NOT EXECUTED
400084f8:	d8 08 60 01 	ldub  [ %g1 + 1 ], %o4
                        <== NOT EXECUTED
					width = -width;
                                                 
400084fc:	c2 07 bf d4 	ld  [ %fp + -44 ], %g1
                        <== NOT EXECUTED
40008500:	82 20 00 01 	neg  %g1
                                      <== NOT EXECUTED
40008504:	a4 1c a0 01 	xor  %l2, 1, %l2
                              <== NOT EXECUTED
40008508:	c2 27 bf d4 	st  %g1, [ %fp + -44 ]
                        <== NOT EXECUTED
				width = va_arg(ap, int);
                                         
4000850c:	b6 10 00 02 	mov  %g2, %i3
                                 <== NOT EXECUTED
reswitch:	switch (ch = (u_char)*fmt++) {
                             
40008510:	10 bf fd 78 	b  40007af0 <_IO_Vprintf+0xd8>
                <== NOT EXECUTED
40008514:	82 10 00 1a 	mov  %i2, %g1
                                 <== NOT EXECUTED
				for (n = 0; n < dwidth && p[n]; n++)
                             
40008518:	c2 07 bf d0 	ld  [ %fp + -48 ], %g1
                        <== NOT EXECUTED
4000851c:	a2 04 60 01 	inc  %l1
                                      <== NOT EXECUTED
40008520:	80 a4 40 01 	cmp  %l1, %g1
                                 <== NOT EXECUTED
40008524:	02 bf fe f6 	be  400080fc <_IO_Vprintf+0x6e4>
              <== NOT EXECUTED
40008528:	c2 07 bf d4 	ld  [ %fp + -44 ], %g1
                        <== NOT EXECUTED
4000852c:	c2 4f 40 11 	ldsb  [ %i5 + %l1 ], %g1
                      <== NOT EXECUTED
40008530:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
40008534:	22 bf fe f2 	be,a   400080fc <_IO_Vprintf+0x6e4>
           <== NOT EXECUTED
40008538:	c2 07 bf d4 	ld  [ %fp + -44 ], %g1
                        <== NOT EXECUTED
4000853c:	10 bf ff f8 	b  4000851c <_IO_Vprintf+0xb04>
               <== NOT EXECUTED
40008540:	c2 07 bf d0 	ld  [ %fp + -48 ], %g1
                        <== NOT EXECUTED
40008544:	ba 10 20 00 	clr  %i5
                                      
		lflag = 0; ladjust = 0; sharpflag = 0; neg = 0;
                    
40008548:	10 bf fd 95 	b  40007b9c <_IO_Vprintf+0x184>
               
4000854c:	a8 10 20 00 	clr  %l4
                                      
			while (n--)
                                                       
40008550:	a8 10 00 15 	mov  %l5, %l4
                                 <== NOT EXECUTED
40008554:	10 bf fd 3b 	b  40007a40 <_IO_Vprintf+0x28>
                <== NOT EXECUTED
40008558:	a4 10 20 00 	clr  %l2
                                      <== NOT EXECUTED

                                                                     

4000856c <_ISR_Handler_initialization>: #elif defined(CPU_INTERRUPT_MAXIMUM_VECTOR_NUMBER) #error "CPU_INTERRUPT_MAXIMUM_VECTOR_NUMBER is defined for non-simple vectored interrupts" #endif void _ISR_Handler_initialization( void ) {
4000856c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  uint32_t  cpu_max;
                                                 
  uint32_t  cpu_index;
                                               
  size_t    stack_size;
                                              
  char     *stack_low;
                                               

                                                                     
  _ISR_Nest_level = 0;
                                               
40008570:	c0 21 a0 10 	clr  [ %g6 + 0x10 ]
                           
 *
                                                                   
 * @return This method returns the minimum stack size;
               
 */
                                                                  
RTEMS_INLINE_ROUTINE uint32_t _Stack_Minimum (void)
                  
{
                                                                    
  return rtems_minimum_stack_size;
                                   
40008574:	03 10 00 6c 	sethi  %hi(0x4001b000), %g1
                   
  _CPU_Initialize_vectors();
                                         
#endif
                                                               

                                                                     
  stack_size = rtems_configuration_get_interrupt_stack_size();
       

                                                                     
  if ( !_Stack_Is_enough( stack_size ) )
                             
40008578:	c4 00 63 40 	ld  [ %g1 + 0x340 ], %g2	! 4001b340 <_data_load_start>

  stack_size = rtems_configuration_get_interrupt_stack_size();
       
4000857c:	03 00 00 04 	sethi  %hi(0x1000), %g1
                       
40008580:	82 10 60 00 	mov  %g1, %g1	! 1000 <_Configuration_Interrupt_stack_size>

  if ( !_Stack_Is_enough( stack_size ) )
                             
40008584:	80 a0 40 02 	cmp  %g1, %g2
                                 
40008588:	0a 80 00 0a 	bcs  400085b0 <_ISR_Handler_initialization+0x44>
<== NEVER TAKEN
4000858c:	05 10 00 7e 	sethi  %hi(0x4001f800), %g2
                   
    char            *stack_high;
                                     

                                                                     
    cpu = _Per_CPU_Get_by_index( cpu_index );
                        
    stack_high = _Addresses_Add_offset( stack_low, stack_size );
     

                                                                     
    cpu->interrupt_stack_low = stack_low;
                            
40008590:	07 10 00 68 	sethi  %hi(0x4001a000), %g3
                   
40008594:	84 10 a1 40 	or  %g2, 0x140, %g2
                           
40008598:	86 10 e3 40 	or  %g3, 0x340, %g3
                           
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
                   
  const void *base,
                                                  
  uintptr_t   offset
                                                 
)
                                                                    
{
                                                                    
  return (void *)((uintptr_t)base + offset);
                         
4000859c:	82 00 40 03 	add  %g1, %g3, %g1
                            
400085a0:	c6 20 a0 08 	st  %g3, [ %g2 + 8 ]
                          
    cpu->interrupt_stack_high = stack_high;
                          
400085a4:	c2 20 a0 0c 	st  %g1, [ %g2 + 0xc ]
                        
    );
                                                               
#endif
                                                               

                                                                     
    stack_low = stack_high;
                                          
  }
                                                                  
}
                                                                    
400085a8:	81 c7 e0 08 	ret 
                                          
400085ac:	81 e8 00 00 	restore 
                                      
    _Internal_error( INTERNAL_ERROR_INTERRUPT_STACK_TOO_SMALL );
     
400085b0:	7f ff fc bd 	call  400078a4 <_Internal_error>
              <== NOT EXECUTED
400085b4:	90 10 20 04 	mov  4, %o0
                                   <== NOT EXECUTED
400085b8:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

4000855c <_ISR_Is_in_progress>: #if defined( RTEMS_SMP ) _ISR_Local_enable( level ); #endif return isr_nest_level != 0;
4000855c:	c2 01 a0 10 	ld  [ %g6 + 0x10 ], %g1
                       <== NOT EXECUTED
}
                                                                    
40008560:	80 a0 00 01 	cmp  %g0, %g1
                                 <== NOT EXECUTED
40008564:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
40008568:	90 40 20 00 	addx  %g0, 0, %o0
                             

                                                                     

400078a4 <_Internal_error>: /* will not return from this routine */ while (true); } void _Internal_error( Internal_errors_Core_list core_error ) {
400078a4:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  _Terminate( INTERNAL_ERROR_CORE, core_error );
                     
400078a8:	90 10 20 00 	clr  %o0
                                      <== NOT EXECUTED
400078ac:	7f ff ff eb 	call  40007858 <_Terminate>
                   <== NOT EXECUTED
400078b0:	92 10 00 18 	mov  %i0, %o1
                                 <== NOT EXECUTED
400078b4:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

4000b96c <_Mutex_Acquire>:
                                           
    );
                                                               
  }
                                                                  
}
                                                                    

                                                                     
void _Mutex_Acquire( struct _Mutex_Control *_mutex )
                 
{
                                                                    
4000b96c:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000b970:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return psr;
                                                        
4000b974:	86 10 00 01 	mov  %g1, %g3
                                 
  _Thread_queue_Context_ISR_disable( &queue_context, level );
        
  executing = _Mutex_Queue_acquire_critical( mutex, &queue_context );


                                                                     
  owner = mutex->Queue.Queue.owner;
                                  

                                                                     
  if ( __predict_true( owner == NULL ) ) {
                           
4000b978:	c4 06 20 0c 	ld  [ %i0 + 0xc ], %g2
                        
4000b97c:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000b980:	12 80 00 07 	bne  4000b99c <_Mutex_Acquire+0x30>
           
4000b984:	d4 01 a0 20 	ld  [ %g6 + 0x20 ], %o2
                       
    mutex->Queue.Queue.owner = executing;
                            
4000b988:	d4 26 20 0c 	st  %o2, [ %i0 + 0xc ]
                        
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b98c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b990:	01 00 00 00 	nop 
                                          
4000b994:	81 c7 e0 08 	ret 
                                          
4000b998:	81 e8 00 00 	restore 
                                      
RTEMS_INLINE_ROUTINE void
                                            
_Thread_queue_Context_set_enqueue_do_nothing_extra(
                  
  Thread_queue_Context *queue_context
                                
)
                                                                    
{
                                                                    
  queue_context->enqueue_callout = _Thread_queue_Enqueue_do_nothing_extra;

4000b99c:	03 10 00 36 	sethi  %hi(0x4000d800), %g1
                   
4000b9a0:	82 10 60 18 	or  %g1, 0x18, %g1	! 4000d818 <_Thread_queue_Enqueue_do_nothing_extra>

4000b9a4:	c2 27 bf e4 	st  %g1, [ %fp + -28 ]
                        
  queue_context->thread_state = thread_state;
                        
4000b9a8:	82 10 20 01 	mov  1, %g1
                                   
4000b9ac:	c2 27 bf e0 	st  %g1, [ %fp + -32 ]
                        
RTEMS_INLINE_ROUTINE void _Thread_queue_Context_set_deadlock_callout(

  Thread_queue_Context          *queue_context,
                      
  Thread_queue_Deadlock_callout  deadlock_callout
                    
)
                                                                    
{
                                                                    
  queue_context->deadlock_callout = deadlock_callout;
                
4000b9b0:	03 10 00 36 	sethi  %hi(0x4000d800), %g1
                   
4000b9b4:	82 10 60 20 	or  %g1, 0x20, %g1	! 4000d820 <_Thread_queue_Deadlock_fatal>

  _Thread_queue_Enqueue(
                                             
4000b9b8:	96 07 bf dc 	add  %fp, -36, %o3
                            
4000b9bc:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000b9c0:	13 10 00 8d 	sethi  %hi(0x40023400), %o1
                   
)
                                                                    
{
                                                                    
#if defined( RTEMS_SMP )
                                             
  context->Lock_context.isr_level = level;
                           
#else
                                                                
  context->isr_level = level;
                                        
4000b9c4:	c6 27 bf dc 	st  %g3, [ %fp + -36 ]
                        
4000b9c8:	92 12 61 90 	or  %o1, 0x190, %o1
                           
4000b9cc:	40 00 07 99 	call  4000d830 <_Thread_queue_Enqueue>
        
4000b9d0:	90 06 20 08 	add  %i0, 8, %o0
                              
    _Mutex_Queue_release( mutex, level, &queue_context );
            
  } else {
                                                           
    _Thread_queue_Context_set_enqueue_do_nothing_extra( &queue_context );

    _Mutex_Acquire_slow( mutex, owner, executing, level, &queue_context );

  }
                                                                  
}
                                                                    
4000b9d4:	81 c7 e0 08 	ret 
                                          
4000b9d8:	81 e8 00 00 	restore 
                                      

                                                                     

4000a25c <_Mutex_Acquire_timed>: int _Mutex_Acquire_timed( struct _Mutex_Control *_mutex, const struct timespec *abstime ) {
4000a25c:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000a260:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return psr;
                                                        
4000a264:	86 10 00 01 	mov  %g1, %g3
                                 
  _Thread_queue_Context_ISR_disable( &queue_context, level );
        
  executing = _Mutex_Queue_acquire_critical( mutex, &queue_context );


                                                                     
  owner = mutex->Queue.Queue.owner;
                                  

                                                                     
  if ( __predict_true( owner == NULL ) ) {
                           
4000a268:	c4 06 20 0c 	ld  [ %i0 + 0xc ], %g2
                        
4000a26c:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000a270:	12 80 00 07 	bne  4000a28c <_Mutex_Acquire_timed+0x30>
     
4000a274:	fa 01 a0 20 	ld  [ %g6 + 0x20 ], %i5
                       
    mutex->Queue.Queue.owner = executing;
                            
4000a278:	fa 26 20 0c 	st  %i5, [ %i0 + 0xc ]
                        <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000a27c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000a280:	01 00 00 00 	nop 
                                          
    _Thread_Resource_count_increment( executing );
                   
    _Mutex_Queue_release( mutex, level, &queue_context );
            

                                                                     
    return 0;
                                                        
4000a284:	81 c7 e0 08 	ret 
                                          
4000a288:	91 e8 20 00 	restore  %g0, 0, %o0
                          
  queue_context->thread_state = thread_state;
                        
4000a28c:	82 10 20 01 	mov  1, %g1
                                   
4000a290:	c2 27 bf e0 	st  %g1, [ %fp + -32 ]
                        
  queue_context->enqueue_callout = _Thread_queue_Add_timeout_realtime_timespec;

4000a294:	03 10 00 35 	sethi  %hi(0x4000d400), %g1
                   
4000a298:	82 10 62 b0 	or  %g1, 0x2b0, %g1	! 4000d6b0 <_Thread_queue_Add_timeout_realtime_timespec>

4000a29c:	c2 27 bf e4 	st  %g1, [ %fp + -28 ]
                        
  queue_context->deadlock_callout = deadlock_callout;
                
4000a2a0:	03 10 00 31 	sethi  %hi(0x4000c400), %g1
                   
4000a2a4:	82 10 62 b8 	or  %g1, 0x2b8, %g1	! 4000c6b8 <_Thread_queue_Deadlock_fatal>

  _Thread_queue_Enqueue(
                                             
4000a2a8:	90 06 20 08 	add  %i0, 8, %o0
                              
  queue_context->Timeout.arg = abstime;
                              
4000a2ac:	f2 27 bf e8 	st  %i1, [ %fp + -24 ]
                        
4000a2b0:	96 07 bf dc 	add  %fp, -36, %o3
                            
4000a2b4:	c6 27 bf dc 	st  %g3, [ %fp + -36 ]
                        
4000a2b8:	94 10 00 1d 	mov  %i5, %o2
                                 
  queue_context->deadlock_callout = deadlock_callout;
                
4000a2bc:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000a2c0:	13 10 00 49 	sethi  %hi(0x40012400), %o1
                   
4000a2c4:	40 00 09 01 	call  4000c6c8 <_Thread_queue_Enqueue>
        
4000a2c8:	92 12 62 e8 	or  %o1, 0x2e8, %o1	! 400126e8 <_Thread_queue_Operations_priority_inherit>

      &queue_context,
                                                
      abstime
                                                        
    );
                                                               
    _Mutex_Acquire_slow( mutex, owner, executing, level, &queue_context );


                                                                     
    return STATUS_GET_POSIX( _Thread_Wait_get_status( executing ) );
 
4000a2cc:	f0 07 60 4c 	ld  [ %i5 + 0x4c ], %i0
                       
4000a2d0:	b1 3e 20 08 	sra  %i0, 8, %i0
                              
  }
                                                                  
}
                                                                    
4000a2d4:	81 c7 e0 08 	ret 
                                          
4000a2d8:	81 e8 00 00 	restore 
                                      

                                                                     

4000b9dc <_Mutex_Release>: return eno; } void _Mutex_Release( struct _Mutex_Control *_mutex ) {
4000b9dc:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000b9e0:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  executing = _Thread_Executing;
                                     
4000b9e4:	d4 01 a0 20 	ld  [ %g6 + 0x20 ], %o2
                       
  mutex->Queue.Queue.owner = NULL;
                                   
4000b9e8:	c0 26 20 0c 	clr  [ %i0 + 0xc ]
                            
  heads = mutex->Queue.Queue.heads;
                                  
4000b9ec:	d2 06 20 08 	ld  [ %i0 + 8 ], %o1
                          
  if ( __predict_true( heads == NULL ) ) {
                           
4000b9f0:	80 a2 60 00 	cmp  %o1, 0
                                   
4000b9f4:	32 80 00 06 	bne,a   4000ba0c <_Mutex_Release+0x30>
        
4000b9f8:	c2 27 bf dc 	st  %g1, [ %fp + -36 ]
                        
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b9fc:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000ba00:	01 00 00 00 	nop 
                                          
4000ba04:	81 c7 e0 08 	ret 
                                          
4000ba08:	81 e8 00 00 	restore 
                                      
    _Thread_queue_Surrender(
                                         
4000ba0c:	19 10 00 8d 	sethi  %hi(0x40023400), %o4
                   
4000ba10:	96 07 bf dc 	add  %fp, -36, %o3
                            
4000ba14:	98 13 21 90 	or  %o4, 0x190, %o4
                           
4000ba18:	40 00 08 23 	call  4000daa4 <_Thread_queue_Surrender>
      
4000ba1c:	90 06 20 08 	add  %i0, 8, %o0
                              
  executing = _Mutex_Queue_acquire_critical( mutex, &queue_context );


                                                                     
  _Assert( mutex->Queue.Queue.owner == executing );
                  

                                                                     
  _Mutex_Release_critical( mutex, executing, level, &queue_context );

}
                                                                    
4000ba20:	81 c7 e0 08 	ret 
                                          
4000ba24:	81 e8 00 00 	restore 
                                      

                                                                     

4000a2dc <_Mutex_Try_acquire>: __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000a2dc:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  _Thread_queue_Context_ISR_disable( &queue_context, level );
        
  executing = _Mutex_Queue_acquire_critical( mutex, &queue_context );


                                                                     
  owner = mutex->Queue.Queue.owner;
                                  

                                                                     
  if ( __predict_true( owner == NULL ) ) {
                           
4000a2e0:	c4 02 20 0c 	ld  [ %o0 + 0xc ], %g2
                        
4000a2e4:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000a2e8:	12 80 00 08 	bne  4000a308 <_Mutex_Try_acquire+0x2c>
       
4000a2ec:	c6 01 a0 20 	ld  [ %g6 + 0x20 ], %g3
                       
    mutex->Queue.Queue.owner = executing;
                            
4000a2f0:	c6 22 20 0c 	st  %g3, [ %o0 + 0xc ]
                        <== NOT EXECUTED
    _Thread_Resource_count_increment( executing );
                   
    eno = 0;
                                                         
4000a2f4:	90 10 20 00 	clr  %o0
                                      <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000a2f8:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000a2fc:	01 00 00 00 	nop 
                                          
  }
                                                                  

                                                                     
  _Mutex_Queue_release( mutex, level, &queue_context );
              

                                                                     
  return eno;
                                                        
}
                                                                    
4000a300:	81 c3 e0 08 	retl 
                                         
4000a304:	01 00 00 00 	nop 
                                          
    eno = EBUSY;
                                                     
4000a308:	90 10 20 10 	mov  0x10, %o0	! 10 <_TLS_Alignment+0xf>
      <== NOT EXECUTED
4000a30c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000a310:	01 00 00 00 	nop 
                                          
}
                                                                    
4000a314:	81 c3 e0 08 	retl 
                                         
4000a318:	01 00 00 00 	nop 
                                          

                                                                     

40008c70 <_Mutex_recursive_Acquire>: { return (Mutex_recursive_Control *) _mutex; } void _Mutex_recursive_Acquire( struct _Mutex_recursive_Control *_mutex ) {
40008c70:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

40008c74:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return psr;
                                                        
40008c78:	86 10 00 01 	mov  %g1, %g3
                                 
  mutex = _Mutex_recursive_Get( _mutex );
                            
  _Thread_queue_Context_initialize( &queue_context );
                
  _Thread_queue_Context_ISR_disable( &queue_context, level );
        
  executing = _Mutex_Queue_acquire_critical( &mutex->Mutex, &queue_context );


                                                                     
  owner = mutex->Mutex.Queue.Queue.owner;
                            
40008c7c:	c4 06 20 0c 	ld  [ %i0 + 0xc ], %g2
                        

                                                                     
  if ( __predict_true( owner == NULL ) ) {
                           
40008c80:	80 a0 a0 00 	cmp  %g2, 0
                                   
40008c84:	12 80 00 07 	bne  40008ca0 <_Mutex_recursive_Acquire+0x30>
 
40008c88:	d4 01 a0 20 	ld  [ %g6 + 0x20 ], %o2
                       
    mutex->Mutex.Queue.Queue.owner = executing;
                      
40008c8c:	d4 26 20 0c 	st  %o2, [ %i0 + 0xc ]
                        <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40008c90:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40008c94:	01 00 00 00 	nop 
                                          
40008c98:	81 c7 e0 08 	ret 
                                          
40008c9c:	81 e8 00 00 	restore 
                                      
    _Thread_Resource_count_increment( executing );
                   
    _Mutex_Queue_release( &mutex->Mutex, level, &queue_context );
    
  } else if ( owner == executing ) {
                                 
40008ca0:	80 a2 80 02 	cmp  %o2, %g2
                                 
40008ca4:	02 80 00 11 	be  40008ce8 <_Mutex_recursive_Acquire+0x78>
  
40008ca8:	96 07 bf dc 	add  %fp, -36, %o3
                            
RTEMS_INLINE_ROUTINE void
                                            
_Thread_queue_Context_set_enqueue_do_nothing_extra(
                  
  Thread_queue_Context *queue_context
                                
)
                                                                    
{
                                                                    
  queue_context->enqueue_callout = _Thread_queue_Enqueue_do_nothing_extra;

40008cac:	03 10 00 2a 	sethi  %hi(0x4000a800), %g1
                   
40008cb0:	82 10 61 9c 	or  %g1, 0x19c, %g1	! 4000a99c <_Thread_queue_Enqueue_do_nothing_extra>

40008cb4:	c2 27 bf e4 	st  %g1, [ %fp + -28 ]
                        
  queue_context->thread_state = thread_state;
                        
40008cb8:	82 10 20 01 	mov  1, %g1
                                   
40008cbc:	c2 27 bf e0 	st  %g1, [ %fp + -32 ]
                        
RTEMS_INLINE_ROUTINE void _Thread_queue_Context_set_deadlock_callout(

  Thread_queue_Context          *queue_context,
                      
  Thread_queue_Deadlock_callout  deadlock_callout
                    
)
                                                                    
{
                                                                    
  queue_context->deadlock_callout = deadlock_callout;
                
40008cc0:	03 10 00 2a 	sethi  %hi(0x4000a800), %g1
                   
40008cc4:	82 10 61 a4 	or  %g1, 0x1a4, %g1	! 4000a9a4 <_Thread_queue_Deadlock_fatal>

40008cc8:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
  _Thread_queue_Enqueue(
                                             
40008ccc:	13 10 00 66 	sethi  %hi(0x40019800), %o1
                   
)
                                                                    
{
                                                                    
#if defined( RTEMS_SMP )
                                             
  context->Lock_context.isr_level = level;
                           
#else
                                                                
  context->isr_level = level;
                                        
40008cd0:	c6 27 bf dc 	st  %g3, [ %fp + -36 ]
                        
40008cd4:	92 12 61 28 	or  %o1, 0x128, %o1
                           
40008cd8:	40 00 07 37 	call  4000a9b4 <_Thread_queue_Enqueue>
        
40008cdc:	90 06 20 08 	add  %i0, 8, %o0
                              
    _Mutex_Queue_release( &mutex->Mutex, level, &queue_context );
    
  } else {
                                                           
    _Thread_queue_Context_set_enqueue_do_nothing_extra( &queue_context );

    _Mutex_Acquire_slow( &mutex->Mutex, owner, executing, level, &queue_context );

  }
                                                                  
}
                                                                    
40008ce0:	81 c7 e0 08 	ret 
                                          
40008ce4:	81 e8 00 00 	restore 
                                      
    ++mutex->nest_level;
                                             
40008ce8:	c4 06 20 14 	ld  [ %i0 + 0x14 ], %g2
                       <== NOT EXECUTED
40008cec:	84 00 a0 01 	inc  %g2
                                      <== NOT EXECUTED
40008cf0:	c4 26 20 14 	st  %g2, [ %i0 + 0x14 ]
                       <== NOT EXECUTED
40008cf4:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40008cf8:	01 00 00 00 	nop 
                                          
40008cfc:	81 c7 e0 08 	ret 
                                          
40008d00:	81 e8 00 00 	restore 
                                      

                                                                     

400097e8 <_Mutex_recursive_Acquire_timed>: int _Mutex_recursive_Acquire_timed( struct _Mutex_recursive_Control *_mutex, const struct timespec *abstime ) {
400097e8:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

400097ec:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return psr;
                                                        
400097f0:	86 10 00 01 	mov  %g1, %g3
                                 
  mutex = _Mutex_recursive_Get( _mutex );
                            
  _Thread_queue_Context_initialize( &queue_context );
                
  _Thread_queue_Context_ISR_disable( &queue_context, level );
        
  executing = _Mutex_Queue_acquire_critical( &mutex->Mutex, &queue_context );


                                                                     
  owner = mutex->Mutex.Queue.Queue.owner;
                            
400097f4:	c4 06 20 0c 	ld  [ %i0 + 0xc ], %g2
                        

                                                                     
  if ( __predict_true( owner == NULL ) ) {
                           
400097f8:	80 a0 a0 00 	cmp  %g2, 0
                                   
400097fc:	12 80 00 07 	bne  40009818 <_Mutex_recursive_Acquire_timed+0x30>

40009800:	fa 01 a0 20 	ld  [ %g6 + 0x20 ], %i5
                       
    mutex->Mutex.Queue.Queue.owner = executing;
                      
40009804:	fa 26 20 0c 	st  %i5, [ %i0 + 0xc ]
                        <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40009808:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000980c:	01 00 00 00 	nop 
                                          
    _Thread_Resource_count_increment( executing );
                   
    _Mutex_Queue_release( &mutex->Mutex, level, &queue_context );
    

                                                                     
    return 0;
                                                        
40009810:	81 c7 e0 08 	ret 
                                          
40009814:	91 e8 20 00 	restore  %g0, 0, %o0
                          
  } else if ( owner == executing ) {
                                 
40009818:	80 a0 80 1d 	cmp  %g2, %i5
                                 
4000981c:	02 80 00 15 	be  40009870 <_Mutex_recursive_Acquire_timed+0x88>

40009820:	90 06 20 08 	add  %i0, 8, %o0
                              
  queue_context->thread_state = thread_state;
                        
40009824:	82 10 20 01 	mov  1, %g1
                                   
40009828:	c2 27 bf e0 	st  %g1, [ %fp + -32 ]
                        
  queue_context->enqueue_callout = _Thread_queue_Add_timeout_realtime_timespec;

4000982c:	03 10 00 32 	sethi  %hi(0x4000c800), %g1
                   
40009830:	82 10 60 10 	or  %g1, 0x10, %g1	! 4000c810 <_Thread_queue_Add_timeout_realtime_timespec>

40009834:	c2 27 bf e4 	st  %g1, [ %fp + -28 ]
                        
  queue_context->deadlock_callout = deadlock_callout;
                
40009838:	03 10 00 2e 	sethi  %hi(0x4000b800), %g1
                   
4000983c:	82 10 62 10 	or  %g1, 0x210, %g1	! 4000ba10 <_Thread_queue_Deadlock_fatal>

  queue_context->Timeout.arg = abstime;
                              
40009840:	f2 27 bf e8 	st  %i1, [ %fp + -24 ]
                        
  _Thread_queue_Enqueue(
                                             
40009844:	96 07 bf dc 	add  %fp, -36, %o3
                            
40009848:	c6 27 bf dc 	st  %g3, [ %fp + -36 ]
                        
4000984c:	94 10 00 1d 	mov  %i5, %o2
                                 
  queue_context->deadlock_callout = deadlock_callout;
                
40009850:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
40009854:	13 10 00 4a 	sethi  %hi(0x40012800), %o1
                   
40009858:	40 00 08 72 	call  4000ba20 <_Thread_queue_Enqueue>
        
4000985c:	92 12 62 ec 	or  %o1, 0x2ec, %o1	! 40012aec <_Thread_queue_Operations_priority_inherit>

      &queue_context,
                                                
      abstime
                                                        
    );
                                                               
    _Mutex_Acquire_slow( &mutex->Mutex, owner, executing, level, &queue_context );


                                                                     
    return STATUS_GET_POSIX( _Thread_Wait_get_status( executing ) );
 
40009860:	f0 07 60 4c 	ld  [ %i5 + 0x4c ], %i0
                       
40009864:	b1 3e 20 08 	sra  %i0, 8, %i0
                              
  }
                                                                  
}
                                                                    
40009868:	81 c7 e0 08 	ret 
                                          
4000986c:	81 e8 00 00 	restore 
                                      
    ++mutex->nest_level;
                                             
40009870:	c4 06 20 14 	ld  [ %i0 + 0x14 ], %g2
                       <== NOT EXECUTED
40009874:	84 00 a0 01 	inc  %g2
                                      <== NOT EXECUTED
40009878:	c4 26 20 14 	st  %g2, [ %i0 + 0x14 ]
                       <== NOT EXECUTED
4000987c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40009880:	01 00 00 00 	nop 
                                          
    return 0;
                                                        
40009884:	81 c7 e0 08 	ret 
                                          
40009888:	91 e8 20 00 	restore  %g0, 0, %o0
                          

                                                                     

40008d04 <_Mutex_recursive_Release>: return eno; } void _Mutex_recursive_Release( struct _Mutex_recursive_Control *_mutex ) {
40008d04:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

40008d08:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  _Thread_queue_Context_ISR_disable( &queue_context, level );
        
  executing = _Mutex_Queue_acquire_critical( &mutex->Mutex, &queue_context );


                                                                     
  _Assert( mutex->Mutex.Queue.Queue.owner == executing );
            

                                                                     
  nest_level = mutex->nest_level;
                                    
40008d0c:	c4 06 20 14 	ld  [ %i0 + 0x14 ], %g2
                       

                                                                     
  if ( __predict_true( nest_level == 0 ) ) {
                         
40008d10:	80 a0 a0 00 	cmp  %g2, 0
                                   
40008d14:	12 80 00 0b 	bne  40008d40 <_Mutex_recursive_Release+0x3c>
 
40008d18:	d4 01 a0 20 	ld  [ %g6 + 0x20 ], %o2
                       
  mutex->Queue.Queue.owner = NULL;
                                   
40008d1c:	c0 26 20 0c 	clr  [ %i0 + 0xc ]
                            
  heads = mutex->Queue.Queue.heads;
                                  
40008d20:	d2 06 20 08 	ld  [ %i0 + 8 ], %o1
                          
  if ( __predict_true( heads == NULL ) ) {
                           
40008d24:	80 a2 60 00 	cmp  %o1, 0
                                   
40008d28:	32 80 00 0c 	bne,a   40008d58 <_Mutex_recursive_Release+0x54>

40008d2c:	c2 27 bf dc 	st  %g1, [ %fp + -36 ]
                        
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40008d30:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40008d34:	01 00 00 00 	nop 
                                          
  } else {
                                                           
    mutex->nest_level = nest_level - 1;
                              

                                                                     
    _Mutex_Queue_release( &mutex->Mutex, level, &queue_context );
    
  }
                                                                  
}
                                                                    
40008d38:	81 c7 e0 08 	ret 
                                          
40008d3c:	81 e8 00 00 	restore 
                                      
    mutex->nest_level = nest_level - 1;
                              
40008d40:	84 00 bf ff 	add  %g2, -1, %g2
                             <== NOT EXECUTED
40008d44:	c4 26 20 14 	st  %g2, [ %i0 + 0x14 ]
                       <== NOT EXECUTED
40008d48:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40008d4c:	01 00 00 00 	nop 
                                          
}
                                                                    
40008d50:	81 c7 e0 08 	ret 
                                          
40008d54:	81 e8 00 00 	restore 
                                      
    _Thread_queue_Surrender(
                                         
40008d58:	19 10 00 66 	sethi  %hi(0x40019800), %o4
                   
40008d5c:	96 07 bf dc 	add  %fp, -36, %o3
                            
40008d60:	98 13 21 28 	or  %o4, 0x128, %o4
                           
40008d64:	40 00 07 b1 	call  4000ac28 <_Thread_queue_Surrender>
      
40008d68:	90 06 20 08 	add  %i0, 8, %o0
                              
40008d6c:	81 c7 e0 08 	ret 
                                          
40008d70:	81 e8 00 00 	restore 
                                      

                                                                     

4000988c <_Mutex_recursive_Try_acquire>: int _Mutex_recursive_Try_acquire( struct _Mutex_recursive_Control *_mutex ) {
4000988c:	84 10 00 08 	mov  %o0, %g2
                                 <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

40009890:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  mutex = _Mutex_recursive_Get( _mutex );
                            
  _Thread_queue_Context_initialize( &queue_context );
                
  _Thread_queue_Context_ISR_disable( &queue_context, level );
        
  executing = _Mutex_Queue_acquire_critical( &mutex->Mutex, &queue_context );


                                                                     
  owner = mutex->Mutex.Queue.Queue.owner;
                            
40009894:	c6 02 20 0c 	ld  [ %o0 + 0xc ], %g3
                        

                                                                     
  if ( __predict_true( owner == NULL ) ) {
                           
40009898:	80 a0 e0 00 	cmp  %g3, 0
                                   
4000989c:	12 80 00 08 	bne  400098bc <_Mutex_recursive_Try_acquire+0x30>

400098a0:	c8 01 a0 20 	ld  [ %g6 + 0x20 ], %g4
                       
    mutex->Mutex.Queue.Queue.owner = executing;
                      
400098a4:	c8 22 20 0c 	st  %g4, [ %o0 + 0xc ]
                        <== NOT EXECUTED
    _Thread_Resource_count_increment( executing );
                   
    eno = 0;
                                                         
400098a8:	90 10 20 00 	clr  %o0
                                      <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

400098ac:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
400098b0:	01 00 00 00 	nop 
                                          
  }
                                                                  

                                                                     
  _Mutex_Queue_release( &mutex->Mutex, level, &queue_context );
      

                                                                     
  return eno;
                                                        
}
                                                                    
400098b4:	81 c3 e0 08 	retl 
                                         
400098b8:	01 00 00 00 	nop 
                                          
  } else if ( owner == executing ) {
                                 
400098bc:	80 a1 00 03 	cmp  %g4, %g3
                                 
400098c0:	12 bf ff fb 	bne  400098ac <_Mutex_recursive_Try_acquire+0x20>

400098c4:	90 10 20 10 	mov  0x10, %o0
                                
    ++mutex->nest_level;
                                             
400098c8:	c6 00 a0 14 	ld  [ %g2 + 0x14 ], %g3
                       
400098cc:	86 00 e0 01 	inc  %g3
                                      
    eno = 0;
                                                         
400098d0:	90 10 20 00 	clr  %o0
                                      
400098d4:	10 bf ff f6 	b  400098ac <_Mutex_recursive_Try_acquire+0x20>

400098d8:	c6 20 a0 14 	st  %g3, [ %g2 + 0x14 ]
                       

                                                                     

4000eae0 <_Objects_API_maximum_class>: #include <rtems/score/objectimpl.h> unsigned int _Objects_API_maximum_class( uint32_t api ) {
4000eae0:	82 02 3f ff 	add  %o0, -1, %g1
                             
4000eae4:	80 a0 60 02 	cmp  %g1, 2
                                   
4000eae8:	18 80 00 06 	bgu  4000eb00 <_Objects_API_maximum_class+0x20>
<== NEVER TAKEN
4000eaec:	90 10 20 00 	clr  %o0
                                      
4000eaf0:	83 28 60 02 	sll  %g1, 2, %g1
                              
4000eaf4:	05 10 00 67 	sethi  %hi(0x40019c00), %g2
                   
4000eaf8:	84 10 a0 84 	or  %g2, 0x84, %g2	! 40019c84 <CSWTCH.1>
      
4000eafc:	d0 00 80 01 	ld  [ %g2 + %g1 ], %o0
                        
    case OBJECTS_NO_API:
                                             
    default:
                                                         
      break;
                                                         
  }
                                                                  
  return 0;
                                                          
}
                                                                    
4000eb00:	81 c3 e0 08 	retl 
                                         
4000eb04:	01 00 00 00 	nop 
                                          

                                                                     

4000bb2c <_Objects_Active_count>: #include <rtems/score/chainimpl.h> Objects_Maximum _Objects_Active_count( const Objects_Information *information ) {
4000bb2c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  size_t inactive;
                                                   
  size_t maximum;
                                                    

                                                                     
  _Assert( _Objects_Allocator_is_owner() );
                          

                                                                     
  inactive = _Chain_Node_count_unprotected( &information->Inactive );

4000bb30:	7f ff f8 20 	call  40009bb0 <_Chain_Node_count_unprotected>
<== NOT EXECUTED
4000bb34:	90 06 20 20 	add  %i0, 0x20, %o0
                           <== NOT EXECUTED
  maximum  = information->maximum;
                                   

                                                                     
  return (Objects_Maximum) ( maximum - inactive );
                   
4000bb38:	f0 16 20 10 	lduh  [ %i0 + 0x10 ], %i0
                     
4000bb3c:	b0 26 00 08 	sub  %i0, %o0, %i0
                            
4000bb40:	b1 2e 20 10 	sll  %i0, 0x10, %i0
                           
}
                                                                    
4000bb44:	b1 36 20 10 	srl  %i0, 0x10, %i0
                           
4000bb48:	81 c7 e0 08 	ret 
                                          
4000bb4c:	81 e8 00 00 	restore 
                                      

                                                                     

40008e4c <_Objects_Allocate>: Objects_Control *_Objects_Allocate( Objects_Information *information ) {
40008e4c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  _RTEMS_Lock_allocator();
                                           
40008e50:	7f ff f8 83 	call  4000705c <_RTEMS_Lock_allocator>
        <== NOT EXECUTED
40008e54:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     
  return _Objects_Allocate_unprotected( information );
               
40008e58:	7f ff ff c7 	call  40008d74 <_Objects_Allocate_unprotected>

40008e5c:	81 e8 00 00 	restore 
                                      

                                                                     

40008d74 <_Objects_Allocate_unprotected>: } Objects_Control *_Objects_Allocate_unprotected( Objects_Information *information ) {
40008d74:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
   *  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 )
                                      
40008d78:	c2 06 20 18 	ld  [ %i0 + 0x18 ], %g1
                       <== NOT EXECUTED
40008d7c:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
40008d80:	02 80 00 31 	be  40008e44 <_Objects_Allocate_unprotected+0xd0>
<== NOT EXECUTED
40008d84:	ba 10 00 18 	mov  %i0, %i5
                                 
  return _Chain_Immutable_head( the_chain )->next;
                   
40008d88:	f0 06 20 20 	ld  [ %i0 + 0x20 ], %i0
                       
  return &the_chain->Tail.Node;
                                      
40008d8c:	b8 07 60 24 	add  %i5, 0x24, %i4
                           
40008d90:	b6 07 60 20 	add  %i5, 0x20, %i3
                           
  if ( !_Chain_Is_empty(the_chain))
                                  
40008d94:	80 a7 00 18 	cmp  %i4, %i0
                                 
40008d98:	02 80 00 1e 	be  40008e10 <_Objects_Allocate_unprotected+0x9c>

40008d9c:	c4 0f 60 12 	ldub  [ %i5 + 0x12 ], %g2
                     
  new_first = old_first->next;
                                       
40008da0:	c2 06 00 00 	ld  [ %i0 ], %g1
                              
  head->next = new_first;
                                            
40008da4:	c2 27 60 20 	st  %g1, [ %i5 + 0x20 ]
                       
   *  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_Get_inactive( information );
                 

                                                                     
  if ( information->auto_extend ) {
                                  
40008da8:	80 88 a0 ff 	btst  0xff, %g2
                               
40008dac:	02 80 00 17 	be  40008e08 <_Objects_Allocate_unprotected+0x94>

40008db0:	f6 20 60 04 	st  %i3, [ %g1 + 4 ]
                          
    }
                                                                

                                                                     
    if ( the_object ) {
                                              
      uint32_t   block;
                                              

                                                                     
      block = (uint32_t) _Objects_Get_index( the_object->id ) -
      
40008db4:	c2 06 20 08 	ld  [ %i0 + 8 ], %g1
                          
40008db8:	c6 07 60 08 	ld  [ %i5 + 8 ], %g3
                          
40008dbc:	05 00 00 3f 	sethi  %hi(0xfc00), %g2
                       
40008dc0:	84 10 a3 ff 	or  %g2, 0x3ff, %g2	! ffff <_Configuration_Interrupt_stack_size+0xefff>

40008dc4:	82 08 40 02 	and  %g1, %g2, %g1
                            
40008dc8:	84 08 c0 02 	and  %g3, %g2, %g2
                            
              _Objects_Get_index( information->minimum_id );
         
      block /= information->allocation_size;
                         

                                                                     
      information->inactive_per_block[ block ]--;
                    
40008dcc:	c8 07 60 30 	ld  [ %i5 + 0x30 ], %g4
                       
      block = (uint32_t) _Objects_Get_index( the_object->id ) -
      
40008dd0:	82 20 40 02 	sub  %g1, %g2, %g1
                            
      block /= information->allocation_size;
                         
40008dd4:	c4 17 60 14 	lduh  [ %i5 + 0x14 ], %g2
                     
40008dd8:	81 80 20 00 	wr  %g0, %y
                                   
40008ddc:	01 00 00 00 	nop 
                                          
40008de0:	01 00 00 00 	nop 
                                          
40008de4:	01 00 00 00 	nop 
                                          
40008de8:	84 70 40 02 	udiv  %g1, %g2, %g2
                           
      information->inactive_per_block[ block ]--;
                    
40008dec:	83 28 a0 02 	sll  %g2, 2, %g1
                              
40008df0:	c6 01 00 01 	ld  [ %g4 + %g1 ], %g3
                        
      information->inactive--;
                                       
40008df4:	c4 17 60 2c 	lduh  [ %i5 + 0x2c ], %g2
                     
      information->inactive_per_block[ block ]--;
                    
40008df8:	86 00 ff ff 	add  %g3, -1, %g3
                             
40008dfc:	c6 21 00 01 	st  %g3, [ %g4 + %g1 ]
                        
      information->inactive--;
                                       
40008e00:	82 00 bf ff 	add  %g2, -1, %g1
                             
40008e04:	c2 37 60 2c 	sth  %g1, [ %i5 + 0x2c ]
                      
    );
                                                               
  }
                                                                  
#endif
                                                               

                                                                     
  return the_object;
                                                 
}
                                                                    
40008e08:	81 c7 e0 08 	ret 
                                          
40008e0c:	81 e8 00 00 	restore 
                                      
  if ( information->auto_extend ) {
                                  
40008e10:	80 88 a0 ff 	btst  0xff, %g2
                               
40008e14:	02 80 00 0c 	be  40008e44 <_Objects_Allocate_unprotected+0xd0>

40008e18:	01 00 00 00 	nop 
                                          
      _Objects_Extend_information( information );
                    
40008e1c:	40 00 00 11 	call  40008e60 <_Objects_Extend_information>
  
40008e20:	90 10 00 1d 	mov  %i5, %o0
                                 
  return _Chain_Immutable_head( the_chain )->next;
                   
40008e24:	f0 07 60 20 	ld  [ %i5 + 0x20 ], %i0
                       
  if ( !_Chain_Is_empty(the_chain))
                                  
40008e28:	80 a7 00 18 	cmp  %i4, %i0
                                 
40008e2c:	02 80 00 06 	be  40008e44 <_Objects_Allocate_unprotected+0xd0>

40008e30:	01 00 00 00 	nop 
                                          
  new_first = old_first->next;
                                       
40008e34:	c2 06 00 00 	ld  [ %i0 ], %g1
                              
  head->next = new_first;
                                            
40008e38:	c2 27 60 20 	st  %g1, [ %i5 + 0x20 ]
                       
  new_first->previous = head;
                                        
40008e3c:	10 bf ff de 	b  40008db4 <_Objects_Allocate_unprotected+0x40>

40008e40:	f6 20 60 04 	st  %i3, [ %g1 + 4 ]
                          
    return NULL;
                                                     
40008e44:	81 c7 e0 08 	ret 
                                          
40008e48:	91 e8 20 00 	restore  %g0, 0, %o0
                          

                                                                     

4000ded4 <_Objects_Close>: information->local_table[ index ] = the_object;
4000ded4:	c2 12 60 0a 	lduh  [ %o1 + 0xa ], %g1
                      <== NOT EXECUTED
4000ded8:	c4 02 20 1c 	ld  [ %o0 + 0x1c ], %g2
                       <== NOT EXECUTED
4000dedc:	83 28 60 02 	sll  %g1, 2, %g1
                              <== NOT EXECUTED
4000dee0:	c0 20 80 01 	clr  [ %g2 + %g1 ]
                            <== NOT EXECUTED
  Objects_Control      *the_object
                                   
)
                                                                    
{
                                                                    
  _Objects_Invalidate_Id( information, the_object );
                 

                                                                     
  _Objects_Namespace_remove( information, the_object );
              
4000dee4:	82 13 c0 00 	mov  %o7, %g1
                                 <== NOT EXECUTED
4000dee8:	40 00 00 69 	call  4000e08c <_Objects_Namespace_remove>
    <== NOT EXECUTED
4000deec:	9e 10 40 00 	mov  %g1, %o7
                                 <== NOT EXECUTED

                                                                     

400091a8 <_Objects_Do_initialize_information>: #if defined(RTEMS_MULTIPROCESSING) , Objects_Thread_queue_Extract_callout extract #endif ) {
400091a8:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  information->maximum = 0;
                                          

                                                                     
  /*
                                                                 
   *  Register this Object Class in the Object Information Table.
    
   */
                                                                
  _Objects_Information_table[ the_api ][ the_class ] = information;
  
400091ac:	05 10 00 66 	sethi  %hi(0x40019800), %g2
                   
  information->size               = size;
                            
400091b0:	f8 26 20 18 	st  %i4, [ %i0 + 0x18 ]
                       
  _Objects_Information_table[ the_api ][ the_class ] = information;
  
400091b4:	84 10 a0 c0 	or  %g2, 0xc0, %g2
                            
  information->the_api            = the_api;
                         
400091b8:	f2 26 00 00 	st  %i1, [ %i0 ]
                              
  _Objects_Information_table[ the_api ][ the_class ] = information;
  
400091bc:	b9 2e 60 02 	sll  %i1, 2, %i4
                              
  information->the_class          = the_class;
                       
400091c0:	f4 36 20 04 	sth  %i2, [ %i0 + 4 ]
                         
  _Objects_Information_table[ the_api ][ the_class ] = information;
  
400091c4:	89 2e a0 02 	sll  %i2, 2, %g4
                              
  information->local_table        = 0;
                               
400091c8:	c0 26 20 1c 	clr  [ %i0 + 0x1c ]
                           
 * @retval true Unlimited objects are available.
                     
 * @retval false The object count is fixed.
                          
 */
                                                                  
RTEMS_INLINE_ROUTINE bool _Objects_Is_unlimited( uint32_t maximum )
  
{
                                                                    
  return (maximum & OBJECTS_UNLIMITED_OBJECTS) != 0;
                 
400091cc:	87 36 e0 1f 	srl  %i3, 0x1f, %g3
                           
  information->inactive_per_block = 0;
                               
400091d0:	c0 26 20 30 	clr  [ %i0 + 0x30 ]
                           
  maximum_per_allocation = _Objects_Maximum_per_allocation( maximum );


                                                                     
  /*
                                                                 
   *  Unlimited and maximum of zero is illogical.
                    
   */
                                                                
  if ( information->auto_extend && maximum_per_allocation == 0) {
    
400091d4:	83 2e e0 10 	sll  %i3, 0x10, %g1
                           
  information->object_blocks      = 0;
                               
400091d8:	c0 26 20 34 	clr  [ %i0 + 0x34 ]
                           
  if ( information->auto_extend && maximum_per_allocation == 0) {
    
400091dc:	80 a0 60 00 	cmp  %g1, 0
                                   
  information->inactive           = 0;
                               
400091e0:	c0 36 20 2c 	clrh  [ %i0 + 0x2c ]
                          
    information->is_string        = is_string;
                       
400091e4:	fa 2e 20 38 	stb  %i5, [ %i0 + 0x38 ]
                      
  information->maximum = 0;
                                          
400091e8:	c0 36 20 10 	clrh  [ %i0 + 0x10 ]
                          
  _Objects_Information_table[ the_api ][ the_class ] = information;
  
400091ec:	c4 00 80 1c 	ld  [ %g2 + %i4 ], %g2
                        
400091f0:	f0 20 80 04 	st  %i0, [ %g2 + %g4 ]
                        
  information->auto_extend = _Objects_Is_unlimited( maximum );
       
400091f4:	c6 2e 20 12 	stb  %g3, [ %i0 + 0x12 ]
                      
  if ( information->auto_extend && maximum_per_allocation == 0) {
    
400091f8:	12 80 00 05 	bne  4000920c <_Objects_Do_initialize_information+0x64>

400091fc:	c8 07 a0 5c 	ld  [ %fp + 0x5c ], %g4
                       
40009200:	80 a0 e0 00 	cmp  %g3, 0
                                   
40009204:	12 80 00 1c 	bne  40009274 <_Objects_Do_initialize_information+0xcc>

40009208:	01 00 00 00 	nop 
                                          
           (( (Objects_Id) node )    << OBJECTS_NODE_START_BIT)  |
   
4000920c:	05 00 00 40 	sethi  %hi(0x10000), %g2
                      
  information->local_table = &null_local_table;
                      

                                                                     
  /*
                                                                 
   *  Calculate minimum and maximum Id's
                             
   */
                                                                
  minimum_index = (maximum_per_allocation == 0) ? 0 : 1;
             
40009210:	87 30 60 10 	srl  %g1, 0x10, %g3
                           
40009214:	80 a0 00 03 	cmp  %g0, %g3
                                 
40009218:	82 40 20 00 	addx  %g0, 0, %g1
                             
4000921c:	82 10 40 02 	or  %g1, %g2, %g1
                             
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
   
40009220:	85 2e a0 1b 	sll  %i2, 0x1b, %g2
                           
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |
   
40009224:	b3 2e 60 18 	sll  %i1, 0x18, %i1
                           
  return &the_chain->Tail.Node;
                                      
40009228:	ba 06 20 20 	add  %i0, 0x20, %i5
                           
           (( (Objects_Id) node )    << OBJECTS_NODE_START_BIT)  |
   
4000922c:	b4 10 40 19 	or  %g1, %i1, %i2
                             
  information->allocation_size = maximum_per_allocation;
             
40009230:	f6 36 20 14 	sth  %i3, [ %i0 + 0x14 ]
                      
40009234:	b4 16 80 02 	or  %i2, %g2, %i2
                             
  information->local_table = &null_local_table;
                      
40009238:	03 10 00 71 	sethi  %hi(0x4001c400), %g1
                   
4000923c:	84 06 20 24 	add  %i0, 0x24, %g2
                           
40009240:	82 10 63 58 	or  %g1, 0x358, %g1
                           
  information->minimum_id =
                                          
40009244:	f4 26 20 08 	st  %i2, [ %i0 + 8 ]
                          
  _Chain_Initialize_empty( &information->Inactive );
                 

                                                                     
  /*
                                                                 
   *  Initialize objects .. if there are any
                         
   */
                                                                
  if ( maximum_per_allocation ) {
                                    
40009248:	80 a0 e0 00 	cmp  %g3, 0
                                   
  information->local_table = &null_local_table;
                      
4000924c:	c2 26 20 1c 	st  %g1, [ %i0 + 0x1c ]
                       
  information->name_length = maximum_name_length;
                    
40009250:	c8 36 20 3a 	sth  %g4, [ %i0 + 0x3a ]
                      
  head->next = tail;
                                                 
40009254:	c4 26 20 20 	st  %g2, [ %i0 + 0x20 ]
                       
  head->previous = NULL;
                                             
40009258:	c0 26 20 24 	clr  [ %i0 + 0x24 ]
                           
  if ( maximum_per_allocation ) {
                                    
4000925c:	12 80 00 04 	bne  4000926c <_Objects_Do_initialize_information+0xc4>

40009260:	fa 26 20 28 	st  %i5, [ %i0 + 0x28 ]
                       
  #if defined(RTEMS_MULTIPROCESSING)
                                 
    information->extract = extract;
                                  
    _RBTree_Initialize_empty( &information->Global_by_id );
          
    _RBTree_Initialize_empty( &information->Global_by_name );
        
  #endif
                                                             
}
                                                                    
40009264:	81 c7 e0 08 	ret 
                                          
40009268:	81 e8 00 00 	restore 
                                      
    _Objects_Extend_information( information );
                      
4000926c:	7f ff fe fd 	call  40008e60 <_Objects_Extend_information>
  
40009270:	81 e8 00 00 	restore 
                                      
    _Internal_error( INTERNAL_ERROR_UNLIMITED_AND_MAXIMUM_IS_0 );
    
40009274:	7f ff f9 8c 	call  400078a4 <_Internal_error>
              
40009278:	90 10 20 13 	mov  0x13, %o0
                                
4000927c:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

40008e60 <_Objects_Extend_information>: */ void _Objects_Extend_information( Objects_Information *information ) {
40008e60:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  minimum_index = _Objects_Get_index( information->minimum_id );
     
  index_base    = minimum_index;
                                     
  block         = 0;
                                                 

                                                                     
  /* if ( information->maximum < minimum_index ) */
                  
  if ( information->object_blocks == NULL )
                          
40008e64:	c4 06 20 34 	ld  [ %i0 + 0x34 ], %g2
                       <== NOT EXECUTED
40008e68:	e2 16 20 14 	lduh  [ %i0 + 0x14 ], %l1
                     <== NOT EXECUTED
40008e6c:	e4 16 20 0a 	lduh  [ %i0 + 0xa ], %l2
                      
40008e70:	e0 16 20 10 	lduh  [ %i0 + 0x10 ], %l0
                     
40008e74:	80 a0 a0 00 	cmp  %g2, 0
                                   
40008e78:	02 80 00 95 	be  400090cc <_Objects_Extend_information+0x26c>
<== ALWAYS TAKEN
40008e7c:	b6 10 00 11 	mov  %l1, %i3
                                 
    block_count = 0;
                                                 
  else {
                                                             
    block_count = information->maximum / information->allocation_size;


                                                                     
    for ( ; block < block_count; block++ ) {
                         
40008e80:	81 80 20 00 	wr  %g0, %y
                                   
40008e84:	01 00 00 00 	nop 
                                          
40008e88:	01 00 00 00 	nop 
                                          
40008e8c:	01 00 00 00 	nop 
                                          
40008e90:	b2 f4 00 11 	udivcc  %l0, %l1, %i1
                         
40008e94:	02 80 00 b1 	be  40009158 <_Objects_Extend_information+0x2f8>
<== NEVER TAKEN
40008e98:	b5 2c 20 10 	sll  %l0, 0x10, %i2
                           
      if ( information->object_blocks[ block ] == NULL ) {
           
40008e9c:	c2 00 80 00 	ld  [ %g2 ], %g1
                              
40008ea0:	80 a0 60 00 	cmp  %g1, 0
                                   
40008ea4:	02 80 00 b1 	be  40009168 <_Objects_Extend_information+0x308>
<== NEVER TAKEN
40008ea8:	ba 10 00 12 	mov  %l2, %i5
                                 
  block         = 0;
                                                 
40008eac:	10 80 00 06 	b  40008ec4 <_Objects_Extend_information+0x64>

40008eb0:	b8 10 20 00 	clr  %i4
                                      
      if ( information->object_blocks[ block ] == NULL ) {
           
40008eb4:	c2 00 80 01 	ld  [ %g2 + %g1 ], %g1
                        
40008eb8:	80 a0 60 00 	cmp  %g1, 0
                                   
40008ebc:	02 80 00 08 	be  40008edc <_Objects_Extend_information+0x7c>

40008ec0:	a8 10 20 00 	clr  %l4
                                      
    for ( ; block < block_count; block++ ) {
                         
40008ec4:	b8 07 20 01 	inc  %i4
                                      
        do_extend = false;
                                           
        break;
                                                       
      } else
                                                         
        index_base += information->allocation_size;
                  
40008ec8:	ba 07 40 1b 	add  %i5, %i3, %i5
                            
    for ( ; block < block_count; block++ ) {
                         
40008ecc:	80 a6 40 1c 	cmp  %i1, %i4
                                 
40008ed0:	12 bf ff f9 	bne  40008eb4 <_Objects_Extend_information+0x54>

40008ed4:	83 2f 20 02 	sll  %i4, 2, %g1
                              
  do_extend     = true;
                                              
40008ed8:	a8 10 20 01 	mov  1, %l4
                                   
    }
                                                                
  }
                                                                  
  index_end = index_base + information->allocation_size;
             

                                                                     
  maximum = (uint32_t) information->maximum + information->allocation_size;

40008edc:	b5 36 a0 10 	srl  %i2, 0x10, %i2
                           
  /*
                                                                 
   *  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 ) {
                          
40008ee0:	03 00 00 3f 	sethi  %hi(0xfc00), %g1
                       
  maximum = (uint32_t) information->maximum + information->allocation_size;

40008ee4:	b4 06 80 1b 	add  %i2, %i3, %i2
                            
  if ( maximum > OBJECTS_ID_FINAL_INDEX ) {
                          
40008ee8:	82 10 63 ff 	or  %g1, 0x3ff, %g1
                           
40008eec:	80 a6 80 01 	cmp  %i2, %g1
                                 
40008ef0:	18 80 00 88 	bgu  40009110 <_Objects_Extend_information+0x2b0>

40008ef4:	01 00 00 00 	nop 
                                          

                                                                     
  /*
                                                                 
   * 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;
     
40008ef8:	d0 06 20 18 	ld  [ %i0 + 0x18 ], %o0
                       
  if ( information->auto_extend ) {
                                  
40008efc:	c2 0e 20 12 	ldub  [ %i0 + 0x12 ], %g1
                     
40008f00:	80 a0 60 00 	cmp  %g1, 0
                                   
40008f04:	02 80 00 78 	be  400090e4 <_Objects_Extend_information+0x284>

40008f08:	90 5e c0 08 	smul  %i3, %o0, %o0
                           
    new_object_block = _Workspace_Allocate( block_size );
            
40008f0c:	40 00 0d 2b 	call  4000c3b8 <_Workspace_Allocate>
          
40008f10:	01 00 00 00 	nop 
                                          
    if ( !new_object_block )
                                         
40008f14:	a6 92 20 00 	orcc  %o0, 0, %l3
                             
40008f18:	02 80 00 6b 	be  400090c4 <_Objects_Extend_information+0x264>
<== NEVER TAKEN
40008f1c:	b6 07 40 1b 	add  %i5, %i3, %i3
                            
  }
                                                                  

                                                                     
  /*
                                                                 
   *  Do we need to grow the tables?
                                 
   */
                                                                
  if ( do_extend ) {
                                                 
40008f20:	80 8d 20 ff 	btst  0xff, %l4
                               
40008f24:	22 80 00 45 	be,a   40009038 <_Objects_Extend_information+0x1d8>

40008f28:	c2 06 20 34 	ld  [ %i0 + 0x34 ], %g1
                       
            (void*)(block_count * sizeof(uint32_t)),
                 
            CPU_ALIGNMENT
                                            
        );
                                                           
    block_size = object_blocks_size + inactive_per_block_size +
      
        ((maximum + minimum_index) * sizeof(Objects_Control *));
     
    if ( information->auto_extend ) {
                                
40008f2c:	c2 0e 20 12 	ldub  [ %i0 + 0x12 ], %g1
                     
    block_count++;
                                                   
40008f30:	b2 06 60 01 	inc  %i1
                                      
        ((maximum + minimum_index) * sizeof(Objects_Control *));
     
40008f34:	90 04 80 1a 	add  %l2, %i2, %o0
                            
    if ( information->auto_extend ) {
                                
40008f38:	80 a0 60 00 	cmp  %g1, 0
                                   
        (void*)(block_count * sizeof(void*)),
                        
40008f3c:	b5 2e 60 02 	sll  %i1, 2, %i2
                              
        ((maximum + minimum_index) * sizeof(Objects_Control *));
     
40008f40:	91 2a 20 02 	sll  %o0, 2, %o0
                              
  void *address,
                                                     
  size_t alignment
                                                   
)
                                                                    
{
                                                                    
  uintptr_t mask = alignment - (uintptr_t)1;
                         
  return (void*)(((uintptr_t)address + mask) & ~mask);
               
40008f44:	b2 06 a0 07 	add  %i2, 7, %i1
                              
40008f48:	b2 0e 7f f8 	and  %i1, -8, %i1
                             
    block_size = object_blocks_size + inactive_per_block_size +
      
40008f4c:	83 2e 60 01 	sll  %i1, 1, %g1
                              
    if ( information->auto_extend ) {
                                
40008f50:	12 80 00 69 	bne  400090f4 <_Objects_Extend_information+0x294>

40008f54:	90 02 00 01 	add  %o0, %g1, %o0
                            
      if ( !object_blocks ) {
                                        
        _Workspace_Free( new_object_block );
                         
        return;
                                                      
      }
                                                              
    } else {
                                                         
      object_blocks = _Workspace_Allocate_or_fatal_error( block_size );

40008f58:	40 00 0d 2e 	call  4000c410 <_Workspace_Allocate_or_fatal_error>

40008f5c:	01 00 00 00 	nop 
                                          
40008f60:	aa 10 00 08 	mov  %o0, %l5
                                 
     *  Take the block count down. Saves all the (block_count - 1)
   
     *  in the copies.
                                               
     */
                                                              
    block_count--;
                                                   

                                                                     
    if ( information->maximum > minimum_index ) {
                    
40008f64:	c2 16 20 10 	lduh  [ %i0 + 0x10 ], %g1
                     
  return (void *)((uintptr_t)base + offset);
                         
40008f68:	a8 05 40 19 	add  %l5, %i1, %l4
                            
40008f6c:	b4 06 bf fc 	add  %i2, -4, %i2
                             
40008f70:	80 a0 40 12 	cmp  %g1, %l2
                                 
40008f74:	18 80 00 69 	bgu  40009118 <_Objects_Extend_information+0x2b8>

40008f78:	b2 06 40 14 	add  %i1, %l4, %i1
                            
    } else {
                                                         

                                                                     
      /*
                                                             
       *  Deal with the special case of the 0 to minimum_index
       
       */
                                                            
      for ( index = 0; index < minimum_index; index++ ) {
            
40008f7c:	80 a4 a0 00 	cmp  %l2, 0
                                   
40008f80:	22 80 00 0b 	be,a   40008fac <_Objects_Extend_information+0x14c>
<== NEVER TAKEN
40008f84:	c0 25 40 1a 	clr  [ %l5 + %i2 ]
                            <== NOT EXECUTED
40008f88:	a5 2c a0 02 	sll  %l2, 2, %l2
                              
40008f8c:	82 10 00 19 	mov  %i1, %g1
                                 
40008f90:	a4 04 80 19 	add  %l2, %i1, %l2
                            
        local_table[ index ] = NULL;
                                 
40008f94:	c0 20 40 00 	clr  [ %g1 ]
                                  
40008f98:	82 00 60 04 	add  %g1, 4, %g1
                              
      for ( index = 0; index < minimum_index; index++ ) {
            
40008f9c:	80 a4 80 01 	cmp  %l2, %g1
                                 
40008fa0:	32 bf ff fe 	bne,a   40008f98 <_Objects_Extend_information+0x138>
<== NEVER TAKEN
40008fa4:	c0 20 40 00 	clr  [ %g1 ]
                                  <== NOT EXECUTED
    }
                                                                

                                                                     
    /*
                                                               
     *  Initialise the new entries in the table.
                     
     */
                                                              
    object_blocks[block_count] = NULL;
                               
40008fa8:	c0 25 40 1a 	clr  [ %l5 + %i2 ]
                            
    inactive_per_block[block_count] = 0;
                             

                                                                     
    for ( index = index_base ; index < index_end ; ++index ) {
       
40008fac:	80 a7 40 1b 	cmp  %i5, %i3
                                 
40008fb0:	1a 80 00 0b 	bcc  40008fdc <_Objects_Extend_information+0x17c>
<== NEVER TAKEN
40008fb4:	c0 25 00 1a 	clr  [ %l4 + %i2 ]
                            
40008fb8:	83 2f 60 02 	sll  %i5, 2, %g1
                              
40008fbc:	85 2e e0 02 	sll  %i3, 2, %g2
                              
40008fc0:	82 00 40 19 	add  %g1, %i1, %g1
                            
40008fc4:	84 00 80 19 	add  %g2, %i1, %g2
                            
      local_table[ index ] = NULL;
                                   
40008fc8:	c0 20 40 00 	clr  [ %g1 ]
                                  
40008fcc:	82 00 60 04 	add  %g1, 4, %g1
                              
    for ( index = index_base ; index < index_end ; ++index ) {
       
40008fd0:	80 a0 80 01 	cmp  %g2, %g1
                                 
40008fd4:	32 bf ff fe 	bne,a   40008fcc <_Objects_Extend_information+0x16c>

40008fd8:	c0 20 40 00 	clr  [ %g1 ]
                                  
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

40008fdc:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  uint8_t          node,
                                             
  uint16_t         index
                                             
)
                                                                    
{
                                                                    
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |
   
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
   
40008fe0:	07 00 00 40 	sethi  %hi(0x10000), %g3
                      
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |
   
40008fe4:	c4 06 00 00 	ld  [ %i0 ], %g2
                              
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
   
40008fe8:	c8 16 20 04 	lduh  [ %i0 + 4 ], %g4
                        
    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;
                
40008fec:	a0 04 00 11 	add  %l0, %l1, %l0
                            
    old_tables = information->object_blocks;
                         
40008ff0:	d0 06 20 34 	ld  [ %i0 + 0x34 ], %o0
                       
40008ff4:	89 29 20 1b 	sll  %g4, 0x1b, %g4
                           
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |
   
40008ff8:	85 28 a0 18 	sll  %g2, 0x18, %g2
                           
    information->object_blocks = object_blocks;
                      
40008ffc:	ea 26 20 34 	st  %l5, [ %i0 + 0x34 ]
                       
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
   
40009000:	84 10 80 03 	or  %g2, %g3, %g2
                             
    information->inactive_per_block = inactive_per_block;
            
40009004:	e8 26 20 30 	st  %l4, [ %i0 + 0x30 ]
                       
         #if !defined(RTEMS_USE_16_BIT_OBJECT)
                       
           (( (Objects_Id) node )    << OBJECTS_NODE_START_BIT)  |
   
40009008:	87 2c 20 10 	sll  %l0, 0x10, %g3
                           
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
   
4000900c:	84 10 80 04 	or  %g2, %g4, %g2
                             
           (( (Objects_Id) node )    << OBJECTS_NODE_START_BIT)  |
   
40009010:	87 30 e0 10 	srl  %g3, 0x10, %g3
                           
    information->local_table = local_table;
                          
40009014:	f2 26 20 1c 	st  %i1, [ %i0 + 0x1c ]
                       
40009018:	84 10 80 03 	or  %g2, %g3, %g2
                             
    information->maximum = (Objects_Maximum) maximum;
                
4000901c:	e0 36 20 10 	sth  %l0, [ %i0 + 0x10 ]
                      
    information->maximum_id = _Objects_Build_id(
                     
40009020:	c4 26 20 0c 	st  %g2, [ %i0 + 0xc ]
                        <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40009024:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40009028:	01 00 00 00 	nop 
                                          
        information->maximum
                                         
      );
                                                             

                                                                     
    _ISR_lock_ISR_enable( &lock_context );
                           

                                                                     
    _Workspace_Free( old_tables );
                                   
4000902c:	40 00 0c f3 	call  4000c3f8 <_Workspace_Free>
              
40009030:	01 00 00 00 	nop 
                                          
  }
                                                                  

                                                                     
  /*
                                                                 
   *  Assign the new object block to the object block table.
         
   */
                                                                
  information->object_blocks[ block ] = new_object_block;
            
40009034:	c2 06 20 34 	ld  [ %i0 + 0x34 ], %g1
                       
40009038:	b9 2f 20 02 	sll  %i4, 2, %i4
                              
4000903c:	e6 20 40 1c 	st  %l3, [ %g1 + %i4 ]
                        

                                                                     
  /*
                                                                 
   *  Append to inactive chain.
                                      
   */
                                                                
  the_object = information->object_blocks[ block ];
                  
  for ( index = index_base ; index < index_end ; ++index ) {
         
40009040:	80 a7 40 1b 	cmp  %i5, %i3
                                 
  the_object = information->object_blocks[ block ];
                  
40009044:	c2 06 20 34 	ld  [ %i0 + 0x34 ], %g1
                       
  for ( index = index_base ; index < index_end ; ++index ) {
         
40009048:	1a 80 00 19 	bcc  400090ac <_Objects_Extend_information+0x24c>
<== NEVER TAKEN
4000904c:	c2 00 40 1c 	ld  [ %g1 + %i4 ], %g1
                        
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |
   
40009050:	c8 06 00 00 	ld  [ %i0 ], %g4
                              
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
   
40009054:	c4 16 20 04 	lduh  [ %i0 + 4 ], %g2
                        

                                                                     
    _Chain_Initialize_node( &the_object->Node );
                     
    _Chain_Append_unprotected( &information->Inactive, &the_object->Node );


                                                                     
    the_object = (Objects_Control *)
                                 
      ( (char *) the_object + information->size );
                   
40009058:	de 06 20 18 	ld  [ %i0 + 0x18 ], %o7
                       
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |
   
4000905c:	89 29 20 18 	sll  %g4, 0x18, %g4
                           
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
   
40009060:	85 28 a0 1b 	sll  %g2, 0x1b, %g2
                           
40009064:	07 00 00 40 	sethi  %hi(0x10000), %g3
                      
           (( (Objects_Id) node )    << OBJECTS_NODE_START_BIT)  |
   
40009068:	35 00 00 3f 	sethi  %hi(0xfc00), %i2
                       
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
   
4000906c:	88 11 00 03 	or  %g4, %g3, %g4
                             
40009070:	b2 06 20 24 	add  %i0, 0x24, %i1
                           
40009074:	88 11 00 02 	or  %g4, %g2, %g4
                             
           (( (Objects_Id) node )    << OBJECTS_NODE_START_BIT)  |
   
40009078:	b4 16 a3 ff 	or  %i2, 0x3ff, %i2
                           
  old_last = tail->previous;
                                         
4000907c:	c6 06 20 28 	ld  [ %i0 + 0x28 ], %g3
                       
40009080:	84 0f 40 1a 	and  %i5, %i2, %g2
                            
  the_node->next = tail;
                                             
40009084:	f2 20 40 00 	st  %i1, [ %g1 ]
                              
40009088:	84 10 80 04 	or  %g2, %g4, %g2
                             
    the_object->id = _Objects_Build_id(
                              
4000908c:	c4 20 60 08 	st  %g2, [ %g1 + 8 ]
                          
  for ( index = index_base ; index < index_end ; ++index ) {
         
40009090:	ba 07 60 01 	inc  %i5
                                      
  tail->previous = the_node;
                                         
40009094:	c2 26 20 28 	st  %g1, [ %i0 + 0x28 ]
                       
40009098:	80 a6 c0 1d 	cmp  %i3, %i5
                                 
  old_last->next = the_node;
                                         
4000909c:	c2 20 c0 00 	st  %g1, [ %g3 ]
                              
  the_node->previous = old_last;
                                     
400090a0:	c6 20 60 04 	st  %g3, [ %g1 + 4 ]
                          
400090a4:	12 bf ff f6 	bne  4000907c <_Objects_Extend_information+0x21c>

400090a8:	82 00 40 0f 	add  %g1, %o7, %g1
                            
  }
                                                                  

                                                                     
  information->inactive_per_block[ block ] = information->allocation_size;

400090ac:	c4 16 20 14 	lduh  [ %i0 + 0x14 ], %g2
                     
400090b0:	c6 06 20 30 	ld  [ %i0 + 0x30 ], %g3
                       
  information->inactive =
                                            
    (Objects_Maximum)(information->inactive + information->allocation_size);

400090b4:	c2 16 20 2c 	lduh  [ %i0 + 0x2c ], %g1
                     
  information->inactive_per_block[ block ] = information->allocation_size;

400090b8:	c4 20 c0 1c 	st  %g2, [ %g3 + %i4 ]
                        
    (Objects_Maximum)(information->inactive + information->allocation_size);

400090bc:	82 00 40 02 	add  %g1, %g2, %g1
                            
  information->inactive =
                                            
400090c0:	c2 36 20 2c 	sth  %g1, [ %i0 + 0x2c ]
                      
}
                                                                    
400090c4:	81 c7 e0 08 	ret 
                                          
400090c8:	81 e8 00 00 	restore 
                                      
400090cc:	ba 10 00 12 	mov  %l2, %i5
                                 
  do_extend     = true;
                                              
400090d0:	a8 10 20 01 	mov  1, %l4
                                   
  block         = 0;
                                                 
400090d4:	b8 10 20 00 	clr  %i4
                                      
    block_count = 0;
                                                 
400090d8:	b2 10 20 00 	clr  %i1
                                      
400090dc:	10 bf ff 80 	b  40008edc <_Objects_Extend_information+0x7c>

400090e0:	b5 2c 20 10 	sll  %l0, 0x10, %i2
                           
    new_object_block = _Workspace_Allocate_or_fatal_error( block_size );

400090e4:	40 00 0c cb 	call  4000c410 <_Workspace_Allocate_or_fatal_error>

400090e8:	b6 07 40 1b 	add  %i5, %i3, %i3
                            
400090ec:	10 bf ff 8d 	b  40008f20 <_Objects_Extend_information+0xc0>

400090f0:	a6 10 00 08 	mov  %o0, %l3
                                 
      object_blocks = _Workspace_Allocate( block_size );
             
400090f4:	40 00 0c b1 	call  4000c3b8 <_Workspace_Allocate>
          
400090f8:	01 00 00 00 	nop 
                                          
      if ( !object_blocks ) {
                                        
400090fc:	aa 92 20 00 	orcc  %o0, 0, %l5
                             
40009100:	32 bf ff 9a 	bne,a   40008f68 <_Objects_Extend_information+0x108>
<== ALWAYS TAKEN
40009104:	c2 16 20 10 	lduh  [ %i0 + 0x10 ], %g1
                     
        _Workspace_Free( new_object_block );
                         
40009108:	40 00 0c bc 	call  4000c3f8 <_Workspace_Free>
              <== NOT EXECUTED
4000910c:	91 e8 00 13 	restore  %g0, %l3, %o0
                        <== NOT EXECUTED
40009110:	81 c7 e0 08 	ret 
                                          
40009114:	81 e8 00 00 	restore 
                                      
      memcpy( object_blocks,
                                         
40009118:	d2 06 20 34 	ld  [ %i0 + 0x34 ], %o1
                       
4000911c:	94 10 00 1a 	mov  %i2, %o2
                                 
40009120:	40 00 17 fc 	call  4000f110 <memcpy>
                       
40009124:	90 10 00 15 	mov  %l5, %o0
                                 
      memcpy( inactive_per_block,
                                    
40009128:	d2 06 20 30 	ld  [ %i0 + 0x30 ], %o1
                       
4000912c:	94 10 00 1a 	mov  %i2, %o2
                                 
40009130:	40 00 17 f8 	call  4000f110 <memcpy>
                       
40009134:	90 10 00 14 	mov  %l4, %o0
                                 
              (information->maximum + minimum_index) * sizeof(Objects_Control *) );

40009138:	d4 16 20 10 	lduh  [ %i0 + 0x10 ], %o2
                     
      memcpy( local_table,
                                           
4000913c:	d2 06 20 1c 	ld  [ %i0 + 0x1c ], %o1
                       
              (information->maximum + minimum_index) * sizeof(Objects_Control *) );

40009140:	94 02 80 12 	add  %o2, %l2, %o2
                            
      memcpy( local_table,
                                           
40009144:	90 10 00 19 	mov  %i1, %o0
                                 
40009148:	40 00 17 f2 	call  4000f110 <memcpy>
                       
4000914c:	95 2a a0 02 	sll  %o2, 2, %o2
                              
40009150:	10 bf ff 97 	b  40008fac <_Objects_Extend_information+0x14c>

40009154:	c0 25 40 1a 	clr  [ %l5 + %i2 ]
                            
    for ( ; block < block_count; block++ ) {
                         
40009158:	ba 10 00 12 	mov  %l2, %i5
                                 <== NOT EXECUTED
  do_extend     = true;
                                              
4000915c:	a8 10 20 01 	mov  1, %l4
                                   <== NOT EXECUTED
  block         = 0;
                                                 
40009160:	10 bf ff 5f 	b  40008edc <_Objects_Extend_information+0x7c>
<== NOT EXECUTED
40009164:	b8 10 20 00 	clr  %i4
                                      <== NOT EXECUTED
        do_extend = false;
                                           
40009168:	a8 10 20 00 	clr  %l4
                                      <== NOT EXECUTED
  block         = 0;
                                                 
4000916c:	10 bf ff 5c 	b  40008edc <_Objects_Extend_information+0x7c>
<== NOT EXECUTED
40009170:	b8 10 20 00 	clr  %i4
                                      <== NOT EXECUTED

                                                                     

4000def0 <_Objects_Free>: old_last = tail->previous;
4000def0:	c6 02 20 28 	ld  [ %o0 + 0x28 ], %g3
                       <== NOT EXECUTED
void _Objects_Free(
                                                  
  Objects_Information *information,
                                  
  Objects_Control     *the_object
                                    
)
                                                                    
{
                                                                    
  uint32_t    allocation_size = information->allocation_size;
        
4000def4:	c4 12 20 14 	lduh  [ %o0 + 0x14 ], %g2
                     
  return &the_chain->Tail.Node;
                                      
4000def8:	88 02 20 24 	add  %o0, 0x24, %g4
                           
  the_node->next = tail;
                                             
4000defc:	c8 22 40 00 	st  %g4, [ %o1 ]
                              
  tail->previous = the_node;
                                         
4000df00:	d2 22 20 28 	st  %o1, [ %o0 + 0x28 ]
                       
  old_last->next = the_node;
                                         
4000df04:	d2 20 c0 00 	st  %o1, [ %g3 ]
                              
  the_node->previous = old_last;
                                     
4000df08:	c6 22 60 04 	st  %g3, [ %o1 + 4 ]
                          

                                                                     
  _Assert( _Objects_Allocator_is_owner() );
                          

                                                                     
  _Chain_Append_unprotected( &information->Inactive, &the_object->Node );


                                                                     
  if ( information->auto_extend ) {
                                  
4000df0c:	c6 0a 20 12 	ldub  [ %o0 + 0x12 ], %g3
                     
4000df10:	80 a0 e0 00 	cmp  %g3, 0
                                   
4000df14:	02 80 00 1e 	be  4000df8c <_Objects_Free+0x9c>
             <== ALWAYS TAKEN
4000df18:	09 00 00 3f 	sethi  %hi(0xfc00), %g4
                       
    uint32_t    block;
                                               

                                                                     
    block = (uint32_t) (_Objects_Get_index( the_object->id ) -
       
4000df1c:	c6 02 60 08 	ld  [ %o1 + 8 ], %g3
                          
                        _Objects_Get_index( information->minimum_id ));

4000df20:	da 02 20 08 	ld  [ %o0 + 8 ], %o5
                          
    block /= information->allocation_size;
                           

                                                                     
    information->inactive_per_block[ block ]++;
                      
4000df24:	d6 02 20 30 	ld  [ %o0 + 0x30 ], %o3
                       
    block = (uint32_t) (_Objects_Get_index( the_object->id ) -
       
4000df28:	88 11 23 ff 	or  %g4, 0x3ff, %g4
                           
4000df2c:	86 08 c0 04 	and  %g3, %g4, %g3
                            
                        _Objects_Get_index( information->minimum_id ));

4000df30:	88 0b 40 04 	and  %o5, %g4, %g4
                            
  uint32_t    allocation_size = information->allocation_size;
        
4000df34:	85 28 a0 10 	sll  %g2, 0x10, %g2
                           
    block = (uint32_t) (_Objects_Get_index( the_object->id ) -
       
4000df38:	86 20 c0 04 	sub  %g3, %g4, %g3
                            
  uint32_t    allocation_size = information->allocation_size;
        
4000df3c:	99 30 a0 10 	srl  %g2, 0x10, %o4
                           
    block /= information->allocation_size;
                           
4000df40:	81 80 20 00 	wr  %g0, %y
                                   
4000df44:	01 00 00 00 	nop 
                                          
4000df48:	01 00 00 00 	nop 
                                          
4000df4c:	01 00 00 00 	nop 
                                          
4000df50:	88 70 c0 0c 	udiv  %g3, %o4, %g4
                           
    information->inactive_per_block[ block ]++;
                      
4000df54:	89 29 20 02 	sll  %g4, 2, %g4
                              
4000df58:	da 02 c0 04 	ld  [ %o3 + %g4 ], %o5
                        
    information->inactive++;
                                         
4000df5c:	c6 12 20 2c 	lduh  [ %o0 + 0x2c ], %g3
                     
    information->inactive_per_block[ block ]++;
                      
4000df60:	9a 03 60 01 	inc  %o5
                                      
4000df64:	da 22 c0 04 	st  %o5, [ %o3 + %g4 ]
                        
    information->inactive++;
                                         
4000df68:	86 00 e0 01 	inc  %g3
                                      
4000df6c:	c6 32 20 2c 	sth  %g3, [ %o0 + 0x2c ]
                      
    /*
                                                               
     *  Check if the threshold level has been met of
                 
     *  1.5 x allocation_size are free.
                              
     */
                                                              

                                                                     
    if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) {

4000df70:	85 30 a0 11 	srl  %g2, 0x11, %g2
                           
4000df74:	87 28 e0 10 	sll  %g3, 0x10, %g3
                           
4000df78:	84 00 80 0c 	add  %g2, %o4, %g2
                            
4000df7c:	87 30 e0 10 	srl  %g3, 0x10, %g3
                           
4000df80:	80 a0 c0 02 	cmp  %g3, %g2
                                 
4000df84:	18 80 00 04 	bgu  4000df94 <_Objects_Free+0xa4>
            
4000df88:	01 00 00 00 	nop 
                                          
      _Objects_Shrink_information( information );
                    
    }
                                                                
  }
                                                                  
}
                                                                    
4000df8c:	81 c3 e0 08 	retl 
                                         
4000df90:	01 00 00 00 	nop 
                                          
      _Objects_Shrink_information( information );
                    
4000df94:	82 13 c0 00 	mov  %o7, %g1
                                 
4000df98:	40 00 00 47 	call  4000e0b4 <_Objects_Shrink_information>
  
4000df9c:	9e 10 40 00 	mov  %g1, %o7
                                 

                                                                     

4000e02c <_Objects_Get>: const Objects_Information *information ) { uint32_t index; index = id - information->minimum_id + 1;
4000e02c:	c4 02 a0 08 	ld  [ %o2 + 8 ], %g2
                          <== NOT EXECUTED

                                                                     
  if ( information->maximum >= index ) {
                             
4000e030:	c2 12 a0 10 	lduh  [ %o2 + 0x10 ], %g1
                     
  index = id - information->minimum_id + 1;
                          
4000e034:	90 02 20 01 	inc  %o0
                                      
4000e038:	90 22 00 02 	sub  %o0, %g2, %o0
                            
  if ( information->maximum >= index ) {
                             
4000e03c:	80 a0 40 08 	cmp  %g1, %o0
                                 
4000e040:	0a 80 00 0c 	bcs  4000e070 <_Objects_Get+0x44>
             <== NEVER TAKEN
4000e044:	01 00 00 00 	nop 
                                          
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000e048:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
    Objects_Control *the_object;
                                     

                                                                     
    _ISR_lock_ISR_disable( lock_context );
                           
4000e04c:	c2 22 40 00 	st  %g1, [ %o1 ]
                              

                                                                     
    the_object = information->local_table[ index ];
                  
4000e050:	c2 02 a0 1c 	ld  [ %o2 + 0x1c ], %g1
                       
4000e054:	91 2a 20 02 	sll  %o0, 2, %o0
                              
4000e058:	d0 00 40 08 	ld  [ %g1 + %o0 ], %o0
                        
    if ( the_object != NULL ) {
                                      
4000e05c:	80 a2 20 00 	cmp  %o0, 0
                                   
4000e060:	02 80 00 06 	be  4000e078 <_Objects_Get+0x4c>
              
4000e064:	01 00 00 00 	nop 
                                          

                                                                     
    _ISR_lock_ISR_enable( lock_context );
                            
  }
                                                                  

                                                                     
  return NULL;
                                                       
}
                                                                    
4000e068:	81 c3 e0 08 	retl 
                                         
4000e06c:	01 00 00 00 	nop 
                                          
4000e070:	81 c3 e0 08 	retl 
                                         
4000e074:	90 10 20 00 	clr  %o0	! 0 <PROM_START>
                     
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000e078:	c2 02 40 00 	ld  [ %o1 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000e07c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000e080:	01 00 00 00 	nop 
                                          
4000e084:	81 c3 e0 08 	retl 
                                         
4000e088:	01 00 00 00 	nop 
                                          

                                                                     

4000c05c <_Objects_Get_by_name>: const Objects_Information *information, const char *name, size_t *name_length_p, Objects_Get_by_name_error *error ) {
4000c05c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  uint32_t index;
                                                    

                                                                     
  _Assert( information->is_string );
                                 
  _Assert( _Objects_Allocator_is_owner() );
                          

                                                                     
  if ( name == NULL ) {
                                              
4000c060:	80 a6 60 00 	cmp  %i1, 0
                                   <== NOT EXECUTED
4000c064:	22 80 00 2e 	be,a   4000c11c <_Objects_Get_by_name+0xc0>
   <== NOT EXECUTED
4000c068:	c0 26 c0 00 	clr  [ %i3 ]
                                  
    *error = OBJECTS_GET_BY_NAME_INVALID_NAME;
                       
    return NULL;
                                                     
  }
                                                                  

                                                                     
  name_length = strnlen( name, information->name_length + 1 );
       
4000c06c:	d2 16 20 3a 	lduh  [ %i0 + 0x3a ], %o1
                     
4000c070:	92 02 60 01 	inc  %o1
                                      
4000c074:	40 00 1c 31 	call  40013138 <strnlen>
                      
4000c078:	90 10 00 19 	mov  %i1, %o0
                                 
  max_name_length = information->name_length;
                        
4000c07c:	e0 16 20 3a 	lduh  [ %i0 + 0x3a ], %l0
                     
  if ( name_length > max_name_length ) {
                             
4000c080:	80 a2 00 10 	cmp  %o0, %l0
                                 
4000c084:	18 80 00 22 	bgu  4000c10c <_Objects_Get_by_name+0xb0>
     
4000c088:	80 a6 a0 00 	cmp  %i2, 0
                                   
    *error = OBJECTS_GET_BY_NAME_NAME_TOO_LONG;
                      
    return NULL;
                                                     
  }
                                                                  

                                                                     
  if ( name_length_p != NULL ) {
                                     
4000c08c:	32 80 00 02 	bne,a   4000c094 <_Objects_Get_by_name+0x38>
  
4000c090:	d0 26 80 00 	st  %o0, [ %i2 ]
                              
    *name_length_p = name_length;
                                    
  }
                                                                  

                                                                     
  for ( index = 1; index <= information->maximum; index++ ) {
        
4000c094:	f8 16 20 10 	lduh  [ %i0 + 0x10 ], %i4
                     
4000c098:	80 a7 20 00 	cmp  %i4, 0
                                   
4000c09c:	02 80 00 18 	be  4000c0fc <_Objects_Get_by_name+0xa0>
      
4000c0a0:	82 10 20 02 	mov  2, %g1
                                   
    Objects_Control *the_object;
                                     

                                                                     
    the_object = information->local_table[ index ];
                  
4000c0a4:	f4 06 20 1c 	ld  [ %i0 + 0x1c ], %i2
                       
4000c0a8:	b8 07 20 01 	inc  %i4
                                      
  for ( index = 1; index <= information->maximum; index++ ) {
        
4000c0ac:	ba 10 20 01 	mov  1, %i5
                                   
    the_object = information->local_table[ index ];
                  
4000c0b0:	83 2f 60 02 	sll  %i5, 2, %g1
                              
4000c0b4:	f0 06 80 01 	ld  [ %i2 + %g1 ], %i0
                        

                                                                     
    if ( the_object == NULL )
                                        
4000c0b8:	80 a6 20 00 	cmp  %i0, 0
                                   
4000c0bc:	22 80 00 0c 	be,a   4000c0ec <_Objects_Get_by_name+0x90>
   
4000c0c0:	ba 07 60 01 	inc  %i5
                                      
      continue;
                                                      

                                                                     
    if ( the_object->name.name_p == NULL )
                           
4000c0c4:	d2 06 20 0c 	ld  [ %i0 + 0xc ], %o1
                        
4000c0c8:	80 a2 60 00 	cmp  %o1, 0
                                   
4000c0cc:	02 80 00 07 	be  4000c0e8 <_Objects_Get_by_name+0x8c>
      
4000c0d0:	94 10 00 10 	mov  %l0, %o2
                                 
      continue;
                                                      

                                                                     
    if ( strncmp( name, the_object->name.name_p, max_name_length ) == 0 ) {

4000c0d4:	40 00 1b cf 	call  40013010 <strncmp>
                      
4000c0d8:	90 10 00 19 	mov  %i1, %o0
                                 
4000c0dc:	80 a2 20 00 	cmp  %o0, 0
                                   
4000c0e0:	02 80 00 09 	be  4000c104 <_Objects_Get_by_name+0xa8>
      
4000c0e4:	01 00 00 00 	nop 
                                          
  for ( index = 1; index <= information->maximum; index++ ) {
        
4000c0e8:	ba 07 60 01 	inc  %i5
                                      
4000c0ec:	80 a7 40 1c 	cmp  %i5, %i4
                                 
4000c0f0:	12 bf ff f1 	bne  4000c0b4 <_Objects_Get_by_name+0x58>
     
4000c0f4:	83 2f 60 02 	sll  %i5, 2, %g1
                              
      return the_object;
                                             
    }
                                                                
  }
                                                                  

                                                                     
  *error = OBJECTS_GET_BY_NAME_NO_OBJECT;
                            
4000c0f8:	82 10 20 02 	mov  2, %g1
                                   
4000c0fc:	c2 26 c0 00 	st  %g1, [ %i3 ]
                              
  return NULL;
                                                       
4000c100:	b0 10 20 00 	clr  %i0
                                      
}
                                                                    
4000c104:	81 c7 e0 08 	ret 
                                          
4000c108:	81 e8 00 00 	restore 
                                      
    *error = OBJECTS_GET_BY_NAME_NAME_TOO_LONG;
                      
4000c10c:	82 10 20 01 	mov  1, %g1
                                   
4000c110:	c2 26 c0 00 	st  %g1, [ %i3 ]
                              
    return NULL;
                                                     
4000c114:	81 c7 e0 08 	ret 
                                          
4000c118:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    return NULL;
                                                     
4000c11c:	81 c7 e0 08 	ret 
                                          
4000c120:	91 e8 20 00 	restore  %g0, 0, %o0
                          

                                                                     

4000dfb8 <_Objects_Get_information>: Objects_Information *_Objects_Get_information( Objects_APIs the_api, uint16_t the_class ) {
4000dfb8:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  Objects_Information *info;
                                         
  int the_class_api_maximum;
                                         

                                                                     
  if ( !the_class )
                                                  
4000dfbc:	80 a6 60 00 	cmp  %i1, 0
                                   <== NOT EXECUTED
4000dfc0:	02 80 00 19 	be  4000e024 <_Objects_Get_information+0x6c>
  <== NOT EXECUTED
4000dfc4:	01 00 00 00 	nop 
                                          

                                                                     
  /*
                                                                 
   *  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 );
     
4000dfc8:	40 00 02 c6 	call  4000eae0 <_Objects_API_maximum_class>
   
4000dfcc:	90 10 00 18 	mov  %i0, %o0
                                 
  if ( the_class_api_maximum == 0 )
                                  
4000dfd0:	80 a2 20 00 	cmp  %o0, 0
                                   
4000dfd4:	02 80 00 14 	be  4000e024 <_Objects_Get_information+0x6c>
  
4000dfd8:	80 a2 00 19 	cmp  %o0, %i1
                                 
    return NULL;
                                                     

                                                                     
  if ( the_class > (uint32_t) the_class_api_maximum )
                
4000dfdc:	0a 80 00 12 	bcs  4000e024 <_Objects_Get_information+0x6c>
 
4000dfe0:	03 10 00 66 	sethi  %hi(0x40019800), %g1
                   
    return NULL;
                                                     

                                                                     
  if ( !_Objects_Information_table[ the_api ] )
                      
4000dfe4:	b1 2e 20 02 	sll  %i0, 2, %i0
                              
4000dfe8:	82 10 60 c0 	or  %g1, 0xc0, %g1
                            
4000dfec:	c2 00 40 18 	ld  [ %g1 + %i0 ], %g1
                        
4000dff0:	80 a0 60 00 	cmp  %g1, 0
                                   
4000dff4:	02 80 00 0c 	be  4000e024 <_Objects_Get_information+0x6c>
  <== NEVER TAKEN
4000dff8:	b3 2e 60 02 	sll  %i1, 2, %i1
                              
    return NULL;
                                                     

                                                                     
  info = _Objects_Information_table[ the_api ][ the_class ];
         
4000dffc:	f0 00 40 19 	ld  [ %g1 + %i1 ], %i0
                        
  if ( !info )
                                                       
4000e000:	80 a6 20 00 	cmp  %i0, 0
                                   
4000e004:	02 80 00 08 	be  4000e024 <_Objects_Get_information+0x6c>
  
4000e008:	01 00 00 00 	nop 
                                          
   *  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 )
                                        
4000e00c:	c2 16 20 10 	lduh  [ %i0 + 0x10 ], %g1
                     
4000e010:	80 a0 60 00 	cmp  %g1, 0
                                   
4000e014:	02 80 00 04 	be  4000e024 <_Objects_Get_information+0x6c>
  
4000e018:	01 00 00 00 	nop 
                                          
      return NULL;
                                                   
  #endif
                                                             

                                                                     
  return info;
                                                       
}
                                                                    
4000e01c:	81 c7 e0 08 	ret 
                                          
4000e020:	81 e8 00 00 	restore 
                                      
    return NULL;
                                                     
4000e024:	81 c7 e0 08 	ret 
                                          
4000e028:	91 e8 20 00 	restore  %g0, 0, %o0
                          

                                                                     

4000dfa0 <_Objects_Get_information_id>:
4000dfa0:	83 32 20 18 	srl  %o0, 0x18, %g1
                           <== NOT EXECUTED

                                                                     
Objects_Information *_Objects_Get_information_id(
                    
  Objects_Id  id
                                                     
)
                                                                    
{
                                                                    
  return _Objects_Get_information(
                                   
4000dfa4:	93 32 20 1b 	srl  %o0, 0x1b, %o1
                           
4000dfa8:	90 08 60 07 	and  %g1, 7, %o0
                              
4000dfac:	82 13 c0 00 	mov  %o7, %g1
                                 
4000dfb0:	40 00 00 02 	call  4000dfb8 <_Objects_Get_information>
     
4000dfb4:	9e 10 40 00 	mov  %g1, %o7
                                 

                                                                     

4001295c <_Objects_Get_name_as_string>: char *_Objects_Get_name_as_string( Objects_Id id, size_t length, char *name ) {
4001295c:	9d e3 bf 90 	save  %sp, -112, %sp
                          <== NOT EXECUTED
  Objects_Id             tmpId;
                                      

                                                                     
  if ( length == 0 )
                                                 
    return NULL;
                                                     

                                                                     
  if ( name == NULL )
                                                
40012960:	80 a6 60 00 	cmp  %i1, 0
                                   <== NOT EXECUTED
40012964:	02 80 00 1e 	be  400129dc <_Objects_Get_name_as_string+0x80>
<== NOT EXECUTED
40012968:	80 a6 a0 00 	cmp  %i2, 0
                                   
4001296c:	02 80 00 1c 	be  400129dc <_Objects_Get_name_as_string+0x80>

40012970:	80 a6 20 00 	cmp  %i0, 0
                                   
    return NULL;
                                                     

                                                                     
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Get_executing()->Object.id : id;

40012974:	22 80 00 18 	be,a   400129d4 <_Objects_Get_name_as_string+0x78>

40012978:	c2 01 a0 20 	ld  [ %g6 + 0x20 ], %g1
                       

                                                                     
  information = _Objects_Get_information_id( tmpId );
                
4001297c:	7f ff e8 24 	call  4000ca0c <_Objects_Get_information_id>
  
40012980:	90 10 00 18 	mov  %i0, %o0
                                 
  if ( !information )
                                                
40012984:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
40012988:	02 80 00 15 	be  400129dc <_Objects_Get_name_as_string+0x80>

4001298c:	94 10 00 1d 	mov  %i5, %o2
                                 
    return NULL;
                                                     

                                                                     
  the_object = _Objects_Get( tmpId, &lock_context, information );
    
40012990:	92 07 bf fc 	add  %fp, -4, %o1
                             
40012994:	7f ff e8 41 	call  4000ca98 <_Objects_Get>
                 
40012998:	90 10 00 18 	mov  %i0, %o0
                                 
  if ( the_object == NULL ) {
                                        
4001299c:	80 a2 20 00 	cmp  %o0, 0
                                   
400129a0:	02 80 00 0f 	be  400129dc <_Objects_Get_name_as_string+0x80>

400129a4:	96 10 00 19 	mov  %i1, %o3
                                 
    return NULL;
                                                     
  }
                                                                  

                                                                     
  _Objects_Name_to_string(
                                           
400129a8:	c2 02 20 0c 	ld  [ %o0 + 0xc ], %g1
                        
400129ac:	d2 0f 60 38 	ldub  [ %i5 + 0x38 ], %o1
                     
400129b0:	c2 27 bf f4 	st  %g1, [ %fp + -12 ]
                        
400129b4:	94 10 00 1a 	mov  %i2, %o2
                                 
400129b8:	7f ff ff be 	call  400128b0 <_Objects_Name_to_string>
      
400129bc:	90 07 bf f4 	add  %fp, -12, %o0
                            
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

400129c0:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

400129c4:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
400129c8:	01 00 00 00 	nop 
                                          
    length
                                                           
  );
                                                                 

                                                                     
  _ISR_lock_ISR_enable( &lock_context );
                             
  return name;
                                                       
}
                                                                    
400129cc:	81 c7 e0 08 	ret 
                                          
400129d0:	91 e8 00 1a 	restore  %g0, %i2, %o0
                        
400129d4:	10 bf ff ea 	b  4001297c <_Objects_Get_name_as_string+0x20>

400129d8:	f0 00 60 08 	ld  [ %g1 + 8 ], %i0
                          
    return NULL;
                                                     
400129dc:	81 c7 e0 08 	ret 
                                          
400129e0:	91 e8 20 00 	restore  %g0, 0, %o0
                          

                                                                     

4000bfc4 <_Objects_Get_next>: Objects_Control *_Objects_Get_next( Objects_Id id, const Objects_Information *information, Objects_Id *next_id_p ) {
4000bfc4:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
    Objects_Id       next_id;
                                        

                                                                     
    if ( !information )
                                              
      return NULL;
                                                   

                                                                     
    if ( !next_id_p )
                                                
4000bfc8:	80 a6 60 00 	cmp  %i1, 0
                                   <== NOT EXECUTED
4000bfcc:	02 80 00 20 	be  4000c04c <_Objects_Get_next+0x88>
         <== NOT EXECUTED
4000bfd0:	80 a6 a0 00 	cmp  %i2, 0
                                   
4000bfd4:	02 80 00 1e 	be  4000c04c <_Objects_Get_next+0x88>
         
4000bfd8:	83 2e 20 10 	sll  %i0, 0x10, %g1
                           
      return NULL;
                                                   

                                                                     
    if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX)
          
4000bfdc:	80 a0 60 00 	cmp  %g1, 0
                                   
4000bfe0:	22 80 00 02 	be,a   4000bfe8 <_Objects_Get_next+0x24>
      
4000bfe4:	f0 06 60 08 	ld  [ %i1 + 8 ], %i0
                          
  _RTEMS_Lock_allocator();
                                           
4000bfe8:	7f ff f6 d0 	call  40009b28 <_RTEMS_Lock_allocator>
        
4000bfec:	01 00 00 00 	nop 
                                          

                                                                     
    _Objects_Allocator_lock();
                                       

                                                                     
    do {
                                                             
        /* walked off end of list? */
                                
        if (_Objects_Get_index(next_id) > information->maximum)
      
4000bff0:	10 80 00 08 	b  4000c010 <_Objects_Get_next+0x4c>
          
4000bff4:	c4 16 60 10 	lduh  [ %i1 + 0x10 ], %g2
                     
            *next_id_p = OBJECTS_ID_FINAL;
                           
            return NULL;
                                             
        }
                                                            

                                                                     
        /* try to grab one */
                                        
        the_object = _Objects_Get_no_protection( next_id, information );

4000bff8:	40 00 00 17 	call  4000c054 <_Objects_Get_no_protection>
   
4000bffc:	b0 06 20 01 	inc  %i0
                                      

                                                                     
        next_id++;
                                                   

                                                                     
    } while ( the_object == NULL );
                                  
4000c000:	80 a2 20 00 	cmp  %o0, 0
                                   
4000c004:	32 80 00 10 	bne,a   4000c044 <_Objects_Get_next+0x80>
     
4000c008:	f0 26 80 00 	st  %i0, [ %i2 ]
                              
        if (_Objects_Get_index(next_id) > information->maximum)
      
4000c00c:	c4 16 60 10 	lduh  [ %i1 + 0x10 ], %g2
                     
4000c010:	83 2e 20 10 	sll  %i0, 0x10, %g1
                           
        the_object = _Objects_Get_no_protection( next_id, information );

4000c014:	90 10 00 18 	mov  %i0, %o0
                                 
        if (_Objects_Get_index(next_id) > information->maximum)
      
4000c018:	83 30 60 10 	srl  %g1, 0x10, %g1
                           
4000c01c:	80 a0 80 01 	cmp  %g2, %g1
                                 
4000c020:	1a bf ff f6 	bcc  4000bff8 <_Objects_Get_next+0x34>
        
4000c024:	92 10 00 19 	mov  %i1, %o1
                                 
  _RTEMS_Unlock_allocator();
                                         
4000c028:	7f ff f6 c5 	call  40009b3c <_RTEMS_Unlock_allocator>
      
4000c02c:	01 00 00 00 	nop 
                                          
            *next_id_p = OBJECTS_ID_FINAL;
                           
4000c030:	82 10 3f ff 	mov  -1, %g1	! ffffffff <RAM_END+0xbfbfffff>
  
4000c034:	c2 26 80 00 	st  %g1, [ %i2 ]
                              
            return NULL;
                                             
4000c038:	90 10 20 00 	clr  %o0
                                      

                                                                     
    *next_id_p = next_id;
                                            
    return the_object;
                                               
}
                                                                    
4000c03c:	81 c7 e0 08 	ret 
                                          
4000c040:	91 e8 00 08 	restore  %g0, %o0, %o0
                        
4000c044:	81 c7 e0 08 	ret 
                                          
4000c048:	91 e8 00 08 	restore  %g0, %o0, %o0
                        
      return NULL;
                                                   
4000c04c:	10 bf ff fc 	b  4000c03c <_Objects_Get_next+0x78>
          
4000c050:	90 10 20 00 	clr  %o0
                                      

                                                                     

40009174 <_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;
40009174:	c4 02 60 08 	ld  [ %o1 + 8 ], %g2
                          <== NOT EXECUTED

                                                                     
  if ( information->maximum >= index ) {
                             
40009178:	c2 12 60 10 	lduh  [ %o1 + 0x10 ], %g1
                     <== NOT EXECUTED
  index = id - information->minimum_id + 1;
                          
4000917c:	90 02 20 01 	inc  %o0
                                      <== NOT EXECUTED
40009180:	90 22 00 02 	sub  %o0, %g2, %o0
                            
  if ( information->maximum >= index ) {
                             
40009184:	80 a0 40 08 	cmp  %g1, %o0
                                 
40009188:	0a 80 00 06 	bcs  400091a0 <_Objects_Get_no_protection+0x2c>
<== NEVER TAKEN
4000918c:	01 00 00 00 	nop 
                                          
    if ( (the_object = information->local_table[ index ]) != NULL ) {

40009190:	c2 02 60 1c 	ld  [ %o1 + 0x1c ], %g1
                       
40009194:	91 2a 20 02 	sll  %o0, 2, %o0
                              
40009198:	81 c3 e0 08 	retl 
                                         
4000919c:	d0 00 40 08 	ld  [ %g1 + %o0 ], %o0
                        
  /*
                                                                 
   *  This isn't supported or required yet for Global objects so
     
   *  if it isn't local, we don't find it.
                           
   */
                                                                
  return NULL;
                                                       
}
                                                                    
400091a0:	81 c3 e0 08 	retl 
                                         
400091a4:	90 10 20 00 	clr  %o0
                                      

                                                                     

4000cb2c <_Objects_Id_to_name>: Objects_Name_or_id_lookup_errors _Objects_Id_to_name ( Objects_Id id, Objects_Name *name ) {
4000cb2c:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED

                                                                     
  /*
                                                                 
   *  Caller is trusted for name != NULL.
                            
   */
                                                                

                                                                     
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Get_executing()->Object.id : id;

4000cb30:	80 a6 20 00 	cmp  %i0, 0
                                   <== NOT EXECUTED
4000cb34:	12 80 00 04 	bne  4000cb44 <_Objects_Id_to_name+0x18>
      <== NOT EXECUTED
4000cb38:	01 00 00 00 	nop 
                                          
4000cb3c:	c2 01 a0 20 	ld  [ %g6 + 0x20 ], %g1
                       
4000cb40:	f0 00 60 08 	ld  [ %g1 + 8 ], %i0
                          

                                                                     
  information = _Objects_Get_information_id( tmpId );
                
4000cb44:	7f ff ff b2 	call  4000ca0c <_Objects_Get_information_id>
  
4000cb48:	90 10 00 18 	mov  %i0, %o0
                                 
  if ( !information )
                                                
4000cb4c:	80 a2 20 00 	cmp  %o0, 0
                                   
4000cb50:	02 80 00 13 	be  4000cb9c <_Objects_Id_to_name+0x70>
       
4000cb54:	01 00 00 00 	nop 
                                          
    return OBJECTS_INVALID_ID;
                                       

                                                                     
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
                
    if ( information->is_string )
                                    
4000cb58:	c2 0a 20 38 	ldub  [ %o0 + 0x38 ], %g1
                     
4000cb5c:	80 a0 60 00 	cmp  %g1, 0
                                   
4000cb60:	12 80 00 0f 	bne  4000cb9c <_Objects_Id_to_name+0x70>
      <== NEVER TAKEN
4000cb64:	94 10 00 08 	mov  %o0, %o2
                                 
      return OBJECTS_INVALID_ID;
                                     
  #endif
                                                             

                                                                     
  the_object = _Objects_Get(
                                         
4000cb68:	92 07 bf fc 	add  %fp, -4, %o1
                             
4000cb6c:	7f ff ff cb 	call  4000ca98 <_Objects_Get>
                 
4000cb70:	90 10 00 18 	mov  %i0, %o0
                                 
    tmpId,
                                                           
    &lock_context,
                                                   
    information
                                                      
  );
                                                                 
  if ( !the_object )
                                                 
4000cb74:	80 a2 20 00 	cmp  %o0, 0
                                   
4000cb78:	02 80 00 09 	be  4000cb9c <_Objects_Id_to_name+0x70>
       
4000cb7c:	01 00 00 00 	nop 
                                          
    return OBJECTS_INVALID_ID;
                                       

                                                                     
  *name = the_object->name;
                                          
4000cb80:	c2 02 20 0c 	ld  [ %o0 + 0xc ], %g1
                        <== NOT EXECUTED
4000cb84:	c2 26 40 00 	st  %g1, [ %i1 ]
                              <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000cb88:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000cb8c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000cb90:	01 00 00 00 	nop 
                                          
  _ISR_lock_ISR_enable( &lock_context );
                             
  return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
                       
}
                                                                    
4000cb94:	81 c7 e0 08 	ret 
                                          
4000cb98:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    return OBJECTS_INVALID_ID;
                                       
4000cb9c:	81 c7 e0 08 	ret 
                                          
4000cba0:	91 e8 20 03 	restore  %g0, 3, %o0
                          

                                                                     

400131bc <_Objects_Name_to_id_u32>: Objects_Name name_for_mp; #endif /* ASSERT: information->is_string == false */ if ( !id )
400131bc:	80 a2 e0 00 	cmp  %o3, 0
                                   <== NOT EXECUTED
400131c0:	02 80 00 21 	be  40013244 <_Objects_Name_to_id_u32+0x88>
   <== NOT EXECUTED
400131c4:	80 a2 60 00 	cmp  %o1, 0
                                   
    return OBJECTS_INVALID_ADDRESS;
                                  

                                                                     
  if ( name == 0 )
                                                   
400131c8:	02 80 00 1d 	be  4001323c <_Objects_Name_to_id_u32+0x80>
   
400131cc:	82 10 20 01 	mov  1, %g1
                                   

                                                                     
  search_local_node = false;
                                         

                                                                     
  if ( information->maximum != 0 &&
                                  
      (node == OBJECTS_SEARCH_ALL_NODES ||
                           
       node == OBJECTS_SEARCH_LOCAL_NODE ||
                          
400131d0:	05 20 00 00 	sethi  %hi(0x80000000), %g2
                   
400131d4:	84 38 80 0a 	xnor  %g2, %o2, %g2
                           
400131d8:	80 a0 a0 00 	cmp  %g2, 0
                                   
400131dc:	02 80 00 05 	be  400131f0 <_Objects_Name_to_id_u32+0x34>
   
400131e0:	c6 12 20 10 	lduh  [ %o0 + 0x10 ], %g3
                     
400131e4:	80 a2 a0 01 	cmp  %o2, 1
                                   
400131e8:	18 80 00 15 	bgu  4001323c <_Objects_Name_to_id_u32+0x80>
  
400131ec:	01 00 00 00 	nop 
                                          
       _Objects_Is_local_node( node )
                                
      ))
                                                             
   search_local_node = true;
                                         

                                                                     
  if ( search_local_node ) {
                                         
    for ( index = 1; index <= information->maximum; index++ ) {
      
400131f0:	80 a0 e0 00 	cmp  %g3, 0
                                   
400131f4:	02 80 00 11 	be  40013238 <_Objects_Name_to_id_u32+0x7c>
   
400131f8:	82 10 20 01 	mov  1, %g1
                                   
      the_object = information->local_table[ index ];
                
400131fc:	da 02 20 1c 	ld  [ %o0 + 0x1c ], %o5
                       
40013200:	86 00 e0 01 	inc  %g3
                                      
40013204:	85 28 60 02 	sll  %g1, 2, %g2
                              
40013208:	c4 03 40 02 	ld  [ %o5 + %g2 ], %g2
                        
      if ( !the_object )
                                             
4001320c:	80 a0 a0 00 	cmp  %g2, 0
                                   
40013210:	22 80 00 07 	be,a   4001322c <_Objects_Name_to_id_u32+0x70>

40013214:	82 00 60 01 	inc  %g1
                                      
        continue;
                                                    

                                                                     
      if ( name == the_object->name.name_u32 ) {
                     
40013218:	c8 00 a0 0c 	ld  [ %g2 + 0xc ], %g4
                        
4001321c:	80 a1 00 09 	cmp  %g4, %o1
                                 
40013220:	22 80 00 0c 	be,a   40013250 <_Objects_Name_to_id_u32+0x94>

40013224:	c2 00 a0 08 	ld  [ %g2 + 8 ], %g1
                          
    for ( index = 1; index <= information->maximum; index++ ) {
      
40013228:	82 00 60 01 	inc  %g1
                                      
4001322c:	80 a0 c0 01 	cmp  %g3, %g1
                                 
40013230:	32 bf ff f6 	bne,a   40013208 <_Objects_Name_to_id_u32+0x4c>

40013234:	85 28 60 02 	sll  %g1, 2, %g2
                              
    return OBJECTS_INVALID_NAME;
                                     
40013238:	82 10 20 01 	mov  1, %g1
                                   
  name_for_mp.name_u32 = name;
                                       
  return _Objects_MP_Global_name_search( information, name_for_mp, node, id );

#else
                                                                
  return OBJECTS_INVALID_NAME;
                                       
#endif
                                                               
}
                                                                    
4001323c:	81 c3 e0 08 	retl 
                                         
40013240:	90 10 00 01 	mov  %g1, %o0
                                 
    return OBJECTS_INVALID_ADDRESS;
                                  
40013244:	82 10 20 02 	mov  2, %g1
                                   
}
                                                                    
40013248:	81 c3 e0 08 	retl 
                                         
4001324c:	90 10 00 01 	mov  %g1, %o0
                                 
        *id = the_object->id;
                                        
40013250:	c2 22 c0 00 	st  %g1, [ %o3 ]
                              
        return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
                 
40013254:	10 bf ff fa 	b  4001323c <_Objects_Name_to_id_u32+0x80>
    
40013258:	82 10 20 00 	clr  %g1
                                      

                                                                     

400128b0 <_Objects_Name_to_string>: Objects_Name name, bool is_string, char *buffer, size_t buffer_size ) {
400128b0:	9c 03 bf b0 	add  %sp, -80, %sp
                            <== NOT EXECUTED
  const char *s;
                                                     
  char       *d;
                                                     
  size_t      i;
                                                     

                                                                     
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
                  
  if ( is_string ) {
                                                 
400128b4:	80 a2 60 00 	cmp  %o1, 0
                                   <== NOT EXECUTED
400128b8:	12 80 00 20 	bne  40012938 <_Objects_Name_to_string+0x88>
  <== NOT EXECUTED
400128bc:	c2 02 00 00 	ld  [ %o0 ], %g1
                              
    s = name.name_p;
                                                 
  } else
                                                             
#endif
                                                               
  {
                                                                  
    lname[ 0 ] = (name.name_u32 >> 24) & 0xff;
                       
400128c0:	85 30 60 18 	srl  %g1, 0x18, %g2
                           
    lname[ 1 ] = (name.name_u32 >> 16) & 0xff;
                       
400128c4:	89 30 60 10 	srl  %g1, 0x10, %g4
                           
    lname[ 2 ] = (name.name_u32 >>  8) & 0xff;
                       
400128c8:	87 30 60 08 	srl  %g1, 8, %g3
                              
    lname[ 0 ] = (name.name_u32 >> 24) & 0xff;
                       
400128cc:	c4 2b a0 48 	stb  %g2, [ %sp + 0x48 ]
                      
    lname[ 1 ] = (name.name_u32 >> 16) & 0xff;
                       
400128d0:	c8 2b a0 49 	stb  %g4, [ %sp + 0x49 ]
                      
    lname[ 2 ] = (name.name_u32 >>  8) & 0xff;
                       
400128d4:	c6 2b a0 4a 	stb  %g3, [ %sp + 0x4a ]
                      
    lname[ 3 ] = (name.name_u32 >>  0) & 0xff;
                       
    lname[ 4 ] = '\0';
                                               
400128d8:	c0 2b a0 4c 	clrb  [ %sp + 0x4c ]
                          
    lname[ 3 ] = (name.name_u32 >>  0) & 0xff;
                       
400128dc:	c2 2b a0 4b 	stb  %g1, [ %sp + 0x4b ]
                      
    s = lname;
                                                       
400128e0:	82 03 a0 48 	add  %sp, 0x48, %g1
                           

                                                                     
  d = buffer;
                                                        
  i = 1;
                                                             

                                                                     
  if ( s != NULL ) {
                                                 
    while ( *s != '\0' ) {
                                           
400128e4:	87 28 a0 18 	sll  %g2, 0x18, %g3
                           
400128e8:	80 a0 e0 00 	cmp  %g3, 0
                                   
400128ec:	02 80 00 16 	be  40012944 <_Objects_Name_to_string+0x94>
   <== NEVER TAKEN
400128f0:	90 10 20 01 	mov  1, %o0
                                   
      if ( i < buffer_size ) {
                                       
400128f4:	80 a2 c0 08 	cmp  %o3, %o0
                                 
400128f8:	08 80 00 09 	bleu  4001291c <_Objects_Name_to_string+0x6c>
 
400128fc:	82 00 60 01 	inc  %g1
                                      
  return uc >= ' ' && uc <= '~';
                                     
40012900:	86 00 bf e0 	add  %g2, -32, %g3
                            
        *d = _Objects_Name_char_is_printable(*s) ? *s : '*';
         
40012904:	86 08 e0 ff 	and  %g3, 0xff, %g3
                           
40012908:	80 a0 e0 5e 	cmp  %g3, 0x5e
                                
4001290c:	38 80 00 02 	bgu,a   40012914 <_Objects_Name_to_string+0x64>

40012910:	84 10 20 2a 	mov  0x2a, %g2
                                
40012914:	c4 2a 80 00 	stb  %g2, [ %o2 ]
                             
        ++d;
                                                         
40012918:	94 02 a0 01 	inc  %o2
                                      
    while ( *s != '\0' ) {
                                           
4001291c:	c6 48 40 00 	ldsb  [ %g1 ], %g3
                            
      }
                                                              

                                                                     
      ++s;
                                                           
      ++i;
                                                           
40012920:	88 02 20 01 	add  %o0, 1, %g4
                              
    while ( *s != '\0' ) {
                                           
40012924:	80 a0 e0 00 	cmp  %g3, 0
                                   
40012928:	02 80 00 08 	be  40012948 <_Objects_Name_to_string+0x98>
   
4001292c:	c4 08 40 00 	ldub  [ %g1 ], %g2
                            
      ++i;
                                                           
40012930:	10 bf ff f1 	b  400128f4 <_Objects_Name_to_string+0x44>
    
40012934:	90 10 00 04 	mov  %g4, %o0
                                 
  if ( s != NULL ) {
                                                 
40012938:	80 a0 60 00 	cmp  %g1, 0
                                   
4001293c:	32 bf ff ea 	bne,a   400128e4 <_Objects_Name_to_string+0x34>

40012940:	c4 08 40 00 	ldub  [ %g1 ], %g2
                            
        *d = _Objects_Name_char_is_printable(*s) ? *s : '*';
         
40012944:	90 10 20 00 	clr  %o0
                                      
    }
                                                                
  }
                                                                  

                                                                     
  if ( buffer_size > 0 ) {
                                           
40012948:	80 a2 e0 00 	cmp  %o3, 0
                                   
4001294c:	32 80 00 02 	bne,a   40012954 <_Objects_Name_to_string+0xa4>

40012950:	c0 2a 80 00 	clrb  [ %o2 ]
                                 
    *d = '\0';
                                                       
  }
                                                                  

                                                                     
  return i - 1;
                                                      
}
                                                                    
40012954:	81 c3 e0 08 	retl 
                                         
40012958:	9c 03 a0 50 	add  %sp, 0x50, %sp
                           

                                                                     

4000e08c <_Objects_Namespace_remove>: void _Objects_Namespace_remove( Objects_Information *information, Objects_Control *the_object ) {
4000e08c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
                
    /*
                                                               
     *  If this is a string format name, then free the memory.
       
     */
                                                              
    if ( information->is_string )
                                    
4000e090:	c2 0e 20 38 	ldub  [ %i0 + 0x38 ], %g1
                     <== NOT EXECUTED
4000e094:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000e098:	22 80 00 05 	be,a   4000e0ac <_Objects_Namespace_remove+0x20>
<== NOT EXECUTED
4000e09c:	c0 26 60 0c 	clr  [ %i1 + 0xc ]
                            
       _Workspace_Free( (void *)the_object->name.name_p );
           
4000e0a0:	7f ff f8 d6 	call  4000c3f8 <_Workspace_Free>
              
4000e0a4:	d0 06 60 0c 	ld  [ %i1 + 0xc ], %o0
                        

                                                                     
  /*
                                                                 
   * Clear out either format.
                                        
   */
                                                                
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
                
    the_object->name.name_p   = NULL;
                                
4000e0a8:	c0 26 60 0c 	clr  [ %i1 + 0xc ]
                            
  #endif
                                                             
  the_object->name.name_u32 = 0;
                                     
}
                                                                    
4000e0ac:	81 c7 e0 08 	ret 
                                          
4000e0b0:	81 e8 00 00 	restore 
                                      

                                                                     

40008c54 <_Objects_Set_name>: bool _Objects_Set_name( Objects_Information *information, Objects_Control *the_object, const char *name ) {
40008c54:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  size_t                 length;
                                     
  const char            *s;
                                          

                                                                     
  s      = name;
                                                     
  length = strnlen( name, information->name_length );
                
40008c58:	d2 16 20 3a 	lduh  [ %i0 + 0x3a ], %o1
                     <== NOT EXECUTED
40008c5c:	40 00 1a 73 	call  4000f628 <strnlen>
                      <== NOT EXECUTED
40008c60:	90 10 00 1a 	mov  %i2, %o0
                                 <== NOT EXECUTED

                                                                     
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
                  
  if ( information->is_string ) {
                                    
40008c64:	f0 0e 20 38 	ldub  [ %i0 + 0x38 ], %i0
                     
40008c68:	80 a6 20 00 	cmp  %i0, 0
                                   
40008c6c:	12 80 00 19 	bne  40008cd0 <_Objects_Set_name+0x7c>
        
40008c70:	ba 10 00 08 	mov  %o0, %i5
                                 
40008c74:	03 08 08 08 	sethi  %hi(0x20202000), %g1
                   
    d[length] = '\0';
                                                
    the_object->name.name_p = d;
                                     
  } else
                                                             
#endif
                                                               
  {
                                                                  
    the_object->name.name_u32 =  _Objects_Build_name(
                
40008c78:	80 a2 20 00 	cmp  %o0, 0
                                   
40008c7c:	02 80 00 12 	be  40008cc4 <_Objects_Set_name+0x70>
         
40008c80:	82 10 60 20 	or  %g1, 0x20, %g1
                            
40008c84:	c2 4e 80 00 	ldsb  [ %i2 ], %g1
                            
40008c88:	80 a2 20 01 	cmp  %o0, 1
                                   
40008c8c:	08 80 00 29 	bleu  40008d30 <_Objects_Set_name+0xdc>
       
40008c90:	85 28 60 18 	sll  %g1, 0x18, %g2
                           
40008c94:	c2 4e a0 01 	ldsb  [ %i2 + 1 ], %g1
                        
40008c98:	83 28 60 10 	sll  %g1, 0x10, %g1
                           
40008c9c:	80 a2 20 02 	cmp  %o0, 2
                                   
40008ca0:	02 80 00 1e 	be  40008d18 <_Objects_Set_name+0xc4>
         
40008ca4:	84 10 40 02 	or  %g1, %g2, %g2
                             
40008ca8:	c2 4e a0 02 	ldsb  [ %i2 + 2 ], %g1
                        
40008cac:	83 28 60 08 	sll  %g1, 8, %g1
                              
40008cb0:	80 a2 20 03 	cmp  %o0, 3
                                   
40008cb4:	02 80 00 1d 	be  40008d28 <_Objects_Set_name+0xd4>
         
40008cb8:	82 10 40 02 	or  %g1, %g2, %g1
                             
40008cbc:	c4 4e a0 03 	ldsb  [ %i2 + 3 ], %g2
                        
40008cc0:	82 10 80 01 	or  %g2, %g1, %g1
                             
40008cc4:	c2 26 60 0c 	st  %g1, [ %i1 + 0xc ]
                        
40008cc8:	81 c7 e0 08 	ret 
                                          
40008ccc:	91 e8 20 01 	restore  %g0, 1, %o0
                          
    d = _Workspace_Allocate( length + 1 );
                           
40008cd0:	40 00 0c 79 	call  4000beb4 <_Workspace_Allocate>
          
40008cd4:	90 02 20 01 	inc  %o0
                                      
    if ( !d )
                                                        
40008cd8:	b8 92 20 00 	orcc  %o0, 0, %i4
                             
40008cdc:	02 80 00 0d 	be  40008d10 <_Objects_Set_name+0xbc>
         
40008ce0:	01 00 00 00 	nop 
                                          
    _Workspace_Free( (void *)the_object->name.name_p );
              
40008ce4:	40 00 0c 84 	call  4000bef4 <_Workspace_Free>
              
40008ce8:	d0 06 60 0c 	ld  [ %i1 + 0xc ], %o0
                        
    the_object->name.name_p = NULL;
                                  
40008cec:	c0 26 60 0c 	clr  [ %i1 + 0xc ]
                            
    strncpy( d, name, length );
                                      
40008cf0:	94 10 00 1d 	mov  %i5, %o2
                                 
40008cf4:	92 10 00 1a 	mov  %i2, %o1
                                 
40008cf8:	40 00 1a 08 	call  4000f518 <strncpy>
                      
40008cfc:	90 10 00 1c 	mov  %i4, %o0
                                 
    d[length] = '\0';
                                                
40008d00:	c0 2f 00 1d 	clrb  [ %i4 + %i5 ]
                           
    the_object->name.name_p = d;
                                     
40008d04:	f8 26 60 0c 	st  %i4, [ %i1 + 0xc ]
                        
40008d08:	81 c7 e0 08 	ret 
                                          
40008d0c:	81 e8 00 00 	restore 
                                      
    );
                                                               

                                                                     
  }
                                                                  

                                                                     
  return true;
                                                       
}
                                                                    
40008d10:	81 c7 e0 08 	ret 
                                          
40008d14:	91 e8 20 00 	restore  %g0, 0, %o0
                          
40008d18:	07 00 00 08 	sethi  %hi(0x2000), %g3
                       
40008d1c:	86 10 e0 20 	or  %g3, 0x20, %g3	! 2020 <_Configuration_Interrupt_stack_size+0x1020>

40008d20:	10 bf ff e9 	b  40008cc4 <_Objects_Set_name+0x70>
          
40008d24:	82 10 80 03 	or  %g2, %g3, %g1
                             
40008d28:	10 bf ff e7 	b  40008cc4 <_Objects_Set_name+0x70>
          
40008d2c:	82 10 60 20 	or  %g1, 0x20, %g1
                            
40008d30:	03 00 08 08 	sethi  %hi(0x202000), %g1
                     
40008d34:	82 10 60 20 	or  %g1, 0x20, %g1	! 202020 <PROM_END+0x2020>
 
40008d38:	10 bf ff e3 	b  40008cc4 <_Objects_Set_name+0x70>
          
40008d3c:	82 10 80 01 	or  %g2, %g1, %g1
                             

                                                                     

4000e0b4 <_Objects_Shrink_information>: #include <rtems/score/wkspace.h> void _Objects_Shrink_information( Objects_Information *information ) {
4000e0b4:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
4000e0b8:	c6 16 20 0a 	lduh  [ %i0 + 0xa ], %g3
                      <== NOT EXECUTED
   * 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) /
                
                 information->allocation_size;
                       
4000e0bc:	c4 16 20 14 	lduh  [ %i0 + 0x14 ], %g2
                     <== NOT EXECUTED
  block_count = (information->maximum - index_base) /
                
4000e0c0:	c8 16 20 10 	lduh  [ %i0 + 0x10 ], %g4
                     <== NOT EXECUTED
4000e0c4:	88 21 00 03 	sub  %g4, %g3, %g4
                            <== NOT EXECUTED

                                                                     
  for ( block = 0; block < block_count; block++ ) {
                  
4000e0c8:	81 80 20 00 	wr  %g0, %y
                                   <== NOT EXECUTED
4000e0cc:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
4000e0d0:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
4000e0d4:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
4000e0d8:	88 f1 00 02 	udivcc  %g4, %g2, %g4
                         <== NOT EXECUTED
4000e0dc:	02 80 00 35 	be  4000e1b0 <_Objects_Shrink_information+0xfc>
<== NOT EXECUTED
4000e0e0:	01 00 00 00 	nop 
                                          
    if ( information->inactive_per_block[ block ] ==
                 
4000e0e4:	f4 06 20 30 	ld  [ %i0 + 0x30 ], %i2
                       
4000e0e8:	c2 06 80 00 	ld  [ %i2 ], %g1
                              
4000e0ec:	80 a0 80 01 	cmp  %g2, %g1
                                 
4000e0f0:	02 80 00 0f 	be  4000e12c <_Objects_Shrink_information+0x78>
<== NEVER TAKEN
4000e0f4:	ba 10 20 04 	mov  4, %i5
                                   
  for ( block = 0; block < block_count; block++ ) {
                  
4000e0f8:	10 80 00 07 	b  4000e114 <_Objects_Shrink_information+0x60>

4000e0fc:	82 10 20 00 	clr  %g1
                                      
    if ( information->inactive_per_block[ block ] ==
                 
4000e100:	f8 06 80 1d 	ld  [ %i2 + %i5 ], %i4
                        
4000e104:	80 a0 80 1c 	cmp  %g2, %i4
                                 
4000e108:	02 80 00 0a 	be  4000e130 <_Objects_Shrink_information+0x7c>

4000e10c:	b6 07 60 04 	add  %i5, 4, %i3
                              
4000e110:	ba 10 00 1b 	mov  %i3, %i5
                                 
  for ( block = 0; block < block_count; block++ ) {
                  
4000e114:	82 00 60 01 	inc  %g1
                                      
4000e118:	80 a1 00 01 	cmp  %g4, %g1
                                 
4000e11c:	12 bf ff f9 	bne  4000e100 <_Objects_Shrink_information+0x4c>

4000e120:	86 00 c0 02 	add  %g3, %g2, %g3
                            
      return;
                                                        
    }
                                                                

                                                                     
    index_base += information->allocation_size;
                      
  }
                                                                  
}
                                                                    
4000e124:	81 c7 e0 08 	ret 
                                          
4000e128:	81 e8 00 00 	restore 
                                      
    if ( information->inactive_per_block[ block ] ==
                 
4000e12c:	ba 10 20 00 	clr  %i5
                                      <== NOT EXECUTED
  return _Chain_Immutable_head( the_chain )->next;
                   
4000e130:	c2 06 20 20 	ld  [ %i0 + 0x20 ], %g1
                       
  return &the_chain->Tail.Node;
                                      
4000e134:	b4 06 20 24 	add  %i0, 0x24, %i2
                           
      while ( node != tail ) {
                                       
4000e138:	80 a0 40 1a 	cmp  %g1, %i2
                                 
4000e13c:	02 80 00 12 	be  4000e184 <_Objects_Shrink_information+0xd0>
<== NEVER TAKEN
4000e140:	84 00 80 03 	add  %g2, %g3, %g2
                            
4000e144:	37 00 00 3f 	sethi  %hi(0xfc00), %i3
                       
4000e148:	b6 16 e3 ff 	or  %i3, 0x3ff, %i3	! ffff <_Configuration_Interrupt_stack_size+0xefff>

4000e14c:	c8 00 60 08 	ld  [ %g1 + 8 ], %g4
                          
4000e150:	88 09 00 1b 	and  %g4, %i3, %g4
                            
        if ( index >= index_base && index < index_end ) {
            
4000e154:	80 a1 00 03 	cmp  %g4, %g3
                                 
4000e158:	0a 80 00 08 	bcs  4000e178 <_Objects_Shrink_information+0xc4>

4000e15c:	f8 00 40 00 	ld  [ %g1 ], %i4
                              
4000e160:	80 a1 00 02 	cmp  %g4, %g2
                                 
4000e164:	1a 80 00 06 	bcc  4000e17c <_Objects_Shrink_information+0xc8>

4000e168:	80 a6 80 1c 	cmp  %i2, %i4
                                 
  previous       = the_node->previous;
                               
4000e16c:	c2 00 60 04 	ld  [ %g1 + 4 ], %g1
                          
  next->previous = previous;
                                         
4000e170:	c2 27 20 04 	st  %g1, [ %i4 + 4 ]
                          
  previous->next = next;
                                             
4000e174:	f8 20 40 00 	st  %i4, [ %g1 ]
                              
      while ( node != tail ) {
                                       
4000e178:	80 a6 80 1c 	cmp  %i2, %i4
                                 
4000e17c:	12 bf ff f4 	bne  4000e14c <_Objects_Shrink_information+0x98>

4000e180:	82 10 00 1c 	mov  %i4, %g1
                                 
      _Workspace_Free( information->object_blocks[ block ] );
        
4000e184:	c2 06 20 34 	ld  [ %i0 + 0x34 ], %g1
                       
4000e188:	7f ff f8 9c 	call  4000c3f8 <_Workspace_Free>
              
4000e18c:	d0 00 40 1d 	ld  [ %g1 + %i5 ], %o0
                        
      information->object_blocks[ block ] = NULL;
                    
4000e190:	c2 06 20 34 	ld  [ %i0 + 0x34 ], %g1
                       
4000e194:	c0 20 40 1d 	clr  [ %g1 + %i5 ]
                            
      information->inactive_per_block[ block ] = 0;
                  
4000e198:	c4 06 20 30 	ld  [ %i0 + 0x30 ], %g2
                       
      information->inactive -= information->allocation_size;
         
4000e19c:	c2 16 20 2c 	lduh  [ %i0 + 0x2c ], %g1
                     
      information->inactive_per_block[ block ] = 0;
                  
4000e1a0:	c0 20 80 1d 	clr  [ %g2 + %i5 ]
                            
      information->inactive -= information->allocation_size;
         
4000e1a4:	c4 16 20 14 	lduh  [ %i0 + 0x14 ], %g2
                     
4000e1a8:	82 20 40 02 	sub  %g1, %g2, %g1
                            
4000e1ac:	c2 36 20 2c 	sth  %g1, [ %i0 + 0x2c ]
                      
      return;
                                                        
4000e1b0:	81 c7 e0 08 	ret 
                                          
4000e1b4:	81 e8 00 00 	restore 
                                      

                                                                     

40009280 <_Once>: #define ONCE_STATE_NOT_RUN 0 #define ONCE_STATE_RUNNING 1 #define ONCE_STATE_COMPLETE 2 int _Once( unsigned char *once_state, void ( *init_routine )( void ) ) {
40009280:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  int eno = 0;
                                                       

                                                                     
  if ( *once_state != ONCE_STATE_COMPLETE ) {
                        
40009284:	c2 0e 00 00 	ldub  [ %i0 ], %g1
                            <== NOT EXECUTED
40009288:	80 a0 60 02 	cmp  %g1, 2
                                   <== NOT EXECUTED
4000928c:	02 80 00 0e 	be  400092c4 <_Once+0x44>
                     <== NOT EXECUTED
40009290:	ba 10 20 00 	clr  %i5
                                      

                                                                     
static API_Mutex_Control _Once_Mutex = API_MUTEX_INITIALIZER( "_Once" );


                                                                     
void _Once_Lock( void )
                                              
{
                                                                    
  _API_Mutex_Lock( &_Once_Mutex );
                                   
40009294:	39 10 00 6d 	sethi  %hi(0x4001b400), %i4
                   
40009298:	7f ff f7 7b 	call  40007084 <_API_Mutex_Lock>
              
4000929c:	90 17 21 b0 	or  %i4, 0x1b0, %o0	! 4001b5b0 <_Once_Mutex>
  
    switch ( *once_state ) {
                                         
400092a0:	c2 0e 00 00 	ldub  [ %i0 ], %g1
                            
400092a4:	80 a0 60 00 	cmp  %g1, 0
                                   
400092a8:	02 80 00 09 	be  400092cc <_Once+0x4c>
                     
400092ac:	82 18 60 01 	xor  %g1, 1, %g1
                              
  int eno = 0;
                                                       
400092b0:	80 a0 00 01 	cmp  %g0, %g1
                                 
400092b4:	ba 40 3f ff 	addx  %g0, -1, %i5
                            
400092b8:	ba 0f 60 16 	and  %i5, 0x16, %i5
                           
}
                                                                    

                                                                     
void _Once_Unlock( void )
                                            
{
                                                                    
  _API_Mutex_Unlock( &_Once_Mutex );
                                 
400092bc:	7f ff f7 7e 	call  400070b4 <_API_Mutex_Unlock>
            
400092c0:	90 17 21 b0 	or  %i4, 0x1b0, %o0
                           
}
                                                                    
400092c4:	81 c7 e0 08 	ret 
                                          
400092c8:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
        *once_state = ONCE_STATE_RUNNING;
                            
400092cc:	82 10 20 01 	mov  1, %g1
                                   
        ( *init_routine )();
                                         
400092d0:	9f c6 40 00 	call  %i1
                                     
400092d4:	c2 2e 00 00 	stb  %g1, [ %i0 ]
                             
        *once_state = ONCE_STATE_COMPLETE;
                           
400092d8:	82 10 20 02 	mov  2, %g1
                                   
        break;
                                                       
400092dc:	10 bf ff f8 	b  400092bc <_Once+0x3c>
                      
400092e0:	c2 2e 00 00 	stb  %g1, [ %i0 ]
                             

                                                                     

4000a32c <_Once_Lock>: static API_Mutex_Control _Once_Mutex = API_MUTEX_INITIALIZER( "_Once" ); void _Once_Lock( void ) { _API_Mutex_Lock( &_Once_Mutex );
4000a32c:	11 10 00 4f 	sethi  %hi(0x40013c00), %o0
                   <== NOT EXECUTED
4000a330:	90 12 20 c0 	or  %o0, 0xc0, %o0	! 40013cc0 <_Once_Mutex>
   <== NOT EXECUTED
4000a334:	82 13 c0 00 	mov  %o7, %g1
                                 <== NOT EXECUTED
4000a338:	7f ff f6 2c 	call  40007be8 <_API_Mutex_Lock>
              <== NOT EXECUTED
4000a33c:	9e 10 40 00 	mov  %g1, %o7
                                 <== NOT EXECUTED

                                                                     

4000a340 <_Once_Unlock>: } void _Once_Unlock( void ) { _API_Mutex_Unlock( &_Once_Mutex );
4000a340:	11 10 00 4f 	sethi  %hi(0x40013c00), %o0
                   <== NOT EXECUTED
4000a344:	90 12 20 c0 	or  %o0, 0xc0, %o0	! 40013cc0 <_Once_Mutex>
   <== NOT EXECUTED
4000a348:	82 13 c0 00 	mov  %o7, %g1
                                 <== NOT EXECUTED
4000a34c:	7f ff f6 33 	call  40007c18 <_API_Mutex_Unlock>
            <== NOT EXECUTED
4000a350:	9e 10 40 00 	mov  %g1, %o7
                                 <== NOT EXECUTED

                                                                     

40023cb8 <_Processor_mask_Copy>: long *dst, size_t dst_size, const long *src, size_t src_size ) {
40023cb8:	82 10 00 08 	mov  %o0, %g1
                                 <== NOT EXECUTED
  long inclusive = 0;
                                                
  long exclusive = 0;
                                                

                                                                     
  if ( ( dst_size | src_size ) % sizeof( long ) != 0 ) {
             
40023cbc:	84 12 40 0b 	or  %o1, %o3, %g2
                             <== NOT EXECUTED
40023cc0:	80 88 a0 03 	btst  3, %g2
                                  <== NOT EXECUTED
40023cc4:	12 80 00 2b 	bne  40023d70 <_Processor_mask_Copy+0xb8>
     <== NOT EXECUTED
40023cc8:	90 10 20 03 	mov  3, %o0
                                   
    return PROCESSOR_MASK_COPY_INVALID_SIZE;
                         
  }
                                                                  

                                                                     
  while ( dst_size > 0 && src_size > 0 ) {
                           
40023ccc:	80 a2 e0 00 	cmp  %o3, 0
                                   
40023cd0:	02 80 00 11 	be  40023d14 <_Processor_mask_Copy+0x5c>
      
40023cd4:	86 10 20 00 	clr  %g3
                                      
40023cd8:	80 a2 60 00 	cmp  %o1, 0
                                   
40023cdc:	32 80 00 07 	bne,a   40023cf8 <_Processor_mask_Copy+0x40>
  
40023ce0:	c4 02 80 00 	ld  [ %o2 ], %g2
                              
40023ce4:	30 80 00 0d 	b,a   40023d18 <_Processor_mask_Copy+0x60>
    
40023ce8:	80 a2 e0 00 	cmp  %o3, 0
                                   
40023cec:	02 80 00 0b 	be  40023d18 <_Processor_mask_Copy+0x60>
      <== ALWAYS TAKEN
40023cf0:	80 a2 60 00 	cmp  %o1, 0
                                   
    long bits = *src;
                                                
40023cf4:	c4 02 80 00 	ld  [ %o2 ], %g2
                              <== NOT EXECUTED

                                                                     
    inclusive |= bits;
                                               
    *dst = bits;
                                                     
40023cf8:	c4 20 40 00 	st  %g2, [ %g1 ]
                              
    ++dst;
                                                           
    ++src;
                                                           
    dst_size -= sizeof( long );
                                      
    src_size -= sizeof( long );
                                      
40023cfc:	96 02 ff fc 	add  %o3, -4, %o3
                             
  while ( dst_size > 0 && src_size > 0 ) {
                           
40023d00:	92 82 7f fc 	addcc  %o1, -4, %o1
                           
    inclusive |= bits;
                                               
40023d04:	86 10 c0 02 	or  %g3, %g2, %g3
                             
    ++dst;
                                                           
40023d08:	82 00 60 04 	add  %g1, 4, %g1
                              
  while ( dst_size > 0 && src_size > 0 ) {
                           
40023d0c:	12 bf ff f7 	bne  40023ce8 <_Processor_mask_Copy+0x30>
     
40023d10:	94 02 a0 04 	add  %o2, 4, %o2
                              
  }
                                                                  

                                                                     
  while ( dst_size > 0 ) {
                                           
40023d14:	80 a2 60 00 	cmp  %o1, 0
                                   
40023d18:	02 80 00 07 	be  40023d34 <_Processor_mask_Copy+0x7c>
      
40023d1c:	80 a2 e0 00 	cmp  %o3, 0
                                   
    *dst = 0;
                                                        
40023d20:	c0 20 40 00 	clr  [ %g1 ]
                                  
  while ( dst_size > 0 ) {
                                           
40023d24:	92 82 7f fc 	addcc  %o1, -4, %o1
                           
40023d28:	12 bf ff fe 	bne  40023d20 <_Processor_mask_Copy+0x68>
     <== NEVER TAKEN
40023d2c:	82 00 60 04 	add  %g1, 4, %g1
                              
    ++dst;
                                                           
    dst_size -= sizeof( long );
                                      
  }
                                                                  

                                                                     
  while ( src_size > 0 ) {
                                           
40023d30:	80 a2 e0 00 	cmp  %o3, 0
                                   
40023d34:	02 80 00 0e 	be  40023d6c <_Processor_mask_Copy+0xb4>
      
40023d38:	82 10 20 00 	clr  %g1
                                      
    exclusive |= *src;
                                               
40023d3c:	c4 02 80 00 	ld  [ %o2 ], %g2
                              
40023d40:	82 10 40 02 	or  %g1, %g2, %g1
                             
  while ( src_size > 0 ) {
                                           
40023d44:	96 82 ff fc 	addcc  %o3, -4, %o3
                           
40023d48:	12 bf ff fd 	bne  40023d3c <_Processor_mask_Copy+0x84>
     <== NEVER TAKEN
40023d4c:	94 02 a0 04 	add  %o2, 4, %o2
                              
    ++src;
                                                           
    src_size -= sizeof( long );
                                      
  }
                                                                  

                                                                     
  if ( exclusive != 0 ) {
                                            
40023d50:	80 a0 60 00 	cmp  %g1, 0
                                   
40023d54:	02 80 00 07 	be  40023d70 <_Processor_mask_Copy+0xb8>
      
40023d58:	90 10 20 00 	clr  %o0
                                      
    if ( inclusive != 0 ) {
                                          
      return PROCESSOR_MASK_COPY_PARTIAL_LOSS;
                       
    } else {
                                                         
      return PROCESSOR_MASK_COPY_COMPLETE_LOSS;
                      
40023d5c:	80 a0 00 03 	cmp  %g0, %g3
                                 
40023d60:	90 60 3f ff 	subx  %g0, -1, %o0
                            
40023d64:	81 c3 e0 08 	retl 
                                         
40023d68:	90 02 20 01 	inc  %o0
                                      
    }
                                                                
  }
                                                                  

                                                                     
  return PROCESSOR_MASK_COPY_LOSSLESS;
                               
40023d6c:	90 10 20 00 	clr  %o0
                                      
}
                                                                    
40023d70:	81 c3 e0 08 	retl 
                                         
40023d74:	01 00 00 00 	nop 
                                          

                                                                     

40008c20 <_Protected_heap_Allocate_aligned_with_boundary>: Heap_Control *heap, uintptr_t size, uintptr_t alignment, uintptr_t boundary ) {
40008c20:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  void *p;
                                                           

                                                                     
  _RTEMS_Lock_allocator();
                                           
40008c24:	7f ff f7 4c 	call  40006954 <_RTEMS_Lock_allocator>
        <== NOT EXECUTED
40008c28:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
    p = _Heap_Allocate_aligned_with_boundary(
                        
40008c2c:	96 10 00 1b 	mov  %i3, %o3
                                 
40008c30:	94 10 00 1a 	mov  %i2, %o2
                                 
40008c34:	92 10 00 19 	mov  %i1, %o1
                                 
40008c38:	7f ff f7 b2 	call  40006b00 <_Heap_Allocate_aligned_with_boundary>

40008c3c:	90 10 00 18 	mov  %i0, %o0
                                 
      heap,
                                                          
      size,
                                                          
      alignment,
                                                     
      boundary
                                                       
    );
                                                               
  _RTEMS_Unlock_allocator();
                                         
40008c40:	7f ff f7 4a 	call  40006968 <_RTEMS_Unlock_allocator>
      
40008c44:	b0 10 00 08 	mov  %o0, %i0
                                 

                                                                     
  return p;
                                                          
}
                                                                    
40008c48:	81 c7 e0 08 	ret 
                                          
40008c4c:	81 e8 00 00 	restore 
                                      

                                                                     

40008c50 <_Protected_heap_Extend>: bool _Protected_heap_Extend( Heap_Control *the_heap, void *starting_address, uintptr_t size ) {
40008c50:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  uintptr_t amount_extended;
                                         

                                                                     
  _RTEMS_Lock_allocator();
                                           
40008c54:	7f ff f7 40 	call  40006954 <_RTEMS_Lock_allocator>
        <== NOT EXECUTED
40008c58:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
    amount_extended = _Heap_Extend( the_heap, starting_address, size, 0 );

40008c5c:	96 10 20 00 	clr  %o3	! 0 <PROM_START>
                     
40008c60:	92 10 00 19 	mov  %i1, %o1
                                 
40008c64:	94 10 00 1a 	mov  %i2, %o2
                                 
40008c68:	40 00 12 95 	call  4000d6bc <_Heap_Extend>
                 
40008c6c:	90 10 00 18 	mov  %i0, %o0
                                 
  _RTEMS_Unlock_allocator();
                                         
40008c70:	7f ff f7 3e 	call  40006968 <_RTEMS_Unlock_allocator>
      
40008c74:	ba 10 00 08 	mov  %o0, %i5
                                 

                                                                     
  return amount_extended != 0;
                                       
}
                                                                    
40008c78:	80 a0 00 1d 	cmp  %g0, %i5
                                 
40008c7c:	b0 40 20 00 	addx  %g0, 0, %i0
                             
40008c80:	81 c7 e0 08 	ret 
                                          
40008c84:	81 e8 00 00 	restore 
                                      

                                                                     

4000d1e4 <_Protected_heap_Get_free_information>: bool _Protected_heap_Get_free_information( Heap_Control *the_heap, Heap_Information *info ) {
4000d1e4:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  /*
                                                                 
   * TBD: _Heap_Get_free_information does not error check or return status.

   */
                                                                

                                                                     
  _RTEMS_Lock_allocator();
                                           
4000d1e8:	7f ff f2 c9 	call  40009d0c <_RTEMS_Lock_allocator>
        <== NOT EXECUTED
4000d1ec:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
    _Heap_Get_free_information( the_heap, info );
                    
4000d1f0:	90 10 00 18 	mov  %i0, %o0
                                 
4000d1f4:	92 10 00 19 	mov  %i1, %o1
                                 
4000d1f8:	40 00 14 73 	call  400123c4 <_Heap_Get_free_information>
   
4000d1fc:	b0 10 20 01 	mov  1, %i0
                                   
  _RTEMS_Unlock_allocator();
                                         
4000d200:	7f ff f2 c8 	call  40009d20 <_RTEMS_Unlock_allocator>
      
4000d204:	01 00 00 00 	nop 
                                          

                                                                     
  return true;
                                                       
}
                                                                    
4000d208:	81 c7 e0 08 	ret 
                                          
4000d20c:	81 e8 00 00 	restore 
                                      

                                                                     

4000d210 <_Protected_heap_Get_information>: bool _Protected_heap_Get_information( Heap_Control *the_heap, Heap_Information_block *the_info ) {
4000d210:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  if ( !the_heap )
                                                   
    return false;
                                                    

                                                                     
  if ( !the_info )
                                                   
4000d214:	80 a6 20 00 	cmp  %i0, 0
                                   <== NOT EXECUTED
4000d218:	02 80 00 0e 	be  4000d250 <_Protected_heap_Get_information+0x40>
<== NOT EXECUTED
4000d21c:	80 a6 60 00 	cmp  %i1, 0
                                   
4000d220:	22 80 00 0d 	be,a   4000d254 <_Protected_heap_Get_information+0x44>

4000d224:	b0 10 20 00 	clr  %i0
                                      
    return false;
                                                    

                                                                     
  _RTEMS_Lock_allocator();
                                           
4000d228:	7f ff f2 b9 	call  40009d0c <_RTEMS_Lock_allocator>
        
4000d22c:	01 00 00 00 	nop 
                                          
    _Heap_Get_information( the_heap, the_info );
                     
4000d230:	90 10 00 18 	mov  %i0, %o0
                                 
4000d234:	92 10 00 19 	mov  %i1, %o1
                                 
4000d238:	7f ff f4 88 	call  4000a458 <_Heap_Get_information>
        
4000d23c:	b0 10 20 01 	mov  1, %i0
                                   
  _RTEMS_Unlock_allocator();
                                         
4000d240:	7f ff f2 b8 	call  40009d20 <_RTEMS_Unlock_allocator>
      
4000d244:	b0 0e 20 01 	and  %i0, 1, %i0
                              

                                                                     
  return true;
                                                       
}
                                                                    
4000d248:	81 c7 e0 08 	ret 
                                          
4000d24c:	81 e8 00 00 	restore 
                                      
    return false;
                                                    
4000d250:	b0 10 20 00 	clr  %i0
                                      
}
                                                                    
4000d254:	b0 0e 20 01 	and  %i0, 1, %i0
                              
4000d258:	81 c7 e0 08 	ret 
                                          
4000d25c:	81 e8 00 00 	restore 
                                      

                                                                     

4000d260 <_Protected_heap_Walk>: bool _Protected_heap_Walk( Heap_Control *the_heap, int source, bool do_dump ) {
4000d260:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  enabled = _Thread_Dispatch_disable_level == 0;
                     
4000d264:	c2 01 a0 18 	ld  [ %g6 + 0x18 ], %g1
                       <== NOT EXECUTED
   * then it is forbidden to lock a mutex.  But since we are inside
  
   * a critical section, it should be safe to walk it unlocked.
      
   *
                                                                 
   * NOTE: Dispatching is also disabled during initialization.
       
   */
                                                                
  if ( _Thread_Dispatch_is_enabled() ) {
                             
4000d268:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000d26c:	02 80 00 04 	be  4000d27c <_Protected_heap_Walk+0x1c>
      <== NOT EXECUTED
4000d270:	01 00 00 00 	nop 
                                          
    _RTEMS_Lock_allocator();
                                         
      status = _Heap_Walk( the_heap, source, do_dump );
              
    _RTEMS_Unlock_allocator();
                                       
  } else {
                                                           
    status = _Heap_Walk( the_heap, source, do_dump );
                
4000d274:	7f ff f6 78 	call  4000ac54 <_Heap_Walk>
                   
4000d278:	81 e8 00 00 	restore 
                                      
    _RTEMS_Lock_allocator();
                                         
4000d27c:	7f ff f2 a4 	call  40009d0c <_RTEMS_Lock_allocator>
        
4000d280:	01 00 00 00 	nop 
                                          
      status = _Heap_Walk( the_heap, source, do_dump );
              
4000d284:	94 10 00 1a 	mov  %i2, %o2
                                 
4000d288:	92 10 00 19 	mov  %i1, %o1
                                 
4000d28c:	7f ff f6 72 	call  4000ac54 <_Heap_Walk>
                   
4000d290:	90 10 00 18 	mov  %i0, %o0
                                 
    _RTEMS_Unlock_allocator();
                                       
4000d294:	7f ff f2 a3 	call  40009d20 <_RTEMS_Unlock_allocator>
      
4000d298:	b0 10 00 08 	mov  %o0, %i0
                                 
  }
                                                                  
  return status;
                                                     
}
                                                                    
4000d29c:	81 c7 e0 08 	ret 
                                          
4000d2a0:	81 e8 00 00 	restore 
                                      

                                                                     

4000930c <_RBTree_Extract>: #include <rtems/score/rbtreeimpl.h> RB_GENERATE_REMOVE_COLOR( RBTree_Control, RBTree_Node, Node, static ) RB_GENERATE_REMOVE( RBTree_Control, RBTree_Node, Node, static )
4000930c:	c6 02 40 00 	ld  [ %o1 ], %g3
                              <== NOT EXECUTED
40009310:	80 a0 e0 00 	cmp  %g3, 0
                                   
40009314:	02 80 00 d0 	be  40009654 <_RBTree_Extract+0x348>
          <== ALWAYS TAKEN
40009318:	c4 02 60 04 	ld  [ %o1 + 4 ], %g2
                          
4000931c:	80 a0 a0 00 	cmp  %g2, 0
                                   
40009320:	32 80 00 13 	bne,a   4000936c <_RBTree_Extract+0x60>
       
40009324:	c2 00 80 00 	ld  [ %g2 ], %g1
                              
40009328:	c2 02 60 08 	ld  [ %o1 + 8 ], %g1
                          
4000932c:	c8 02 60 0c 	ld  [ %o1 + 0xc ], %g4
                        
40009330:	c2 20 e0 08 	st  %g1, [ %g3 + 8 ]
                          
40009334:	80 a0 60 00 	cmp  %g1, 0
                                   
40009338:	22 80 00 cf 	be,a   40009674 <_RBTree_Extract+0x368>
       
4000933c:	c6 22 00 00 	st  %g3, [ %o0 ]
                              
40009340:	c4 00 40 00 	ld  [ %g1 ], %g2
                              
40009344:	80 a2 40 02 	cmp  %o1, %g2
                                 
40009348:	22 80 00 d3 	be,a   40009694 <_RBTree_Extract+0x388>
       
4000934c:	c6 20 40 00 	st  %g3, [ %g1 ]
                              
40009350:	c6 20 60 04 	st  %g3, [ %g1 + 4 ]
                          
40009354:	80 a1 20 00 	cmp  %g4, 0
                                   
40009358:	02 80 00 55 	be  400094ac <_RBTree_Extract+0x1a0>
          
4000935c:	9a 10 20 01 	mov  1, %o5
                                   
)
                                                                    
{
                                                                    
  _Assert( _RBTree_Find_root( the_node ) == _RBTree_Root( the_rbtree ) );

  RB_REMOVE( RBTree_Control, the_rbtree, the_node );
                 
  _RBTree_Initialize_node( the_node );
                               
}
                                                                    
40009360:	81 c3 e0 08 	retl 
                                         
40009364:	01 00 00 00 	nop 
                                          
RB_GENERATE_REMOVE( RBTree_Control, RBTree_Node, Node, static )
      
40009368:	c2 00 80 00 	ld  [ %g2 ], %g1
                              
4000936c:	80 a0 60 00 	cmp  %g1, 0
                                   
40009370:	32 bf ff fe 	bne,a   40009368 <_RBTree_Extract+0x5c>
       
40009374:	84 10 00 01 	mov  %g1, %g2
                                 
40009378:	c6 00 a0 04 	ld  [ %g2 + 4 ], %g3
                          
4000937c:	c2 00 a0 08 	ld  [ %g2 + 8 ], %g1
                          
40009380:	c8 00 a0 0c 	ld  [ %g2 + 0xc ], %g4
                        
40009384:	80 a0 e0 00 	cmp  %g3, 0
                                   
40009388:	02 80 00 04 	be  40009398 <_RBTree_Extract+0x8c>
           
4000938c:	9a 10 00 01 	mov  %g1, %o5
                                 
40009390:	c2 20 e0 08 	st  %g1, [ %g3 + 8 ]
                          
40009394:	da 00 a0 08 	ld  [ %g2 + 8 ], %o5
                          
40009398:	80 a0 60 00 	cmp  %g1, 0
                                   
4000939c:	22 80 00 07 	be,a   400093b8 <_RBTree_Extract+0xac>
        <== NEVER TAKEN
400093a0:	c6 22 00 00 	st  %g3, [ %o0 ]
                              <== NOT EXECUTED
400093a4:	d8 00 40 00 	ld  [ %g1 ], %o4
                              
400093a8:	80 a0 80 0c 	cmp  %g2, %o4
                                 
400093ac:	22 80 00 03 	be,a   400093b8 <_RBTree_Extract+0xac>
        
400093b0:	c6 20 40 00 	st  %g3, [ %g1 ]
                              
400093b4:	c6 20 60 04 	st  %g3, [ %g1 + 4 ]
                          
400093b8:	80 a2 40 0d 	cmp  %o1, %o5
                                 
400093bc:	22 80 00 02 	be,a   400093c4 <_RBTree_Extract+0xb8>
        
400093c0:	82 10 00 02 	mov  %g2, %g1
                                 
400093c4:	da 02 40 00 	ld  [ %o1 ], %o5
                              
400093c8:	da 20 80 00 	st  %o5, [ %g2 ]
                              
400093cc:	da 02 60 04 	ld  [ %o1 + 4 ], %o5
                          
400093d0:	da 20 a0 04 	st  %o5, [ %g2 + 4 ]
                          
400093d4:	da 02 60 08 	ld  [ %o1 + 8 ], %o5
                          
400093d8:	da 20 a0 08 	st  %o5, [ %g2 + 8 ]
                          
400093dc:	da 02 60 0c 	ld  [ %o1 + 0xc ], %o5
                        
400093e0:	da 20 a0 0c 	st  %o5, [ %g2 + 0xc ]
                        
400093e4:	da 02 60 08 	ld  [ %o1 + 8 ], %o5
                          
400093e8:	80 a3 60 00 	cmp  %o5, 0
                                   
400093ec:	22 80 00 07 	be,a   40009408 <_RBTree_Extract+0xfc>
        
400093f0:	c4 22 00 00 	st  %g2, [ %o0 ]
                              
400093f4:	d8 03 40 00 	ld  [ %o5 ], %o4
                              
400093f8:	80 a2 40 0c 	cmp  %o1, %o4
                                 
400093fc:	22 80 00 03 	be,a   40009408 <_RBTree_Extract+0xfc>
        
40009400:	c4 23 40 00 	st  %g2, [ %o5 ]
                              
40009404:	c4 23 60 04 	st  %g2, [ %o5 + 4 ]
                          
40009408:	da 02 40 00 	ld  [ %o1 ], %o5
                              
4000940c:	c4 23 60 08 	st  %g2, [ %o5 + 8 ]
                          
40009410:	da 02 60 04 	ld  [ %o1 + 4 ], %o5
                          
40009414:	80 a3 60 00 	cmp  %o5, 0
                                   
40009418:	32 80 00 02 	bne,a   40009420 <_RBTree_Extract+0x114>
      
4000941c:	c4 23 60 08 	st  %g2, [ %o5 + 8 ]
                          
40009420:	80 a0 60 00 	cmp  %g1, 0
                                   
40009424:	02 bf ff cc 	be  40009354 <_RBTree_Extract+0x48>
           <== NEVER TAKEN
40009428:	84 10 00 01 	mov  %g1, %g2
                                 
4000942c:	c4 00 a0 08 	ld  [ %g2 + 8 ], %g2
                          
40009430:	80 a0 a0 00 	cmp  %g2, 0
                                   
40009434:	32 bf ff ff 	bne,a   40009430 <_RBTree_Extract+0x124>
      
40009438:	c4 00 a0 08 	ld  [ %g2 + 8 ], %g2
                          
4000943c:	80 a1 20 00 	cmp  %g4, 0
                                   
40009440:	12 bf ff c8 	bne  40009360 <_RBTree_Extract+0x54>
          
40009444:	9a 10 20 01 	mov  1, %o5
                                   
RB_GENERATE_REMOVE_COLOR( RBTree_Control, RBTree_Node, Node, static )

40009448:	10 80 00 1a 	b  400094b0 <_RBTree_Extract+0x1a4>
           
4000944c:	80 a0 e0 00 	cmp  %g3, 0
                                   
40009450:	80 a0 e0 01 	cmp  %g3, 1
                                   
40009454:	22 80 00 54 	be,a   400095a4 <_RBTree_Extract+0x298>
       
40009458:	c8 00 a0 04 	ld  [ %g2 + 4 ], %g4
                          
4000945c:	c6 00 80 00 	ld  [ %g2 ], %g3
                              
40009460:	80 a0 e0 00 	cmp  %g3, 0
                                   
40009464:	22 80 00 07 	be,a   40009480 <_RBTree_Extract+0x174>
       
40009468:	c8 00 a0 04 	ld  [ %g2 + 4 ], %g4
                          
4000946c:	c8 00 e0 0c 	ld  [ %g3 + 0xc ], %g4
                        
40009470:	80 a1 20 00 	cmp  %g4, 0
                                   
40009474:	32 80 00 98 	bne,a   400096d4 <_RBTree_Extract+0x3c8>
      
40009478:	da 00 60 0c 	ld  [ %g1 + 0xc ], %o5
                        
4000947c:	c8 00 a0 04 	ld  [ %g2 + 4 ], %g4
                          
40009480:	80 a1 20 00 	cmp  %g4, 0
                                   
40009484:	22 80 00 07 	be,a   400094a0 <_RBTree_Extract+0x194>
       
40009488:	da 20 a0 0c 	st  %o5, [ %g2 + 0xc ]
                        
4000948c:	d8 01 20 0c 	ld  [ %g4 + 0xc ], %o4
                        
40009490:	80 a3 20 00 	cmp  %o4, 0
                                   
40009494:	12 80 00 89 	bne  400096b8 <_RBTree_Extract+0x3ac>
         
40009498:	80 a0 e0 00 	cmp  %g3, 0
                                   
4000949c:	da 20 a0 0c 	st  %o5, [ %g2 + 0xc ]
                        
400094a0:	86 10 00 01 	mov  %g1, %g3
                                 
400094a4:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
400094a8:	82 10 00 02 	mov  %g2, %g1
                                 
400094ac:	80 a0 e0 00 	cmp  %g3, 0
                                   
400094b0:	22 80 00 07 	be,a   400094cc <_RBTree_Extract+0x1c0>
       
400094b4:	c4 02 00 00 	ld  [ %o0 ], %g2
                              
400094b8:	c4 00 e0 0c 	ld  [ %g3 + 0xc ], %g2
                        
400094bc:	80 a0 a0 00 	cmp  %g2, 0
                                   
400094c0:	12 80 00 37 	bne  4000959c <_RBTree_Extract+0x290>
         
400094c4:	01 00 00 00 	nop 
                                          
400094c8:	c4 02 00 00 	ld  [ %o0 ], %g2
                              
400094cc:	80 a0 c0 02 	cmp  %g3, %g2
                                 
400094d0:	02 80 00 31 	be  40009594 <_RBTree_Extract+0x288>
          
400094d4:	80 a0 e0 00 	cmp  %g3, 0
                                   
400094d8:	c4 00 40 00 	ld  [ %g1 ], %g2
                              
400094dc:	80 a0 80 03 	cmp  %g2, %g3
                                 
400094e0:	32 bf ff dc 	bne,a   40009450 <_RBTree_Extract+0x144>
      
400094e4:	c6 00 a0 0c 	ld  [ %g2 + 0xc ], %g3
                        
400094e8:	c4 00 60 04 	ld  [ %g1 + 4 ], %g2
                          
400094ec:	c8 00 a0 0c 	ld  [ %g2 + 0xc ], %g4
                        
400094f0:	80 a1 20 01 	cmp  %g4, 1
                                   
400094f4:	02 80 00 40 	be  400095f4 <_RBTree_Extract+0x2e8>
          
400094f8:	c6 00 80 00 	ld  [ %g2 ], %g3
                              
400094fc:	80 a0 e0 00 	cmp  %g3, 0
                                   
40009500:	22 80 00 06 	be,a   40009518 <_RBTree_Extract+0x20c>
       
40009504:	c8 00 a0 04 	ld  [ %g2 + 4 ], %g4
                          
40009508:	c8 00 e0 0c 	ld  [ %g3 + 0xc ], %g4
                        
4000950c:	80 a1 20 00 	cmp  %g4, 0
                                   
40009510:	12 80 00 ac 	bne  400097c0 <_RBTree_Extract+0x4b4>
         
40009514:	c8 00 a0 04 	ld  [ %g2 + 4 ], %g4
                          
40009518:	80 a1 20 00 	cmp  %g4, 0
                                   
4000951c:	22 bf ff e1 	be,a   400094a0 <_RBTree_Extract+0x194>
       
40009520:	da 20 a0 0c 	st  %o5, [ %g2 + 0xc ]
                        
40009524:	c6 01 20 0c 	ld  [ %g4 + 0xc ], %g3
                        
40009528:	80 a0 e0 00 	cmp  %g3, 0
                                   
4000952c:	22 bf ff dd 	be,a   400094a0 <_RBTree_Extract+0x194>
       
40009530:	da 20 a0 0c 	st  %o5, [ %g2 + 0xc ]
                        
40009534:	c6 00 60 0c 	ld  [ %g1 + 0xc ], %g3
                        
40009538:	da 00 60 04 	ld  [ %g1 + 4 ], %o5
                          
4000953c:	c6 20 a0 0c 	st  %g3, [ %g2 + 0xc ]
                        
40009540:	c0 20 60 0c 	clr  [ %g1 + 0xc ]
                            
40009544:	c0 21 20 0c 	clr  [ %g4 + 0xc ]
                            
40009548:	c4 03 40 00 	ld  [ %o5 ], %g2
                              
4000954c:	80 a0 a0 00 	cmp  %g2, 0
                                   
40009550:	02 80 00 03 	be  4000955c <_RBTree_Extract+0x250>
          
40009554:	c4 20 60 04 	st  %g2, [ %g1 + 4 ]
                          
40009558:	c2 20 a0 08 	st  %g1, [ %g2 + 8 ]
                          
4000955c:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
40009560:	80 a0 a0 00 	cmp  %g2, 0
                                   
40009564:	02 80 00 c1 	be  40009868 <_RBTree_Extract+0x55c>
          
40009568:	c4 23 60 08 	st  %g2, [ %o5 + 8 ]
                          
4000956c:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
40009570:	c6 00 80 00 	ld  [ %g2 ], %g3
                              
40009574:	80 a0 40 03 	cmp  %g1, %g3
                                 
40009578:	22 80 00 c1 	be,a   4000987c <_RBTree_Extract+0x570>
       
4000957c:	da 20 80 00 	st  %o5, [ %g2 ]
                              
40009580:	da 20 a0 04 	st  %o5, [ %g2 + 4 ]
                          
40009584:	c6 02 00 00 	ld  [ %o0 ], %g3
                              
40009588:	c2 23 40 00 	st  %g1, [ %o5 ]
                              
4000958c:	da 20 60 08 	st  %o5, [ %g1 + 8 ]
                          
40009590:	80 a0 e0 00 	cmp  %g3, 0
                                   
40009594:	02 bf ff 73 	be  40009360 <_RBTree_Extract+0x54>
           
40009598:	01 00 00 00 	nop 
                                          
}
                                                                    
4000959c:	81 c3 e0 08 	retl 
                                         
400095a0:	c0 20 e0 0c 	clr  [ %g3 + 0xc ]
                            
RB_GENERATE_REMOVE_COLOR( RBTree_Control, RBTree_Node, Node, static )

400095a4:	c0 20 a0 0c 	clr  [ %g2 + 0xc ]
                            
400095a8:	80 a1 20 00 	cmp  %g4, 0
                                   
400095ac:	c6 20 60 0c 	st  %g3, [ %g1 + 0xc ]
                        
400095b0:	02 80 00 03 	be  400095bc <_RBTree_Extract+0x2b0>
          <== NEVER TAKEN
400095b4:	c8 20 40 00 	st  %g4, [ %g1 ]
                              
400095b8:	c2 21 20 08 	st  %g1, [ %g4 + 8 ]
                          
400095bc:	c6 00 60 08 	ld  [ %g1 + 8 ], %g3
                          
400095c0:	80 a0 e0 00 	cmp  %g3, 0
                                   
400095c4:	02 80 00 22 	be  4000964c <_RBTree_Extract+0x340>
          
400095c8:	c6 20 a0 08 	st  %g3, [ %g2 + 8 ]
                          
400095cc:	c6 00 60 08 	ld  [ %g1 + 8 ], %g3
                          
400095d0:	d8 00 c0 00 	ld  [ %g3 ], %o4
                              
400095d4:	80 a0 40 0c 	cmp  %g1, %o4
                                 
400095d8:	22 80 00 25 	be,a   4000966c <_RBTree_Extract+0x360>
       
400095dc:	c4 20 c0 00 	st  %g2, [ %g3 ]
                              
400095e0:	c4 20 e0 04 	st  %g2, [ %g3 + 4 ]
                          
400095e4:	c2 20 a0 04 	st  %g1, [ %g2 + 4 ]
                          
400095e8:	c4 20 60 08 	st  %g2, [ %g1 + 8 ]
                          
400095ec:	10 bf ff 9c 	b  4000945c <_RBTree_Extract+0x150>
           
400095f0:	84 10 00 04 	mov  %g4, %g2
                                 
400095f4:	c0 20 a0 0c 	clr  [ %g2 + 0xc ]
                            
400095f8:	80 a0 e0 00 	cmp  %g3, 0
                                   
400095fc:	c8 20 60 0c 	st  %g4, [ %g1 + 0xc ]
                        
40009600:	02 80 00 03 	be  4000960c <_RBTree_Extract+0x300>
          <== NEVER TAKEN
40009604:	c6 20 60 04 	st  %g3, [ %g1 + 4 ]
                          
40009608:	c2 20 e0 08 	st  %g1, [ %g3 + 8 ]
                          
4000960c:	c8 00 60 08 	ld  [ %g1 + 8 ], %g4
                          
40009610:	80 a1 20 00 	cmp  %g4, 0
                                   
40009614:	02 80 00 1d 	be  40009688 <_RBTree_Extract+0x37c>
          
40009618:	c8 20 a0 08 	st  %g4, [ %g2 + 8 ]
                          
4000961c:	c8 00 60 08 	ld  [ %g1 + 8 ], %g4
                          
40009620:	d8 01 00 00 	ld  [ %g4 ], %o4
                              
40009624:	80 a0 40 0c 	cmp  %g1, %o4
                                 
40009628:	22 80 00 22 	be,a   400096b0 <_RBTree_Extract+0x3a4>
       
4000962c:	c4 21 00 00 	st  %g2, [ %g4 ]
                              
40009630:	c4 21 20 04 	st  %g2, [ %g4 + 4 ]
                          
40009634:	c8 00 60 04 	ld  [ %g1 + 4 ], %g4
                          
40009638:	c2 20 80 00 	st  %g1, [ %g2 ]
                              
4000963c:	c6 01 00 00 	ld  [ %g4 ], %g3
                              
40009640:	c4 20 60 08 	st  %g2, [ %g1 + 8 ]
                          
40009644:	10 bf ff ae 	b  400094fc <_RBTree_Extract+0x1f0>
           
40009648:	84 10 00 04 	mov  %g4, %g2
                                 
4000964c:	10 bf ff e6 	b  400095e4 <_RBTree_Extract+0x2d8>
           
40009650:	c4 22 00 00 	st  %g2, [ %o0 ]
                              
RB_GENERATE_REMOVE( RBTree_Control, RBTree_Node, Node, static )
      
40009654:	c2 02 60 08 	ld  [ %o1 + 8 ], %g1
                          
40009658:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000965c:	02 bf ff 36 	be  40009334 <_RBTree_Extract+0x28>
           
40009660:	c8 02 60 0c 	ld  [ %o1 + 0xc ], %g4
                        
40009664:	10 bf ff 33 	b  40009330 <_RBTree_Extract+0x24>
            
40009668:	86 10 00 02 	mov  %g2, %g3
                                 
4000966c:	10 bf ff de 	b  400095e4 <_RBTree_Extract+0x2d8>
           
40009670:	c8 00 40 00 	ld  [ %g1 ], %g4
                              
40009674:	80 a1 20 00 	cmp  %g4, 0
                                   
40009678:	12 bf ff 3a 	bne  40009360 <_RBTree_Extract+0x54>
          <== NEVER TAKEN
4000967c:	9a 10 20 01 	mov  1, %o5
                                   
RB_GENERATE_REMOVE_COLOR( RBTree_Control, RBTree_Node, Node, static )

40009680:	10 bf ff 8c 	b  400094b0 <_RBTree_Extract+0x1a4>
           
40009684:	80 a0 e0 00 	cmp  %g3, 0
                                   
40009688:	c4 22 00 00 	st  %g2, [ %o0 ]
                              
4000968c:	10 bf ff eb 	b  40009638 <_RBTree_Extract+0x32c>
           
40009690:	88 10 00 03 	mov  %g3, %g4
                                 
RB_GENERATE_REMOVE( RBTree_Control, RBTree_Node, Node, static )
      
40009694:	80 a1 20 00 	cmp  %g4, 0
                                   
40009698:	12 bf ff 32 	bne  40009360 <_RBTree_Extract+0x54>
          
4000969c:	9a 10 20 01 	mov  1, %o5
                                   
RB_GENERATE_REMOVE_COLOR( RBTree_Control, RBTree_Node, Node, static )

400096a0:	10 bf ff 84 	b  400094b0 <_RBTree_Extract+0x1a4>
           
400096a4:	80 a0 e0 00 	cmp  %g3, 0
                                   
RB_GENERATE_REMOVE( RBTree_Control, RBTree_Node, Node, static )
      
400096a8:	10 bf ff 58 	b  40009408 <_RBTree_Extract+0xfc>
            <== NOT EXECUTED
400096ac:	c4 23 40 00 	st  %g2, [ %o5 ]
                              <== NOT EXECUTED
RB_GENERATE_REMOVE_COLOR( RBTree_Control, RBTree_Node, Node, static )

400096b0:	10 bf ff e2 	b  40009638 <_RBTree_Extract+0x32c>
           
400096b4:	88 10 00 03 	mov  %g3, %g4
                                 
400096b8:	22 80 00 21 	be,a   4000973c <_RBTree_Extract+0x430>
       
400096bc:	c6 01 00 00 	ld  [ %g4 ], %g3
                              
400096c0:	da 00 e0 0c 	ld  [ %g3 + 0xc ], %o5
                        
400096c4:	80 a3 60 00 	cmp  %o5, 0
                                   
400096c8:	22 80 00 1d 	be,a   4000973c <_RBTree_Extract+0x430>
       <== ALWAYS TAKEN
400096cc:	c6 01 00 00 	ld  [ %g4 ], %g3
                              
400096d0:	da 00 60 0c 	ld  [ %g1 + 0xc ], %o5
                        <== NOT EXECUTED
400096d4:	c8 00 40 00 	ld  [ %g1 ], %g4
                              
400096d8:	da 20 a0 0c 	st  %o5, [ %g2 + 0xc ]
                        
400096dc:	c0 20 60 0c 	clr  [ %g1 + 0xc ]
                            
400096e0:	c0 20 e0 0c 	clr  [ %g3 + 0xc ]
                            
400096e4:	c4 01 20 04 	ld  [ %g4 + 4 ], %g2
                          
400096e8:	80 a0 a0 00 	cmp  %g2, 0
                                   
400096ec:	02 80 00 03 	be  400096f8 <_RBTree_Extract+0x3ec>
          
400096f0:	c4 20 40 00 	st  %g2, [ %g1 ]
                              
400096f4:	c2 20 a0 08 	st  %g1, [ %g2 + 8 ]
                          
400096f8:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
400096fc:	80 a0 a0 00 	cmp  %g2, 0
                                   
40009700:	02 80 00 2b 	be  400097ac <_RBTree_Extract+0x4a0>
          
40009704:	c4 21 20 08 	st  %g2, [ %g4 + 8 ]
                          
40009708:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
4000970c:	c6 00 80 00 	ld  [ %g2 ], %g3
                              
40009710:	80 a0 40 03 	cmp  %g1, %g3
                                 
40009714:	22 80 00 4f 	be,a   40009850 <_RBTree_Extract+0x544>
       
40009718:	c8 20 80 00 	st  %g4, [ %g2 ]
                              
4000971c:	c8 20 a0 04 	st  %g4, [ %g2 + 4 ]
                          
40009720:	c6 02 00 00 	ld  [ %o0 ], %g3
                              
40009724:	c2 21 20 04 	st  %g1, [ %g4 + 4 ]
                          
40009728:	c8 20 60 08 	st  %g4, [ %g1 + 8 ]
                          
4000972c:	80 a0 e0 00 	cmp  %g3, 0
                                   
40009730:	12 bf ff 9b 	bne  4000959c <_RBTree_Extract+0x290>
         <== ALWAYS TAKEN
40009734:	01 00 00 00 	nop 
                                          
40009738:	30 bf ff 0a 	b,a   40009360 <_RBTree_Extract+0x54>
         <== NOT EXECUTED
4000973c:	c0 21 20 0c 	clr  [ %g4 + 0xc ]
                            
40009740:	9a 10 20 01 	mov  1, %o5
                                   
40009744:	c6 20 a0 04 	st  %g3, [ %g2 + 4 ]
                          
40009748:	80 a0 e0 00 	cmp  %g3, 0
                                   
4000974c:	02 80 00 03 	be  40009758 <_RBTree_Extract+0x44c>
          
40009750:	da 20 a0 0c 	st  %o5, [ %g2 + 0xc ]
                        
40009754:	c4 20 e0 08 	st  %g2, [ %g3 + 8 ]
                          
40009758:	c6 00 a0 08 	ld  [ %g2 + 8 ], %g3
                          
4000975c:	80 a0 e0 00 	cmp  %g3, 0
                                   
40009760:	02 80 00 40 	be  40009860 <_RBTree_Extract+0x554>
          <== NEVER TAKEN
40009764:	c6 21 20 08 	st  %g3, [ %g4 + 8 ]
                          
40009768:	c6 00 a0 08 	ld  [ %g2 + 8 ], %g3
                          
4000976c:	da 00 c0 00 	ld  [ %g3 ], %o5
                              
40009770:	80 a0 80 0d 	cmp  %g2, %o5
                                 
40009774:	22 80 00 03 	be,a   40009780 <_RBTree_Extract+0x474>
       <== ALWAYS TAKEN
40009778:	c8 20 c0 00 	st  %g4, [ %g3 ]
                              
4000977c:	c8 20 e0 04 	st  %g4, [ %g3 + 4 ]
                          <== NOT EXECUTED
40009780:	c4 21 00 00 	st  %g2, [ %g4 ]
                              
40009784:	c8 20 a0 08 	st  %g4, [ %g2 + 8 ]
                          
40009788:	c8 00 40 00 	ld  [ %g1 ], %g4
                              
4000978c:	c4 00 60 0c 	ld  [ %g1 + 0xc ], %g2
                        
40009790:	c4 21 20 0c 	st  %g2, [ %g4 + 0xc ]
                        
40009794:	c6 01 00 00 	ld  [ %g4 ], %g3
                              
40009798:	80 a0 e0 00 	cmp  %g3, 0
                                   
4000979c:	02 bf ff d2 	be  400096e4 <_RBTree_Extract+0x3d8>
          <== NEVER TAKEN
400097a0:	c0 20 60 0c 	clr  [ %g1 + 0xc ]
                            
400097a4:	10 bf ff d0 	b  400096e4 <_RBTree_Extract+0x3d8>
           
400097a8:	c0 20 e0 0c 	clr  [ %g3 + 0xc ]
                            
400097ac:	c8 22 00 00 	st  %g4, [ %o0 ]
                              
400097b0:	86 10 00 04 	mov  %g4, %g3
                                 
400097b4:	c2 21 20 04 	st  %g1, [ %g4 + 4 ]
                          
400097b8:	10 bf ff dd 	b  4000972c <_RBTree_Extract+0x420>
           
400097bc:	c8 20 60 08 	st  %g4, [ %g1 + 8 ]
                          
400097c0:	80 a1 20 00 	cmp  %g4, 0
                                   
400097c4:	22 80 00 07 	be,a   400097e0 <_RBTree_Extract+0x4d4>
       
400097c8:	c8 00 e0 04 	ld  [ %g3 + 4 ], %g4
                          
400097cc:	da 01 20 0c 	ld  [ %g4 + 0xc ], %o5
                        
400097d0:	80 a3 60 00 	cmp  %o5, 0
                                   
400097d4:	32 bf ff 59 	bne,a   40009538 <_RBTree_Extract+0x22c>
      
400097d8:	c6 00 60 0c 	ld  [ %g1 + 0xc ], %g3
                        
400097dc:	c8 00 e0 04 	ld  [ %g3 + 4 ], %g4
                          
400097e0:	c0 20 e0 0c 	clr  [ %g3 + 0xc ]
                            
400097e4:	9a 10 20 01 	mov  1, %o5
                                   
400097e8:	c8 20 80 00 	st  %g4, [ %g2 ]
                              
400097ec:	80 a1 20 00 	cmp  %g4, 0
                                   
400097f0:	02 80 00 03 	be  400097fc <_RBTree_Extract+0x4f0>
          
400097f4:	da 20 a0 0c 	st  %o5, [ %g2 + 0xc ]
                        
400097f8:	c4 21 20 08 	st  %g2, [ %g4 + 8 ]
                          
400097fc:	c8 00 a0 08 	ld  [ %g2 + 8 ], %g4
                          
40009800:	80 a1 20 00 	cmp  %g4, 0
                                   
40009804:	02 80 00 22 	be  4000988c <_RBTree_Extract+0x580>
          <== NEVER TAKEN
40009808:	c8 20 e0 08 	st  %g4, [ %g3 + 8 ]
                          
4000980c:	c8 00 a0 08 	ld  [ %g2 + 8 ], %g4
                          
40009810:	da 01 00 00 	ld  [ %g4 ], %o5
                              
40009814:	80 a0 80 0d 	cmp  %g2, %o5
                                 
40009818:	22 80 00 03 	be,a   40009824 <_RBTree_Extract+0x518>
       <== NEVER TAKEN
4000981c:	c6 21 00 00 	st  %g3, [ %g4 ]
                              <== NOT EXECUTED
40009820:	c6 21 20 04 	st  %g3, [ %g4 + 4 ]
                          
40009824:	c4 20 e0 04 	st  %g2, [ %g3 + 4 ]
                          
40009828:	c6 20 a0 08 	st  %g3, [ %g2 + 8 ]
                          
4000982c:	da 00 60 04 	ld  [ %g1 + 4 ], %o5
                          
40009830:	c4 00 60 0c 	ld  [ %g1 + 0xc ], %g2
                        
40009834:	c4 23 60 0c 	st  %g2, [ %o5 + 0xc ]
                        
40009838:	c8 03 60 04 	ld  [ %o5 + 4 ], %g4
                          
4000983c:	80 a1 20 00 	cmp  %g4, 0
                                   
40009840:	02 bf ff 42 	be  40009548 <_RBTree_Extract+0x23c>
          <== NEVER TAKEN
40009844:	c0 20 60 0c 	clr  [ %g1 + 0xc ]
                            
40009848:	10 bf ff 40 	b  40009548 <_RBTree_Extract+0x23c>
           
4000984c:	c0 21 20 0c 	clr  [ %g4 + 0xc ]
                            
40009850:	c6 02 00 00 	ld  [ %o0 ], %g3
                              
40009854:	c2 21 20 04 	st  %g1, [ %g4 + 4 ]
                          
40009858:	10 bf ff b5 	b  4000972c <_RBTree_Extract+0x420>
           
4000985c:	c8 20 60 08 	st  %g4, [ %g1 + 8 ]
                          
40009860:	10 bf ff c8 	b  40009780 <_RBTree_Extract+0x474>
           <== NOT EXECUTED
40009864:	c8 22 00 00 	st  %g4, [ %o0 ]
                              <== NOT EXECUTED
40009868:	da 22 00 00 	st  %o5, [ %o0 ]
                              
4000986c:	86 10 00 0d 	mov  %o5, %g3
                                 
40009870:	c2 23 40 00 	st  %g1, [ %o5 ]
                              
40009874:	10 bf ff 47 	b  40009590 <_RBTree_Extract+0x284>
           
40009878:	da 20 60 08 	st  %o5, [ %g1 + 8 ]
                          
4000987c:	c6 02 00 00 	ld  [ %o0 ], %g3
                              
40009880:	c2 23 40 00 	st  %g1, [ %o5 ]
                              
40009884:	10 bf ff 43 	b  40009590 <_RBTree_Extract+0x284>
           
40009888:	da 20 60 08 	st  %o5, [ %g1 + 8 ]
                          
4000988c:	10 bf ff e6 	b  40009824 <_RBTree_Extract+0x518>
           <== NOT EXECUTED
40009890:	c6 22 00 00 	st  %g3, [ %o0 ]
                              <== NOT EXECUTED

                                                                     

40009894 <_RBTree_Insert_color>: #include "config.h" #endif #include <rtems/score/rbtreeimpl.h> RB_GENERATE_INSERT_COLOR( RBTree_Control, RBTree_Node, Node, static inline )
40009894:	98 10 20 01 	mov  1, %o4
                                   <== NOT EXECUTED
40009898:	c2 02 60 08 	ld  [ %o1 + 8 ], %g1
                          
4000989c:	80 a0 60 00 	cmp  %g1, 0
                                   
400098a0:	22 80 00 2f 	be,a   4000995c <_RBTree_Insert_color+0xc8>
   
400098a4:	c2 02 00 00 	ld  [ %o0 ], %g1
                              
400098a8:	c4 00 60 0c 	ld  [ %g1 + 0xc ], %g2
                        
400098ac:	80 a0 a0 01 	cmp  %g2, 1
                                   
400098b0:	32 80 00 2b 	bne,a   4000995c <_RBTree_Insert_color+0xc8>
  
400098b4:	c2 02 00 00 	ld  [ %o0 ], %g1
                              
400098b8:	c6 00 60 08 	ld  [ %g1 + 8 ], %g3
                          
400098bc:	c8 00 c0 00 	ld  [ %g3 ], %g4
                              
400098c0:	80 a0 40 04 	cmp  %g1, %g4
                                 
400098c4:	02 80 00 28 	be  40009964 <_RBTree_Insert_color+0xd0>
      
400098c8:	84 10 00 03 	mov  %g3, %g2
                                 
400098cc:	80 a1 20 00 	cmp  %g4, 0
                                   
400098d0:	22 80 00 07 	be,a   400098ec <_RBTree_Insert_color+0x58>
   
400098d4:	c8 00 40 00 	ld  [ %g1 ], %g4
                              
400098d8:	da 01 20 0c 	ld  [ %g4 + 0xc ], %o5
                        
400098dc:	80 a3 60 01 	cmp  %o5, 1
                                   
400098e0:	22 80 00 58 	be,a   40009a40 <_RBTree_Insert_color+0x1ac>
  
400098e4:	c0 21 20 0c 	clr  [ %g4 + 0xc ]
                            
400098e8:	c8 00 40 00 	ld  [ %g1 ], %g4
                              
400098ec:	80 a2 40 04 	cmp  %o1, %g4
                                 
400098f0:	22 80 00 3c 	be,a   400099e0 <_RBTree_Insert_color+0x14c>
  
400098f4:	c8 02 60 04 	ld  [ %o1 + 4 ], %g4
                          
400098f8:	c6 00 a0 04 	ld  [ %g2 + 4 ], %g3
                          
400098fc:	c0 20 60 0c 	clr  [ %g1 + 0xc ]
                            
40009900:	c2 00 c0 00 	ld  [ %g3 ], %g1
                              
40009904:	c2 20 a0 04 	st  %g1, [ %g2 + 4 ]
                          
40009908:	80 a0 60 00 	cmp  %g1, 0
                                   
4000990c:	02 80 00 03 	be  40009918 <_RBTree_Insert_color+0x84>
      
40009910:	d8 20 a0 0c 	st  %o4, [ %g2 + 0xc ]
                        
40009914:	c4 20 60 08 	st  %g2, [ %g1 + 8 ]
                          
40009918:	c2 00 a0 08 	ld  [ %g2 + 8 ], %g1
                          
4000991c:	80 a0 60 00 	cmp  %g1, 0
                                   
40009920:	02 80 00 44 	be  40009a30 <_RBTree_Insert_color+0x19c>
     
40009924:	c2 20 e0 08 	st  %g1, [ %g3 + 8 ]
                          
40009928:	c2 00 a0 08 	ld  [ %g2 + 8 ], %g1
                          
4000992c:	c8 00 40 00 	ld  [ %g1 ], %g4
                              
40009930:	80 a0 80 04 	cmp  %g2, %g4
                                 
40009934:	22 80 00 47 	be,a   40009a50 <_RBTree_Insert_color+0x1bc>
  
40009938:	c6 20 40 00 	st  %g3, [ %g1 ]
                              
4000993c:	c6 20 60 04 	st  %g3, [ %g1 + 4 ]
                          
40009940:	c4 20 c0 00 	st  %g2, [ %g3 ]
                              
40009944:	c6 20 a0 08 	st  %g3, [ %g2 + 8 ]
                          
40009948:	c2 02 60 08 	ld  [ %o1 + 8 ], %g1
                          
4000994c:	80 a0 60 00 	cmp  %g1, 0
                                   
40009950:	32 bf ff d7 	bne,a   400098ac <_RBTree_Insert_color+0x18>
  <== ALWAYS TAKEN
40009954:	c4 00 60 0c 	ld  [ %g1 + 0xc ], %g2
                        
40009958:	c2 02 00 00 	ld  [ %o0 ], %g1
                              <== NOT EXECUTED
  RBTree_Control *the_rbtree,
                                        
  RBTree_Node    *the_node
                                           
)
                                                                    
{
                                                                    
  RBTree_Control_RB_INSERT_COLOR( the_rbtree, the_node );
            
}
                                                                    
4000995c:	81 c3 e0 08 	retl 
                                         
40009960:	c0 20 60 0c 	clr  [ %g1 + 0xc ]
                            
RB_GENERATE_INSERT_COLOR( RBTree_Control, RBTree_Node, Node, static inline )

40009964:	c8 00 e0 04 	ld  [ %g3 + 4 ], %g4
                          
40009968:	80 a1 20 00 	cmp  %g4, 0
                                   
4000996c:	22 80 00 07 	be,a   40009988 <_RBTree_Insert_color+0xf4>
   
40009970:	da 00 60 04 	ld  [ %g1 + 4 ], %o5
                          
40009974:	da 01 20 0c 	ld  [ %g4 + 0xc ], %o5
                        
40009978:	80 a3 60 01 	cmp  %o5, 1
                                   
4000997c:	22 80 00 31 	be,a   40009a40 <_RBTree_Insert_color+0x1ac>
  
40009980:	c0 21 20 0c 	clr  [ %g4 + 0xc ]
                            
40009984:	da 00 60 04 	ld  [ %g1 + 4 ], %o5
                          
40009988:	80 a3 40 09 	cmp  %o5, %o1
                                 
4000998c:	02 80 00 3a 	be  40009a74 <_RBTree_Insert_color+0x1e0>
     
40009990:	88 10 00 01 	mov  %g1, %g4
                                 
40009994:	c0 20 60 0c 	clr  [ %g1 + 0xc ]
                            
40009998:	80 a3 60 00 	cmp  %o5, 0
                                   
4000999c:	d8 20 a0 0c 	st  %o4, [ %g2 + 0xc ]
                        
400099a0:	02 80 00 03 	be  400099ac <_RBTree_Insert_color+0x118>
     
400099a4:	da 20 80 00 	st  %o5, [ %g2 ]
                              
400099a8:	c4 23 60 08 	st  %g2, [ %o5 + 8 ]
                          
400099ac:	c2 00 a0 08 	ld  [ %g2 + 8 ], %g1
                          
400099b0:	80 a0 60 00 	cmp  %g1, 0
                                   
400099b4:	02 80 00 2c 	be  40009a64 <_RBTree_Insert_color+0x1d0>
     
400099b8:	c2 21 20 08 	st  %g1, [ %g4 + 8 ]
                          
400099bc:	c2 00 a0 08 	ld  [ %g2 + 8 ], %g1
                          
400099c0:	c6 00 40 00 	ld  [ %g1 ], %g3
                              
400099c4:	80 a0 80 03 	cmp  %g2, %g3
                                 
400099c8:	22 80 00 4a 	be,a   40009af0 <_RBTree_Insert_color+0x25c>
  
400099cc:	c8 20 40 00 	st  %g4, [ %g1 ]
                              
400099d0:	c8 20 60 04 	st  %g4, [ %g1 + 4 ]
                          
400099d4:	c4 21 20 04 	st  %g2, [ %g4 + 4 ]
                          
400099d8:	10 bf ff b0 	b  40009898 <_RBTree_Insert_color+0x4>
        
400099dc:	c8 20 a0 08 	st  %g4, [ %g2 + 8 ]
                          
400099e0:	80 a1 20 00 	cmp  %g4, 0
                                   
400099e4:	02 80 00 3b 	be  40009ad0 <_RBTree_Insert_color+0x23c>
     
400099e8:	c8 20 40 00 	st  %g4, [ %g1 ]
                              
400099ec:	c2 21 20 08 	st  %g1, [ %g4 + 8 ]
                          
400099f0:	c6 00 60 08 	ld  [ %g1 + 8 ], %g3
                          
400099f4:	80 a0 e0 00 	cmp  %g3, 0
                                   
400099f8:	02 80 00 19 	be  40009a5c <_RBTree_Insert_color+0x1c8>
     <== NEVER TAKEN
400099fc:	c6 22 60 08 	st  %g3, [ %o1 + 8 ]
                          
40009a00:	c6 00 60 08 	ld  [ %g1 + 8 ], %g3
                          
40009a04:	c8 00 c0 00 	ld  [ %g3 ], %g4
                              
40009a08:	80 a0 40 04 	cmp  %g1, %g4
                                 
40009a0c:	22 80 00 03 	be,a   40009a18 <_RBTree_Insert_color+0x184>
  <== NEVER TAKEN
40009a10:	d2 20 c0 00 	st  %o1, [ %g3 ]
                              <== NOT EXECUTED
40009a14:	d2 20 e0 04 	st  %o1, [ %g3 + 4 ]
                          
40009a18:	86 10 00 09 	mov  %o1, %g3
                                 
40009a1c:	c2 22 60 04 	st  %g1, [ %o1 + 4 ]
                          
40009a20:	d2 20 60 08 	st  %o1, [ %g1 + 8 ]
                          
40009a24:	92 10 00 01 	mov  %g1, %o1
                                 
40009a28:	10 bf ff b4 	b  400098f8 <_RBTree_Insert_color+0x64>
       
40009a2c:	82 10 00 03 	mov  %g3, %g1
                                 
40009a30:	c6 22 00 00 	st  %g3, [ %o0 ]
                              
40009a34:	c4 20 c0 00 	st  %g2, [ %g3 ]
                              
40009a38:	10 bf ff c4 	b  40009948 <_RBTree_Insert_color+0xb4>
       
40009a3c:	c6 20 a0 08 	st  %g3, [ %g2 + 8 ]
                          
40009a40:	92 10 00 03 	mov  %g3, %o1
                                 
40009a44:	c0 20 60 0c 	clr  [ %g1 + 0xc ]
                            
40009a48:	10 bf ff 94 	b  40009898 <_RBTree_Insert_color+0x4>
        
40009a4c:	da 20 e0 0c 	st  %o5, [ %g3 + 0xc ]
                        
40009a50:	c4 20 c0 00 	st  %g2, [ %g3 ]
                              
40009a54:	10 bf ff bd 	b  40009948 <_RBTree_Insert_color+0xb4>
       
40009a58:	c6 20 a0 08 	st  %g3, [ %g2 + 8 ]
                          
40009a5c:	10 bf ff ef 	b  40009a18 <_RBTree_Insert_color+0x184>
      <== NOT EXECUTED
40009a60:	d2 22 00 00 	st  %o1, [ %o0 ]
                              <== NOT EXECUTED
40009a64:	c8 22 00 00 	st  %g4, [ %o0 ]
                              
40009a68:	c4 21 20 04 	st  %g2, [ %g4 + 4 ]
                          
40009a6c:	10 bf ff 8b 	b  40009898 <_RBTree_Insert_color+0x4>
        
40009a70:	c8 20 a0 08 	st  %g4, [ %g2 + 8 ]
                          
40009a74:	c8 02 40 00 	ld  [ %o1 ], %g4
                              
40009a78:	80 a1 20 00 	cmp  %g4, 0
                                   
40009a7c:	02 80 00 04 	be  40009a8c <_RBTree_Insert_color+0x1f8>
     
40009a80:	c8 20 60 04 	st  %g4, [ %g1 + 4 ]
                          
40009a84:	c2 21 20 08 	st  %g1, [ %g4 + 8 ]
                          
40009a88:	c6 00 60 08 	ld  [ %g1 + 8 ], %g3
                          
40009a8c:	80 a0 e0 00 	cmp  %g3, 0
                                   
40009a90:	02 80 00 1b 	be  40009afc <_RBTree_Insert_color+0x268>
     <== NEVER TAKEN
40009a94:	c6 22 60 08 	st  %g3, [ %o1 + 8 ]
                          
40009a98:	c6 00 60 08 	ld  [ %g1 + 8 ], %g3
                          
40009a9c:	c8 00 c0 00 	ld  [ %g3 ], %g4
                              
40009aa0:	80 a0 40 04 	cmp  %g1, %g4
                                 
40009aa4:	22 80 00 03 	be,a   40009ab0 <_RBTree_Insert_color+0x21c>
  <== ALWAYS TAKEN
40009aa8:	d2 20 c0 00 	st  %o1, [ %g3 ]
                              
40009aac:	d2 20 e0 04 	st  %o1, [ %g3 + 4 ]
                          <== NOT EXECUTED
40009ab0:	86 10 00 09 	mov  %o1, %g3
                                 
40009ab4:	c2 22 40 00 	st  %g1, [ %o1 ]
                              
40009ab8:	c8 00 80 00 	ld  [ %g2 ], %g4
                              
40009abc:	da 01 20 04 	ld  [ %g4 + 4 ], %o5
                          
40009ac0:	d2 20 60 08 	st  %o1, [ %g1 + 8 ]
                          
40009ac4:	92 10 00 01 	mov  %g1, %o1
                                 
40009ac8:	10 bf ff b3 	b  40009994 <_RBTree_Insert_color+0x100>
      
40009acc:	82 10 00 03 	mov  %g3, %g1
                                 
40009ad0:	c6 22 60 08 	st  %g3, [ %o1 + 8 ]
                          
40009ad4:	c6 00 60 08 	ld  [ %g1 + 8 ], %g3
                          
40009ad8:	c8 00 c0 00 	ld  [ %g3 ], %g4
                              
40009adc:	80 a0 40 04 	cmp  %g1, %g4
                                 
40009ae0:	32 bf ff ce 	bne,a   40009a18 <_RBTree_Insert_color+0x184>
 <== ALWAYS TAKEN
40009ae4:	d2 20 e0 04 	st  %o1, [ %g3 + 4 ]
                          
40009ae8:	10 bf ff cc 	b  40009a18 <_RBTree_Insert_color+0x184>
      <== NOT EXECUTED
40009aec:	d2 20 c0 00 	st  %o1, [ %g3 ]
                              <== NOT EXECUTED
40009af0:	c4 21 20 04 	st  %g2, [ %g4 + 4 ]
                          
40009af4:	10 bf ff 69 	b  40009898 <_RBTree_Insert_color+0x4>
        
40009af8:	c8 20 a0 08 	st  %g4, [ %g2 + 8 ]
                          
40009afc:	10 bf ff ed 	b  40009ab0 <_RBTree_Insert_color+0x21c>
      <== NOT EXECUTED
40009b00:	d2 22 00 00 	st  %o1, [ %o0 ]
                              <== NOT EXECUTED

                                                                     

40009de0 <_RBTree_Iterate>: void _RBTree_Iterate( const RBTree_Control *rbtree, RBTree_Visitor visitor, void *visitor_arg ) {
40009de0:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  const RBTree_Node *current = _RBTree_Minimum( rbtree );
            
40009de4:	40 00 00 12 	call  40009e2c <_RBTree_Minimum>
              <== NOT EXECUTED
40009de8:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
40009dec:	10 80 00 0b 	b  40009e18 <_RBTree_Iterate+0x38>
            
40009df0:	ba 10 00 08 	mov  %o0, %i5
                                 
  bool               stop = false;
                                   

                                                                     
  while ( !stop && current != NULL ) {
                               
    stop = ( *visitor )( current, visitor_arg );
                     
40009df4:	9f c6 40 00 	call  %i1
                                     
40009df8:	90 10 00 1d 	mov  %i5, %o0
                                 
40009dfc:	b8 10 00 08 	mov  %o0, %i4
                                 

                                                                     
    current = _RBTree_Successor( current );
                          
40009e00:	40 00 00 18 	call  40009e60 <_RBTree_Successor>
            
40009e04:	90 10 00 1d 	mov  %i5, %o0
                                 
  while ( !stop && current != NULL ) {
                               
40009e08:	b8 1f 20 01 	xor  %i4, 1, %i4
                              
40009e0c:	80 8f 20 ff 	btst  0xff, %i4
                               
40009e10:	02 80 00 05 	be  40009e24 <_RBTree_Iterate+0x44>
           <== NEVER TAKEN
40009e14:	ba 10 00 08 	mov  %o0, %i5
                                 
40009e18:	80 a7 60 00 	cmp  %i5, 0
                                   
40009e1c:	12 bf ff f6 	bne  40009df4 <_RBTree_Iterate+0x14>
          
40009e20:	92 10 00 1a 	mov  %i2, %o1
                                 
  }
                                                                  
}
                                                                    
40009e24:	81 c7 e0 08 	ret 
                                          
40009e28:	81 e8 00 00 	restore 
                                      

                                                                     

40017838 <_RBTree_Maximum>: RB_GENERATE_MINMAX( RBTree_Control, RBTree_Node, Node, static )
40017838:	d0 02 00 00 	ld  [ %o0 ], %o0
                              <== NOT EXECUTED
4001783c:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
40017840:	32 80 00 04 	bne,a   40017850 <_RBTree_Maximum+0x18>
       <== NOT EXECUTED
40017844:	c2 02 20 04 	ld  [ %o0 + 4 ], %g1
                          
40017848:	30 80 00 07 	b,a   40017864 <_RBTree_Maximum+0x2c>
         
4001784c:	c2 02 20 04 	ld  [ %o0 + 4 ], %g1
                          
40017850:	80 a0 60 00 	cmp  %g1, 0
                                   
40017854:	32 bf ff fe 	bne,a   4001784c <_RBTree_Maximum+0x14>
       
40017858:	90 10 00 01 	mov  %g1, %o0
                                 

                                                                     
RBTree_Node *_RBTree_Maximum( const RBTree_Control *tree )
           
{
                                                                    
  return RB_MAX( RBTree_Control, RTEMS_DECONST( RBTree_Control *, tree ) );

}
                                                                    
4001785c:	81 c3 e0 08 	retl 
                                         
40017860:	01 00 00 00 	nop 
                                          
40017864:	81 c3 e0 08 	retl 
                                         
40017868:	01 00 00 00 	nop 
                                          

                                                                     

4000e1b8 <_RBTree_Minimum>: #endif #include <rtems/score/rbtreeimpl.h> #include <rtems/score/basedefs.h> RB_GENERATE_MINMAX( RBTree_Control, RBTree_Node, Node, static )
4000e1b8:	d0 02 00 00 	ld  [ %o0 ], %o0
                              <== NOT EXECUTED
4000e1bc:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
4000e1c0:	32 80 00 04 	bne,a   4000e1d0 <_RBTree_Minimum+0x18>
       <== NOT EXECUTED
4000e1c4:	c2 02 00 00 	ld  [ %o0 ], %g1
                              
4000e1c8:	30 80 00 07 	b,a   4000e1e4 <_RBTree_Minimum+0x2c>
         
4000e1cc:	c2 02 00 00 	ld  [ %o0 ], %g1
                              
4000e1d0:	80 a0 60 00 	cmp  %g1, 0
                                   
4000e1d4:	32 bf ff fe 	bne,a   4000e1cc <_RBTree_Minimum+0x14>
       
4000e1d8:	90 10 00 01 	mov  %g1, %o0
                                 
RB_GENERATE_PREV( RBTree_Control, RBTree_Node, Node, static )
        

                                                                     
RBTree_Node *_RBTree_Minimum( const RBTree_Control *tree )
           
{
                                                                    
  return RB_MIN( RBTree_Control, RTEMS_DECONST( RBTree_Control *, tree ) );

}
                                                                    
4000e1dc:	81 c3 e0 08 	retl 
                                         
4000e1e0:	01 00 00 00 	nop 
                                          
4000e1e4:	81 c3 e0 08 	retl 
                                         
4000e1e8:	01 00 00 00 	nop 
                                          

                                                                     

400179f0 <_RBTree_Postorder_first>: return RB_ROOT( the_rbtree );
400179f0:	c2 02 00 00 	ld  [ %o0 ], %g1
                              <== NOT EXECUTED
)
                                                                    
{
                                                                    
  const RBTree_Node *the_node;
                                       

                                                                     
  the_node = _RBTree_Root( the_rbtree );
                             
  if ( the_node == NULL ) {
                                          
400179f4:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
400179f8:	02 80 00 0d 	be  40017a2c <_RBTree_Postorder_first+0x3c>
   <== NOT EXECUTED
400179fc:	01 00 00 00 	nop 
                                          
    if ( _RBTree_Left( the_node ) != NULL ) {
                        
40017a00:	90 10 00 01 	mov  %g1, %o0
                                 
40017a04:	c2 00 40 00 	ld  [ %g1 ], %g1
                              
40017a08:	80 a0 60 00 	cmp  %g1, 0
                                   
40017a0c:	32 bf ff fe 	bne,a   40017a04 <_RBTree_Postorder_first+0x14>

40017a10:	90 10 00 01 	mov  %g1, %o0
                                 
40017a14:	c2 02 20 04 	ld  [ %o0 + 4 ], %g1
                          
    } else if ( _RBTree_Right( the_node ) != NULL ) {
                
40017a18:	80 a0 60 00 	cmp  %g1, 0
                                   
40017a1c:	32 bf ff fa 	bne,a   40017a04 <_RBTree_Postorder_first+0x14>

40017a20:	90 10 00 01 	mov  %g1, %o0
                                 
    return NULL;
                                                     
  }
                                                                  

                                                                     
  return _RBTree_Postorder_dive_left( the_node, offset );
            
40017a24:	81 c3 e0 08 	retl 
                                         
40017a28:	90 22 00 09 	sub  %o0, %o1, %o0
                            
}
                                                                    
40017a2c:	81 c3 e0 08 	retl 
                                         
40017a30:	90 10 20 00 	clr  %o0
                                      

                                                                     

4001798c <_RBTree_Postorder_next>: void *_RBTree_Postorder_next( const RBTree_Node *the_node, size_t offset ) {
4001798c:	c6 02 20 08 	ld  [ %o0 + 8 ], %g3
                          <== NOT EXECUTED
  const RBTree_Node *parent;
                                         

                                                                     
  parent = _RBTree_Parent( the_node );
                               
  if ( parent == NULL ) {
                                            
40017990:	80 a0 e0 00 	cmp  %g3, 0
                                   <== NOT EXECUTED
40017994:	02 80 00 15 	be  400179e8 <_RBTree_Postorder_next+0x5c>
    <== NOT EXECUTED
40017998:	01 00 00 00 	nop 
                                          
    return NULL;
                                                     
  }
                                                                  

                                                                     
  if (
                                                               
4001799c:	c2 00 c0 00 	ld  [ %g3 ], %g1
                              
400179a0:	80 a2 00 01 	cmp  %o0, %g1
                                 
400179a4:	22 80 00 04 	be,a   400179b4 <_RBTree_Postorder_next+0x28>
 
400179a8:	c2 00 e0 04 	ld  [ %g3 + 4 ], %g1
                          
      && _RBTree_Right( parent ) != NULL
                             
  ) {
                                                                
    return _RBTree_Postorder_dive_left( _RBTree_Right( parent ), offset );

  }
                                                                  

                                                                     
  return (void *) ( (uintptr_t) parent - offset );
                   
400179ac:	81 c3 e0 08 	retl 
                                         
400179b0:	90 20 c0 09 	sub  %g3, %o1, %o0
                            
      && _RBTree_Right( parent ) != NULL
                             
400179b4:	80 a0 60 00 	cmp  %g1, 0
                                   
400179b8:	02 bf ff fd 	be  400179ac <_RBTree_Postorder_next+0x20>
    
400179bc:	84 10 00 01 	mov  %g1, %g2
                                 
400179c0:	c2 00 40 00 	ld  [ %g1 ], %g1
                              
    if ( _RBTree_Left( the_node ) != NULL ) {
                        
400179c4:	80 a0 60 00 	cmp  %g1, 0
                                   
400179c8:	32 bf ff fe 	bne,a   400179c0 <_RBTree_Postorder_next+0x34>

400179cc:	84 10 00 01 	mov  %g1, %g2
                                 
400179d0:	c2 00 a0 04 	ld  [ %g2 + 4 ], %g1
                          
    } else if ( _RBTree_Right( the_node ) != NULL ) {
                
400179d4:	80 a0 60 00 	cmp  %g1, 0
                                   
400179d8:	32 bf ff fa 	bne,a   400179c0 <_RBTree_Postorder_next+0x34>

400179dc:	84 10 00 01 	mov  %g1, %g2
                                 
    return _RBTree_Postorder_dive_left( _RBTree_Right( parent ), offset );

400179e0:	81 c3 e0 08 	retl 
                                         
400179e4:	90 20 80 09 	sub  %g2, %o1, %o0
                            
}
                                                                    
400179e8:	81 c3 e0 08 	retl 
                                         
400179ec:	90 10 20 00 	clr  %o0
                                      

                                                                     

400178fc <_RBTree_Predecessor>: RB_GENERATE_PREV( RBTree_Control, RBTree_Node, Node, static )
400178fc:	c2 02 00 00 	ld  [ %o0 ], %g1
                              <== NOT EXECUTED
40017900:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
40017904:	32 80 00 05 	bne,a   40017918 <_RBTree_Predecessor+0x1c>
   <== NOT EXECUTED
40017908:	c4 00 60 04 	ld  [ %g1 + 4 ], %g2
                          
4001790c:	10 80 00 08 	b  4001792c <_RBTree_Predecessor+0x30>
        
40017910:	c2 02 20 08 	ld  [ %o0 + 8 ], %g1
                          
40017914:	c4 00 60 04 	ld  [ %g1 + 4 ], %g2
                          
40017918:	80 a0 a0 00 	cmp  %g2, 0
                                   
4001791c:	32 bf ff fe 	bne,a   40017914 <_RBTree_Predecessor+0x18>
   
40017920:	82 10 00 02 	mov  %g2, %g1
                                 

                                                                     
RBTree_Node *_RBTree_Predecessor( const RBTree_Node *node )
          
{
                                                                    
  return RB_PREV( RBTree_Control, NULL, RTEMS_DECONST( RBTree_Node *, node ) );

}
                                                                    
40017924:	81 c3 e0 08 	retl 
                                         
40017928:	90 10 00 01 	mov  %g1, %o0
                                 
RB_GENERATE_PREV( RBTree_Control, RBTree_Node, Node, static )
        
4001792c:	80 a0 60 00 	cmp  %g1, 0
                                   
40017930:	02 bf ff fd 	be  40017924 <_RBTree_Predecessor+0x28>
       
40017934:	01 00 00 00 	nop 
                                          
40017938:	c4 00 60 04 	ld  [ %g1 + 4 ], %g2
                          
4001793c:	80 a2 00 02 	cmp  %o0, %g2
                                 
40017940:	02 bf ff f9 	be  40017924 <_RBTree_Predecessor+0x28>
       
40017944:	01 00 00 00 	nop 
                                          
40017948:	c4 00 40 00 	ld  [ %g1 ], %g2
                              
4001794c:	80 a0 80 08 	cmp  %g2, %o0
                                 
40017950:	12 bf ff f5 	bne  40017924 <_RBTree_Predecessor+0x28>
      <== NEVER TAKEN
40017954:	01 00 00 00 	nop 
                                          
40017958:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
4001795c:	80 a0 a0 00 	cmp  %g2, 0
                                   
40017960:	02 80 00 09 	be  40017984 <_RBTree_Predecessor+0x88>
       
40017964:	90 10 00 01 	mov  %g1, %o0
                                 
40017968:	82 10 00 02 	mov  %g2, %g1
                                 
4001796c:	c4 00 40 00 	ld  [ %g1 ], %g2
                              
40017970:	80 a0 80 08 	cmp  %g2, %o0
                                 
40017974:	22 bf ff fa 	be,a   4001795c <_RBTree_Predecessor+0x60>
    
40017978:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
}
                                                                    
4001797c:	81 c3 e0 08 	retl 
                                         
40017980:	90 10 00 01 	mov  %g1, %o0
                                 
  return RB_PREV( RBTree_Control, NULL, RTEMS_DECONST( RBTree_Node *, node ) );

40017984:	10 bf ff e8 	b  40017924 <_RBTree_Predecessor+0x28>
        
40017988:	82 10 20 00 	clr  %g1
                                      

                                                                     

40017a34 <_RBTree_Replace_node>: void _RBTree_Replace_node( RBTree_Control *the_rbtree, RBTree_Node *victim, RBTree_Node *replacement ) {
40017a34:	c2 02 60 08 	ld  [ %o1 + 8 ], %g1
                          <== NOT EXECUTED
  RBTree_Node  *parent = _RBTree_Parent( victim );
                   
  RBTree_Node **link;
                                                
  RBTree_Node  *child;
                                               

                                                                     
  if (parent != NULL) {
                                              
40017a38:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
40017a3c:	22 80 00 07 	be,a   40017a58 <_RBTree_Replace_node+0x24>
   <== NOT EXECUTED
40017a40:	d4 22 00 00 	st  %o2, [ %o0 ]
                              
    if ( victim == _RBTree_Left( parent ) ) {
                        
40017a44:	c4 00 40 00 	ld  [ %g1 ], %g2
                              
40017a48:	80 a2 40 02 	cmp  %o1, %g2
                                 
40017a4c:	02 80 00 14 	be  40017a9c <_RBTree_Replace_node+0x68>
      
40017a50:	90 00 60 04 	add  %g1, 4, %o0
                              
      link = _RBTree_Right_reference( parent );
                      
    }
                                                                
  } else {
                                                           
    link = _RBTree_Root_reference( the_rbtree );
                     
  }
                                                                  
  *link = replacement;
                                               
40017a54:	d4 22 00 00 	st  %o2, [ %o0 ]
                              
40017a58:	c2 02 40 00 	ld  [ %o1 ], %g1
                              

                                                                     
  child = _RBTree_Left( victim );
                                    
  if ( child != NULL ) {
                                             
40017a5c:	80 a0 60 00 	cmp  %g1, 0
                                   
40017a60:	32 80 00 02 	bne,a   40017a68 <_RBTree_Replace_node+0x34>
  
40017a64:	d4 20 60 08 	st  %o2, [ %g1 + 8 ]
                          
40017a68:	c2 02 60 04 	ld  [ %o1 + 4 ], %g1
                          
    RB_PARENT( child, Node ) = replacement;
                          
  }
                                                                  

                                                                     
  child = _RBTree_Right( victim );
                                   
  if ( child != NULL ) {
                                             
40017a6c:	80 a0 60 00 	cmp  %g1, 0
                                   
40017a70:	32 80 00 02 	bne,a   40017a78 <_RBTree_Replace_node+0x44>
  
40017a74:	d4 20 60 08 	st  %o2, [ %g1 + 8 ]
                          
    RB_PARENT( child, Node ) = replacement;
                          
  }
                                                                  

                                                                     
  *replacement = *victim;
                                            
40017a78:	c2 02 40 00 	ld  [ %o1 ], %g1
                              
40017a7c:	c2 22 80 00 	st  %g1, [ %o2 ]
                              
40017a80:	c2 02 60 04 	ld  [ %o1 + 4 ], %g1
                          
40017a84:	c2 22 a0 04 	st  %g1, [ %o2 + 4 ]
                          
40017a88:	c2 02 60 08 	ld  [ %o1 + 8 ], %g1
                          
40017a8c:	c2 22 a0 08 	st  %g1, [ %o2 + 8 ]
                          
40017a90:	c2 02 60 0c 	ld  [ %o1 + 0xc ], %g1
                        
}
                                                                    
40017a94:	81 c3 e0 08 	retl 
                                         
40017a98:	c2 22 a0 0c 	st  %g1, [ %o2 + 0xc ]
                        
40017a9c:	10 bf ff ee 	b  40017a54 <_RBTree_Replace_node+0x20>
       
40017aa0:	90 10 00 01 	mov  %g1, %o0
                                 

                                                                     

4001786c <_RBTree_Successor>: RB_GENERATE_NEXT( RBTree_Control, RBTree_Node, Node, static )
4001786c:	c2 02 20 04 	ld  [ %o0 + 4 ], %g1
                          <== NOT EXECUTED
40017870:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
40017874:	32 80 00 05 	bne,a   40017888 <_RBTree_Successor+0x1c>
     <== NOT EXECUTED
40017878:	c4 00 40 00 	ld  [ %g1 ], %g2
                              
4001787c:	10 80 00 08 	b  4001789c <_RBTree_Successor+0x30>
          
40017880:	c2 02 20 08 	ld  [ %o0 + 8 ], %g1
                          
40017884:	c4 00 40 00 	ld  [ %g1 ], %g2
                              
40017888:	80 a0 a0 00 	cmp  %g2, 0
                                   
4001788c:	32 bf ff fe 	bne,a   40017884 <_RBTree_Successor+0x18>
     
40017890:	82 10 00 02 	mov  %g2, %g1
                                 

                                                                     
RBTree_Node *_RBTree_Successor( const RBTree_Node *node )
            
{
                                                                    
  return RB_NEXT( RBTree_Control, NULL, RTEMS_DECONST( RBTree_Node *, node ) );

}
                                                                    
40017894:	81 c3 e0 08 	retl 
                                         
40017898:	90 10 00 01 	mov  %g1, %o0
                                 
RB_GENERATE_NEXT( RBTree_Control, RBTree_Node, Node, static )
        
4001789c:	80 a0 60 00 	cmp  %g1, 0
                                   
400178a0:	02 bf ff fd 	be  40017894 <_RBTree_Successor+0x28>
         
400178a4:	01 00 00 00 	nop 
                                          
400178a8:	c4 00 40 00 	ld  [ %g1 ], %g2
                              
400178ac:	80 a2 00 02 	cmp  %o0, %g2
                                 
400178b0:	02 bf ff f9 	be  40017894 <_RBTree_Successor+0x28>
         
400178b4:	01 00 00 00 	nop 
                                          
400178b8:	c4 00 60 04 	ld  [ %g1 + 4 ], %g2
                          
400178bc:	80 a0 80 08 	cmp  %g2, %o0
                                 
400178c0:	12 bf ff f5 	bne  40017894 <_RBTree_Successor+0x28>
        <== NEVER TAKEN
400178c4:	01 00 00 00 	nop 
                                          
400178c8:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
400178cc:	80 a0 a0 00 	cmp  %g2, 0
                                   
400178d0:	02 80 00 09 	be  400178f4 <_RBTree_Successor+0x88>
         
400178d4:	90 10 00 01 	mov  %g1, %o0
                                 
400178d8:	82 10 00 02 	mov  %g2, %g1
                                 
400178dc:	c4 00 60 04 	ld  [ %g1 + 4 ], %g2
                          
400178e0:	80 a0 80 08 	cmp  %g2, %o0
                                 
400178e4:	22 bf ff fa 	be,a   400178cc <_RBTree_Successor+0x60>
      
400178e8:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
}
                                                                    
400178ec:	81 c3 e0 08 	retl 
                                         
400178f0:	90 10 00 01 	mov  %g1, %o0
                                 
  return RB_NEXT( RBTree_Control, NULL, RTEMS_DECONST( RBTree_Node *, node ) );

400178f4:	10 bf ff e8 	b  40017894 <_RBTree_Successor+0x28>
          
400178f8:	82 10 20 00 	clr  %g1
                                      

                                                                     

40008090 <_RTEMS_Allocator_is_owner>: } bool _RTEMS_Allocator_is_owner( void ) { return _API_Mutex_Is_owner( &_RTEMS_Allocator_Mutex );
40008090:	11 10 00 4f 	sethi  %hi(0x40013c00), %o0
                   <== NOT EXECUTED
40008094:	90 12 22 e8 	or  %o0, 0x2e8, %o0	! 40013ee8 <_RTEMS_Allocator_Mutex>
<== NOT EXECUTED
40008098:	82 13 c0 00 	mov  %o7, %g1
                                 <== NOT EXECUTED
4000809c:	40 00 00 02 	call  400080a4 <_API_Mutex_Is_owner>
          <== NOT EXECUTED
400080a0:	9e 10 40 00 	mov  %g1, %o7
                                 <== NOT EXECUTED

                                                                     

40007070 <_RTEMS_Unlock_allocator>: } void _RTEMS_Unlock_allocator( void ) { _API_Mutex_Unlock( &_RTEMS_Allocator_Mutex );
40007070:	11 10 00 6d 	sethi  %hi(0x4001b400), %o0
                   <== NOT EXECUTED
40007074:	90 12 20 cc 	or  %o0, 0xcc, %o0	! 4001b4cc <_RTEMS_Allocator_Mutex>

40007078:	82 13 c0 00 	mov  %o7, %g1
                                 
4000707c:	40 00 00 0e 	call  400070b4 <_API_Mutex_Unlock>
            
40007080:	9e 10 40 00 	mov  %g1, %o7
                                 

                                                                     

4000e7a4 <_SMP_barrier_Wait>: SMP_barrier_Control *control, SMP_barrier_State *state, unsigned int count ) { unsigned int sense = ~state->sense;
4000e7a4:	c4 02 40 00 	ld  [ %o1 ], %g2
                              <== NOT EXECUTED
4000e7a8:	84 38 00 02 	xnor  %g0, %g2, %g2
                           <== NOT EXECUTED
  unsigned int previous_value;
                                       
  bool performed_release;
                                            

                                                                     
  state->sense = sense;
                                              
4000e7ac:	c4 22 40 00 	st  %g2, [ %o1 ]
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000e7b0:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  *obj = val + arg;
                                                  
4000e7b4:	c6 02 00 00 	ld  [ %o0 ], %g3
                              <== NOT EXECUTED
4000e7b8:	86 00 e0 01 	inc  %g3
                                      <== NOT EXECUTED
4000e7bc:	c6 22 00 00 	st  %g3, [ %o0 ]
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000e7c0:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000e7c4:	01 00 00 00 	nop 
                                          
    &control->value,
                                                 
    1U,
                                                              
    ATOMIC_ORDER_RELAXED
                                             
  );
                                                                 

                                                                     
  if ( previous_value + 1U == count ) {
                              
4000e7c8:	80 a2 80 03 	cmp  %o2, %g3
                                 
4000e7cc:	02 80 00 09 	be  4000e7f0 <_SMP_barrier_Wait+0x4c>
         <== ALWAYS TAKEN
4000e7d0:	01 00 00 00 	nop 
                                          
4000e7d4:	c2 02 20 04 	ld  [ %o0 + 4 ], %g1
                          <== NOT EXECUTED
    _Atomic_Store_uint( &control->value, 0U, ATOMIC_ORDER_RELAXED );
 
    _Atomic_Store_uint( &control->sense, sense, ATOMIC_ORDER_RELEASE );

    performed_release = true;
                                        
  } else {
                                                           
    while (
                                                          
4000e7d8:	80 a0 80 01 	cmp  %g2, %g1
                                 <== NOT EXECUTED
4000e7dc:	32 bf ff ff 	bne,a   4000e7d8 <_SMP_barrier_Wait+0x34>
     <== NOT EXECUTED
4000e7e0:	c2 02 20 04 	ld  [ %o0 + 4 ], %g1
                          <== NOT EXECUTED
      _Atomic_Load_uint( &control->sense, ATOMIC_ORDER_ACQUIRE ) != sense

    ) {
                                                              
      /* Wait */
                                                     
    }
                                                                

                                                                     
    performed_release = false;
                                       
4000e7e4:	82 10 20 00 	clr  %g1
                                      <== NOT EXECUTED
  }
                                                                  

                                                                     
  return performed_release;
                                          
}
                                                                    
4000e7e8:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000e7ec:	90 08 60 01 	and  %g1, 1, %o0
                              <== NOT EXECUTED
  *obj = desired;
                                                    
4000e7f0:	c0 22 00 00 	clr  [ %o0 ]
                                  
    performed_release = true;
                                        
4000e7f4:	82 10 20 01 	mov  1, %g1
                                   
4000e7f8:	c4 22 20 04 	st  %g2, [ %o0 + 4 ]
                          
}
                                                                    
4000e7fc:	81 c3 e0 08 	retl 
                                         
4000e800:	90 08 60 01 	and  %g1, 1, %o0
                              

                                                                     

4000b4cc <_Sched_Index>: int _Sched_Index( void ) { Thread_Control *executing = _Thread_Get_executing(); return (int) _Scheduler_Get_index( _Thread_Scheduler_get_home( executing ) ); }
4000b4cc:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000b4d0:	90 10 20 00 	clr  %o0
                                      

                                                                     

4000b4d4 <_Sched_Name_to_index>: int _Sched_Name_to_index( const char *name, size_t len ) { uint32_t name_32 = 0; size_t i = 0; while ( i < 4 && i < len ) {
4000b4d4:	80 a2 60 00 	cmp  %o1, 0
                                   <== NOT EXECUTED
4000b4d8:	02 80 00 15 	be  4000b52c <_Sched_Name_to_index+0x58>
      <== NOT EXECUTED
4000b4dc:	86 10 20 18 	mov  0x18, %g3
                                
  size_t i = 0;
                                                      
4000b4e0:	82 10 20 00 	clr  %g1
                                      
  uint32_t name_32 = 0;
                                              
4000b4e4:	10 80 00 05 	b  4000b4f8 <_Sched_Name_to_index+0x24>
       
4000b4e8:	88 10 20 00 	clr  %g4
                                      
  while ( i < 4 && i < len ) {
                                       
4000b4ec:	80 a0 40 09 	cmp  %g1, %o1
                                 
4000b4f0:	3a 80 00 0a 	bcc,a   4000b518 <_Sched_Name_to_index+0x44>
  
4000b4f4:	03 10 00 48 	sethi  %hi(0x40012000), %g1
                   
    name_32 |= ( (uint32_t) ( (uint8_t) *name ) ) << ( ( 3 - i ) * 8 );

4000b4f8:	c4 0a 00 01 	ldub  [ %o0 + %g1 ], %g2
                      
4000b4fc:	85 28 80 03 	sll  %g2, %g3, %g2
                            
    ++name;
                                                          
    ++i;
                                                             
4000b500:	82 00 60 01 	inc  %g1
                                      
    name_32 |= ( (uint32_t) ( (uint8_t) *name ) ) << ( ( 3 - i ) * 8 );

4000b504:	88 11 00 02 	or  %g4, %g2, %g4
                             
  while ( i < 4 && i < len ) {
                                       
4000b508:	80 a0 60 03 	cmp  %g1, 3
                                   
4000b50c:	08 bf ff f8 	bleu  4000b4ec <_Sched_Name_to_index+0x18>
    
4000b510:	86 00 ff f8 	add  %g3, -8, %g3
                             
  }
                                                                  

                                                                     
  for ( i = 0 ; i < _Scheduler_Count ; ++i ) {
                       
    const Scheduler_Control *scheduler = &_Scheduler_Table[ i ];
     

                                                                     
    if ( scheduler->name == name_32 ) {
                              
4000b514:	03 10 00 48 	sethi  %hi(0x40012000), %g1
                   
4000b518:	c2 00 61 e8 	ld  [ %g1 + 0x1e8 ], %g1	! 400121e8 <_Scheduler_Table+0x48>

4000b51c:	88 18 40 04 	xor  %g1, %g4, %g4
                            
      return (int) i;
                                                
    }
                                                                
  }
                                                                  

                                                                     
  return -1;
                                                         
}
                                                                    
4000b520:	80 a0 00 04 	cmp  %g0, %g4
                                 
4000b524:	81 c3 e0 08 	retl 
                                         
4000b528:	90 60 20 00 	subx  %g0, 0, %o0
                             
    if ( scheduler->name == name_32 ) {
                              
4000b52c:	03 10 00 48 	sethi  %hi(0x40012000), %g1
                   
4000b530:	c2 00 61 e8 	ld  [ %g1 + 0x1e8 ], %g1	! 400121e8 <_Scheduler_Table+0x48>

  uint32_t name_32 = 0;
                                              
4000b534:	88 10 20 00 	clr  %g4
                                      
    if ( scheduler->name == name_32 ) {
                              
4000b538:	88 18 40 04 	xor  %g1, %g4, %g4
                            
}
                                                                    
4000b53c:	80 a0 00 04 	cmp  %g0, %g4
                                 
4000b540:	81 c3 e0 08 	retl 
                                         
4000b544:	90 60 20 00 	subx  %g0, 0, %o0
                             

                                                                     

4000b548 <_Sched_Processor_count>: if ( i < _Scheduler_Count ) { return _Scheduler_Get_processor_count( &_Scheduler_Table[ i ] ); } else { return 0; } }
4000b548:	80 a0 00 08 	cmp  %g0, %o0
                                 <== NOT EXECUTED
4000b54c:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000b550:	90 60 3f ff 	subx  %g0, -1, %o0
                            

                                                                     

4000ae8c <_Scheduler_CBS_Attach_thread>: int _Scheduler_CBS_Attach_thread ( Scheduler_CBS_Server_id server_id, rtems_id task_id ) {
4000ae8c:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  Scheduler_CBS_Server *server;
                                      
  ISR_lock_Context      lock_context;
                                
  Thread_Control       *the_thread;
                                  
  Scheduler_CBS_Node   *node;
                                        

                                                                     
  if ( server_id >= _Scheduler_CBS_Maximum_servers ) {
               
4000ae90:	03 10 00 4b 	sethi  %hi(0x40012c00), %g1
                   <== NOT EXECUTED
4000ae94:	c2 00 63 d0 	ld  [ %g1 + 0x3d0 ], %g1	! 40012fd0 <_Scheduler_CBS_Maximum_servers>
<== NOT EXECUTED
4000ae98:	80 a0 40 18 	cmp  %g1, %i0
                                 <== NOT EXECUTED
4000ae9c:	08 80 00 2c 	bleu  4000af4c <_Scheduler_CBS_Attach_thread+0xc0>
<== NOT EXECUTED
4000aea0:	3b 10 00 56 	sethi  %hi(0x40015800), %i5
                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
  }
                                                                  

                                                                     
  server = &_Scheduler_CBS_Server_list[ server_id ];
                 
4000aea4:	b1 2e 20 05 	sll  %i0, 5, %i0
                              
4000aea8:	ba 17 62 08 	or  %i5, 0x208, %i5
                           
4000aeac:	b8 06 00 1d 	add  %i0, %i5, %i4
                            

                                                                     
  if ( !server->initialized ) {
                                      
4000aeb0:	c2 0f 20 1c 	ldub  [ %i4 + 0x1c ], %g1
                     
4000aeb4:	80 a0 60 00 	cmp  %g1, 0
                                   
4000aeb8:	02 80 00 27 	be  4000af54 <_Scheduler_CBS_Attach_thread+0xc8>

4000aebc:	01 00 00 00 	nop 
                                          
    return SCHEDULER_CBS_ERROR_NOSERVER;
                             
  }
                                                                  

                                                                     
  if ( server->task_id != -1 ) {
                                     
4000aec0:	c2 07 40 18 	ld  [ %i5 + %i0 ], %g1
                        
4000aec4:	80 a0 7f ff 	cmp  %g1, -1
                                  
4000aec8:	12 80 00 1a 	bne  4000af30 <_Scheduler_CBS_Attach_thread+0xa4>

4000aecc:	92 07 bf fc 	add  %fp, -4, %o1
                             
    return SCHEDULER_CBS_ERROR_FULL;
                                 
  }
                                                                  

                                                                     
  the_thread = _Thread_Get( task_id, &lock_context );
                
4000aed0:	40 00 05 5b 	call  4000c43c <_Thread_Get>
                  
4000aed4:	90 10 00 19 	mov  %i1, %o0
                                 

                                                                     
  if ( the_thread == NULL ) {
                                        
4000aed8:	80 a2 20 00 	cmp  %o0, 0
                                   
4000aedc:	02 80 00 1c 	be  4000af4c <_Scheduler_CBS_Attach_thread+0xc0>

4000aee0:	01 00 00 00 	nop 
                                          
4000aee4:	c2 02 20 38 	ld  [ %o0 + 0x38 ], %g1
                       
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
  }
                                                                  

                                                                     
  node = _Scheduler_CBS_Thread_get_node( the_thread );
               

                                                                     
  if ( node->cbs_server != NULL ) {
                                  
4000aee8:	c4 00 60 50 	ld  [ %g1 + 0x50 ], %g2
                       
4000aeec:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000aef0:	12 80 00 12 	bne  4000af38 <_Scheduler_CBS_Attach_thread+0xac>
<== NEVER TAKEN
4000aef4:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
    _ISR_lock_ISR_enable( &lock_context );
                           
    return SCHEDULER_CBS_ERROR_FULL;
                                 
  }
                                                                  

                                                                     
  node->cbs_server = server;
                                         
4000aef8:	f8 20 60 50 	st  %i4, [ %g1 + 0x50 ]
                       <== NOT EXECUTED

                                                                     
  server->task_id = task_id;
                                         

                                                                     
  the_thread->budget_callout   = _Scheduler_CBS_Budget_callout;
      
4000aefc:	03 10 00 2d 	sethi  %hi(0x4000b400), %g1
                   <== NOT EXECUTED
  server->task_id = task_id;
                                         
4000af00:	f2 27 40 18 	st  %i1, [ %i5 + %i0 ]
                        <== NOT EXECUTED
  the_thread->budget_callout   = _Scheduler_CBS_Budget_callout;
      
4000af04:	82 10 60 40 	or  %g1, 0x40, %g1
                            <== NOT EXECUTED
4000af08:	c2 22 20 94 	st  %g1, [ %o0 + 0x94 ]
                       <== NOT EXECUTED
  the_thread->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;

4000af0c:	82 10 20 03 	mov  3, %g1
                                   <== NOT EXECUTED
4000af10:	c2 22 20 90 	st  %g1, [ %o0 + 0x90 ]
                       <== NOT EXECUTED
  the_thread->is_preemptible   = true;
                               
4000af14:	82 10 20 01 	mov  1, %g1
                                   <== NOT EXECUTED
4000af18:	c2 2a 20 89 	stb  %g1, [ %o0 + 0x89 ]
                      <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000af1c:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000af20:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000af24:	01 00 00 00 	nop 
                                          

                                                                     
  _ISR_lock_ISR_enable( &lock_context );
                             
  return SCHEDULER_CBS_OK;
                                           
4000af28:	81 c7 e0 08 	ret 
                                          
4000af2c:	91 e8 20 00 	restore  %g0, 0, %o0
                          
}
                                                                    
4000af30:	81 c7 e0 08 	ret 
                                          
4000af34:	91 e8 3f e6 	restore  %g0, -26, %o0
                        
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000af38:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000af3c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000af40:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
    return SCHEDULER_CBS_ERROR_FULL;
                                 
4000af44:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000af48:	91 e8 3f e6 	restore  %g0, -26, %o0
                        <== NOT EXECUTED
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
4000af4c:	81 c7 e0 08 	ret 
                                          
4000af50:	91 e8 3f ee 	restore  %g0, -18, %o0
                        
    return SCHEDULER_CBS_ERROR_NOSERVER;
                             
4000af54:	81 c7 e0 08 	ret 
                                          
4000af58:	91 e8 3f e7 	restore  %g0, -25, %o0
                        

                                                                     

4000b440 <_Scheduler_CBS_Budget_callout>: #include <rtems/score/schedulercbsimpl.h> void _Scheduler_CBS_Budget_callout( Thread_Control *the_thread ) {
4000b440:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
4000b444:	fa 06 20 38 	ld  [ %i0 + 0x38 ], %i5
                       <== NOT EXECUTED

                                                                     
  node = _Scheduler_CBS_Thread_get_node( the_thread );
               

                                                                     
  /* Put violating task to background until the end of period. */
    
  _Thread_queue_Context_clear_priority_updates( &queue_context );
    
  _Scheduler_CBS_Cancel_job(
                                         
4000b448:	d4 07 60 54 	ld  [ %i5 + 0x54 ], %o2
                       <== NOT EXECUTED
4000b44c:	96 07 bf dc 	add  %fp, -36, %o3
                            <== NOT EXECUTED
4000b450:	92 10 00 18 	mov  %i0, %o1
                                 <== NOT EXECUTED
4000b454:	90 10 20 00 	clr  %o0
                                      <== NOT EXECUTED
4000b458:	40 00 00 21 	call  4000b4dc <_Scheduler_CBS_Cancel_job>
    <== NOT EXECUTED
4000b45c:	c0 27 bf f0 	clr  [ %fp + -16 ]
                            <== NOT EXECUTED
    NULL,
                                                            
    the_thread,
                                                      
    node->deadline_node,
                                             
    &queue_context
                                                   
  );
                                                                 
  _Thread_Priority_update( &queue_context );
                         
4000b460:	40 00 02 f5 	call  4000c034 <_Thread_Priority_update>
      
4000b464:	90 07 bf dc 	add  %fp, -36, %o0
                            

                                                                     
  /* Invoke callback function if any. */
                             
  if ( node->cbs_server->cbs_budget_overrun ) {
                      
4000b468:	c2 07 60 50 	ld  [ %i5 + 0x50 ], %g1
                       
4000b46c:	c4 00 60 18 	ld  [ %g1 + 0x18 ], %g2
                       
4000b470:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000b474:	02 80 00 09 	be  4000b498 <_Scheduler_CBS_Budget_callout+0x58>
<== NEVER TAKEN
4000b478:	01 00 00 00 	nop 
                                          
    _Scheduler_CBS_Get_server_id(
                                    
4000b47c:	d0 00 40 00 	ld  [ %g1 ], %o0
                              
4000b480:	7f ff ff ce 	call  4000b3b8 <_Scheduler_CBS_Get_server_id>
 
4000b484:	92 07 bf d8 	add  %fp, -40, %o1
                            
        node->cbs_server->task_id,
                                   
        &server_id
                                                   
    );
                                                               
    node->cbs_server->cbs_budget_overrun( server_id );
               
4000b488:	c2 07 60 50 	ld  [ %i5 + 0x50 ], %g1
                       
4000b48c:	c2 00 60 18 	ld  [ %g1 + 0x18 ], %g1
                       
4000b490:	9f c0 40 00 	call  %g1
                                     
4000b494:	d0 07 bf d8 	ld  [ %fp + -40 ], %o0
                        
  }
                                                                  
}
                                                                    
4000b498:	81 c7 e0 08 	ret 
                                          
4000b49c:	81 e8 00 00 	restore 
                                      

                                                                     

4000a4e0 <_Scheduler_CBS_Cancel_job>: const Scheduler_Control *scheduler, Thread_Control *the_thread, Priority_Node *priority_node, Thread_queue_Context *queue_context ) {
4000a4e0:	c2 02 60 38 	ld  [ %o1 + 0x38 ], %g1
                       <== NOT EXECUTED
  Scheduler_CBS_Node *node;
                                          

                                                                     
  node = _Scheduler_CBS_Thread_get_node( the_thread );
               

                                                                     
  if ( node->deadline_node != NULL ) {
                               
4000a4e4:	c4 00 60 54 	ld  [ %g1 + 0x54 ], %g2
                       <== NOT EXECUTED
4000a4e8:	80 a0 a0 00 	cmp  %g2, 0
                                   <== NOT EXECUTED
4000a4ec:	02 80 00 06 	be  4000a504 <_Scheduler_CBS_Cancel_job+0x24>
 <== NOT EXECUTED
4000a4f0:	01 00 00 00 	nop 
                                          
    _Assert( node->deadline_node == priority_node );
                 
    node->deadline_node = NULL;
                                      
4000a4f4:	c0 20 60 54 	clr  [ %g1 + 0x54 ]
                           

                                                                     
    _Scheduler_EDF_Cancel_job(
                                       
4000a4f8:	82 13 c0 00 	mov  %o7, %g1
                                 
4000a4fc:	40 00 01 0e 	call  4000a934 <_Scheduler_EDF_Cancel_job>
    
4000a500:	9e 10 40 00 	mov  %g1, %o7
                                 
      the_thread,
                                                    
      priority_node,
                                                 
      queue_context
                                                  
    );
                                                               
  }
                                                                  
}
                                                                    
4000a504:	81 c3 e0 08 	retl 
                                         
4000a508:	01 00 00 00 	nop 
                                          

                                                                     

4000af5c <_Scheduler_CBS_Cleanup>: #include <rtems/score/schedulercbs.h> #include <rtems/score/wkspace.h> int _Scheduler_CBS_Cleanup (void) {
4000af5c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  unsigned int i;
                                                    

                                                                     
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
             
4000af60:	03 10 00 4b 	sethi  %hi(0x40012c00), %g1
                   <== NOT EXECUTED
4000af64:	f6 00 63 d0 	ld  [ %g1 + 0x3d0 ], %i3	! 40012fd0 <_Scheduler_CBS_Maximum_servers>
<== NOT EXECUTED
4000af68:	80 a6 e0 00 	cmp  %i3, 0
                                   <== NOT EXECUTED
4000af6c:	02 80 00 12 	be  4000afb4 <_Scheduler_CBS_Cleanup+0x58>
    <== NOT EXECUTED
4000af70:	39 10 00 56 	sethi  %hi(0x40015800), %i4
                   
4000af74:	ba 10 20 00 	clr  %i5
                                      
4000af78:	10 80 00 05 	b  4000af8c <_Scheduler_CBS_Cleanup+0x30>
     
4000af7c:	b8 17 22 24 	or  %i4, 0x224, %i4
                           
4000af80:	80 a7 40 1b 	cmp  %i5, %i3
                                 
4000af84:	02 80 00 0c 	be  4000afb4 <_Scheduler_CBS_Cleanup+0x58>
    
4000af88:	b8 07 20 20 	add  %i4, 0x20, %i4
                           
    if ( _Scheduler_CBS_Server_list[ i ].initialized )
               
4000af8c:	c2 0f 00 00 	ldub  [ %i4 ], %g1
                            
4000af90:	80 a0 60 00 	cmp  %g1, 0
                                   
4000af94:	22 bf ff fb 	be,a   4000af80 <_Scheduler_CBS_Cleanup+0x24>
 
4000af98:	ba 07 60 01 	inc  %i5
                                      
      _Scheduler_CBS_Destroy_server( i );
                            
4000af9c:	40 00 00 43 	call  4000b0a8 <_Scheduler_CBS_Destroy_server>

4000afa0:	90 10 00 1d 	mov  %i5, %o0
                                 
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
             
4000afa4:	ba 07 60 01 	inc  %i5
                                      
4000afa8:	80 a7 40 1b 	cmp  %i5, %i3
                                 
4000afac:	12 bf ff f8 	bne  4000af8c <_Scheduler_CBS_Cleanup+0x30>
   <== ALWAYS TAKEN
4000afb0:	b8 07 20 20 	add  %i4, 0x20, %i4
                           
  }
                                                                  
  return SCHEDULER_CBS_OK;
                                           
}
                                                                    
4000afb4:	81 c7 e0 08 	ret 
                                          
4000afb8:	91 e8 20 00 	restore  %g0, 0, %o0
                          

                                                                     

4000afbc <_Scheduler_CBS_Create_server>: ) { unsigned int i; Scheduler_CBS_Server *the_server; if ( params->budget <= 0 ||
4000afbc:	c2 02 20 08 	ld  [ %o0 + 8 ], %g1
                          <== NOT EXECUTED
4000afc0:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000afc4:	04 80 00 2a 	ble  4000b06c <_Scheduler_CBS_Create_server+0xb0>
<== NOT EXECUTED
4000afc8:	01 00 00 00 	nop 
                                          
4000afcc:	c2 02 00 00 	ld  [ %o0 ], %g1
                              <== NOT EXECUTED
4000afd0:	80 a0 60 00 	cmp  %g1, 0
                                   
4000afd4:	04 80 00 2e 	ble  4000b08c <_Scheduler_CBS_Create_server+0xd0>
<== ALWAYS TAKEN
4000afd8:	03 10 00 4b 	sethi  %hi(0x40012c00), %g1
                   
       params->deadline <= 0 ||
                                      
       params->budget >= SCHEDULER_EDF_PRIO_MSB ||
                   
       params->deadline >= SCHEDULER_EDF_PRIO_MSB )
                  
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    

                                                                     
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
             
4000afdc:	c8 00 63 d0 	ld  [ %g1 + 0x3d0 ], %g4	! 40012fd0 <_Scheduler_CBS_Maximum_servers>

4000afe0:	80 a1 20 00 	cmp  %g4, 0
                                   
4000afe4:	02 80 00 11 	be  4000b028 <_Scheduler_CBS_Create_server+0x6c>
<== NEVER TAKEN
4000afe8:	1b 10 00 56 	sethi  %hi(0x40015800), %o5
                   
    if ( !_Scheduler_CBS_Server_list[i].initialized )
                
4000afec:	9a 13 62 08 	or  %o5, 0x208, %o5	! 40015a08 <_Scheduler_CBS_Server_list>

4000aff0:	c2 0b 60 1c 	ldub  [ %o5 + 0x1c ], %g1
                     
4000aff4:	80 a0 60 00 	cmp  %g1, 0
                                   
4000aff8:	02 80 00 0e 	be  4000b030 <_Scheduler_CBS_Create_server+0x74>

4000affc:	84 03 60 3c 	add  %o5, 0x3c, %g2
                           
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
             
4000b000:	10 80 00 06 	b  4000b018 <_Scheduler_CBS_Create_server+0x5c>

4000b004:	82 10 20 00 	clr  %g1
                                      
    if ( !_Scheduler_CBS_Server_list[i].initialized )
                
4000b008:	c6 08 bf e0 	ldub  [ %g2 + -32 ], %g3
                      
4000b00c:	80 a0 e0 00 	cmp  %g3, 0
                                   
4000b010:	22 80 00 0a 	be,a   4000b038 <_Scheduler_CBS_Create_server+0x7c>

4000b014:	c2 22 80 00 	st  %g1, [ %o2 ]
                              
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
             
4000b018:	82 00 60 01 	inc  %g1
                                      
4000b01c:	80 a1 00 01 	cmp  %g4, %g1
                                 
4000b020:	12 bf ff fa 	bne  4000b008 <_Scheduler_CBS_Create_server+0x4c>

4000b024:	84 00 a0 20 	add  %g2, 0x20, %g2
                           
      break;
                                                         
  }
                                                                  

                                                                     
  if ( i == _Scheduler_CBS_Maximum_servers )
                         
    return SCHEDULER_CBS_ERROR_FULL;
                                 
4000b028:	81 c3 e0 08 	retl 
                                         
4000b02c:	90 10 3f e6 	mov  -26, %o0
                                 
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
             
4000b030:	82 10 20 00 	clr  %g1
                                      

                                                                     
  *server_id = i;
                                                    
4000b034:	c2 22 80 00 	st  %g1, [ %o2 ]
                              
  the_server = &_Scheduler_CBS_Server_list[*server_id];
              
  the_server->parameters = *params;
                                  
4000b038:	83 28 60 05 	sll  %g1, 5, %g1
                              
4000b03c:	d4 1a 00 00 	ldd  [ %o0 ], %o2
                             
4000b040:	84 03 40 01 	add  %o5, %g1, %g2
                            
4000b044:	d4 38 a0 08 	std  %o2, [ %g2 + 8 ]
                         
  the_server->task_id = -1;
                                          
4000b048:	86 10 3f ff 	mov  -1, %g3
                                  
  the_server->parameters = *params;
                                  
4000b04c:	d4 1a 20 08 	ldd  [ %o0 + 8 ], %o2
                         
4000b050:	d4 38 a0 10 	std  %o2, [ %g2 + 0x10 ]
                      
  the_server->cbs_budget_overrun = budget_overrun_callback;
          
  the_server->initialized = true;
                                    
  return SCHEDULER_CBS_OK;
                                           
4000b054:	90 10 20 00 	clr  %o0
                                      
  the_server->task_id = -1;
                                          
4000b058:	c6 23 40 01 	st  %g3, [ %o5 + %g1 ]
                        
  the_server->initialized = true;
                                    
4000b05c:	82 10 20 01 	mov  1, %g1
                                   
  the_server->cbs_budget_overrun = budget_overrun_callback;
          
4000b060:	d2 20 a0 18 	st  %o1, [ %g2 + 0x18 ]
                       
}
                                                                    
4000b064:	81 c3 e0 08 	retl 
                                         
4000b068:	c2 28 a0 1c 	stb  %g1, [ %g2 + 0x1c ]
                      
  if ( params->budget <= 0 ||
                                        
4000b06c:	12 80 00 06 	bne  4000b084 <_Scheduler_CBS_Create_server+0xc8>

4000b070:	01 00 00 00 	nop 
                                          
4000b074:	c2 02 20 0c 	ld  [ %o0 + 0xc ], %g1
                        
4000b078:	80 a0 60 00 	cmp  %g1, 0
                                   
4000b07c:	32 bf ff d5 	bne,a   4000afd0 <_Scheduler_CBS_Create_server+0x14>
<== ALWAYS TAKEN
4000b080:	c2 02 00 00 	ld  [ %o0 ], %g1
                              
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
4000b084:	81 c3 e0 08 	retl 
                                         
4000b088:	90 10 3f ee 	mov  -18, %o0
                                 
  if ( params->budget <= 0 ||
                                        
4000b08c:	12 bf ff fe 	bne  4000b084 <_Scheduler_CBS_Create_server+0xc8>

4000b090:	01 00 00 00 	nop 
                                          
4000b094:	c2 02 20 04 	ld  [ %o0 + 4 ], %g1
                          
4000b098:	80 a0 60 00 	cmp  %g1, 0
                                   
4000b09c:	12 bf ff d0 	bne  4000afdc <_Scheduler_CBS_Create_server+0x20>
<== ALWAYS TAKEN
4000b0a0:	03 10 00 4b 	sethi  %hi(0x40012c00), %g1
                   
4000b0a4:	30 bf ff f8 	b,a   4000b084 <_Scheduler_CBS_Create_server+0xc8>
<== NOT EXECUTED

                                                                     

4000b0a8 <_Scheduler_CBS_Destroy_server>: #include <rtems/score/wkspace.h> int _Scheduler_CBS_Destroy_server ( Scheduler_CBS_Server_id server_id ) {
4000b0a8:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  int ret = SCHEDULER_CBS_OK;
                                        
  rtems_id tid;
                                                      

                                                                     
  if ( server_id >= _Scheduler_CBS_Maximum_servers )
                 
4000b0ac:	05 10 00 4b 	sethi  %hi(0x40012c00), %g2
                   <== NOT EXECUTED
4000b0b0:	c4 00 a3 d0 	ld  [ %g2 + 0x3d0 ], %g2	! 40012fd0 <_Scheduler_CBS_Maximum_servers>
<== NOT EXECUTED
4000b0b4:	80 a0 80 18 	cmp  %g2, %i0
                                 <== NOT EXECUTED
4000b0b8:	08 80 00 17 	bleu  4000b114 <_Scheduler_CBS_Destroy_server+0x6c>
<== NOT EXECUTED
4000b0bc:	90 10 00 18 	mov  %i0, %o0
                                 
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    

                                                                     
  if ( !_Scheduler_CBS_Server_list[server_id].initialized )
          
4000b0c0:	b9 2e 20 05 	sll  %i0, 5, %i4
                              
4000b0c4:	3b 10 00 56 	sethi  %hi(0x40015800), %i5
                   
4000b0c8:	ba 17 62 08 	or  %i5, 0x208, %i5	! 40015a08 <_Scheduler_CBS_Server_list>

4000b0cc:	84 07 40 1c 	add  %i5, %i4, %g2
                            
4000b0d0:	c4 08 a0 1c 	ldub  [ %g2 + 0x1c ], %g2
                     
4000b0d4:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000b0d8:	02 80 00 11 	be  4000b11c <_Scheduler_CBS_Destroy_server+0x74>

4000b0dc:	01 00 00 00 	nop 
                                          
    return SCHEDULER_CBS_ERROR_NOSERVER;
                             

                                                                     
  if ( (tid = _Scheduler_CBS_Server_list[server_id].task_id) != -1 )
 
4000b0e0:	d2 07 40 1c 	ld  [ %i5 + %i4 ], %o1
                        
4000b0e4:	80 a2 7f ff 	cmp  %o1, -1
                                  
4000b0e8:	12 80 00 06 	bne  4000b100 <_Scheduler_CBS_Destroy_server+0x58>

4000b0ec:	b0 10 20 00 	clr  %i0
                                      
    ret = _Scheduler_CBS_Detach_thread ( server_id, tid );
           

                                                                     
  _Scheduler_CBS_Server_list[server_id].initialized = false;
         
4000b0f0:	ba 07 40 1c 	add  %i5, %i4, %i5
                            
4000b0f4:	c0 2f 60 1c 	clrb  [ %i5 + 0x1c ]
                          
  return ret;
                                                        
4000b0f8:	81 c7 e0 08 	ret 
                                          
4000b0fc:	81 e8 00 00 	restore 
                                      
    ret = _Scheduler_CBS_Detach_thread ( server_id, tid );
           
4000b100:	40 00 00 09 	call  4000b124 <_Scheduler_CBS_Detach_thread>
 
4000b104:	ba 07 40 1c 	add  %i5, %i4, %i5
                            
  _Scheduler_CBS_Server_list[server_id].initialized = false;
         
4000b108:	c0 2f 60 1c 	clrb  [ %i5 + 0x1c ]
                          
  return ret;
                                                        
4000b10c:	81 c7 e0 08 	ret 
                                          
4000b110:	91 e8 00 08 	restore  %g0, %o0, %o0
                        
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
4000b114:	81 c7 e0 08 	ret 
                                          
4000b118:	91 e8 3f ee 	restore  %g0, -18, %o0
                        
}
                                                                    
4000b11c:	81 c7 e0 08 	ret 
                                          
4000b120:	91 e8 3f e7 	restore  %g0, -25, %o0
                        

                                                                     

4000b124 <_Scheduler_CBS_Detach_thread>: int _Scheduler_CBS_Detach_thread ( Scheduler_CBS_Server_id server_id, rtems_id task_id ) {
4000b124:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  Scheduler_CBS_Server *server;
                                      
  ISR_lock_Context      lock_context;
                                
  Thread_Control       *the_thread;
                                  
  Scheduler_CBS_Node   *node;
                                        

                                                                     
  if ( server_id >= _Scheduler_CBS_Maximum_servers ) {
               
4000b128:	03 10 00 4b 	sethi  %hi(0x40012c00), %g1
                   <== NOT EXECUTED
4000b12c:	c2 00 63 d0 	ld  [ %g1 + 0x3d0 ], %g1	! 40012fd0 <_Scheduler_CBS_Maximum_servers>
<== NOT EXECUTED
4000b130:	80 a0 40 18 	cmp  %g1, %i0
                                 <== NOT EXECUTED
4000b134:	08 80 00 21 	bleu  4000b1b8 <_Scheduler_CBS_Detach_thread+0x94>
<== NOT EXECUTED
4000b138:	3b 10 00 56 	sethi  %hi(0x40015800), %i5
                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
  }
                                                                  

                                                                     
  server = &_Scheduler_CBS_Server_list[ server_id ];
                 

                                                                     
  if ( !server->initialized ) {
                                      
4000b13c:	b1 2e 20 05 	sll  %i0, 5, %i0
                              
4000b140:	ba 17 62 08 	or  %i5, 0x208, %i5
                           
4000b144:	82 07 40 18 	add  %i5, %i0, %g1
                            
4000b148:	c2 08 60 1c 	ldub  [ %g1 + 0x1c ], %g1
                     
4000b14c:	80 a0 60 00 	cmp  %g1, 0
                                   
4000b150:	02 80 00 1c 	be  4000b1c0 <_Scheduler_CBS_Detach_thread+0x9c>

4000b154:	01 00 00 00 	nop 
                                          
    return SCHEDULER_CBS_ERROR_NOSERVER;
                             
  }
                                                                  

                                                                     
  if ( server->task_id != task_id ) {
                                
4000b158:	d0 07 40 18 	ld  [ %i5 + %i0 ], %o0
                        
4000b15c:	80 a2 00 19 	cmp  %o0, %i1
                                 
4000b160:	12 80 00 16 	bne  4000b1b8 <_Scheduler_CBS_Detach_thread+0x94>

4000b164:	01 00 00 00 	nop 
                                          
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
  }
                                                                  

                                                                     
  the_thread = _Thread_Get( task_id, &lock_context );
                
4000b168:	40 00 04 b5 	call  4000c43c <_Thread_Get>
                  
4000b16c:	92 07 bf fc 	add  %fp, -4, %o1
                             

                                                                     
  if ( the_thread == NULL ) {
                                        
4000b170:	80 a2 20 00 	cmp  %o0, 0
                                   
4000b174:	02 80 00 11 	be  4000b1b8 <_Scheduler_CBS_Detach_thread+0x94>

4000b178:	01 00 00 00 	nop 
                                          
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
  }
                                                                  

                                                                     
  node = _Scheduler_CBS_Thread_get_node( the_thread );
               
  node->cbs_server = NULL;
                                           
4000b17c:	c2 02 20 38 	ld  [ %o0 + 0x38 ], %g1
                       <== NOT EXECUTED
4000b180:	c0 20 60 50 	clr  [ %g1 + 0x50 ]
                           <== NOT EXECUTED

                                                                     
  server->task_id = -1;
                                              
4000b184:	82 10 3f ff 	mov  -1, %g1
                                  <== NOT EXECUTED
4000b188:	c2 27 40 18 	st  %g1, [ %i5 + %i0 ]
                        <== NOT EXECUTED

                                                                     
  the_thread->budget_algorithm = the_thread->Start.budget_algorithm;
 
4000b18c:	c6 02 20 b0 	ld  [ %o0 + 0xb0 ], %g3
                       <== NOT EXECUTED
  the_thread->budget_callout   = the_thread->Start.budget_callout;
   
4000b190:	c4 02 20 b4 	ld  [ %o0 + 0xb4 ], %g2
                       <== NOT EXECUTED
  the_thread->is_preemptible   = the_thread->Start.is_preemptible;
   
4000b194:	c2 0a 20 ac 	ldub  [ %o0 + 0xac ], %g1
                     <== NOT EXECUTED
  the_thread->budget_algorithm = the_thread->Start.budget_algorithm;
 
4000b198:	c6 22 20 90 	st  %g3, [ %o0 + 0x90 ]
                       <== NOT EXECUTED
  the_thread->budget_callout   = the_thread->Start.budget_callout;
   
4000b19c:	c4 22 20 94 	st  %g2, [ %o0 + 0x94 ]
                       <== NOT EXECUTED
  the_thread->is_preemptible   = the_thread->Start.is_preemptible;
   
4000b1a0:	c2 2a 20 89 	stb  %g1, [ %o0 + 0x89 ]
                      <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000b1a4:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b1a8:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b1ac:	01 00 00 00 	nop 
                                          

                                                                     
  _ISR_lock_ISR_enable( &lock_context );
                             
  return SCHEDULER_CBS_OK;
                                           
4000b1b0:	81 c7 e0 08 	ret 
                                          
4000b1b4:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
4000b1b8:	81 c7 e0 08 	ret 
                                          
4000b1bc:	91 e8 3f ee 	restore  %g0, -18, %o0
                        
}
                                                                    
4000b1c0:	81 c7 e0 08 	ret 
                                          
4000b1c4:	91 e8 3f e7 	restore  %g0, -25, %o0
                        

                                                                     

4000b1c8 <_Scheduler_CBS_Get_approved_budget>: int _Scheduler_CBS_Get_approved_budget ( Scheduler_CBS_Server_id server_id, time_t *approved_budget ) { if ( server_id >= _Scheduler_CBS_Maximum_servers )
4000b1c8:	03 10 00 4b 	sethi  %hi(0x40012c00), %g1
                   <== NOT EXECUTED
4000b1cc:	c2 00 63 d0 	ld  [ %g1 + 0x3d0 ], %g1	! 40012fd0 <_Scheduler_CBS_Maximum_servers>
<== NOT EXECUTED
4000b1d0:	80 a0 40 08 	cmp  %g1, %o0
                                 <== NOT EXECUTED
4000b1d4:	08 80 00 0d 	bleu  4000b208 <_Scheduler_CBS_Get_approved_budget+0x40>
<== NOT EXECUTED
4000b1d8:	83 2a 20 05 	sll  %o0, 5, %g1
                              
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
  if ( !_Scheduler_CBS_Server_list[server_id].initialized )
          
4000b1dc:	11 10 00 56 	sethi  %hi(0x40015800), %o0
                   
4000b1e0:	90 12 22 08 	or  %o0, 0x208, %o0	! 40015a08 <_Scheduler_CBS_Server_list>

4000b1e4:	90 02 00 01 	add  %o0, %g1, %o0
                            
4000b1e8:	c2 0a 20 1c 	ldub  [ %o0 + 0x1c ], %g1
                     
4000b1ec:	80 a0 60 00 	cmp  %g1, 0
                                   
4000b1f0:	02 80 00 08 	be  4000b210 <_Scheduler_CBS_Get_approved_budget+0x48>

4000b1f4:	01 00 00 00 	nop 
                                          
    return SCHEDULER_CBS_ERROR_NOSERVER;
                             

                                                                     
  *approved_budget = _Scheduler_CBS_Server_list[server_id].parameters.budget;

4000b1f8:	c4 1a 20 10 	ldd  [ %o0 + 0x10 ], %g2
                      
4000b1fc:	c4 3a 40 00 	std  %g2, [ %o1 ]
                             
  return SCHEDULER_CBS_OK;
                                           
4000b200:	81 c3 e0 08 	retl 
                                         
4000b204:	90 10 20 00 	clr  %o0
                                      
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
4000b208:	81 c3 e0 08 	retl 
                                         
4000b20c:	90 10 3f ee 	mov  -18, %o0
                                 
}
                                                                    
4000b210:	81 c3 e0 08 	retl 
                                         
4000b214:	90 10 3f e7 	mov  -25, %o0
                                 

                                                                     

4000b218 <_Scheduler_CBS_Get_execution_time>: int _Scheduler_CBS_Get_execution_time ( Scheduler_CBS_Server_id server_id, time_t *exec_time, time_t *abs_time ) {
4000b218:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  Scheduler_CBS_Server *server;
                                      
  ISR_lock_Context      lock_context;
                                
  Thread_Control       *the_thread;
                                  

                                                                     
  if ( server_id >= _Scheduler_CBS_Maximum_servers ) {
               
4000b21c:	03 10 00 4b 	sethi  %hi(0x40012c00), %g1
                   <== NOT EXECUTED
4000b220:	c2 00 63 d0 	ld  [ %g1 + 0x3d0 ], %g1	! 40012fd0 <_Scheduler_CBS_Maximum_servers>
<== NOT EXECUTED
4000b224:	80 a0 40 18 	cmp  %g1, %i0
                                 <== NOT EXECUTED
4000b228:	08 80 00 22 	bleu  4000b2b0 <_Scheduler_CBS_Get_execution_time+0x98>
<== NOT EXECUTED
4000b22c:	03 10 00 56 	sethi  %hi(0x40015800), %g1
                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
  }
                                                                  

                                                                     
  server = &_Scheduler_CBS_Server_list[ server_id ];
                 

                                                                     
  if ( !server->initialized ) {
                                      
4000b230:	b1 2e 20 05 	sll  %i0, 5, %i0
                              
4000b234:	82 10 62 08 	or  %g1, 0x208, %g1
                           
4000b238:	ba 00 40 18 	add  %g1, %i0, %i5
                            
4000b23c:	c4 0f 60 1c 	ldub  [ %i5 + 0x1c ], %g2
                     
4000b240:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000b244:	02 80 00 1d 	be  4000b2b8 <_Scheduler_CBS_Get_execution_time+0xa0>

4000b248:	01 00 00 00 	nop 
                                          
    return SCHEDULER_CBS_ERROR_NOSERVER;
                             
  }
                                                                  

                                                                     
  if ( server->task_id == -1 ) {
                                     
4000b24c:	d0 00 40 18 	ld  [ %g1 + %i0 ], %o0
                        
4000b250:	80 a2 3f ff 	cmp  %o0, -1
                                  
4000b254:	22 80 00 11 	be,a   4000b298 <_Scheduler_CBS_Get_execution_time+0x80>

4000b258:	c0 26 40 00 	clr  [ %i1 ]
                                  
    *exec_time = 0;
                                                  
    return SCHEDULER_CBS_OK;
                                         
  }
                                                                  

                                                                     
  the_thread = _Thread_Get( server->task_id, &lock_context );
        
4000b25c:	40 00 04 78 	call  4000c43c <_Thread_Get>
                  
4000b260:	92 07 bf fc 	add  %fp, -4, %o1
                             

                                                                     
  if ( the_thread != NULL ) {
                                        
4000b264:	80 a2 20 00 	cmp  %o0, 0
                                   
4000b268:	22 80 00 0f 	be,a   4000b2a4 <_Scheduler_CBS_Get_execution_time+0x8c>

4000b26c:	c4 1f 60 10 	ldd  [ %i5 + 0x10 ], %g2
                      
    *exec_time = server->parameters.budget - the_thread->cpu_time_budget;

4000b270:	f8 1f 60 10 	ldd  [ %i5 + 0x10 ], %i4
                      <== NOT EXECUTED
4000b274:	c2 02 20 8c 	ld  [ %o0 + 0x8c ], %g1
                       <== NOT EXECUTED
4000b278:	86 a7 40 01 	subcc  %i5, %g1, %g3
                          <== NOT EXECUTED
4000b27c:	84 67 20 00 	subx  %i4, 0, %g2
                             <== NOT EXECUTED
4000b280:	c4 3e 40 00 	std  %g2, [ %i1 ]
                             <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000b284:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b288:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b28c:	01 00 00 00 	nop 
                                          
    _ISR_lock_ISR_enable( &lock_context );
                           
  } else {
                                                           
    *exec_time = server->parameters.budget;
                          
  }
                                                                  

                                                                     
  return SCHEDULER_CBS_OK;
                                           
4000b290:	81 c7 e0 08 	ret 
                                          
4000b294:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    *exec_time = 0;
                                                  
4000b298:	c0 26 60 04 	clr  [ %i1 + 4 ]
                              
    return SCHEDULER_CBS_OK;
                                         
4000b29c:	81 c7 e0 08 	ret 
                                          
4000b2a0:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    *exec_time = server->parameters.budget;
                          
4000b2a4:	c4 3e 40 00 	std  %g2, [ %i1 ]
                             
  return SCHEDULER_CBS_OK;
                                           
4000b2a8:	81 c7 e0 08 	ret 
                                          
4000b2ac:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
4000b2b0:	81 c7 e0 08 	ret 
                                          
4000b2b4:	91 e8 3f ee 	restore  %g0, -18, %o0
                        
}
                                                                    
4000b2b8:	81 c7 e0 08 	ret 
                                          
4000b2bc:	91 e8 3f e7 	restore  %g0, -25, %o0
                        

                                                                     

4000b2c0 <_Scheduler_CBS_Get_parameters>: int _Scheduler_CBS_Get_parameters ( Scheduler_CBS_Server_id server_id, Scheduler_CBS_Parameters *params ) { if ( server_id >= _Scheduler_CBS_Maximum_servers )
4000b2c0:	03 10 00 4b 	sethi  %hi(0x40012c00), %g1
                   <== NOT EXECUTED
4000b2c4:	c2 00 63 d0 	ld  [ %g1 + 0x3d0 ], %g1	! 40012fd0 <_Scheduler_CBS_Maximum_servers>
<== NOT EXECUTED
4000b2c8:	80 a0 40 08 	cmp  %g1, %o0
                                 <== NOT EXECUTED
4000b2cc:	08 80 00 0f 	bleu  4000b308 <_Scheduler_CBS_Get_parameters+0x48>
<== NOT EXECUTED
4000b2d0:	03 10 00 56 	sethi  %hi(0x40015800), %g1
                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
  if ( !_Scheduler_CBS_Server_list[server_id].initialized )
          
4000b2d4:	91 2a 20 05 	sll  %o0, 5, %o0
                              
4000b2d8:	82 10 62 08 	or  %g1, 0x208, %g1
                           
4000b2dc:	82 00 40 08 	add  %g1, %o0, %g1
                            
4000b2e0:	c4 08 60 1c 	ldub  [ %g1 + 0x1c ], %g2
                     
4000b2e4:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000b2e8:	02 80 00 0a 	be  4000b310 <_Scheduler_CBS_Get_parameters+0x50>

4000b2ec:	01 00 00 00 	nop 
                                          
    return SCHEDULER_CBS_ERROR_NOSERVER;
                             

                                                                     
  *params = _Scheduler_CBS_Server_list[server_id].parameters;
        
4000b2f0:	c4 18 60 08 	ldd  [ %g1 + 8 ], %g2
                         
4000b2f4:	c4 3a 40 00 	std  %g2, [ %o1 ]
                             
  return SCHEDULER_CBS_OK;
                                           
4000b2f8:	90 10 20 00 	clr  %o0
                                      
  *params = _Scheduler_CBS_Server_list[server_id].parameters;
        
4000b2fc:	c4 18 60 10 	ldd  [ %g1 + 0x10 ], %g2
                      
  return SCHEDULER_CBS_OK;
                                           
4000b300:	81 c3 e0 08 	retl 
                                         
4000b304:	c4 3a 60 08 	std  %g2, [ %o1 + 8 ]
                         
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
4000b308:	81 c3 e0 08 	retl 
                                         
4000b30c:	90 10 3f ee 	mov  -18, %o0
                                 
}
                                                                    
4000b310:	81 c3 e0 08 	retl 
                                         
4000b314:	90 10 3f e7 	mov  -25, %o0
                                 

                                                                     

4000b318 <_Scheduler_CBS_Get_remaining_budget>: int _Scheduler_CBS_Get_remaining_budget ( Scheduler_CBS_Server_id server_id, time_t *remaining_budget ) {
4000b318:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  Scheduler_CBS_Server *server;
                                      
  ISR_lock_Context      lock_context;
                                
  Thread_Control       *the_thread;
                                  

                                                                     
  if ( server_id >= _Scheduler_CBS_Maximum_servers ) {
               
4000b31c:	03 10 00 4b 	sethi  %hi(0x40012c00), %g1
                   <== NOT EXECUTED
4000b320:	c2 00 63 d0 	ld  [ %g1 + 0x3d0 ], %g1	! 40012fd0 <_Scheduler_CBS_Maximum_servers>
<== NOT EXECUTED
4000b324:	80 a0 40 18 	cmp  %g1, %i0
                                 <== NOT EXECUTED
4000b328:	08 80 00 20 	bleu  4000b3a8 <_Scheduler_CBS_Get_remaining_budget+0x90>
<== NOT EXECUTED
4000b32c:	03 10 00 56 	sethi  %hi(0x40015800), %g1
                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
  }
                                                                  

                                                                     
  server = &_Scheduler_CBS_Server_list[ server_id ];
                 

                                                                     
  if ( !server->initialized ) {
                                      
4000b330:	b1 2e 20 05 	sll  %i0, 5, %i0
                              
4000b334:	82 10 62 08 	or  %g1, 0x208, %g1
                           
4000b338:	84 00 40 18 	add  %g1, %i0, %g2
                            
4000b33c:	c6 08 a0 1c 	ldub  [ %g2 + 0x1c ], %g3
                     
4000b340:	80 a0 e0 00 	cmp  %g3, 0
                                   
4000b344:	02 80 00 1b 	be  4000b3b0 <_Scheduler_CBS_Get_remaining_budget+0x98>

4000b348:	01 00 00 00 	nop 
                                          
    return SCHEDULER_CBS_ERROR_NOSERVER;
                             
  }
                                                                  

                                                                     
  if ( server->task_id == -1 ) {
                                     
4000b34c:	d0 00 40 18 	ld  [ %g1 + %i0 ], %o0
                        
4000b350:	80 a2 3f ff 	cmp  %o0, -1
                                  
4000b354:	22 80 00 0f 	be,a   4000b390 <_Scheduler_CBS_Get_remaining_budget+0x78>

4000b358:	c4 18 a0 10 	ldd  [ %g2 + 0x10 ], %g2
                      
    *remaining_budget = server->parameters.budget;
                   
    return SCHEDULER_CBS_OK;
                                         
  }
                                                                  

                                                                     
  the_thread = _Thread_Get( server->task_id, &lock_context );
        
4000b35c:	40 00 04 38 	call  4000c43c <_Thread_Get>
                  
4000b360:	92 07 bf fc 	add  %fp, -4, %o1
                             

                                                                     
  if ( the_thread != NULL ) {
                                        
4000b364:	80 a2 20 00 	cmp  %o0, 0
                                   
4000b368:	22 80 00 0d 	be,a   4000b39c <_Scheduler_CBS_Get_remaining_budget+0x84>

4000b36c:	c0 26 40 00 	clr  [ %i1 ]
                                  
    *remaining_budget = the_thread->cpu_time_budget;
                 
4000b370:	c2 02 20 8c 	ld  [ %o0 + 0x8c ], %g1
                       <== NOT EXECUTED
4000b374:	c2 26 60 04 	st  %g1, [ %i1 + 4 ]
                          <== NOT EXECUTED
4000b378:	c0 26 40 00 	clr  [ %i1 ]
                                  <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000b37c:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b380:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b384:	01 00 00 00 	nop 
                                          
    _ISR_lock_ISR_enable( &lock_context );
                           
  } else {
                                                           
    *remaining_budget = 0;
                                           
  }
                                                                  

                                                                     
  return SCHEDULER_CBS_OK;
                                           
4000b388:	81 c7 e0 08 	ret 
                                          
4000b38c:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    *remaining_budget = server->parameters.budget;
                   
4000b390:	c4 3e 40 00 	std  %g2, [ %i1 ]
                             
    return SCHEDULER_CBS_OK;
                                         
4000b394:	81 c7 e0 08 	ret 
                                          
4000b398:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    *remaining_budget = 0;
                                           
4000b39c:	c0 26 60 04 	clr  [ %i1 + 4 ]
                              
  return SCHEDULER_CBS_OK;
                                           
4000b3a0:	81 c7 e0 08 	ret 
                                          
4000b3a4:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
4000b3a8:	81 c7 e0 08 	ret 
                                          
4000b3ac:	91 e8 3f ee 	restore  %g0, -18, %o0
                        
}
                                                                    
4000b3b0:	81 c7 e0 08 	ret 
                                          
4000b3b4:	91 e8 3f e7 	restore  %g0, -25, %o0
                        

                                                                     

4000b3b8 <_Scheduler_CBS_Get_server_id>: rtems_id task_id, Scheduler_CBS_Server_id *server_id ) { unsigned int i; for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
4000b3b8:	03 10 00 4b 	sethi  %hi(0x40012c00), %g1
                   <== NOT EXECUTED
4000b3bc:	c8 00 63 d0 	ld  [ %g1 + 0x3d0 ], %g4	! 40012fd0 <_Scheduler_CBS_Maximum_servers>
<== NOT EXECUTED
4000b3c0:	80 a1 20 00 	cmp  %g4, 0
                                   <== NOT EXECUTED
4000b3c4:	02 80 00 10 	be  4000b404 <_Scheduler_CBS_Get_server_id+0x4c>
<== NOT EXECUTED
4000b3c8:	03 10 00 56 	sethi  %hi(0x40015800), %g1
                   
4000b3cc:	84 10 20 00 	clr  %g2
                                      
4000b3d0:	82 10 62 08 	or  %g1, 0x208, %g1
                           
    if ( _Scheduler_CBS_Server_list[i].initialized &&
                
4000b3d4:	c6 08 60 1c 	ldub  [ %g1 + 0x1c ], %g3
                     
4000b3d8:	80 a0 e0 00 	cmp  %g3, 0
                                   
4000b3dc:	22 80 00 07 	be,a   4000b3f8 <_Scheduler_CBS_Get_server_id+0x40>

4000b3e0:	84 00 a0 01 	inc  %g2
                                      
4000b3e4:	c6 00 40 00 	ld  [ %g1 ], %g3
                              
4000b3e8:	80 a0 c0 08 	cmp  %g3, %o0
                                 
4000b3ec:	22 80 00 08 	be,a   4000b40c <_Scheduler_CBS_Get_server_id+0x54>

4000b3f0:	c4 22 40 00 	st  %g2, [ %o1 ]
                              
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
             
4000b3f4:	84 00 a0 01 	inc  %g2
                                      
4000b3f8:	80 a0 80 04 	cmp  %g2, %g4
                                 
4000b3fc:	12 bf ff f6 	bne  4000b3d4 <_Scheduler_CBS_Get_server_id+0x1c>

4000b400:	82 00 60 20 	add  %g1, 0x20, %g1
                           
      *server_id = i;
                                                
      return SCHEDULER_CBS_OK;
                                       
    }
                                                                
  }
                                                                  
  return SCHEDULER_CBS_ERROR_NOSERVER;
                               
}
                                                                    
4000b404:	81 c3 e0 08 	retl 
                                         
4000b408:	90 10 3f e7 	mov  -25, %o0
                                 
      return SCHEDULER_CBS_OK;
                                       
4000b40c:	81 c3 e0 08 	retl 
                                         
4000b410:	90 10 20 00 	clr  %o0
                                      

                                                                     

4000b4a0 <_Scheduler_CBS_Initialize>: int _Scheduler_CBS_Initialize(void) { return SCHEDULER_CBS_OK; }
4000b4a0:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000b4a4:	90 10 20 00 	clr  %o0
                                      

                                                                     

4000a480 <_Scheduler_CBS_Node_initialize>: const Scheduler_Control *scheduler, Scheduler_Node *node, Thread_Control *the_thread, Priority_Control priority ) {
4000a480:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  Scheduler_CBS_Node *the_node;
                                      

                                                                     
  _Scheduler_EDF_Node_initialize( scheduler, node, the_thread, priority );

4000a484:	94 10 00 1a 	mov  %i2, %o2
                                 <== NOT EXECUTED
4000a488:	96 10 00 1b 	mov  %i3, %o3
                                 <== NOT EXECUTED
4000a48c:	98 10 00 1c 	mov  %i4, %o4
                                 <== NOT EXECUTED
4000a490:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
4000a494:	40 00 00 fc 	call  4000a884 <_Scheduler_EDF_Node_initialize>
<== NOT EXECUTED
4000a498:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED

                                                                     
  the_node = _Scheduler_CBS_Node_downcast( node );
                   
  the_node->cbs_server = NULL;
                                       
4000a49c:	c0 26 60 50 	clr  [ %i1 + 0x50 ]
                           
  the_node->deadline_node = NULL;
                                    
4000a4a0:	c0 26 60 54 	clr  [ %i1 + 0x54 ]
                           
}
                                                                    
4000a4a4:	81 c7 e0 08 	ret 
                                          
4000a4a8:	81 e8 00 00 	restore 
                                      

                                                                     

4000a4ac <_Scheduler_CBS_Release_job>: Thread_Control *the_thread, Priority_Node *priority_node, uint64_t deadline, Thread_queue_Context *queue_context ) {
4000a4ac:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
4000a4b0:	c2 06 60 38 	ld  [ %i1 + 0x38 ], %g1
                       <== NOT EXECUTED
  Scheduler_CBS_Node   *node;
                                        
  Scheduler_CBS_Server *serv_info;
                                   

                                                                     
  node = _Scheduler_CBS_Thread_get_node( the_thread );
               
  serv_info = node->cbs_server;
                                      
4000a4b4:	c4 00 60 50 	ld  [ %g1 + 0x50 ], %g2
                       <== NOT EXECUTED
{
                                                                    
4000a4b8:	98 10 00 1b 	mov  %i3, %o4
                                 <== NOT EXECUTED

                                                                     
  /* Budget replenishment for the next job. */
                       
  if ( serv_info != NULL ) {
                                         
4000a4bc:	80 a0 a0 00 	cmp  %g2, 0
                                   <== NOT EXECUTED
4000a4c0:	02 80 00 04 	be  4000a4d0 <_Scheduler_CBS_Release_job+0x24>
<== NOT EXECUTED
4000a4c4:	9a 10 00 1c 	mov  %i4, %o5
                                 
    the_thread->cpu_time_budget = serv_info->parameters.budget;
      
4000a4c8:	c4 00 a0 14 	ld  [ %g2 + 0x14 ], %g2
                       
4000a4cc:	c4 26 60 8c 	st  %g2, [ %i1 + 0x8c ]
                       
  }
                                                                  

                                                                     
  node->deadline_node = priority_node;
                               

                                                                     
  _Scheduler_EDF_Release_job(
                                        
4000a4d0:	b6 10 00 0c 	mov  %o4, %i3
                                 
  node->deadline_node = priority_node;
                               
4000a4d4:	f4 20 60 54 	st  %i2, [ %g1 + 0x54 ]
                       
  _Scheduler_EDF_Release_job(
                                        
4000a4d8:	40 00 01 01 	call  4000a8dc <_Scheduler_EDF_Release_job>
   
4000a4dc:	99 e8 00 0d 	restore  %g0, %o5, %o4
                        

                                                                     

4000b508 <_Scheduler_CBS_Set_parameters>: int _Scheduler_CBS_Set_parameters ( Scheduler_CBS_Server_id server_id, Scheduler_CBS_Parameters *params ) { if ( server_id >= _Scheduler_CBS_Maximum_servers )
4000b508:	03 10 00 4b 	sethi  %hi(0x40012c00), %g1
                   <== NOT EXECUTED
4000b50c:	c2 00 63 d0 	ld  [ %g1 + 0x3d0 ], %g1	! 40012fd0 <_Scheduler_CBS_Maximum_servers>
<== NOT EXECUTED
4000b510:	80 a0 40 08 	cmp  %g1, %o0
                                 <== NOT EXECUTED
4000b514:	08 80 00 1e 	bleu  4000b58c <_Scheduler_CBS_Set_parameters+0x84>
<== NOT EXECUTED
4000b518:	01 00 00 00 	nop 
                                          
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    

                                                                     
  if ( params->budget <= 0 ||
                                        
4000b51c:	c2 02 60 08 	ld  [ %o1 + 8 ], %g1
                          
4000b520:	80 a0 60 00 	cmp  %g1, 0
                                   
4000b524:	04 80 00 1e 	ble  4000b59c <_Scheduler_CBS_Set_parameters+0x94>
<== ALWAYS TAKEN
4000b528:	01 00 00 00 	nop 
                                          
4000b52c:	c2 02 40 00 	ld  [ %o1 ], %g1
                              <== NOT EXECUTED
4000b530:	80 a0 60 00 	cmp  %g1, 0
                                   
4000b534:	04 80 00 10 	ble  4000b574 <_Scheduler_CBS_Set_parameters+0x6c>
<== ALWAYS TAKEN
4000b538:	01 00 00 00 	nop 
                                          
       params->deadline <= 0 ||
                                      
       params->budget >= SCHEDULER_EDF_PRIO_MSB ||
                   
       params->deadline >= SCHEDULER_EDF_PRIO_MSB )
                  
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    

                                                                     
  if ( !_Scheduler_CBS_Server_list[server_id].initialized )
          
4000b53c:	91 2a 20 05 	sll  %o0, 5, %o0
                              <== NOT EXECUTED
4000b540:	03 10 00 56 	sethi  %hi(0x40015800), %g1
                   
4000b544:	82 10 62 08 	or  %g1, 0x208, %g1	! 40015a08 <_Scheduler_CBS_Server_list>

4000b548:	82 00 40 08 	add  %g1, %o0, %g1
                            
4000b54c:	c4 08 60 1c 	ldub  [ %g1 + 0x1c ], %g2
                     
4000b550:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000b554:	02 80 00 10 	be  4000b594 <_Scheduler_CBS_Set_parameters+0x8c>

4000b558:	01 00 00 00 	nop 
                                          
    return SCHEDULER_CBS_ERROR_NOSERVER;
                             

                                                                     
  _Scheduler_CBS_Server_list[server_id].parameters = *params;
        
4000b55c:	c4 1a 40 00 	ldd  [ %o1 ], %g2
                             
4000b560:	c4 38 60 08 	std  %g2, [ %g1 + 8 ]
                         
  return SCHEDULER_CBS_OK;
                                           
4000b564:	90 10 20 00 	clr  %o0
                                      
  _Scheduler_CBS_Server_list[server_id].parameters = *params;
        
4000b568:	c4 1a 60 08 	ldd  [ %o1 + 8 ], %g2
                         
  return SCHEDULER_CBS_OK;
                                           
4000b56c:	81 c3 e0 08 	retl 
                                         
4000b570:	c4 38 60 10 	std  %g2, [ %g1 + 0x10 ]
                      
  if ( params->budget <= 0 ||
                                        
4000b574:	12 80 00 06 	bne  4000b58c <_Scheduler_CBS_Set_parameters+0x84>

4000b578:	01 00 00 00 	nop 
                                          
4000b57c:	c2 02 60 04 	ld  [ %o1 + 4 ], %g1
                          
4000b580:	80 a0 60 00 	cmp  %g1, 0
                                   
4000b584:	32 bf ff ef 	bne,a   4000b540 <_Scheduler_CBS_Set_parameters+0x38>
<== ALWAYS TAKEN
4000b588:	91 2a 20 05 	sll  %o0, 5, %o0
                              
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
                    
4000b58c:	81 c3 e0 08 	retl 
                                         
4000b590:	90 10 3f ee 	mov  -18, %o0
                                 
}
                                                                    
4000b594:	81 c3 e0 08 	retl 
                                         
4000b598:	90 10 3f e7 	mov  -25, %o0
                                 
  if ( params->budget <= 0 ||
                                        
4000b59c:	12 bf ff fc 	bne  4000b58c <_Scheduler_CBS_Set_parameters+0x84>

4000b5a0:	01 00 00 00 	nop 
                                          
4000b5a4:	c2 02 60 0c 	ld  [ %o1 + 0xc ], %g1
                        
4000b5a8:	80 a0 60 00 	cmp  %g1, 0
                                   
4000b5ac:	32 bf ff e1 	bne,a   4000b530 <_Scheduler_CBS_Set_parameters+0x28>
<== ALWAYS TAKEN
4000b5b0:	c2 02 40 00 	ld  [ %o1 ], %g1
                              
4000b5b4:	30 bf ff f6 	b,a   4000b58c <_Scheduler_CBS_Set_parameters+0x84>
<== NOT EXECUTED

                                                                     

4000a50c <_Scheduler_CBS_Unblock>: void _Scheduler_CBS_Unblock( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ) {
4000a50c:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  Scheduler_CBS_Node   *the_node;
                                    
  Scheduler_CBS_Server *serv_info;
                                   
  Priority_Control      priority;
                                    

                                                                     
  the_node = _Scheduler_CBS_Node_downcast( node );
                   
  serv_info = the_node->cbs_server;
                                  
4000a510:	c2 06 a0 50 	ld  [ %i2 + 0x50 ], %g1
                       <== NOT EXECUTED
  priority = _Scheduler_Node_get_priority( &the_node->Base.Base );
   
  priority = SCHEDULER_PRIORITY_PURIFY( priority );
                  
4000a514:	c8 06 a0 34 	ld  [ %i2 + 0x34 ], %g4
                       <== NOT EXECUTED
4000a518:	c4 06 a0 30 	ld  [ %i2 + 0x30 ], %g2
                       <== NOT EXECUTED
   * Late unblock rule for deadline-driven tasks. The remaining time to

   * deadline must be sufficient to serve the remaining computation time

   * without increased utilization of this task. It might cause a deadline

   * miss of another task.
                                           
   */
                                                                
  if ( serv_info != NULL && ( priority & SCHEDULER_EDF_PRIO_MSB ) == 0 ) {

4000a51c:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000a520:	02 80 00 1c 	be  4000a590 <_Scheduler_CBS_Unblock+0x84>
    <== NOT EXECUTED
4000a524:	86 09 3f fe 	and  %g4, -2, %g3
                             
4000a528:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000a52c:	06 80 00 19 	bl  4000a590 <_Scheduler_CBS_Unblock+0x84>
    
4000a530:	09 10 00 50 	sethi  %hi(0x40014000), %g4
                   
    time_t deadline = serv_info->parameters.deadline;
                
    time_t budget = serv_info->parameters.budget;
                    
    uint32_t deadline_left = the_thread->cpu_time_budget;
            
    Priority_Control budget_left = priority - _Watchdog_Ticks_since_boot;


                                                                     
    if ( deadline * budget_left > budget * deadline_left ) {
         
4000a534:	fa 00 60 08 	ld  [ %g1 + 8 ], %i5
                          
    Priority_Control budget_left = priority - _Watchdog_Ticks_since_boot;

4000a538:	c8 01 21 dc 	ld  [ %g4 + 0x1dc ], %g4
                      
4000a53c:	9a a0 c0 04 	subcc  %g3, %g4, %o5
                          
    if ( deadline * budget_left > budget * deadline_left ) {
         
4000a540:	f6 06 60 8c 	ld  [ %i1 + 0x8c ], %i3
                       
    Priority_Control budget_left = priority - _Watchdog_Ticks_since_boot;

4000a544:	98 60 a0 00 	subx  %g2, 0, %o4
                             
    if ( deadline * budget_left > budget * deadline_left ) {
         
4000a548:	f8 00 60 14 	ld  [ %g1 + 0x14 ], %i4
                       
4000a54c:	c4 00 60 0c 	ld  [ %g1 + 0xc ], %g2
                        
4000a550:	ba 5f 40 0d 	smul  %i5, %o5, %i5
                           
4000a554:	c2 00 60 10 	ld  [ %g1 + 0x10 ], %g1
                       
4000a558:	88 58 80 0c 	smul  %g2, %o4, %g4
                           
4000a55c:	82 58 40 1b 	smul  %g1, %i3, %g1
                           
4000a560:	88 01 00 1d 	add  %g4, %i5, %g4
                            
4000a564:	86 50 80 0d 	umul  %g2, %o5, %g3
                           
4000a568:	85 40 00 00 	rd  %y, %g2
                                   
4000a56c:	ba 57 00 1b 	umul  %i4, %i3, %i5
                           
4000a570:	b9 40 00 00 	rd  %y, %i4
                                   
4000a574:	84 01 00 02 	add  %g4, %g2, %g2
                            
4000a578:	b8 00 40 1c 	add  %g1, %i4, %i4
                            
4000a57c:	80 a0 80 1c 	cmp  %g2, %i4
                                 
4000a580:	38 80 00 0d 	bgu,a   4000a5b4 <_Scheduler_CBS_Unblock+0xa8>
<== NEVER TAKEN
4000a584:	d4 06 a0 54 	ld  [ %i2 + 0x54 ], %o2
                       <== NOT EXECUTED
4000a588:	02 80 00 08 	be  4000a5a8 <_Scheduler_CBS_Unblock+0x9c>
    <== ALWAYS TAKEN
4000a58c:	80 a0 c0 1d 	cmp  %g3, %i5
                                 
        &queue_context
                                               
      );
                                                             
    }
                                                                
  }
                                                                  

                                                                     
  _Scheduler_EDF_Unblock( scheduler, the_thread, &the_node->Base.Base );

4000a590:	94 10 00 1a 	mov  %i2, %o2
                                 
4000a594:	92 10 00 19 	mov  %i1, %o1
                                 
4000a598:	40 00 01 0c 	call  4000a9c8 <_Scheduler_EDF_Unblock>
       
4000a59c:	90 10 00 18 	mov  %i0, %o0
                                 
}
                                                                    
4000a5a0:	81 c7 e0 08 	ret 
                                          
4000a5a4:	81 e8 00 00 	restore 
                                      
    if ( deadline * budget_left > budget * deadline_left ) {
         
4000a5a8:	08 bf ff fb 	bleu  4000a594 <_Scheduler_CBS_Unblock+0x88>
  <== NEVER TAKEN
4000a5ac:	94 10 00 1a 	mov  %i2, %o2
                                 
      _Scheduler_CBS_Cancel_job(
                                     
4000a5b0:	d4 06 a0 54 	ld  [ %i2 + 0x54 ], %o2
                       
4000a5b4:	92 10 00 19 	mov  %i1, %o1
                                 
4000a5b8:	90 10 00 18 	mov  %i0, %o0
                                 

                                                                     
RTEMS_INLINE_ROUTINE void _Thread_queue_Context_clear_priority_updates(

  Thread_queue_Context *queue_context
                                
)
                                                                    
{
                                                                    
  queue_context->Priority.update_count = 0;
                          
4000a5bc:	c0 27 bf f0 	clr  [ %fp + -16 ]
                            
4000a5c0:	7f ff ff c8 	call  4000a4e0 <_Scheduler_CBS_Cancel_job>
    
4000a5c4:	96 07 bf dc 	add  %fp, -36, %o3
                            
  _Scheduler_EDF_Unblock( scheduler, the_thread, &the_node->Base.Base );

4000a5c8:	94 10 00 1a 	mov  %i2, %o2
                                 
4000a5cc:	92 10 00 19 	mov  %i1, %o1
                                 
4000a5d0:	40 00 00 fe 	call  4000a9c8 <_Scheduler_EDF_Unblock>
       
4000a5d4:	90 10 00 18 	mov  %i0, %o0
                                 
}
                                                                    
4000a5d8:	81 c7 e0 08 	ret 
                                          
4000a5dc:	81 e8 00 00 	restore 
                                      

                                                                     

4000a6b0 <_Scheduler_EDF_Block>: void _Scheduler_EDF_Block( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ) {
4000a6b0:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Scheduler_EDF_Extract(
                    
  Scheduler_EDF_Context *context,
                                    
  Scheduler_EDF_Node    *node
                                        
)
                                                                    
{
                                                                    
  _RBTree_Extract( &context->Ready, &node->Node );
                   
4000a6b4:	d0 06 00 00 	ld  [ %i0 ], %o0
                              <== NOT EXECUTED
4000a6b8:	7f ff fd 74 	call  40009c88 <_RBTree_Extract>
              <== NOT EXECUTED
4000a6bc:	92 06 a0 38 	add  %i2, 0x38, %o1
                           <== NOT EXECUTED
{
                                                                    
  ( *extract )( scheduler, the_thread, node );
                       

                                                                     
  /* TODO: flash critical section? */
                                

                                                                     
  if ( _Thread_Is_executing( the_thread ) || _Thread_Is_heir( the_thread ) ) {

4000a6c0:	c4 01 a0 20 	ld  [ %g6 + 0x20 ], %g2
                       
4000a6c4:	80 a6 40 02 	cmp  %i1, %g2
                                 
4000a6c8:	02 80 00 08 	be  4000a6e8 <_Scheduler_EDF_Block+0x38>
      
4000a6cc:	01 00 00 00 	nop 
                                          
4000a6d0:	c2 01 a0 24 	ld  [ %g6 + 0x24 ], %g1
                       
4000a6d4:	80 a6 40 01 	cmp  %i1, %g1
                                 
4000a6d8:	02 80 00 04 	be  4000a6e8 <_Scheduler_EDF_Block+0x38>
      <== NEVER TAKEN
4000a6dc:	01 00 00 00 	nop 
                                          
    the_thread,
                                                      
    node,
                                                            
    _Scheduler_EDF_Extract_body,
                                     
    _Scheduler_EDF_Schedule_body
                                     
  );
                                                                 
}
                                                                    
4000a6e0:	81 c7 e0 08 	ret 
                                          
4000a6e4:	81 e8 00 00 	restore 
                                      
  Scheduler_EDF_Node    *node;
                                       

                                                                     
  (void) the_thread;
                                                 

                                                                     
  context = _Scheduler_EDF_Get_context( scheduler );
                 
  first = _RBTree_Minimum( &context->Ready );
                        
4000a6e8:	40 00 12 7d 	call  4000f0dc <_RBTree_Minimum>
              
4000a6ec:	d0 06 00 00 	ld  [ %i0 ], %o0
                              
  node = RTEMS_CONTAINER_OF( first, Scheduler_EDF_Node, Node );
      

                                                                     
  _Scheduler_Update_heir( node->Base.owner, force_dispatch );
        
4000a6f0:	f6 02 3f c8 	ld  [ %o0 + -56 ], %i3
                        
RTEMS_INLINE_ROUTINE void _Scheduler_Update_heir(
                    
  Thread_Control *new_heir,
                                          
  bool            force_dispatch
                                     
)
                                                                    
{
                                                                    
  Thread_Control *heir = _Thread_Heir;
                               
4000a6f4:	fa 01 a0 24 	ld  [ %g6 + 0x24 ], %i5
                       

                                                                     
  if ( heir != new_heir && ( heir->is_preemptible || force_dispatch ) ) {

4000a6f8:	80 a6 c0 1d 	cmp  %i3, %i5
                                 
4000a6fc:	02 bf ff f9 	be  4000a6e0 <_Scheduler_EDF_Block+0x30>
      <== NEVER TAKEN
4000a700:	b8 10 00 06 	mov  %g6, %i4
                                 
  *time = _Timecounter_Sbinuptime();
                                 
4000a704:	7f ff fa 04 	call  40008f14 <_Timecounter_Sbinuptime>
      
4000a708:	e0 19 a0 28 	ldd  [ %g6 + 0x28 ], %l0
                      
4000a70c:	d0 3f 20 28 	std  %o0, [ %i4 + 0x28 ]
                      
  const Timestamp_Control *_start,
                                   
  const Timestamp_Control *_end,
                                     
  Timestamp_Control       *_result
                                   
)
                                                                    
{
                                                                    
  *_result = *_end - *_start;
                                        
4000a710:	b2 a2 40 11 	subcc  %o1, %l1, %i1
                          
  *_time += *_add;
                                                   
4000a714:	d8 1f 60 98 	ldd  [ %i5 + 0x98 ], %o4
                      
  *_result = *_end - *_start;
                                        
4000a718:	b0 62 00 10 	subx  %o0, %l0, %i0
                           
  *_time += *_add;
                                                   
4000a71c:	86 83 40 19 	addcc  %o5, %i1, %g3
                          
4000a720:	84 43 00 18 	addx  %o4, %i0, %g2
                           
4000a724:	c4 3f 60 98 	std  %g2, [ %i5 + 0x98 ]
                      
    heir->Scheduler.state = THREAD_SCHEDULER_BLOCKED;
                
    new_heir->Scheduler.state = THREAD_SCHEDULER_SCHEDULED;
          
#endif
                                                               
    _Thread_Update_CPU_time_used( heir, _Thread_Get_CPU( heir ) );
   
    _Thread_Heir = new_heir;
                                         
    _Thread_Dispatch_necessary = true;
                               
4000a728:	84 10 20 01 	mov  1, %g2
                                   
    _Thread_Heir = new_heir;
                                         
4000a72c:	f6 21 a0 24 	st  %i3, [ %g6 + 0x24 ]
                       
    _Thread_Dispatch_necessary = true;
                               
4000a730:	c4 29 a0 1c 	stb  %g2, [ %g6 + 0x1c ]
                      
4000a734:	81 c7 e0 08 	ret 
                                          
4000a738:	81 e8 00 00 	restore 
                                      

                                                                     

4000a934 <_Scheduler_EDF_Cancel_job>: const Scheduler_Control *scheduler, Thread_Control *the_thread, Priority_Node *priority_node, Thread_queue_Context *queue_context ) {
4000a934:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  (void) scheduler;
                                                  

                                                                     
  _Thread_Wait_acquire_critical( the_thread, queue_context );
        

                                                                     
  _Thread_Priority_remove( the_thread, priority_node, queue_context );

4000a938:	94 10 00 1b 	mov  %i3, %o2
                                 <== NOT EXECUTED
4000a93c:	92 10 00 1a 	mov  %i2, %o1
                                 <== NOT EXECUTED
4000a940:	40 00 01 86 	call  4000af58 <_Thread_Priority_remove>
      <== NOT EXECUTED
4000a944:	90 10 00 19 	mov  %i1, %o0
                                 <== NOT EXECUTED
  RB_COLOR( the_node, Node ) = -1;
                                   
4000a948:	82 10 3f ff 	mov  -1, %g1
                                  
4000a94c:	c2 26 a0 0c 	st  %g1, [ %i2 + 0xc ]
                        
  _Priority_Node_set_inactive( priority_node );
                      

                                                                     
  _Thread_Wait_release_critical( the_thread, queue_context );
        
}
                                                                    
4000a950:	81 c7 e0 08 	ret 
                                          
4000a954:	81 e8 00 00 	restore 
                                      

                                                                     

4000a89c <_Scheduler_EDF_Initialize>: RB_INIT( the_rbtree );
4000a89c:	c2 02 00 00 	ld  [ %o0 ], %g1
                              <== NOT EXECUTED
{
                                                                    
  Scheduler_EDF_Context *context =
                                   
    _Scheduler_EDF_Get_context( scheduler );
                         

                                                                     
  _RBTree_Initialize_empty( &context->Ready );
                       
}
                                                                    
4000a8a0:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000a8a4:	c0 20 40 00 	clr  [ %g1 ]
                                  

                                                                     

4000a8a8 <_Scheduler_EDF_Map_priority>: Priority_Control _Scheduler_EDF_Map_priority( const Scheduler_Control *scheduler, Priority_Control priority ) { return SCHEDULER_EDF_PRIO_MSB | SCHEDULER_PRIORITY_MAP( priority );
4000a8a8:	83 2a 60 01 	sll  %o1, 1, %g1
                              <== NOT EXECUTED
4000a8ac:	85 32 a0 1f 	srl  %o2, 0x1f, %g2
                           <== NOT EXECUTED
}
                                                                    
4000a8b0:	93 2a a0 01 	sll  %o2, 1, %o1
                              <== NOT EXECUTED
  return SCHEDULER_EDF_PRIO_MSB | SCHEDULER_PRIORITY_MAP( priority );

4000a8b4:	82 10 80 01 	or  %g2, %g1, %g1
                             <== NOT EXECUTED
}
                                                                    
4000a8b8:	11 20 00 00 	sethi  %hi(0x80000000), %o0
                   <== NOT EXECUTED
4000a8bc:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000a8c0:	90 10 40 08 	or  %g1, %o0, %o0
                             

                                                                     

4000a884 <_Scheduler_EDF_Node_initialize>: const Scheduler_Control *scheduler, Scheduler_Node *node, Thread_Control *the_thread, Priority_Control priority ) {
4000a884:	84 10 00 0b 	mov  %o3, %g2
                                 <== NOT EXECUTED
4000a888:	86 10 00 0c 	mov  %o4, %g3
                                 <== NOT EXECUTED
  Scheduler_Node                  *node,
                             
  Thread_Control                  *the_thread,
                       
  Priority_Control                 priority
                          
)
                                                                    
{
                                                                    
  node->owner = the_thread;
                                          
4000a88c:	d4 22 40 00 	st  %o2, [ %o1 ]
                              <== NOT EXECUTED

                                                                     
  node->Priority.value = priority;
                                   
4000a890:	c4 3a 60 30 	std  %g2, [ %o1 + 0x30 ]
                      <== NOT EXECUTED
  _Scheduler_Node_do_initialize( scheduler, node, the_thread, priority );


                                                                     
  the_node = _Scheduler_EDF_Node_downcast( node );
                   
  _RBTree_Initialize_node( &the_node->Node );
                        
  the_node->priority = priority;
                                     
}
                                                                    
4000a894:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000a898:	c4 3a 60 48 	std  %g2, [ %o1 + 0x48 ]
                      

                                                                     

4000a8dc <_Scheduler_EDF_Release_job>: * There is no integer overflow problem here due to the * SCHEDULER_PRIORITY_MAP(). The deadline is in clock ticks. With the * minimum clock tick interval of 1us, the uptime is limited to about 146235 * years. */ _Priority_Node_set_priority(
4000a8dc:	85 33 20 1f 	srl  %o4, 0x1f, %g2
                           <== NOT EXECUTED
4000a8e0:	97 2a e0 01 	sll  %o3, 1, %o3
                              <== NOT EXECUTED
4000a8e4:	99 2b 20 01 	sll  %o4, 1, %o4
                              <== NOT EXECUTED
4000a8e8:	96 12 c0 02 	or  %o3, %g2, %o3
                             <== NOT EXECUTED
4000a8ec:	d8 22 a0 14 	st  %o4, [ %o2 + 0x14 ]
                       <== NOT EXECUTED
{
                                                                    
4000a8f0:	82 10 00 0a 	mov  %o2, %g1
                                 <== NOT EXECUTED
  _Priority_Node_set_priority(
                                       
4000a8f4:	d6 22 a0 10 	st  %o3, [ %o2 + 0x10 ]
                       <== NOT EXECUTED
    priority_node,
                                                   
    SCHEDULER_PRIORITY_MAP( deadline )
                               
  );
                                                                 

                                                                     
  if ( _Priority_Node_is_active( priority_node ) ) {
                 
4000a8f8:	c4 02 a0 0c 	ld  [ %o2 + 0xc ], %g2
                        <== NOT EXECUTED
4000a8fc:	80 a0 bf ff 	cmp  %g2, -1
                                  <== NOT EXECUTED
4000a900:	02 80 00 08 	be  4000a920 <_Scheduler_EDF_Release_job+0x44>
<== NOT EXECUTED
4000a904:	90 10 00 09 	mov  %o1, %o0
                                 
    _Thread_Priority_changed(
                                        
4000a908:	96 10 00 0d 	mov  %o5, %o3
                                 
4000a90c:	94 10 20 00 	clr  %o2
                                      
4000a910:	92 10 00 01 	mov  %g1, %o1
                                 
4000a914:	82 13 c0 00 	mov  %o7, %g1
                                 
4000a918:	40 00 01 95 	call  4000af6c <_Thread_Priority_changed>
     
4000a91c:	9e 10 40 00 	mov  %g1, %o7
                                 
      priority_node,
                                                 
      false,
                                                         
      queue_context
                                                  
    );
                                                               
  } else {
                                                           
    _Thread_Priority_add( the_thread, priority_node, queue_context );

4000a920:	94 10 00 0d 	mov  %o5, %o2
                                 
4000a924:	92 10 00 01 	mov  %g1, %o1
                                 
4000a928:	82 13 c0 00 	mov  %o7, %g1
                                 
4000a92c:	40 00 01 86 	call  4000af44 <_Thread_Priority_add>
         
4000a930:	9e 10 40 00 	mov  %g1, %o7
                                 

                                                                     

4000a958 <_Scheduler_EDF_Schedule>: void _Scheduler_EDF_Schedule( const Scheduler_Control *scheduler, Thread_Control *the_thread ) {
4000a958:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  first = _RBTree_Minimum( &context->Ready );
                        
4000a95c:	40 00 11 e0 	call  4000f0dc <_RBTree_Minimum>
              <== NOT EXECUTED
4000a960:	d0 06 00 00 	ld  [ %i0 ], %o0
                              <== NOT EXECUTED
  _Scheduler_Update_heir( node->Base.owner, force_dispatch );
        
4000a964:	f6 02 3f c8 	ld  [ %o0 + -56 ], %i3
                        
  Thread_Control *heir = _Thread_Heir;
                               
4000a968:	fa 01 a0 24 	ld  [ %g6 + 0x24 ], %i5
                       
  if ( heir != new_heir && ( heir->is_preemptible || force_dispatch ) ) {

4000a96c:	80 a6 c0 1d 	cmp  %i3, %i5
                                 
4000a970:	02 80 00 06 	be  4000a988 <_Scheduler_EDF_Schedule+0x30>
   <== ALWAYS TAKEN
4000a974:	b8 10 00 06 	mov  %g6, %i4
                                 
4000a978:	c2 0f 60 89 	ldub  [ %i5 + 0x89 ], %g1
                     <== NOT EXECUTED
4000a97c:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000a980:	12 80 00 04 	bne  4000a990 <_Scheduler_EDF_Schedule+0x38>
  <== NOT EXECUTED
4000a984:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
  _Scheduler_EDF_Schedule_body( scheduler, the_thread, false );
      
}
                                                                    
4000a988:	81 c7 e0 08 	ret 
                                          
4000a98c:	81 e8 00 00 	restore 
                                      
4000a990:	7f ff f9 61 	call  40008f14 <_Timecounter_Sbinuptime>
      <== NOT EXECUTED
4000a994:	e0 19 a0 28 	ldd  [ %g6 + 0x28 ], %l0
                      <== NOT EXECUTED
4000a998:	d0 3f 20 28 	std  %o0, [ %i4 + 0x28 ]
                      <== NOT EXECUTED
  *_result = *_end - *_start;
                                        
4000a99c:	b2 a2 40 11 	subcc  %o1, %l1, %i1
                          <== NOT EXECUTED
  *_time += *_add;
                                                   
4000a9a0:	d8 1f 60 98 	ldd  [ %i5 + 0x98 ], %o4
                      <== NOT EXECUTED
  *_result = *_end - *_start;
                                        
4000a9a4:	b0 62 00 10 	subx  %o0, %l0, %i0
                           <== NOT EXECUTED
  *_time += *_add;
                                                   
4000a9a8:	86 83 40 19 	addcc  %o5, %i1, %g3
                          <== NOT EXECUTED
4000a9ac:	84 43 00 18 	addx  %o4, %i0, %g2
                           <== NOT EXECUTED
4000a9b0:	c4 3f 60 98 	std  %g2, [ %i5 + 0x98 ]
                      <== NOT EXECUTED
    _Thread_Dispatch_necessary = true;
                               
4000a9b4:	84 10 20 01 	mov  1, %g2
                                   <== NOT EXECUTED
    _Thread_Heir = new_heir;
                                         
4000a9b8:	f6 21 a0 24 	st  %i3, [ %g6 + 0x24 ]
                       <== NOT EXECUTED
    _Thread_Dispatch_necessary = true;
                               
4000a9bc:	c4 29 a0 1c 	stb  %g2, [ %g6 + 0x1c ]
                      <== NOT EXECUTED
4000a9c0:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000a9c4:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

4000a9c8 <_Scheduler_EDF_Unblock>: void _Scheduler_EDF_Unblock( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ) {
4000a9c8:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  Priority_Control       insert_priority;
                            

                                                                     
  context = _Scheduler_EDF_Get_context( scheduler );
                 
  the_node = _Scheduler_EDF_Node_downcast( node );
                   
  priority = _Scheduler_Node_get_priority( &the_node->Base );
        
  priority = SCHEDULER_PRIORITY_PURIFY( priority );
                  
4000a9cc:	fa 06 a0 30 	ld  [ %i2 + 0x30 ], %i5
                       <== NOT EXECUTED
4000a9d0:	f8 06 a0 34 	ld  [ %i2 + 0x34 ], %i4
                       <== NOT EXECUTED
4000a9d4:	d0 06 00 00 	ld  [ %i0 ], %o0
                              <== NOT EXECUTED
4000a9d8:	b8 0f 3f fe 	and  %i4, -2, %i4
                             <== NOT EXECUTED
  insert_priority = SCHEDULER_PRIORITY_APPEND( priority );
           

                                                                     
  the_node->priority = priority;
                                     
4000a9dc:	fa 26 a0 48 	st  %i5, [ %i2 + 0x48 ]
                       <== NOT EXECUTED
  link = _RBTree_Root_reference( the_rbtree );
                       
4000a9e0:	84 10 00 08 	mov  %o0, %g2
                                 <== NOT EXECUTED
4000a9e4:	f8 26 a0 4c 	st  %i4, [ %i2 + 0x4c ]
                       <== NOT EXECUTED
  insert_priority = SCHEDULER_PRIORITY_APPEND( priority );
           
4000a9e8:	b6 17 20 01 	or  %i4, 1, %i3
                               <== NOT EXECUTED
  while ( *link != NULL ) {
                                          
4000a9ec:	c2 00 80 00 	ld  [ %g2 ], %g1
                              <== NOT EXECUTED
  _RBTree_Insert_inline(
                                             
4000a9f0:	88 06 a0 38 	add  %i2, 0x38, %g4
                           <== NOT EXECUTED
4000a9f4:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000a9f8:	02 80 00 12 	be  4000aa40 <_Scheduler_EDF_Unblock+0x78>
    <== NOT EXECUTED
4000a9fc:	86 10 20 00 	clr  %g3
                                      
    if ( ( *less )( key, parent ) ) {
                                
4000aa00:	c4 00 60 10 	ld  [ %g1 + 0x10 ], %g2
                       
4000aa04:	80 a0 80 1d 	cmp  %g2, %i5
                                 
4000aa08:	0a 80 00 09 	bcs  4000aa2c <_Scheduler_EDF_Unblock+0x64>
   
4000aa0c:	84 00 60 04 	add  %g1, 4, %g2
                              
4000aa10:	12 80 00 1e 	bne  4000aa88 <_Scheduler_EDF_Unblock+0xc0>
   
4000aa14:	84 10 00 01 	mov  %g1, %g2
                                 
4000aa18:	c4 00 60 14 	ld  [ %g1 + 0x14 ], %g2
                       
4000aa1c:	80 a0 80 1b 	cmp  %g2, %i3
                                 
4000aa20:	1a 80 00 1a 	bcc  4000aa88 <_Scheduler_EDF_Unblock+0xc0>
   
4000aa24:	84 10 00 01 	mov  %g1, %g2
                                 
  return &RB_RIGHT( the_node, Node );
                                
4000aa28:	84 00 60 04 	add  %g1, 4, %g2
                              
{
                                                                    
4000aa2c:	86 10 00 01 	mov  %g1, %g3
                                 
  while ( *link != NULL ) {
                                          
4000aa30:	c2 00 80 00 	ld  [ %g2 ], %g1
                              
4000aa34:	80 a0 60 00 	cmp  %g1, 0
                                   
4000aa38:	32 bf ff f3 	bne,a   4000aa04 <_Scheduler_EDF_Unblock+0x3c>

4000aa3c:	c4 00 60 10 	ld  [ %g1 + 0x10 ], %g2
                       
  RB_SET( child, parent, Node );
                                     
4000aa40:	c6 26 a0 40 	st  %g3, [ %i2 + 0x40 ]
                       
4000aa44:	82 10 20 01 	mov  1, %g1
                                   
4000aa48:	c0 26 a0 3c 	clr  [ %i2 + 0x3c ]
                           
  _RBTree_Insert_color( the_rbtree, the_node );
                      
4000aa4c:	92 10 00 04 	mov  %g4, %o1
                                 
  RB_SET( child, parent, Node );
                                     
4000aa50:	c2 26 a0 44 	st  %g1, [ %i2 + 0x44 ]
                       
4000aa54:	c0 26 a0 38 	clr  [ %i2 + 0x38 ]
                           
  _RBTree_Insert_color( the_rbtree, the_node );
                      
4000aa58:	7f ff fd ee 	call  4000a210 <_RBTree_Insert_color>
         
4000aa5c:	c8 20 80 00 	st  %g4, [ %g2 ]
                              
   *    a context switch.
                                            
   *  Pseudo-ISR case:
                                               
   *    Even if the thread isn't preemptible, if the new heir is
     
   *    a pseudo-ISR system task, we need to do a context switch.
    
   */
                                                                
  if ( priority < _Thread_Get_priority( _Thread_Heir ) ) {
           
4000aa60:	f6 01 a0 24 	ld  [ %g6 + 0x24 ], %i3
                       
4000aa64:	c2 06 e0 38 	ld  [ %i3 + 0x38 ], %g1
                       
4000aa68:	c4 00 60 18 	ld  [ %g1 + 0x18 ], %g2
                       
4000aa6c:	80 a0 80 1d 	cmp  %g2, %i5
                                 
4000aa70:	18 80 00 0b 	bgu  4000aa9c <_Scheduler_EDF_Unblock+0xd4>
   
4000aa74:	b4 10 00 06 	mov  %g6, %i2
                                 
4000aa78:	22 80 00 06 	be,a   4000aa90 <_Scheduler_EDF_Unblock+0xc8>
 
4000aa7c:	c2 00 60 1c 	ld  [ %g1 + 0x1c ], %g1
                       
    _Scheduler_Update_heir(
                                          
      the_thread,
                                                    
      priority == ( SCHEDULER_EDF_PRIO_MSB | PRIORITY_PSEUDO_ISR )
   
    );
                                                               
  }
                                                                  
}
                                                                    
4000aa80:	81 c7 e0 08 	ret 
                                          
4000aa84:	81 e8 00 00 	restore 
                                      
{
                                                                    
4000aa88:	10 bf ff ea 	b  4000aa30 <_Scheduler_EDF_Unblock+0x68>
     
4000aa8c:	86 10 00 01 	mov  %g1, %g3
                                 
  if ( priority < _Thread_Get_priority( _Thread_Heir ) ) {
           
4000aa90:	80 a0 40 1c 	cmp  %g1, %i4
                                 
4000aa94:	08 80 00 19 	bleu  4000aaf8 <_Scheduler_EDF_Unblock+0x130>
 
4000aa98:	01 00 00 00 	nop 
                                          
  if ( heir != new_heir && ( heir->is_preemptible || force_dispatch ) ) {

4000aa9c:	80 a6 c0 19 	cmp  %i3, %i1
                                 
4000aaa0:	02 bf ff f8 	be  4000aa80 <_Scheduler_EDF_Unblock+0xb8>
    <== NEVER TAKEN
4000aaa4:	03 20 00 00 	sethi  %hi(0x80000000), %g1
                   
    _Scheduler_Update_heir(
                                          
4000aaa8:	ba 1f 40 01 	xor  %i5, %g1, %i5
                            
4000aaac:	80 97 40 1c 	orcc  %i5, %i4, %g0
                           
4000aab0:	02 80 00 06 	be  4000aac8 <_Scheduler_EDF_Unblock+0x100>
   <== NEVER TAKEN
4000aab4:	01 00 00 00 	nop 
                                          
4000aab8:	c2 0e e0 89 	ldub  [ %i3 + 0x89 ], %g1
                     
4000aabc:	80 a0 60 00 	cmp  %g1, 0
                                   
4000aac0:	02 80 00 0e 	be  4000aaf8 <_Scheduler_EDF_Unblock+0x130>
   
4000aac4:	01 00 00 00 	nop 
                                          
4000aac8:	7f ff f9 13 	call  40008f14 <_Timecounter_Sbinuptime>
      
4000aacc:	e0 1e a0 28 	ldd  [ %i2 + 0x28 ], %l0
                      
4000aad0:	d0 3e a0 28 	std  %o0, [ %i2 + 0x28 ]
                      
  *_result = *_end - *_start;
                                        
4000aad4:	ba a2 40 11 	subcc  %o1, %l1, %i5
                          
  *_time += *_add;
                                                   
4000aad8:	d8 1e e0 98 	ldd  [ %i3 + 0x98 ], %o4
                      
  *_result = *_end - *_start;
                                        
4000aadc:	b8 62 00 10 	subx  %o0, %l0, %i4
                           
  *_time += *_add;
                                                   
4000aae0:	86 83 40 1d 	addcc  %o5, %i5, %g3
                          
4000aae4:	84 43 00 1c 	addx  %o4, %i4, %g2
                           
4000aae8:	c4 3e e0 98 	std  %g2, [ %i3 + 0x98 ]
                      
    _Thread_Dispatch_necessary = true;
                               
4000aaec:	84 10 20 01 	mov  1, %g2
                                   
    _Thread_Heir = new_heir;
                                         
4000aaf0:	f2 21 a0 24 	st  %i1, [ %g6 + 0x24 ]
                       
    _Thread_Dispatch_necessary = true;
                               
4000aaf4:	c4 29 a0 1c 	stb  %g2, [ %g6 + 0x1c ]
                      
}
                                                                    
4000aaf8:	81 c7 e0 08 	ret 
                                          
4000aafc:	81 e8 00 00 	restore 
                                      

                                                                     

4000a8c4 <_Scheduler_EDF_Unmap_priority>: Priority_Control _Scheduler_EDF_Unmap_priority( const Scheduler_Control *scheduler, Priority_Control priority ) { return SCHEDULER_PRIORITY_UNMAP( priority & ~SCHEDULER_EDF_PRIO_MSB );
4000a8c4:	95 32 a0 01 	srl  %o2, 1, %o2
                              <== NOT EXECUTED
4000a8c8:	83 2a 60 1f 	sll  %o1, 0x1f, %g1
                           <== NOT EXECUTED
4000a8cc:	91 2a 60 01 	sll  %o1, 1, %o0
                              <== NOT EXECUTED
}
                                                                    
4000a8d0:	92 10 40 0a 	or  %g1, %o2, %o1
                             <== NOT EXECUTED
4000a8d4:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000a8d8:	91 32 20 02 	srl  %o0, 2, %o0
                              <== NOT EXECUTED

                                                                     

4000a73c <_Scheduler_EDF_Update_priority>: void _Scheduler_EDF_Update_priority( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ) {
4000a73c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  Scheduler_EDF_Context *context;
                                    
  Scheduler_EDF_Node    *the_node;
                                   
  Priority_Control       priority;
                                   
  Priority_Control       insert_priority;
                            

                                                                     
  if ( !_Thread_Is_ready( the_thread ) ) {
                           
4000a740:	c2 06 60 1c 	ld  [ %i1 + 0x1c ], %g1
                       <== NOT EXECUTED
4000a744:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000a748:	12 80 00 4d 	bne  4000a87c <_Scheduler_EDF_Update_priority+0x140>
<== NOT EXECUTED
4000a74c:	01 00 00 00 	nop 
                                          
4000a750:	fa 06 a0 30 	ld  [ %i2 + 0x30 ], %i5
                       
4000a754:	f8 06 a0 34 	ld  [ %i2 + 0x34 ], %i4
                       

                                                                     
  the_node = _Scheduler_EDF_Node_downcast( node );
                   
  insert_priority = _Scheduler_Node_get_priority( &the_node->Base );
 
  priority = SCHEDULER_PRIORITY_PURIFY( insert_priority );
           

                                                                     
  if ( priority == the_node->priority ) {
                            
4000a758:	c4 06 a0 48 	ld  [ %i2 + 0x48 ], %g2
                       
4000a75c:	80 a0 80 1d 	cmp  %g2, %i5
                                 
4000a760:	02 80 00 34 	be  4000a830 <_Scheduler_EDF_Update_priority+0xf4>

4000a764:	82 0f 3f fe 	and  %i4, -2, %g1
                             
    /* Nothing to do */
                                              
    return;
                                                          
  }
                                                                  

                                                                     
  the_node->priority = priority;
                                     
4000a768:	c2 26 a0 4c 	st  %g1, [ %i2 + 0x4c ]
                       
  _RBTree_Extract( &context->Ready, &node->Node );
                   
4000a76c:	b6 06 a0 38 	add  %i2, 0x38, %i3
                           
4000a770:	fa 26 a0 48 	st  %i5, [ %i2 + 0x48 ]
                       
4000a774:	92 10 00 1b 	mov  %i3, %o1
                                 
4000a778:	f2 06 00 00 	ld  [ %i0 ], %i1
                              
4000a77c:	7f ff fd 43 	call  40009c88 <_RBTree_Extract>
              
4000a780:	90 10 00 19 	mov  %i1, %o0
                                 
  link = _RBTree_Root_reference( the_rbtree );
                       
4000a784:	84 10 00 19 	mov  %i1, %g2
                                 
  while ( *link != NULL ) {
                                          
4000a788:	c2 00 80 00 	ld  [ %g2 ], %g1
                              
4000a78c:	80 a0 60 00 	cmp  %g1, 0
                                   
4000a790:	02 80 00 12 	be  4000a7d8 <_Scheduler_EDF_Update_priority+0x9c>
<== NEVER TAKEN
4000a794:	86 10 20 00 	clr  %g3
                                      
    if ( ( *less )( key, parent ) ) {
                                
4000a798:	c4 00 60 10 	ld  [ %g1 + 0x10 ], %g2
                       
4000a79c:	80 a0 80 1d 	cmp  %g2, %i5
                                 
4000a7a0:	0a 80 00 09 	bcs  4000a7c4 <_Scheduler_EDF_Update_priority+0x88>

4000a7a4:	84 00 60 04 	add  %g1, 4, %g2
                              
4000a7a8:	12 80 00 28 	bne  4000a848 <_Scheduler_EDF_Update_priority+0x10c>

4000a7ac:	84 10 00 01 	mov  %g1, %g2
                                 
4000a7b0:	c4 00 60 14 	ld  [ %g1 + 0x14 ], %g2
                       
4000a7b4:	80 a0 80 1c 	cmp  %g2, %i4
                                 
4000a7b8:	1a 80 00 24 	bcc  4000a848 <_Scheduler_EDF_Update_priority+0x10c>

4000a7bc:	84 10 00 01 	mov  %g1, %g2
                                 
  return &RB_RIGHT( the_node, Node );
                                
4000a7c0:	84 00 60 04 	add  %g1, 4, %g2
                              
{
                                                                    
4000a7c4:	86 10 00 01 	mov  %g1, %g3
                                 
  while ( *link != NULL ) {
                                          
4000a7c8:	c2 00 80 00 	ld  [ %g2 ], %g1
                              
4000a7cc:	80 a0 60 00 	cmp  %g1, 0
                                   
4000a7d0:	32 bf ff f3 	bne,a   4000a79c <_Scheduler_EDF_Update_priority+0x60>

4000a7d4:	c4 00 60 10 	ld  [ %g1 + 0x10 ], %g2
                       
  RB_SET( child, parent, Node );
                                     
4000a7d8:	c6 26 a0 40 	st  %g3, [ %i2 + 0x40 ]
                       
4000a7dc:	a0 10 20 01 	mov  1, %l0
                                   
4000a7e0:	c0 26 a0 3c 	clr  [ %i2 + 0x3c ]
                           
  _RBTree_Insert_color( the_rbtree, the_node );
                      
4000a7e4:	92 10 00 1b 	mov  %i3, %o1
                                 
  RB_SET( child, parent, Node );
                                     
4000a7e8:	c0 26 a0 38 	clr  [ %i2 + 0x38 ]
                           
  _RBTree_Insert_color( the_rbtree, the_node );
                      
4000a7ec:	90 10 00 19 	mov  %i1, %o0
                                 
  RB_SET( child, parent, Node );
                                     
4000a7f0:	e0 26 a0 44 	st  %l0, [ %i2 + 0x44 ]
                       
  _RBTree_Insert_color( the_rbtree, the_node );
                      
4000a7f4:	7f ff fe 87 	call  4000a210 <_RBTree_Insert_color>
         
4000a7f8:	f6 20 80 00 	st  %i3, [ %g2 ]
                              
  first = _RBTree_Minimum( &context->Ready );
                        
4000a7fc:	40 00 12 38 	call  4000f0dc <_RBTree_Minimum>
              
4000a800:	d0 06 00 00 	ld  [ %i0 ], %o0
                              
  _Scheduler_Update_heir( node->Base.owner, force_dispatch );
        
4000a804:	f6 02 3f c8 	ld  [ %o0 + -56 ], %i3
                        
  Thread_Control *heir = _Thread_Heir;
                               
4000a808:	fa 01 a0 24 	ld  [ %g6 + 0x24 ], %i5
                       
  if ( heir != new_heir && ( heir->is_preemptible || force_dispatch ) ) {

4000a80c:	80 a6 c0 1d 	cmp  %i3, %i5
                                 
4000a810:	02 80 00 06 	be  4000a828 <_Scheduler_EDF_Update_priority+0xec>

4000a814:	b8 10 00 06 	mov  %g6, %i4
                                 
4000a818:	c2 0f 60 89 	ldub  [ %i5 + 0x89 ], %g1
                     
4000a81c:	80 a0 60 00 	cmp  %g1, 0
                                   
4000a820:	12 80 00 0c 	bne  4000a850 <_Scheduler_EDF_Update_priority+0x114>
<== ALWAYS TAKEN
4000a824:	01 00 00 00 	nop 
                                          
  context = _Scheduler_EDF_Get_context( scheduler );
                 

                                                                     
  _Scheduler_EDF_Extract( context, the_node );
                       
  _Scheduler_EDF_Enqueue( context, the_node, insert_priority );
      
  _Scheduler_EDF_Schedule_body( scheduler, the_thread, false );
      
}
                                                                    
4000a828:	81 c7 e0 08 	ret 
                                          
4000a82c:	81 e8 00 00 	restore 
                                      
  if ( priority == the_node->priority ) {
                            
4000a830:	c4 06 a0 4c 	ld  [ %i2 + 0x4c ], %g2
                       
4000a834:	80 a0 80 01 	cmp  %g2, %g1
                                 
4000a838:	32 bf ff cd 	bne,a   4000a76c <_Scheduler_EDF_Update_priority+0x30>
<== ALWAYS TAKEN
4000a83c:	c2 26 a0 4c 	st  %g1, [ %i2 + 0x4c ]
                       
}
                                                                    
4000a840:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000a844:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
{
                                                                    
4000a848:	10 bf ff e0 	b  4000a7c8 <_Scheduler_EDF_Update_priority+0x8c>

4000a84c:	86 10 00 01 	mov  %g1, %g3
                                 
4000a850:	7f ff f9 b1 	call  40008f14 <_Timecounter_Sbinuptime>
      
4000a854:	f0 19 a0 28 	ldd  [ %g6 + 0x28 ], %i0
                      
4000a858:	d0 3f 20 28 	std  %o0, [ %i4 + 0x28 ]
                      
  *_result = *_end - *_start;
                                        
4000a85c:	9a a2 40 19 	subcc  %o1, %i1, %o5
                          
4000a860:	98 62 00 18 	subx  %o0, %i0, %o4
                           
  *_time += *_add;
                                                   
4000a864:	f0 1f 60 98 	ldd  [ %i5 + 0x98 ], %i0
                      
4000a868:	86 86 40 0d 	addcc  %i1, %o5, %g3
                          
4000a86c:	84 46 00 0c 	addx  %i0, %o4, %g2
                           
4000a870:	c4 3f 60 98 	std  %g2, [ %i5 + 0x98 ]
                      
    _Thread_Heir = new_heir;
                                         
4000a874:	f6 21 a0 24 	st  %i3, [ %g6 + 0x24 ]
                       
    _Thread_Dispatch_necessary = true;
                               
4000a878:	e0 29 a0 1c 	stb  %l0, [ %g6 + 0x1c ]
                      
}
                                                                    
4000a87c:	81 c7 e0 08 	ret 
                                          
4000a880:	81 e8 00 00 	restore 
                                      

                                                                     

4000ab00 <_Scheduler_EDF_Yield>: void _Scheduler_EDF_Yield( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ) {
4000ab00:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  _RBTree_Extract( &context->Ready, &node->Node );
                   
4000ab04:	f8 06 00 00 	ld  [ %i0 ], %i4
                              <== NOT EXECUTED
4000ab08:	90 10 00 1c 	mov  %i4, %o0
                                 <== NOT EXECUTED
4000ab0c:	ba 06 a0 38 	add  %i2, 0x38, %i5
                           <== NOT EXECUTED
4000ab10:	7f ff fc 5e 	call  40009c88 <_RBTree_Extract>
              <== NOT EXECUTED
4000ab14:	92 10 00 1d 	mov  %i5, %o1
                                 <== NOT EXECUTED
  link = _RBTree_Root_reference( the_rbtree );
                       
4000ab18:	84 10 00 1c 	mov  %i4, %g2
                                 
  while ( *link != NULL ) {
                                          
4000ab1c:	c2 00 80 00 	ld  [ %g2 ], %g1
                              

                                                                     
  context = _Scheduler_EDF_Get_context( scheduler );
                 
  the_node = _Scheduler_EDF_Node_downcast( node );
                   

                                                                     
  _Scheduler_EDF_Extract( context, the_node );
                       
  _Scheduler_EDF_Enqueue( context, the_node, the_node->priority );
   
4000ab20:	c8 06 a0 48 	ld  [ %i2 + 0x48 ], %g4
                       
4000ab24:	f6 06 a0 4c 	ld  [ %i2 + 0x4c ], %i3
                       
4000ab28:	80 a0 60 00 	cmp  %g1, 0
                                   
4000ab2c:	02 80 00 12 	be  4000ab74 <_Scheduler_EDF_Yield+0x74>
      <== NEVER TAKEN
4000ab30:	86 10 20 00 	clr  %g3
                                      
    if ( ( *less )( key, parent ) ) {
                                
4000ab34:	c4 00 60 10 	ld  [ %g1 + 0x10 ], %g2
                       
4000ab38:	80 a0 80 04 	cmp  %g2, %g4
                                 
4000ab3c:	0a 80 00 09 	bcs  4000ab60 <_Scheduler_EDF_Yield+0x60>
     <== NEVER TAKEN
4000ab40:	84 00 60 04 	add  %g1, 4, %g2
                              
4000ab44:	12 80 00 29 	bne  4000abe8 <_Scheduler_EDF_Yield+0xe8>
     <== NEVER TAKEN
4000ab48:	84 10 00 01 	mov  %g1, %g2
                                 
4000ab4c:	c4 00 60 14 	ld  [ %g1 + 0x14 ], %g2
                       
4000ab50:	80 a0 80 1b 	cmp  %g2, %i3
                                 
4000ab54:	1a 80 00 25 	bcc  4000abe8 <_Scheduler_EDF_Yield+0xe8>
     
4000ab58:	84 10 00 01 	mov  %g1, %g2
                                 
  return &RB_RIGHT( the_node, Node );
                                
4000ab5c:	84 00 60 04 	add  %g1, 4, %g2
                              
{
                                                                    
4000ab60:	86 10 00 01 	mov  %g1, %g3
                                 
  while ( *link != NULL ) {
                                          
4000ab64:	c2 00 80 00 	ld  [ %g2 ], %g1
                              
4000ab68:	80 a0 60 00 	cmp  %g1, 0
                                   
4000ab6c:	32 bf ff f3 	bne,a   4000ab38 <_Scheduler_EDF_Yield+0x38>
  
4000ab70:	c4 00 60 10 	ld  [ %g1 + 0x10 ], %g2
                       
  RB_SET( child, parent, Node );
                                     
4000ab74:	c6 26 a0 40 	st  %g3, [ %i2 + 0x40 ]
                       
4000ab78:	b6 10 20 01 	mov  1, %i3
                                   
4000ab7c:	c0 26 a0 3c 	clr  [ %i2 + 0x3c ]
                           
  _RBTree_Insert_color( the_rbtree, the_node );
                      
4000ab80:	92 10 00 1d 	mov  %i5, %o1
                                 
  RB_SET( child, parent, Node );
                                     
4000ab84:	c0 26 a0 38 	clr  [ %i2 + 0x38 ]
                           
  _RBTree_Insert_color( the_rbtree, the_node );
                      
4000ab88:	90 10 00 1c 	mov  %i4, %o0
                                 
  RB_SET( child, parent, Node );
                                     
4000ab8c:	f6 26 a0 44 	st  %i3, [ %i2 + 0x44 ]
                       
  _RBTree_Insert_color( the_rbtree, the_node );
                      
4000ab90:	7f ff fd a0 	call  4000a210 <_RBTree_Insert_color>
         
4000ab94:	fa 20 80 00 	st  %i5, [ %g2 ]
                              
  first = _RBTree_Minimum( &context->Ready );
                        
4000ab98:	40 00 11 51 	call  4000f0dc <_RBTree_Minimum>
              
4000ab9c:	d0 06 00 00 	ld  [ %i0 ], %o0
                              
  _Scheduler_Update_heir( node->Base.owner, force_dispatch );
        
4000aba0:	f4 02 3f c8 	ld  [ %o0 + -56 ], %i2
                        
  Thread_Control *heir = _Thread_Heir;
                               
4000aba4:	fa 01 a0 24 	ld  [ %g6 + 0x24 ], %i5
                       
  if ( heir != new_heir && ( heir->is_preemptible || force_dispatch ) ) {

4000aba8:	80 a6 80 1d 	cmp  %i2, %i5
                                 
4000abac:	02 80 00 0d 	be  4000abe0 <_Scheduler_EDF_Yield+0xe0>
      <== NEVER TAKEN
4000abb0:	b8 10 00 06 	mov  %g6, %i4
                                 
4000abb4:	7f ff f8 d8 	call  40008f14 <_Timecounter_Sbinuptime>
      
4000abb8:	f0 19 a0 28 	ldd  [ %g6 + 0x28 ], %i0
                      
4000abbc:	d0 3f 20 28 	std  %o0, [ %i4 + 0x28 ]
                      
  *_result = *_end - *_start;
                                        
4000abc0:	9a a2 40 19 	subcc  %o1, %i1, %o5
                          
4000abc4:	98 62 00 18 	subx  %o0, %i0, %o4
                           
  *_time += *_add;
                                                   
4000abc8:	f0 1f 60 98 	ldd  [ %i5 + 0x98 ], %i0
                      
4000abcc:	86 86 40 0d 	addcc  %i1, %o5, %g3
                          
4000abd0:	84 46 00 0c 	addx  %i0, %o4, %g2
                           
4000abd4:	c4 3f 60 98 	std  %g2, [ %i5 + 0x98 ]
                      
    _Thread_Heir = new_heir;
                                         
4000abd8:	f4 21 a0 24 	st  %i2, [ %g6 + 0x24 ]
                       
    _Thread_Dispatch_necessary = true;
                               
4000abdc:	f6 29 a0 1c 	stb  %i3, [ %g6 + 0x1c ]
                      
  _Scheduler_EDF_Schedule_body( scheduler, the_thread, true );
       
}
                                                                    
4000abe0:	81 c7 e0 08 	ret 
                                          
4000abe4:	81 e8 00 00 	restore 
                                      
{
                                                                    
4000abe8:	10 bf ff df 	b  4000ab64 <_Scheduler_EDF_Yield+0x64>
       
4000abec:	86 10 00 01 	mov  %g1, %g3
                                 

                                                                     

4000aac8 <_Scheduler_Get_affinity>: bool _Scheduler_Get_affinity( Thread_Control *the_thread, size_t cpusetsize, cpu_set_t *cpuset ) {
4000aac8:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  const Processor_mask *src,
                                         
  size_t                dst_size,
                                    
  cpu_set_t            *dst
                                          
)
                                                                    
{
                                                                    
  return _Processor_mask_Copy(
                                       
4000aacc:	96 10 20 04 	mov  4, %o3
                                   <== NOT EXECUTED
4000aad0:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
4000aad4:	90 10 00 1a 	mov  %i2, %o0
                                 <== NOT EXECUTED
4000aad8:	15 10 00 4a 	sethi  %hi(0x40012800), %o2
                   <== NOT EXECUTED
4000aadc:	7f ff fd 8b 	call  4000a108 <_Processor_mask_Copy>
         <== NOT EXECUTED
4000aae0:	94 12 a1 00 	or  %o2, 0x100, %o2	! 40012900 <_Processor_mask_The_one_and_only>
<== NOT EXECUTED
#endif
                                                               
  status = _Processor_mask_To_cpu_set_t( affinity, cpusetsize, cpuset );


                                                                     
  _Scheduler_Release_critical( scheduler, &lock_context );
           
  return status == PROCESSOR_MASK_COPY_LOSSLESS;
                     
}
                                                                    
4000aae4:	80 a0 00 08 	cmp  %g0, %o0
                                 
4000aae8:	b0 60 3f ff 	subx  %g0, -1, %i0
                            
4000aaec:	81 c7 e0 08 	ret 
                                          
4000aaf0:	81 e8 00 00 	restore 
                                      

                                                                     

40009c0c <_Scheduler_Handler_initialization>: #endif #include <rtems/score/schedulerimpl.h> void _Scheduler_Handler_initialization(void) {
40009c0c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
    scheduler = &_Scheduler_Table[ i ];
                              
#if defined(RTEMS_SMP)
                                               
    context = _Scheduler_Get_context( scheduler );
                   
#endif
                                                               
    _ISR_lock_Initialize( &context->Lock, "Scheduler" );
             
    ( *scheduler->Operations.initialize )( scheduler );
              
40009c10:	11 10 00 63 	sethi  %hi(0x40018c00), %o0
                   <== NOT EXECUTED
40009c14:	90 12 21 c8 	or  %o0, 0x1c8, %o0	! 40018dc8 <_Scheduler_Table>

40009c18:	c2 02 20 04 	ld  [ %o0 + 4 ], %g1
                          
40009c1c:	9f c0 40 00 	call  %g1
                                     
40009c20:	01 00 00 00 	nop 
                                          
  }
                                                                  
}
                                                                    
40009c24:	81 c7 e0 08 	ret 
                                          
40009c28:	81 e8 00 00 	restore 
                                      

                                                                     

40024d1c <_Scheduler_Set_affinity>: bool _Scheduler_Set_affinity( Thread_Control *the_thread, size_t cpusetsize, const cpu_set_t *cpuset ) {
40024d1c:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  Processor_mask  *dst,
                                              
  size_t           src_size,
                                         
  const cpu_set_t *src
                                               
)
                                                                    
{
                                                                    
  return _Processor_mask_Copy(
                                       
40024d20:	92 10 20 04 	mov  4, %o1
                                   <== NOT EXECUTED
40024d24:	96 10 00 19 	mov  %i1, %o3
                                 <== NOT EXECUTED
40024d28:	94 10 00 1a 	mov  %i2, %o2
                                 <== NOT EXECUTED
40024d2c:	90 07 bf fc 	add  %fp, -4, %o0
                             
40024d30:	7f ff fb e2 	call  40023cb8 <_Processor_mask_Copy>
         
40024d34:	b0 10 20 00 	clr  %i0
                                      
  Scheduler_Node            *node;
                                   
  ISR_lock_Context           lock_context;
                           
  bool                       ok;
                                     

                                                                     
  status = _Processor_mask_From_cpu_set_t( &affinity, cpusetsize, cpuset );

  if ( !_Processor_mask_Is_at_most_partial_loss( status ) ) {
        
40024d38:	80 a2 20 01 	cmp  %o0, 1
                                   
40024d3c:	38 80 00 09 	bgu,a   40024d60 <_Scheduler_Set_affinity+0x44>
<== NEVER TAKEN
40024d40:	b0 0e 20 01 	and  %i0, 1, %i0
                              <== NOT EXECUTED
  BIT_AND2( CPU_MAXIMUM_PROCESSORS, a, b, c );
                       
40024d44:	03 10 01 91 	sethi  %hi(0x40064400), %g1
                   
40024d48:	c4 00 63 00 	ld  [ %g1 + 0x300 ], %g2	! 40064700 <_Processor_mask_The_one_and_only>

  return BIT_SUBSET( CPU_MAXIMUM_PROCESSORS, big, small );
           
40024d4c:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
40024d50:	82 28 80 01 	andn  %g2, %g1, %g1
                           
40024d54:	80 a0 00 01 	cmp  %g0, %g1
                                 
40024d58:	b0 60 3f ff 	subx  %g0, -1, %i0
                            
  );
                                                                 
#endif
                                                               

                                                                     
  _Scheduler_Release_critical( scheduler, &lock_context );
           
  return ok;
                                                         
}
                                                                    
40024d5c:	b0 0e 20 01 	and  %i0, 1, %i0
                              
40024d60:	81 c7 e0 08 	ret 
                                          
40024d64:	81 e8 00 00 	restore 
                                      

                                                                     

40009b3c <_Scheduler_default_Cancel_job>: { (void) scheduler; (void) the_thread; (void) priority_node; (void) queue_context; }
40009b3c:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
40009b40:	01 00 00 00 	nop 
                                          

                                                                     

40009b04 <_Scheduler_default_Map_priority>: Priority_Control _Scheduler_default_Map_priority( const Scheduler_Control *scheduler, Priority_Control priority ) { return SCHEDULER_PRIORITY_MAP( priority );
40009b04:	83 2a 60 01 	sll  %o1, 1, %g1
                              <== NOT EXECUTED
40009b08:	91 32 a0 1f 	srl  %o2, 0x1f, %o0
                           <== NOT EXECUTED
}
                                                                    
40009b0c:	93 2a a0 01 	sll  %o2, 1, %o1
                              <== NOT EXECUTED
40009b10:	81 c3 e0 08 	retl 
                                         
40009b14:	90 12 00 01 	or  %o0, %g1, %o0
                             

                                                                     

40009b2c <_Scheduler_default_Node_destroy>: Scheduler_Node *node ) { (void) scheduler; (void) node; }
40009b2c:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
40009b30:	01 00 00 00 	nop 
                                          

                                                                     

4000a4f0 <_Scheduler_default_Node_initialize>: const Scheduler_Control *scheduler, Scheduler_Node *node, Thread_Control *the_thread, Priority_Control priority ) {
4000a4f0:	84 10 00 0b 	mov  %o3, %g2
                                 <== NOT EXECUTED
4000a4f4:	86 10 00 0c 	mov  %o4, %g3
                                 <== NOT EXECUTED
  Scheduler_Node                  *node,
                             
  Thread_Control                  *the_thread,
                       
  Priority_Control                 priority
                          
)
                                                                    
{
                                                                    
  node->owner = the_thread;
                                          
4000a4f8:	d4 22 40 00 	st  %o2, [ %o1 ]
                              <== NOT EXECUTED
  _Scheduler_Node_do_initialize( scheduler, node, the_thread, priority );

}
                                                                    
4000a4fc:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000a500:	c4 3a 60 30 	std  %g2, [ %o1 + 0x30 ]
                      

                                                                     

40009b34 <_Scheduler_default_Release_job>: (void) scheduler; (void) the_thread; (void) priority_node; (void) deadline; (void) queue_context; }
40009b34:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
40009b38:	01 00 00 00 	nop 
                                          

                                                                     

40009b44 <_Scheduler_default_Start_idle>: void _Scheduler_default_Start_idle( const Scheduler_Control *scheduler, Thread_Control *the_thread, Per_CPU_Control *cpu ) {
40009b44:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  const Scheduler_Control *scheduler;
                                
  ISR_lock_Context         lock_context;
                             

                                                                     
  scheduler = _Thread_Scheduler_get_home( the_thread );
              
  _Scheduler_Acquire_critical( scheduler, &lock_context );
           
  ( *scheduler->Operations.unblock )(
                                
40009b48:	11 10 00 63 	sethi  %hi(0x40018c00), %o0
                   <== NOT EXECUTED
40009b4c:	d4 06 60 38 	ld  [ %i1 + 0x38 ], %o2
                       
40009b50:	90 12 21 c8 	or  %o0, 0x1c8, %o0
                           
40009b54:	c2 02 20 14 	ld  [ %o0 + 0x14 ], %g1
                       
40009b58:	9f c0 40 00 	call  %g1
                                     
40009b5c:	92 10 00 19 	mov  %i1, %o1
                                 
  (void) scheduler;
                                                  
  (void) cpu;
                                                        
  _Scheduler_Unblock( the_thread );
                                  
}
                                                                    
40009b60:	81 c7 e0 08 	ret 
                                          
40009b64:	81 e8 00 00 	restore 
                                      

                                                                     

40009b68 <_Scheduler_default_Tick>: void _Scheduler_default_Tick( const Scheduler_Control *scheduler, Thread_Control *executing ) {
40009b68:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  /*
                                                                 
   *  If the thread is not preemptible or is not ready, then
         
   *  just return.
                                                   
   */
                                                                

                                                                     
  if ( !executing->is_preemptible )
                                  
40009b6c:	c2 0e 60 89 	ldub  [ %i1 + 0x89 ], %g1
                     <== NOT EXECUTED
40009b70:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
40009b74:	02 80 00 24 	be  40009c04 <_Scheduler_default_Tick+0x9c>
   <== ALWAYS TAKEN
40009b78:	01 00 00 00 	nop 
                                          
    return;
                                                          

                                                                     
  if ( !_States_Is_ready( executing->current_state ) )
               
40009b7c:	c2 06 60 1c 	ld  [ %i1 + 0x1c ], %g1
                       
40009b80:	80 a0 60 00 	cmp  %g1, 0
                                   
40009b84:	12 80 00 20 	bne  40009c04 <_Scheduler_default_Tick+0x9c>
  
40009b88:	01 00 00 00 	nop 
                                          

                                                                     
  /*
                                                                 
   *  The cpu budget algorithm determines what happens next.
         
   */
                                                                

                                                                     
  switch ( executing->budget_algorithm ) {
                           
40009b8c:	c2 06 60 90 	ld  [ %i1 + 0x90 ], %g1
                       
40009b90:	80 a0 60 01 	cmp  %g1, 1
                                   
40009b94:	0a 80 00 0e 	bcs  40009bcc <_Scheduler_default_Tick+0x64>
  
40009b98:	80 a0 60 02 	cmp  %g1, 2
                                   
40009b9c:	08 80 00 0e 	bleu  40009bd4 <_Scheduler_default_Tick+0x6c>
 
40009ba0:	80 a0 60 03 	cmp  %g1, 3
                                   
40009ba4:	12 80 00 18 	bne  40009c04 <_Scheduler_default_Tick+0x9c>
  <== NEVER TAKEN
40009ba8:	01 00 00 00 	nop 
                                          
      }
                                                              
      break;
                                                         

                                                                     
    #if defined(RTEMS_SCORE_THREAD_ENABLE_SCHEDULER_CALLOUT)
         
      case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:
                      
	if ( --executing->cpu_time_budget == 0 )
                            
40009bac:	c2 06 60 8c 	ld  [ %i1 + 0x8c ], %g1
                       
40009bb0:	82 00 7f ff 	add  %g1, -1, %g1
                             
40009bb4:	80 a0 60 00 	cmp  %g1, 0
                                   
40009bb8:	12 80 00 05 	bne  40009bcc <_Scheduler_default_Tick+0x64>
  
40009bbc:	c2 26 60 8c 	st  %g1, [ %i1 + 0x8c ]
                       
	  (*executing->budget_callout)( executing );
                        
40009bc0:	c2 06 60 94 	ld  [ %i1 + 0x94 ], %g1
                       
40009bc4:	9f c0 40 00 	call  %g1
                                     
40009bc8:	90 10 00 19 	mov  %i1, %o0
                                 
	break;
                                                              
    #endif
                                                           
  }
                                                                  
}
                                                                    
40009bcc:	81 c7 e0 08 	ret 
                                          
40009bd0:	81 e8 00 00 	restore 
                                      
      if ( (int)(--executing->cpu_time_budget) <= 0 ) {
              
40009bd4:	c2 06 60 8c 	ld  [ %i1 + 0x8c ], %g1
                       
40009bd8:	82 00 7f ff 	add  %g1, -1, %g1
                             
40009bdc:	80 a0 60 00 	cmp  %g1, 0
                                   
40009be0:	14 bf ff fb 	bg  40009bcc <_Scheduler_default_Tick+0x64>
   
40009be4:	c2 26 60 8c 	st  %g1, [ %i1 + 0x8c ]
                       
        _Thread_Yield( executing );
                                  
40009be8:	40 00 07 fb 	call  4000bbd4 <_Thread_Yield>
                
40009bec:	90 10 00 19 	mov  %i1, %o0
                                 
          rtems_configuration_get_ticks_per_timeslice();
             
40009bf0:	03 10 00 63 	sethi  %hi(0x40018c00), %g1
                   
        executing->cpu_time_budget =
                                 
40009bf4:	c2 00 61 00 	ld  [ %g1 + 0x100 ], %g1	! 40018d00 <Configuration+0x18>

40009bf8:	c2 26 60 8c 	st  %g1, [ %i1 + 0x8c ]
                       
40009bfc:	81 c7 e0 08 	ret 
                                          
40009c00:	81 e8 00 00 	restore 
                                      
40009c04:	81 c7 e0 08 	ret 
                                          
40009c08:	81 e8 00 00 	restore 
                                      

                                                                     

40009b18 <_Scheduler_default_Unmap_priority>: Priority_Control _Scheduler_default_Unmap_priority( const Scheduler_Control *scheduler, Priority_Control priority ) { return SCHEDULER_PRIORITY_UNMAP( priority );
40009b18:	95 32 a0 01 	srl  %o2, 1, %o2
                              <== NOT EXECUTED
40009b1c:	83 2a 60 1f 	sll  %o1, 0x1f, %g1
                           
}
                                                                    
40009b20:	91 32 60 01 	srl  %o1, 1, %o0
                              
40009b24:	81 c3 e0 08 	retl 
                                         
40009b28:	92 10 40 0a 	or  %g1, %o2, %o1
                             

                                                                     

40009c2c <_Scheduler_priority_Block>: void _Scheduler_priority_Block( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ) {
40009c2c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  Chain_Node                     *node,
                              
  Scheduler_priority_Ready_queue *ready_queue,
                       
  Priority_bit_map_Control       *bit_map
                            
)
                                                                    
{
                                                                    
  Chain_Control *ready_chain = ready_queue->ready_chain;
             
40009c30:	c2 06 a0 3c 	ld  [ %i2 + 0x3c ], %g1
                       

                                                                     
  if ( _Chain_Has_only_one_node( ready_chain ) ) {
                   
40009c34:	c6 00 40 00 	ld  [ %g1 ], %g3
                              
40009c38:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
40009c3c:	80 a0 c0 02 	cmp  %g3, %g2
                                 
40009c40:	22 80 00 31 	be,a   40009d04 <_Scheduler_priority_Block+0xd8>

40009c44:	c6 06 a0 40 	ld  [ %i2 + 0x40 ], %g3
                       
  next           = the_node->next;
                                   
40009c48:	c4 06 40 00 	ld  [ %i1 ], %g2
                              
  previous       = the_node->previous;
                               
40009c4c:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          
  next->previous = previous;
                                         
40009c50:	c2 20 a0 04 	st  %g1, [ %g2 + 4 ]
                          
  previous->next = next;
                                             
40009c54:	c4 20 40 00 	st  %g2, [ %g1 ]
                              

                                                                     
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (
                     
  const Thread_Control *the_thread
                                   
)
                                                                    
{
                                                                    
  return ( the_thread == _Thread_Executing );
                        
40009c58:	b8 10 00 06 	mov  %g6, %i4
                                 
{
                                                                    
  ( *extract )( scheduler, the_thread, node );
                       

                                                                     
  /* TODO: flash critical section? */
                                

                                                                     
  if ( _Thread_Is_executing( the_thread ) || _Thread_Is_heir( the_thread ) ) {

40009c5c:	c2 01 a0 20 	ld  [ %g6 + 0x20 ], %g1
                       
40009c60:	80 a6 40 01 	cmp  %i1, %g1
                                 
40009c64:	02 80 00 07 	be  40009c80 <_Scheduler_priority_Block+0x54>
 
40009c68:	f6 01 a0 24 	ld  [ %g6 + 0x24 ], %i3
                       
40009c6c:	80 a6 40 1b 	cmp  %i1, %i3
                                 
40009c70:	22 80 00 05 	be,a   40009c84 <_Scheduler_priority_Block+0x58>
<== NEVER TAKEN
40009c74:	f4 06 00 00 	ld  [ %i0 ], %i2
                              <== NOT EXECUTED
    the_thread,
                                                      
    node,
                                                            
    _Scheduler_priority_Extract_body,
                                
    _Scheduler_priority_Schedule_body
                                
  );
                                                                 
}
                                                                    
40009c78:	81 c7 e0 08 	ret 
                                          
40009c7c:	81 e8 00 00 	restore 
                                      
40009c80:	f4 06 00 00 	ld  [ %i0 ], %i2
                              
  unsigned int bit_number;
                                           

                                                                     
#if ( CPU_USE_GENERIC_BITFIELD_CODE == FALSE )
                       
  _CPU_Bitfield_Find_first_bit( value, bit_number );
                 
#elif defined(__GNUC__)
                                              
  bit_number = (unsigned int) __builtin_clz( value )
                 
40009c84:	40 00 37 5c 	call  400179f4 <__clzsi2>
                     
40009c88:	d0 16 80 00 	lduh  [ %i2 ], %o0
                            
40009c8c:	ba 02 3f f0 	add  %o0, -16, %i5
                            
{
                                                                    
  unsigned int minor;
                                                
  unsigned int major;
                                                

                                                                     
  major = _Bitfield_Find_first_bit( bit_map->major_bit_map );
        
  minor = _Bitfield_Find_first_bit( bit_map->bit_map[ major ] );
     
40009c90:	83 2f 60 01 	sll  %i5, 1, %g1
                              

                                                                     
  return (_Priority_Bits_index( major ) << 4) +
                      
40009c94:	bb 2f 60 04 	sll  %i5, 4, %i5
                              
  minor = _Bitfield_Find_first_bit( bit_map->bit_map[ major ] );
     
40009c98:	82 06 80 01 	add  %i2, %g1, %g1
                            
  bit_number = (unsigned int) __builtin_clz( value )
                 
40009c9c:	40 00 37 56 	call  400179f4 <__clzsi2>
                     
40009ca0:	d0 10 60 02 	lduh  [ %g1 + 2 ], %o0
                        
  Priority_bit_map_Control *bit_map,
                                 
  Chain_Control            *ready_queues
                             
)
                                                                    
{
                                                                    
  Priority_Control index = _Priority_bit_map_Get_highest( bit_map );
 
  Chain_Node *first = _Chain_First( &ready_queues[ index ] );
        
40009ca4:	90 02 00 1d 	add  %o0, %i5, %o0
                            
40009ca8:	90 02 3f f0 	add  %o0, -16, %o0
                            
  return _Chain_Immutable_head( the_chain )->next;
                   
40009cac:	bb 2a 20 01 	sll  %o0, 1, %i5
                              
40009cb0:	90 07 40 08 	add  %i5, %o0, %o0
                            
40009cb4:	91 2a 20 02 	sll  %o0, 2, %o0
                              
40009cb8:	b4 06 80 08 	add  %i2, %o0, %i2
                            
40009cbc:	fa 06 a0 24 	ld  [ %i2 + 0x24 ], %i5
                       
  bool            force_dispatch
                                     
)
                                                                    
{
                                                                    
  Thread_Control *heir = _Thread_Heir;
                               

                                                                     
  if ( heir != new_heir && ( heir->is_preemptible || force_dispatch ) ) {

40009cc0:	80 a7 40 1b 	cmp  %i5, %i3
                                 
40009cc4:	02 80 00 0e 	be  40009cfc <_Scheduler_priority_Block+0xd0>
 
40009cc8:	01 00 00 00 	nop 
                                          
  *time = _Timecounter_Sbinuptime();
                                 
40009ccc:	7f ff fa f1 	call  40008890 <_Timecounter_Sbinuptime>
      
40009cd0:	e0 1f 20 28 	ldd  [ %i4 + 0x28 ], %l0
                      
40009cd4:	d0 3f 20 28 	std  %o0, [ %i4 + 0x28 ]
                      
  const Timestamp_Control *_start,
                                   
  const Timestamp_Control *_end,
                                     
  Timestamp_Control       *_result
                                   
)
                                                                    
{
                                                                    
  *_result = *_end - *_start;
                                        
40009cd8:	b2 a2 40 11 	subcc  %o1, %l1, %i1
                          
  *_time += *_add;
                                                   
40009cdc:	d8 1e e0 98 	ldd  [ %i3 + 0x98 ], %o4
                      
  *_result = *_end - *_start;
                                        
40009ce0:	b0 62 00 10 	subx  %o0, %l0, %i0
                           
  *_time += *_add;
                                                   
40009ce4:	86 83 40 19 	addcc  %o5, %i1, %g3
                          
40009ce8:	84 43 00 18 	addx  %o4, %i0, %g2
                           
40009cec:	c4 3e e0 98 	std  %g2, [ %i3 + 0x98 ]
                      
    heir->Scheduler.state = THREAD_SCHEDULER_BLOCKED;
                
    new_heir->Scheduler.state = THREAD_SCHEDULER_SCHEDULED;
          
#endif
                                                               
    _Thread_Update_CPU_time_used( heir, _Thread_Get_CPU( heir ) );
   
    _Thread_Heir = new_heir;
                                         
    _Thread_Dispatch_necessary = true;
                               
40009cf0:	84 10 20 01 	mov  1, %g2
                                   
    _Thread_Heir = new_heir;
                                         
40009cf4:	fa 21 a0 24 	st  %i5, [ %g6 + 0x24 ]
                       
    _Thread_Dispatch_necessary = true;
                               
40009cf8:	c4 29 a0 1c 	stb  %g2, [ %g6 + 0x1c ]
                      
40009cfc:	81 c7 e0 08 	ret 
                                          
40009d00:	81 e8 00 00 	restore 
                                      
  *bit_map_info->minor &= bit_map_info->block_minor;
                 
40009d04:	c4 10 c0 00 	lduh  [ %g3 ], %g2
                            
40009d08:	f8 16 a0 4a 	lduh  [ %i2 + 0x4a ], %i4
                     
40009d0c:	c8 06 00 00 	ld  [ %i0 ], %g4
                              
  return &the_chain->Tail.Node;
                                      
40009d10:	ba 00 60 04 	add  %g1, 4, %i5
                              
  head->previous = NULL;
                                             
40009d14:	c0 20 60 04 	clr  [ %g1 + 4 ]
                              
40009d18:	84 08 80 1c 	and  %g2, %i4, %g2
                            
  head->next = tail;
                                                 
40009d1c:	fa 20 40 00 	st  %i5, [ %g1 ]
                              
  if ( *bit_map_info->minor == 0 )
                                   
40009d20:	80 a0 a0 00 	cmp  %g2, 0
                                   
  tail->previous = head;
                                             
40009d24:	c2 20 60 08 	st  %g1, [ %g1 + 8 ]
                          
40009d28:	12 bf ff cc 	bne  40009c58 <_Scheduler_priority_Block+0x2c>

40009d2c:	c4 30 c0 00 	sth  %g2, [ %g3 ]
                             
    bit_map->major_bit_map &= bit_map_info->block_major;
             
40009d30:	c2 11 00 00 	lduh  [ %g4 ], %g1
                            
40009d34:	c4 16 a0 48 	lduh  [ %i2 + 0x48 ], %g2
                     
40009d38:	82 08 40 02 	and  %g1, %g2, %g1
                            
40009d3c:	10 bf ff c7 	b  40009c58 <_Scheduler_priority_Block+0x2c>
  
40009d40:	c2 31 00 00 	sth  %g1, [ %g4 ]
                             

                                                                     

40009f2c <_Scheduler_priority_Initialize>: #endif #include <rtems/score/schedulerpriorityimpl.h> void _Scheduler_priority_Initialize( const Scheduler_Control *scheduler ) {
40009f2c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
40009f30:	c2 06 00 00 	ld  [ %i0 ], %g1
                              <== NOT EXECUTED
  memset( bit_map, 0, sizeof( *bit_map ) );
                          
40009f34:	90 10 00 01 	mov  %g1, %o0
                                 <== NOT EXECUTED
40009f38:	94 10 20 22 	mov  0x22, %o2
                                
40009f3c:	40 00 14 b1 	call  4000f200 <memset>
                       
40009f40:	92 10 20 00 	clr  %o1
                                      
40009f44:	c4 06 20 44 	ld  [ %i0 + 0x44 ], %g2
                       
  Scheduler_priority_Context *context =
                              
    _Scheduler_priority_Get_context( scheduler );
                    

                                                                     
  _Priority_bit_map_Initialize( &context->Bit_map );
                 
  _Scheduler_priority_Ready_queue_initialize(
                        
40009f48:	90 02 20 24 	add  %o0, 0x24, %o0
                           
40009f4c:	83 28 a0 01 	sll  %g2, 1, %g1
                              
40009f50:	82 00 40 02 	add  %g1, %g2, %g1
                            
40009f54:	83 28 60 02 	sll  %g1, 2, %g1
                              
40009f58:	82 02 00 01 	add  %o0, %g1, %g1
                            
  head->next = tail;
                                                 
40009f5c:	84 02 20 04 	add  %o0, 4, %g2
                              
  head->previous = NULL;
                                             
40009f60:	c0 22 20 04 	clr  [ %o0 + 4 ]
                              
  for ( index = 0 ; index <= (size_t) maximum_priority ; ++index ) {
 
40009f64:	80 a2 00 01 	cmp  %o0, %g1
                                 
  head->next = tail;
                                                 
40009f68:	c4 22 00 00 	st  %g2, [ %o0 ]
                              
  tail->previous = head;
                                             
40009f6c:	d0 22 20 08 	st  %o0, [ %o0 + 8 ]
                          
40009f70:	12 bf ff fb 	bne  40009f5c <_Scheduler_priority_Initialize+0x30>

40009f74:	90 02 20 0c 	add  %o0, 0xc, %o0
                            
    &context->Ready[ 0 ],
                                            
    scheduler->maximum_priority
                                      
  );
                                                                 
}
                                                                    
40009f78:	81 c7 e0 08 	ret 
                                          
40009f7c:	81 e8 00 00 	restore 
                                      

                                                                     

40009f80 <_Scheduler_priority_Node_initialize>: const Scheduler_Control *scheduler, Scheduler_Node *node, Thread_Control *the_thread, Priority_Control priority ) {
40009f80:	da 02 00 00 	ld  [ %o0 ], %o5
                              <== NOT EXECUTED

                                                                     
  context = _Scheduler_priority_Get_context( scheduler );
            
  the_node = _Scheduler_priority_Node_downcast( node );
              
  _Scheduler_priority_Ready_queue_update(
                            
    &the_node->Ready_queue,
                                          
    SCHEDULER_PRIORITY_UNMAP( priority ),
                            
40009f84:	85 2a e0 1f 	sll  %o3, 0x1f, %g2
                           
  _Scheduler_priority_Ready_queue_update(
                            
40009f88:	90 03 60 24 	add  %o5, 0x24, %o0
                           
  return (Priority_bit_map_Word) ( 0x8000u >> bit_number );
          
40009f8c:	07 00 00 20 	sethi  %hi(0x8000), %g3
                       
    SCHEDULER_PRIORITY_UNMAP( priority ),
                            
40009f90:	83 33 20 01 	srl  %o4, 1, %g1
                              
  Scheduler_Node                  *node,
                             
  Thread_Control                  *the_thread,
                       
  Priority_Control                 priority
                          
)
                                                                    
{
                                                                    
  node->owner = the_thread;
                                          
40009f94:	d4 22 40 00 	st  %o2, [ %o1 ]
                              
40009f98:	82 10 80 01 	or  %g2, %g1, %g1
                             
  return the_priority / 16;
                                          
40009f9c:	85 30 60 04 	srl  %g1, 4, %g2
                              
  return (Priority_bit_map_Word) ( 0x8000u >> bit_number );
          
40009fa0:	95 30 c0 02 	srl  %g3, %g2, %o2
                            
  bit_map_info->minor = &bit_map->bit_map[ _Priority_Bits_index( major ) ];

40009fa4:	84 00 a0 01 	inc  %g2
                                      
40009fa8:	85 28 a0 01 	sll  %g2, 1, %g2
                              
40009fac:	84 03 40 02 	add  %o5, %g2, %g2
                            
  return the_priority % 16;
                                          
40009fb0:	9a 08 60 0f 	and  %g1, 0xf, %o5
                            
  ready_queue->ready_chain = &ready_queues[ new_priority ];
          
40009fb4:	89 28 60 01 	sll  %g1, 1, %g4
                              
  return (Priority_bit_map_Word) ( 0x8000u >> bit_number );
          
40009fb8:	87 30 c0 0d 	srl  %g3, %o5, %g3
                            
40009fbc:	88 01 00 01 	add  %g4, %g1, %g4
                            
  bit_map_info->block_minor = (Priority_bit_map_Word) ~mask;
         
40009fc0:	9a 38 00 03 	xnor  %g0, %g3, %o5
                           
40009fc4:	89 29 20 02 	sll  %g4, 2, %g4
                              

                                                                     
  node->Priority.value = priority;
                                   
40009fc8:	d6 22 60 30 	st  %o3, [ %o1 + 0x30 ]
                       
40009fcc:	88 02 00 04 	add  %o0, %g4, %g4
                            
40009fd0:	d8 22 60 34 	st  %o4, [ %o1 + 0x34 ]
                       
  bit_map_info->block_major = (Priority_bit_map_Word) ~mask;
         
40009fd4:	90 38 00 0a 	xnor  %g0, %o2, %o0
                           
  ready_queue->current_priority = new_priority;
                      
40009fd8:	c2 22 60 38 	st  %g1, [ %o1 + 0x38 ]
                       
  ready_queue->ready_chain = &ready_queues[ new_priority ];
          
40009fdc:	c8 22 60 3c 	st  %g4, [ %o1 + 0x3c ]
                       
  bit_map_info->minor = &bit_map->bit_map[ _Priority_Bits_index( major ) ];

40009fe0:	c4 22 60 40 	st  %g2, [ %o1 + 0x40 ]
                       
  bit_map_info->ready_major = mask;
                                  
40009fe4:	d4 32 60 44 	sth  %o2, [ %o1 + 0x44 ]
                      
  bit_map_info->block_major = (Priority_bit_map_Word) ~mask;
         
40009fe8:	d0 32 60 48 	sth  %o0, [ %o1 + 0x48 ]
                      
  bit_map_info->ready_minor = mask;
                                  
40009fec:	c6 32 60 46 	sth  %g3, [ %o1 + 0x46 ]
                      
    &context->Bit_map,
                                               
    &context->Ready[ 0 ]
                                             
  );
                                                                 
}
                                                                    
40009ff0:	81 c3 e0 08 	retl 
                                         
40009ff4:	da 32 60 4a 	sth  %o5, [ %o1 + 0x4a ]
                      

                                                                     

40009ff8 <_Scheduler_priority_Schedule>: void _Scheduler_priority_Schedule( const Scheduler_Control *scheduler, Thread_Control *the_thread ) {
40009ff8:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
40009ffc:	f8 06 00 00 	ld  [ %i0 ], %i4
                              <== NOT EXECUTED
  bit_number = (unsigned int) __builtin_clz( value )
                 
4000a000:	40 00 36 7d 	call  400179f4 <__clzsi2>
                     <== NOT EXECUTED
4000a004:	d0 17 00 00 	lduh  [ %i4 ], %o0
                            <== NOT EXECUTED
4000a008:	ba 02 3f f0 	add  %o0, -16, %i5
                            
  minor = _Bitfield_Find_first_bit( bit_map->bit_map[ major ] );
     
4000a00c:	83 2f 60 01 	sll  %i5, 1, %g1
                              
  return (_Priority_Bits_index( major ) << 4) +
                      
4000a010:	bb 2f 60 04 	sll  %i5, 4, %i5
                              
  minor = _Bitfield_Find_first_bit( bit_map->bit_map[ major ] );
     
4000a014:	82 07 00 01 	add  %i4, %g1, %g1
                            
  bit_number = (unsigned int) __builtin_clz( value )
                 
4000a018:	40 00 36 77 	call  400179f4 <__clzsi2>
                     
4000a01c:	d0 10 60 02 	lduh  [ %g1 + 2 ], %o0
                        
  Chain_Node *first = _Chain_First( &ready_queues[ index ] );
        
4000a020:	90 02 00 1d 	add  %o0, %i5, %o0
                            
4000a024:	90 02 3f f0 	add  %o0, -16, %o0
                            
  return _Chain_Immutable_head( the_chain )->next;
                   
4000a028:	bb 2a 20 01 	sll  %o0, 1, %i5
                              
  Thread_Control *heir = _Thread_Heir;
                               
4000a02c:	f6 01 a0 24 	ld  [ %g6 + 0x24 ], %i3
                       
4000a030:	90 07 40 08 	add  %i5, %o0, %o0
                            
4000a034:	91 2a 20 02 	sll  %o0, 2, %o0
                              
4000a038:	b8 07 00 08 	add  %i4, %o0, %i4
                            
4000a03c:	fa 07 20 24 	ld  [ %i4 + 0x24 ], %i5
                       
  if ( heir != new_heir && ( heir->is_preemptible || force_dispatch ) ) {

4000a040:	80 a7 40 1b 	cmp  %i5, %i3
                                 
4000a044:	02 80 00 06 	be  4000a05c <_Scheduler_priority_Schedule+0x64>

4000a048:	b4 10 00 06 	mov  %g6, %i2
                                 
4000a04c:	c2 0e e0 89 	ldub  [ %i3 + 0x89 ], %g1
                     
4000a050:	80 a0 60 00 	cmp  %g1, 0
                                   
4000a054:	12 80 00 04 	bne  4000a064 <_Scheduler_priority_Schedule+0x6c>
<== ALWAYS TAKEN
4000a058:	01 00 00 00 	nop 
                                          
  _Scheduler_priority_Schedule_body( scheduler, the_thread, false );
 
}
                                                                    
4000a05c:	81 c7 e0 08 	ret 
                                          
4000a060:	81 e8 00 00 	restore 
                                      
4000a064:	7f ff fa 0b 	call  40008890 <_Timecounter_Sbinuptime>
      
4000a068:	e0 19 a0 28 	ldd  [ %g6 + 0x28 ], %l0
                      
4000a06c:	d0 3e a0 28 	std  %o0, [ %i2 + 0x28 ]
                      
  *_result = *_end - *_start;
                                        
4000a070:	b2 a2 40 11 	subcc  %o1, %l1, %i1
                          
  *_time += *_add;
                                                   
4000a074:	d8 1e e0 98 	ldd  [ %i3 + 0x98 ], %o4
                      
  *_result = *_end - *_start;
                                        
4000a078:	b0 62 00 10 	subx  %o0, %l0, %i0
                           
  *_time += *_add;
                                                   
4000a07c:	86 83 40 19 	addcc  %o5, %i1, %g3
                          
4000a080:	84 43 00 18 	addx  %o4, %i0, %g2
                           
4000a084:	c4 3e e0 98 	std  %g2, [ %i3 + 0x98 ]
                      
    _Thread_Dispatch_necessary = true;
                               
4000a088:	84 10 20 01 	mov  1, %g2
                                   
    _Thread_Heir = new_heir;
                                         
4000a08c:	fa 21 a0 24 	st  %i5, [ %g6 + 0x24 ]
                       
    _Thread_Dispatch_necessary = true;
                               
4000a090:	c4 29 a0 1c 	stb  %g2, [ %g6 + 0x1c ]
                      
4000a094:	81 c7 e0 08 	ret 
                                          
4000a098:	81 e8 00 00 	restore 
                                      

                                                                     

4000a09c <_Scheduler_priority_Unblock>: void _Scheduler_priority_Unblock ( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ) {
4000a09c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
4000a0a0:	f6 06 a0 34 	ld  [ %i2 + 0x34 ], %i3
                       <== NOT EXECUTED
  context = _Scheduler_priority_Get_context( scheduler );
            
  the_node = _Scheduler_priority_Node_downcast( node );
              
  priority = (unsigned int ) _Scheduler_Node_get_priority( &the_node->Base );

  unmapped_priority = SCHEDULER_PRIORITY_UNMAP( priority );
          

                                                                     
  if ( unmapped_priority != the_node->Ready_queue.current_priority ) {

4000a0a4:	c2 06 a0 38 	ld  [ %i2 + 0x38 ], %g1
                       <== NOT EXECUTED
  unmapped_priority = SCHEDULER_PRIORITY_UNMAP( priority );
          
4000a0a8:	87 36 e0 01 	srl  %i3, 1, %g3
                              <== NOT EXECUTED
  if ( unmapped_priority != the_node->Ready_queue.current_priority ) {

4000a0ac:	80 a0 40 03 	cmp  %g1, %g3
                                 
4000a0b0:	02 80 00 4a 	be  4000a1d8 <_Scheduler_priority_Unblock+0x13c>
<== ALWAYS TAKEN
4000a0b4:	fa 06 00 00 	ld  [ %i0 ], %i5
                              
  ready_queue->ready_chain = &ready_queues[ new_priority ];
          
4000a0b8:	b9 28 e0 01 	sll  %g3, 1, %i4
                              
4000a0bc:	b8 07 00 03 	add  %i4, %g3, %i4
                            
4000a0c0:	b9 2f 20 02 	sll  %i4, 2, %i4
                              
    _Scheduler_priority_Ready_queue_update(
                          
4000a0c4:	84 07 60 24 	add  %i5, 0x24, %g2
                           
4000a0c8:	84 00 80 1c 	add  %g2, %i4, %g2
                            
  return the_priority % 16;
                                          
4000a0cc:	b8 08 e0 0f 	and  %g3, 0xf, %i4
                            
  return (Priority_bit_map_Word) ( 0x8000u >> bit_number );
          
4000a0d0:	09 00 00 20 	sethi  %hi(0x8000), %g4
                       
  return the_priority / 16;
                                          
4000a0d4:	83 36 e0 05 	srl  %i3, 5, %g1
                              
  ready_queue->current_priority = new_priority;
                      
4000a0d8:	c6 26 a0 38 	st  %g3, [ %i2 + 0x38 ]
                       
  return (Priority_bit_map_Word) ( 0x8000u >> bit_number );
          
4000a0dc:	b1 31 00 01 	srl  %g4, %g1, %i0
                            
4000a0e0:	87 31 00 1c 	srl  %g4, %i4, %g3
                            
  bit_map_info->minor = &bit_map->bit_map[ _Priority_Bits_index( major ) ];

4000a0e4:	82 00 60 01 	inc  %g1
                                      
  bit_map_info->block_major = (Priority_bit_map_Word) ~mask;
         
4000a0e8:	9e 38 00 18 	xnor  %g0, %i0, %o7
                           
  bit_map_info->minor = &bit_map->bit_map[ _Priority_Bits_index( major ) ];

4000a0ec:	83 28 60 01 	sll  %g1, 1, %g1
                              
  bit_map_info->block_minor = (Priority_bit_map_Word) ~mask;
         
4000a0f0:	b8 38 00 03 	xnor  %g0, %g3, %i4
                           
  bit_map_info->minor = &bit_map->bit_map[ _Priority_Bits_index( major ) ];

4000a0f4:	82 07 40 01 	add  %i5, %g1, %g1
                            
  ready_queue->ready_chain = &ready_queues[ new_priority ];
          
4000a0f8:	c4 26 a0 3c 	st  %g2, [ %i2 + 0x3c ]
                       
  return (Priority_bit_map_Word) ( 0x8000u >> bit_number );
          
4000a0fc:	88 10 00 03 	mov  %g3, %g4
                                 
  bit_map_info->minor = &bit_map->bit_map[ _Priority_Bits_index( major ) ];

4000a100:	c2 26 a0 40 	st  %g1, [ %i2 + 0x40 ]
                       
  bit_map_info->ready_major = mask;
                                  
4000a104:	f0 36 a0 44 	sth  %i0, [ %i2 + 0x44 ]
                      
  bit_map_info->block_major = (Priority_bit_map_Word) ~mask;
         
4000a108:	de 36 a0 48 	sth  %o7, [ %i2 + 0x48 ]
                      
  bit_map_info->ready_minor = mask;
                                  
4000a10c:	c6 36 a0 46 	sth  %g3, [ %i2 + 0x46 ]
                      
  bit_map_info->block_minor = (Priority_bit_map_Word) ~mask;
         
4000a110:	f8 36 a0 4a 	sth  %i4, [ %i2 + 0x4a ]
                      
  return &the_chain->Tail.Node;
                                      
4000a114:	b8 00 a0 04 	add  %g2, 4, %i4
                              
  old_last = tail->previous;
                                         
4000a118:	c6 00 a0 08 	ld  [ %g2 + 8 ], %g3
                          
  the_node->next = tail;
                                             
4000a11c:	f8 26 40 00 	st  %i4, [ %i1 ]
                              
  tail->previous = the_node;
                                         
4000a120:	f2 20 a0 08 	st  %i1, [ %g2 + 8 ]
                          
  old_last->next = the_node;
                                         
4000a124:	f2 20 c0 00 	st  %i1, [ %g3 ]
                              
  *bit_map_info->minor |= bit_map_info->ready_minor;
                 
4000a128:	c4 10 40 00 	lduh  [ %g1 ], %g2
                            
  the_node->previous = old_last;
                                     
4000a12c:	c6 26 60 04 	st  %g3, [ %i1 + 4 ]
                          
4000a130:	84 10 80 04 	or  %g2, %g4, %g2
                             
4000a134:	c4 30 40 00 	sth  %g2, [ %g1 ]
                             
   *    a context switch.
                                            
   *  Pseudo-ISR case:
                                               
   *    Even if the thread isn't preemptible, if the new heir is
     
   *    a pseudo-ISR system task, we need to do a context switch.
    
   */
                                                                
  if ( priority < _Thread_Get_priority( _Thread_Heir ) ) {
           
4000a138:	f8 01 a0 24 	ld  [ %g6 + 0x24 ], %i4
                       
  bit_map->major_bit_map |= bit_map_info->ready_major;
               
4000a13c:	c4 16 a0 44 	lduh  [ %i2 + 0x44 ], %g2
                     
4000a140:	c2 17 40 00 	lduh  [ %i5 ], %g1
                            
4000a144:	82 10 40 02 	or  %g1, %g2, %g1
                             
4000a148:	c4 07 20 38 	ld  [ %i4 + 0x38 ], %g2
                       
4000a14c:	c2 37 40 00 	sth  %g1, [ %i5 ]
                             
4000a150:	c2 00 a0 18 	ld  [ %g2 + 0x18 ], %g1
                       
4000a154:	80 a0 60 00 	cmp  %g1, 0
                                   
4000a158:	18 80 00 09 	bgu  4000a17c <_Scheduler_priority_Unblock+0xe0>
<== NEVER TAKEN
4000a15c:	b0 10 00 06 	mov  %g6, %i0
                                 
4000a160:	22 80 00 04 	be,a   4000a170 <_Scheduler_priority_Unblock+0xd4>
<== ALWAYS TAKEN
4000a164:	c2 00 a0 1c 	ld  [ %g2 + 0x1c ], %g1
                       
    _Scheduler_Update_heir( the_thread, priority == PRIORITY_PSEUDO_ISR );

  }
                                                                  
}
                                                                    
4000a168:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000a16c:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
  if ( priority < _Thread_Get_priority( _Thread_Heir ) ) {
           
4000a170:	80 a0 40 1b 	cmp  %g1, %i3
                                 
4000a174:	08 80 00 17 	bleu  4000a1d0 <_Scheduler_priority_Unblock+0x134>

4000a178:	01 00 00 00 	nop 
                                          
  if ( heir != new_heir && ( heir->is_preemptible || force_dispatch ) ) {

4000a17c:	80 a7 00 19 	cmp  %i4, %i1
                                 
4000a180:	02 bf ff fa 	be  4000a168 <_Scheduler_priority_Unblock+0xcc>
<== NEVER TAKEN
4000a184:	80 a6 e0 00 	cmp  %i3, 0
                                   
4000a188:	02 80 00 06 	be  4000a1a0 <_Scheduler_priority_Unblock+0x104>

4000a18c:	01 00 00 00 	nop 
                                          
4000a190:	c2 0f 20 89 	ldub  [ %i4 + 0x89 ], %g1
                     
4000a194:	80 a0 60 00 	cmp  %g1, 0
                                   
4000a198:	02 80 00 0e 	be  4000a1d0 <_Scheduler_priority_Unblock+0x134>

4000a19c:	01 00 00 00 	nop 
                                          
4000a1a0:	7f ff f9 bc 	call  40008890 <_Timecounter_Sbinuptime>
      
4000a1a4:	e0 1e 20 28 	ldd  [ %i0 + 0x28 ], %l0
                      
4000a1a8:	d0 3e 20 28 	std  %o0, [ %i0 + 0x28 ]
                      
  *_result = *_end - *_start;
                                        
4000a1ac:	b6 a2 40 11 	subcc  %o1, %l1, %i3
                          
  *_time += *_add;
                                                   
4000a1b0:	d8 1f 20 98 	ldd  [ %i4 + 0x98 ], %o4
                      
  *_result = *_end - *_start;
                                        
4000a1b4:	b4 62 00 10 	subx  %o0, %l0, %i2
                           
  *_time += *_add;
                                                   
4000a1b8:	86 83 40 1b 	addcc  %o5, %i3, %g3
                          
4000a1bc:	84 43 00 1a 	addx  %o4, %i2, %g2
                           
4000a1c0:	c4 3f 20 98 	std  %g2, [ %i4 + 0x98 ]
                      
    _Thread_Dispatch_necessary = true;
                               
4000a1c4:	84 10 20 01 	mov  1, %g2
                                   
    _Thread_Heir = new_heir;
                                         
4000a1c8:	f2 21 a0 24 	st  %i1, [ %g6 + 0x24 ]
                       
    _Thread_Dispatch_necessary = true;
                               
4000a1cc:	c4 29 a0 1c 	stb  %g2, [ %g6 + 0x1c ]
                      
}
                                                                    
4000a1d0:	81 c7 e0 08 	ret 
                                          
4000a1d4:	81 e8 00 00 	restore 
                                      
4000a1d8:	c4 06 a0 3c 	ld  [ %i2 + 0x3c ], %g2
                       
4000a1dc:	c2 06 a0 40 	ld  [ %i2 + 0x40 ], %g1
                       
4000a1e0:	10 bf ff cd 	b  4000a114 <_Scheduler_priority_Unblock+0x78>

4000a1e4:	c8 16 a0 46 	lduh  [ %i2 + 0x46 ], %g4
                     

                                                                     

40009d44 <_Scheduler_priority_Update_priority>: void _Scheduler_priority_Update_priority( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ) {
40009d44:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  Scheduler_priority_Context *context;
                               
  Scheduler_priority_Node    *the_node;
                              
  unsigned int                new_priority;
                          
  unsigned int                unmapped_priority;
                     

                                                                     
  if ( !_Thread_Is_ready( the_thread ) ) {
                           
40009d48:	c2 06 60 1c 	ld  [ %i1 + 0x1c ], %g1
                       <== NOT EXECUTED
40009d4c:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
40009d50:	12 80 00 5c 	bne  40009ec0 <_Scheduler_priority_Update_priority+0x17c>
<== NOT EXECUTED
40009d54:	01 00 00 00 	nop 
                                          
    /* Nothing to do */
                                              
    return;
                                                          
  }
                                                                  

                                                                     
  the_node = _Scheduler_priority_Node_downcast( node );
              
  new_priority = (unsigned int)
                                      
40009d58:	f6 06 a0 34 	ld  [ %i2 + 0x34 ], %i3
                       
    _Scheduler_Node_get_priority( &the_node->Base );
                 
  unmapped_priority = SCHEDULER_PRIORITY_UNMAP( new_priority );
      

                                                                     
  if ( unmapped_priority == the_node->Ready_queue.current_priority ) {

40009d5c:	c2 06 a0 38 	ld  [ %i2 + 0x38 ], %g1
                       
  unmapped_priority = SCHEDULER_PRIORITY_UNMAP( new_priority );
      
40009d60:	87 36 e0 01 	srl  %i3, 1, %g3
                              
  if ( unmapped_priority == the_node->Ready_queue.current_priority ) {

40009d64:	80 a0 40 03 	cmp  %g1, %g3
                                 
40009d68:	02 80 00 56 	be  40009ec0 <_Scheduler_priority_Update_priority+0x17c>

40009d6c:	01 00 00 00 	nop 
                                          
  Chain_Control *ready_chain = ready_queue->ready_chain;
             
40009d70:	c2 06 a0 3c 	ld  [ %i2 + 0x3c ], %g1
                       
  if ( _Chain_Has_only_one_node( ready_chain ) ) {
                   
40009d74:	c8 00 40 00 	ld  [ %g1 ], %g4
                              
40009d78:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
40009d7c:	80 a1 00 02 	cmp  %g4, %g2
                                 
40009d80:	02 80 00 52 	be  40009ec8 <_Scheduler_priority_Update_priority+0x184>

40009d84:	fa 06 00 00 	ld  [ %i0 ], %i5
                              
  next           = the_node->next;
                                   
40009d88:	c4 06 40 00 	ld  [ %i1 ], %g2
                              
  previous       = the_node->previous;
                               
40009d8c:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          
  next->previous = previous;
                                         
40009d90:	c2 20 a0 04 	st  %g1, [ %g2 + 4 ]
                          
  previous->next = next;
                                             
40009d94:	c4 20 40 00 	st  %g2, [ %g1 ]
                              
  return the_priority / 16;
                                          
40009d98:	85 36 e0 05 	srl  %i3, 5, %g2
                              
  return (Priority_bit_map_Word) ( 0x8000u >> bit_number );
          
40009d9c:	03 00 00 20 	sethi  %hi(0x8000), %g1
                       
  Priority_bit_map_Control       *bit_map,
                           
  Chain_Control                  *ready_queues
                       
)
                                                                    
{
                                                                    
  ready_queue->current_priority = new_priority;
                      
  ready_queue->ready_chain = &ready_queues[ new_priority ];
          
40009da0:	89 28 e0 01 	sll  %g3, 1, %g4
                              
40009da4:	9f 30 40 02 	srl  %g1, %g2, %o7
                            
40009da8:	88 01 00 03 	add  %g4, %g3, %g4
                            
  return the_priority % 16;
                                          
40009dac:	96 08 e0 0f 	and  %g3, 0xf, %o3
                            
    &the_thread->Object.Node,
                                        
    &the_node->Ready_queue,
                                          
    &context->Bit_map
                                                
  );
                                                                 

                                                                     
  _Scheduler_priority_Ready_queue_update(
                            
40009db0:	9a 07 60 24 	add  %i5, 0x24, %o5
                           
  return (Priority_bit_map_Word) ( 0x8000u >> bit_number );
          
40009db4:	83 30 40 0b 	srl  %g1, %o3, %g1
                            
  Priority_bit_map_Word mask;
                                        

                                                                     
  major = _Priority_Major( new_priority );
                           
  minor = _Priority_Minor( new_priority );
                           

                                                                     
  bit_map_info->minor = &bit_map->bit_map[ _Priority_Bits_index( major ) ];

40009db8:	b8 00 a0 01 	add  %g2, 1, %i4
                              
40009dbc:	89 29 20 02 	sll  %g4, 2, %g4
                              
40009dc0:	b9 2f 20 01 	sll  %i4, 1, %i4
                              
40009dc4:	b0 03 40 04 	add  %o5, %g4, %i0
                            
40009dc8:	b8 07 40 1c 	add  %i5, %i4, %i4
                            

                                                                     
  mask = _Priority_Mask( major );
                                    
  bit_map_info->ready_major = mask;
                                  
  bit_map_info->block_major = (Priority_bit_map_Word) ~mask;
         
40009dcc:	98 38 00 0f 	xnor  %g0, %o7, %o4
                           
  ready_queue->current_priority = new_priority;
                      
40009dd0:	c6 26 a0 38 	st  %g3, [ %i2 + 0x38 ]
                       

                                                                     
  mask = _Priority_Mask( minor );
                                    
  bit_map_info->ready_minor = mask;
                                  
  bit_map_info->block_minor = (Priority_bit_map_Word) ~mask;
         
40009dd4:	86 38 00 01 	xnor  %g0, %g1, %g3
                           
  ready_queue->ready_chain = &ready_queues[ new_priority ];
          
40009dd8:	f0 26 a0 3c 	st  %i0, [ %i2 + 0x3c ]
                       
    unmapped_priority,
                                               
    &context->Bit_map,
                                               
    &context->Ready[ 0 ]
                                             
  );
                                                                 

                                                                     
  if ( SCHEDULER_PRIORITY_IS_APPEND( new_priority ) ) {
              
40009ddc:	80 8e e0 01 	btst  1, %i3
                                  
  bit_map_info->minor = &bit_map->bit_map[ _Priority_Bits_index( major ) ];

40009de0:	f8 26 a0 40 	st  %i4, [ %i2 + 0x40 ]
                       
  bit_map_info->ready_major = mask;
                                  
40009de4:	de 36 a0 44 	sth  %o7, [ %i2 + 0x44 ]
                      
  bit_map_info->block_major = (Priority_bit_map_Word) ~mask;
         
40009de8:	d8 36 a0 48 	sth  %o4, [ %i2 + 0x48 ]
                      
  bit_map_info->ready_minor = mask;
                                  
40009dec:	c2 36 a0 46 	sth  %g1, [ %i2 + 0x46 ]
                      
40009df0:	02 80 00 46 	be  40009f08 <_Scheduler_priority_Update_priority+0x1c4>

40009df4:	c6 36 a0 4a 	sth  %g3, [ %i2 + 0x4a ]
                      
  old_last = tail->previous;
                                         
40009df8:	c6 06 20 08 	ld  [ %i0 + 8 ], %g3
                          
  return &the_chain->Tail.Node;
                                      
40009dfc:	88 06 20 04 	add  %i0, 4, %g4
                              
  the_node->next = tail;
                                             
40009e00:	c8 26 40 00 	st  %g4, [ %i1 ]
                              
40009e04:	85 28 a0 01 	sll  %g2, 1, %g2
                              
  tail->previous = the_node;
                                         
40009e08:	f2 26 20 08 	st  %i1, [ %i0 + 8 ]
                          
40009e0c:	84 07 40 02 	add  %i5, %g2, %g2
                            
  old_last->next = the_node;
                                         
40009e10:	f2 20 c0 00 	st  %i1, [ %g3 ]
                              
  *bit_map_info->minor |= bit_map_info->ready_minor;
                 
40009e14:	c8 10 a0 02 	lduh  [ %g2 + 2 ], %g4
                        
  the_node->previous = old_last;
                                     
40009e18:	c6 26 60 04 	st  %g3, [ %i1 + 4 ]
                          
40009e1c:	82 10 40 04 	or  %g1, %g4, %g1
                             
40009e20:	c2 30 a0 02 	sth  %g1, [ %g2 + 2 ]
                         
  bit_map->major_bit_map |= bit_map_info->ready_major;
               
40009e24:	c4 16 a0 44 	lduh  [ %i2 + 0x44 ], %g2
                     
40009e28:	c2 17 40 00 	lduh  [ %i5 ], %g1
                            
40009e2c:	82 10 40 02 	or  %g1, %g2, %g1
                             
40009e30:	c2 37 40 00 	sth  %g1, [ %i5 ]
                             
  bit_number = (unsigned int) __builtin_clz( value )
                 
40009e34:	40 00 36 f0 	call  400179f4 <__clzsi2>
                     
40009e38:	d0 17 40 00 	lduh  [ %i5 ], %o0
                            
40009e3c:	b8 02 3f f0 	add  %o0, -16, %i4
                            
  minor = _Bitfield_Find_first_bit( bit_map->bit_map[ major ] );
     
40009e40:	83 2f 20 01 	sll  %i4, 1, %g1
                              
  return (_Priority_Bits_index( major ) << 4) +
                      
40009e44:	b9 2f 20 04 	sll  %i4, 4, %i4
                              
  minor = _Bitfield_Find_first_bit( bit_map->bit_map[ major ] );
     
40009e48:	82 07 40 01 	add  %i5, %g1, %g1
                            
  bit_number = (unsigned int) __builtin_clz( value )
                 
40009e4c:	40 00 36 ea 	call  400179f4 <__clzsi2>
                     
40009e50:	d0 10 60 02 	lduh  [ %g1 + 2 ], %o0
                        
  Chain_Node *first = _Chain_First( &ready_queues[ index ] );
        
40009e54:	90 02 00 1c 	add  %o0, %i4, %o0
                            
  Thread_Control *heir = _Thread_Heir;
                               
40009e58:	f6 01 a0 24 	ld  [ %g6 + 0x24 ], %i3
                       
40009e5c:	90 02 3f f0 	add  %o0, -16, %o0
                            
  return _Chain_Immutable_head( the_chain )->next;
                   
40009e60:	b9 2a 20 01 	sll  %o0, 1, %i4
                              
40009e64:	90 07 00 08 	add  %i4, %o0, %o0
                            
40009e68:	91 2a 20 02 	sll  %o0, 2, %o0
                              
40009e6c:	ba 07 40 08 	add  %i5, %o0, %i5
                            
40009e70:	fa 07 60 24 	ld  [ %i5 + 0x24 ], %i5
                       
  if ( heir != new_heir && ( heir->is_preemptible || force_dispatch ) ) {

40009e74:	80 a7 40 1b 	cmp  %i5, %i3
                                 
40009e78:	02 80 00 12 	be  40009ec0 <_Scheduler_priority_Update_priority+0x17c>

40009e7c:	b4 10 00 06 	mov  %g6, %i2
                                 
40009e80:	c2 0e e0 89 	ldub  [ %i3 + 0x89 ], %g1
                     
40009e84:	80 a0 60 00 	cmp  %g1, 0
                                   
40009e88:	02 80 00 0e 	be  40009ec0 <_Scheduler_priority_Update_priority+0x17c>

40009e8c:	01 00 00 00 	nop 
                                          
40009e90:	7f ff fa 80 	call  40008890 <_Timecounter_Sbinuptime>
      
40009e94:	e0 19 a0 28 	ldd  [ %g6 + 0x28 ], %l0
                      
40009e98:	d0 3e a0 28 	std  %o0, [ %i2 + 0x28 ]
                      
  *_result = *_end - *_start;
                                        
40009e9c:	b2 a2 40 11 	subcc  %o1, %l1, %i1
                          
  *_time += *_add;
                                                   
40009ea0:	d8 1e e0 98 	ldd  [ %i3 + 0x98 ], %o4
                      
  *_result = *_end - *_start;
                                        
40009ea4:	b0 62 00 10 	subx  %o0, %l0, %i0
                           
  *_time += *_add;
                                                   
40009ea8:	86 83 40 19 	addcc  %o5, %i1, %g3
                          
40009eac:	84 43 00 18 	addx  %o4, %i0, %g2
                           
40009eb0:	c4 3e e0 98 	std  %g2, [ %i3 + 0x98 ]
                      
    _Thread_Dispatch_necessary = true;
                               
40009eb4:	84 10 20 01 	mov  1, %g2
                                   
    _Thread_Heir = new_heir;
                                         
40009eb8:	fa 21 a0 24 	st  %i5, [ %g6 + 0x24 ]
                       
    _Thread_Dispatch_necessary = true;
                               
40009ebc:	c4 29 a0 1c 	stb  %g2, [ %g6 + 0x1c ]
                      
      &context->Bit_map
                                              
    );
                                                               
  }
                                                                  

                                                                     
  _Scheduler_priority_Schedule_body( scheduler, the_thread, false );
 
}
                                                                    
40009ec0:	81 c7 e0 08 	ret 
                                          
40009ec4:	81 e8 00 00 	restore 
                                      
  *bit_map_info->minor &= bit_map_info->block_minor;
                 
40009ec8:	c8 06 a0 40 	ld  [ %i2 + 0x40 ], %g4
                       
40009ecc:	c4 11 00 00 	lduh  [ %g4 ], %g2
                            
40009ed0:	f0 16 a0 4a 	lduh  [ %i2 + 0x4a ], %i0
                     
  return &the_chain->Tail.Node;
                                      
40009ed4:	b8 00 60 04 	add  %g1, 4, %i4
                              
  head->previous = NULL;
                                             
40009ed8:	c0 20 60 04 	clr  [ %g1 + 4 ]
                              
40009edc:	84 08 80 18 	and  %g2, %i0, %g2
                            
  head->next = tail;
                                                 
40009ee0:	f8 20 40 00 	st  %i4, [ %g1 ]
                              
  if ( *bit_map_info->minor == 0 )
                                   
40009ee4:	80 a0 a0 00 	cmp  %g2, 0
                                   
  tail->previous = head;
                                             
40009ee8:	c2 20 60 08 	st  %g1, [ %g1 + 8 ]
                          
40009eec:	12 bf ff ab 	bne  40009d98 <_Scheduler_priority_Update_priority+0x54>

40009ef0:	c4 31 00 00 	sth  %g2, [ %g4 ]
                             
    bit_map->major_bit_map &= bit_map_info->block_major;
             
40009ef4:	c2 17 40 00 	lduh  [ %i5 ], %g1
                            
40009ef8:	c4 16 a0 48 	lduh  [ %i2 + 0x48 ], %g2
                     
40009efc:	82 08 40 02 	and  %g1, %g2, %g1
                            
40009f00:	10 bf ff a6 	b  40009d98 <_Scheduler_priority_Update_priority+0x54>

40009f04:	c2 37 40 00 	sth  %g1, [ %i5 ]
                             
  the_node->previous    = after_node;
                                
40009f08:	f0 26 60 04 	st  %i0, [ %i1 + 4 ]
                          
40009f0c:	85 28 a0 01 	sll  %g2, 1, %g2
                              
  before_node           = after_node->next;
                          
40009f10:	c6 03 40 04 	ld  [ %o5 + %g4 ], %g3
                        
  after_node->next      = the_node;
                                  
40009f14:	f2 23 40 04 	st  %i1, [ %o5 + %g4 ]
                        
40009f18:	84 07 40 02 	add  %i5, %g2, %g2
                            
  the_node->next        = before_node;
                               
40009f1c:	c6 26 40 00 	st  %g3, [ %i1 ]
                              
  *bit_map_info->minor |= bit_map_info->ready_minor;
                 
40009f20:	c8 10 a0 02 	lduh  [ %g2 + 2 ], %g4
                        
  before_node->previous = the_node;
                                  
40009f24:	10 bf ff be 	b  40009e1c <_Scheduler_priority_Update_priority+0xd8>

40009f28:	f2 20 e0 04 	st  %i1, [ %g3 + 4 ]
                          

                                                                     

4000a1e8 <_Scheduler_priority_Yield>: void _Scheduler_priority_Yield( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ) {
4000a1e8:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  Scheduler_priority_Node *the_node;
                                 
  Chain_Control           *ready_chain;
                              

                                                                     
  the_node = _Scheduler_priority_Node_downcast( node );
              
  ready_chain = the_node->Ready_queue.ready_chain;
                   
4000a1ec:	c2 06 a0 3c 	ld  [ %i2 + 0x3c ], %g1
                       <== NOT EXECUTED

                                                                     
  if ( !_Chain_Has_only_one_node( ready_chain ) ) {
                  
4000a1f0:	c6 00 60 08 	ld  [ %g1 + 8 ], %g3
                          <== NOT EXECUTED
4000a1f4:	c4 00 40 00 	ld  [ %g1 ], %g2
                              <== NOT EXECUTED
4000a1f8:	80 a0 c0 02 	cmp  %g3, %g2
                                 <== NOT EXECUTED
4000a1fc:	02 80 00 0b 	be  4000a228 <_Scheduler_priority_Yield+0x40>
 <== NOT EXECUTED
4000a200:	88 00 60 04 	add  %g1, 4, %g4
                              
  previous       = the_node->previous;
                               
4000a204:	c4 06 60 04 	ld  [ %i1 + 4 ], %g2
                          
  next           = the_node->next;
                                   
4000a208:	c6 06 40 00 	ld  [ %i1 ], %g3
                              
  next->previous = previous;
                                         
4000a20c:	c4 20 e0 04 	st  %g2, [ %g3 + 4 ]
                          
  previous->next = next;
                                             
4000a210:	c6 20 80 00 	st  %g3, [ %g2 ]
                              
  old_last = tail->previous;
                                         
4000a214:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
  the_node->next = tail;
                                             
4000a218:	c8 26 40 00 	st  %g4, [ %i1 ]
                              
  tail->previous = the_node;
                                         
4000a21c:	f2 20 60 08 	st  %i1, [ %g1 + 8 ]
                          
  old_last->next = the_node;
                                         
4000a220:	f2 20 80 00 	st  %i1, [ %g2 ]
                              
  the_node->previous = old_last;
                                     
4000a224:	c4 26 60 04 	st  %g2, [ %i1 + 4 ]
                          
4000a228:	f8 06 00 00 	ld  [ %i0 ], %i4
                              
  bit_number = (unsigned int) __builtin_clz( value )
                 
4000a22c:	40 00 35 f2 	call  400179f4 <__clzsi2>
                     
4000a230:	d0 17 00 00 	lduh  [ %i4 ], %o0
                            
4000a234:	ba 02 3f f0 	add  %o0, -16, %i5
                            
  minor = _Bitfield_Find_first_bit( bit_map->bit_map[ major ] );
     
4000a238:	83 2f 60 01 	sll  %i5, 1, %g1
                              
  return (_Priority_Bits_index( major ) << 4) +
                      
4000a23c:	bb 2f 60 04 	sll  %i5, 4, %i5
                              
  minor = _Bitfield_Find_first_bit( bit_map->bit_map[ major ] );
     
4000a240:	82 07 00 01 	add  %i4, %g1, %g1
                            
  bit_number = (unsigned int) __builtin_clz( value )
                 
4000a244:	40 00 35 ec 	call  400179f4 <__clzsi2>
                     
4000a248:	d0 10 60 02 	lduh  [ %g1 + 2 ], %o0
                        
  Chain_Node *first = _Chain_First( &ready_queues[ index ] );
        
4000a24c:	90 02 00 1d 	add  %o0, %i5, %o0
                            
4000a250:	90 02 3f f0 	add  %o0, -16, %o0
                            
  return _Chain_Immutable_head( the_chain )->next;
                   
4000a254:	bb 2a 20 01 	sll  %o0, 1, %i5
                              
  Thread_Control *heir = _Thread_Heir;
                               
4000a258:	f6 01 a0 24 	ld  [ %g6 + 0x24 ], %i3
                       
4000a25c:	90 07 40 08 	add  %i5, %o0, %o0
                            
4000a260:	91 2a 20 02 	sll  %o0, 2, %o0
                              
4000a264:	b8 07 00 08 	add  %i4, %o0, %i4
                            
4000a268:	fa 07 20 24 	ld  [ %i4 + 0x24 ], %i5
                       
  if ( heir != new_heir && ( heir->is_preemptible || force_dispatch ) ) {

4000a26c:	80 a7 40 1b 	cmp  %i5, %i3
                                 
4000a270:	02 80 00 0e 	be  4000a2a8 <_Scheduler_priority_Yield+0xc0>
 
4000a274:	b4 10 00 06 	mov  %g6, %i2
                                 
4000a278:	7f ff f9 86 	call  40008890 <_Timecounter_Sbinuptime>
      
4000a27c:	e0 19 a0 28 	ldd  [ %g6 + 0x28 ], %l0
                      
4000a280:	d0 3e a0 28 	std  %o0, [ %i2 + 0x28 ]
                      
  *_result = *_end - *_start;
                                        
4000a284:	b2 a2 40 11 	subcc  %o1, %l1, %i1
                          
  *_time += *_add;
                                                   
4000a288:	d8 1e e0 98 	ldd  [ %i3 + 0x98 ], %o4
                      
  *_result = *_end - *_start;
                                        
4000a28c:	b0 62 00 10 	subx  %o0, %l0, %i0
                           
  *_time += *_add;
                                                   
4000a290:	86 83 40 19 	addcc  %o5, %i1, %g3
                          
4000a294:	84 43 00 18 	addx  %o4, %i0, %g2
                           
4000a298:	c4 3e e0 98 	std  %g2, [ %i3 + 0x98 ]
                      
    _Thread_Dispatch_necessary = true;
                               
4000a29c:	84 10 20 01 	mov  1, %g2
                                   
    _Thread_Heir = new_heir;
                                         
4000a2a0:	fa 21 a0 24 	st  %i5, [ %g6 + 0x24 ]
                       
    _Thread_Dispatch_necessary = true;
                               
4000a2a4:	c4 29 a0 1c 	stb  %g2, [ %g6 + 0x1c ]
                      
    _Chain_Extract_unprotected( &the_thread->Object.Node );
          
    _Chain_Append_unprotected( ready_chain, &the_thread->Object.Node );

  }
                                                                  

                                                                     
  _Scheduler_priority_Schedule_body( scheduler, the_thread, true );
  
}
                                                                    
4000a2a8:	81 c7 e0 08 	ret 
                                          
4000a2ac:	81 e8 00 00 	restore 
                                      

                                                                     

4000a5fc <_Scheduler_simple_Block>: void _Scheduler_simple_Block( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ) {
4000a5fc:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  previous       = the_node->previous;
                               
4000a600:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          <== NOT EXECUTED
  next           = the_node->next;
                                   
4000a604:	c4 06 40 00 	ld  [ %i1 ], %g2
                              <== NOT EXECUTED
  next->previous = previous;
                                         
4000a608:	c2 20 a0 04 	st  %g1, [ %g2 + 4 ]
                          <== NOT EXECUTED
  return ( the_thread == _Thread_Executing );
                        
4000a60c:	ba 10 00 06 	mov  %g6, %i5
                                 <== NOT EXECUTED
  previous->next = next;
                                             
4000a610:	c4 20 40 00 	st  %g2, [ %g1 ]
                              <== NOT EXECUTED
{
                                                                    
  ( *extract )( scheduler, the_thread, node );
                       

                                                                     
  /* TODO: flash critical section? */
                                

                                                                     
  if ( _Thread_Is_executing( the_thread ) || _Thread_Is_heir( the_thread ) ) {

4000a614:	c2 01 a0 20 	ld  [ %g6 + 0x20 ], %g1
                       <== NOT EXECUTED
4000a618:	80 a6 40 01 	cmp  %i1, %g1
                                 <== NOT EXECUTED
4000a61c:	02 80 00 07 	be  4000a638 <_Scheduler_simple_Block+0x3c>
   <== NOT EXECUTED
4000a620:	f8 01 a0 24 	ld  [ %g6 + 0x24 ], %i4
                       
4000a624:	80 a6 40 1c 	cmp  %i1, %i4
                                 
4000a628:	22 80 00 05 	be,a   4000a63c <_Scheduler_simple_Block+0x40>
<== NEVER TAKEN
4000a62c:	c2 06 00 00 	ld  [ %i0 ], %g1
                              <== NOT EXECUTED
    the_thread,
                                                      
    node,
                                                            
    _Scheduler_simple_Extract,
                                       
    _Scheduler_simple_Schedule_body
                                  
  );
                                                                 
}
                                                                    
4000a630:	81 c7 e0 08 	ret 
                                          
4000a634:	81 e8 00 00 	restore 
                                      
  return _Chain_Immutable_head( the_chain )->next;
                   
4000a638:	c2 06 00 00 	ld  [ %i0 ], %g1
                              
4000a63c:	f6 00 40 00 	ld  [ %g1 ], %i3
                              
  bool            force_dispatch
                                     
)
                                                                    
{
                                                                    
  Thread_Control *heir = _Thread_Heir;
                               

                                                                     
  if ( heir != new_heir && ( heir->is_preemptible || force_dispatch ) ) {

4000a640:	80 a6 c0 1c 	cmp  %i3, %i4
                                 
4000a644:	02 80 00 0e 	be  4000a67c <_Scheduler_simple_Block+0x80>
   <== NEVER TAKEN
4000a648:	01 00 00 00 	nop 
                                          
  *time = _Timecounter_Sbinuptime();
                                 
4000a64c:	7f ff fa 6a 	call  40008ff4 <_Timecounter_Sbinuptime>
      
4000a650:	e0 1f 60 28 	ldd  [ %i5 + 0x28 ], %l0
                      
4000a654:	d0 3f 60 28 	std  %o0, [ %i5 + 0x28 ]
                      
  const Timestamp_Control *_start,
                                   
  const Timestamp_Control *_end,
                                     
  Timestamp_Control       *_result
                                   
)
                                                                    
{
                                                                    
  *_result = *_end - *_start;
                                        
4000a658:	b2 a2 40 11 	subcc  %o1, %l1, %i1
                          
  *_time += *_add;
                                                   
4000a65c:	d8 1f 20 98 	ldd  [ %i4 + 0x98 ], %o4
                      
  *_result = *_end - *_start;
                                        
4000a660:	b0 62 00 10 	subx  %o0, %l0, %i0
                           
  *_time += *_add;
                                                   
4000a664:	86 83 40 19 	addcc  %o5, %i1, %g3
                          
4000a668:	84 43 00 18 	addx  %o4, %i0, %g2
                           
4000a66c:	c4 3f 20 98 	std  %g2, [ %i4 + 0x98 ]
                      
    heir->Scheduler.state = THREAD_SCHEDULER_BLOCKED;
                
    new_heir->Scheduler.state = THREAD_SCHEDULER_SCHEDULED;
          
#endif
                                                               
    _Thread_Update_CPU_time_used( heir, _Thread_Get_CPU( heir ) );
   
    _Thread_Heir = new_heir;
                                         
    _Thread_Dispatch_necessary = true;
                               
4000a670:	84 10 20 01 	mov  1, %g2
                                   
    _Thread_Heir = new_heir;
                                         
4000a674:	f6 21 a0 24 	st  %i3, [ %g6 + 0x24 ]
                       
    _Thread_Dispatch_necessary = true;
                               
4000a678:	c4 29 a0 1c 	stb  %g2, [ %g6 + 0x1c ]
                      
4000a67c:	81 c7 e0 08 	ret 
                                          
4000a680:	81 e8 00 00 	restore 
                                      

                                                                     

4000a794 <_Scheduler_simple_Initialize>: #include <rtems/score/schedulersimpleimpl.h> #include <rtems/score/chainimpl.h> void _Scheduler_simple_Initialize( const Scheduler_Control *scheduler ) {
4000a794:	c2 02 00 00 	ld  [ %o0 ], %g1
                              <== NOT EXECUTED
  return &the_chain->Tail.Node;
                                      
4000a798:	84 00 60 04 	add  %g1, 4, %g2
                              <== NOT EXECUTED
  head->previous = NULL;
                                             
4000a79c:	c0 20 60 04 	clr  [ %g1 + 4 ]
                              <== NOT EXECUTED
  head->next = tail;
                                                 
4000a7a0:	c4 20 40 00 	st  %g2, [ %g1 ]
                              <== NOT EXECUTED
  Scheduler_simple_Context *context =
                                
    _Scheduler_simple_Get_context( scheduler );
                      

                                                                     
  _Chain_Initialize_empty( &context->Ready );
                        
}
                                                                    
4000a7a4:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000a7a8:	c2 20 60 08 	st  %g1, [ %g1 + 8 ]
                          

                                                                     

4000a7ac <_Scheduler_simple_Schedule>: void _Scheduler_simple_Schedule( const Scheduler_Control *scheduler, Thread_Control *the_thread ) {
4000a7ac:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  return _Chain_Immutable_head( the_chain )->next;
                   
4000a7b0:	c2 06 00 00 	ld  [ %i0 ], %g1
                              <== NOT EXECUTED
4000a7b4:	f6 00 40 00 	ld  [ %g1 ], %i3
                              <== NOT EXECUTED
  Thread_Control *heir = _Thread_Heir;
                               
4000a7b8:	fa 01 a0 24 	ld  [ %g6 + 0x24 ], %i5
                       <== NOT EXECUTED
  if ( heir != new_heir && ( heir->is_preemptible || force_dispatch ) ) {

4000a7bc:	80 a6 c0 1d 	cmp  %i3, %i5
                                 <== NOT EXECUTED
4000a7c0:	02 80 00 06 	be  4000a7d8 <_Scheduler_simple_Schedule+0x2c>
<== NOT EXECUTED
4000a7c4:	b8 10 00 06 	mov  %g6, %i4
                                 <== NOT EXECUTED
4000a7c8:	c2 0f 60 89 	ldub  [ %i5 + 0x89 ], %g1
                     <== NOT EXECUTED
4000a7cc:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000a7d0:	12 80 00 04 	bne  4000a7e0 <_Scheduler_simple_Schedule+0x34>
<== NOT EXECUTED
4000a7d4:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
  _Scheduler_simple_Schedule_body( scheduler, the_thread, false );
   
}
                                                                    
4000a7d8:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000a7dc:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
4000a7e0:	7f ff fa 05 	call  40008ff4 <_Timecounter_Sbinuptime>
      <== NOT EXECUTED
4000a7e4:	e0 19 a0 28 	ldd  [ %g6 + 0x28 ], %l0
                      <== NOT EXECUTED
4000a7e8:	d0 3f 20 28 	std  %o0, [ %i4 + 0x28 ]
                      <== NOT EXECUTED
  *_result = *_end - *_start;
                                        
4000a7ec:	b2 a2 40 11 	subcc  %o1, %l1, %i1
                          <== NOT EXECUTED
  *_time += *_add;
                                                   
4000a7f0:	d8 1f 60 98 	ldd  [ %i5 + 0x98 ], %o4
                      <== NOT EXECUTED
  *_result = *_end - *_start;
                                        
4000a7f4:	b0 62 00 10 	subx  %o0, %l0, %i0
                           <== NOT EXECUTED
  *_time += *_add;
                                                   
4000a7f8:	86 83 40 19 	addcc  %o5, %i1, %g3
                          <== NOT EXECUTED
4000a7fc:	84 43 00 18 	addx  %o4, %i0, %g2
                           <== NOT EXECUTED
4000a800:	c4 3f 60 98 	std  %g2, [ %i5 + 0x98 ]
                      <== NOT EXECUTED
    _Thread_Dispatch_necessary = true;
                               
4000a804:	84 10 20 01 	mov  1, %g2
                                   <== NOT EXECUTED
    _Thread_Heir = new_heir;
                                         
4000a808:	f6 21 a0 24 	st  %i3, [ %g6 + 0x24 ]
                       <== NOT EXECUTED
    _Thread_Dispatch_necessary = true;
                               
4000a80c:	c4 29 a0 1c 	stb  %g2, [ %g6 + 0x1c ]
                      <== NOT EXECUTED
4000a810:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000a814:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

4000a818 <_Scheduler_simple_Unblock>: void _Scheduler_simple_Unblock( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ) {
4000a818:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
4000a81c:	c6 06 00 00 	ld  [ %i0 ], %g3
                              <== NOT EXECUTED
4000a820:	c2 06 60 38 	ld  [ %i1 + 0x38 ], %g1
                       <== NOT EXECUTED
4000a824:	f8 00 60 1c 	ld  [ %g1 + 0x1c ], %i4
                       <== NOT EXECUTED
4000a828:	c2 00 c0 00 	ld  [ %g3 ], %g1
                              <== NOT EXECUTED
  return &the_chain->Tail.Node;
                                      
4000a82c:	86 00 e0 04 	add  %g3, 4, %g3
                              <== NOT EXECUTED
  while ( next != tail && !( *order )( left, next ) ) {
              
4000a830:	80 a0 c0 01 	cmp  %g3, %g1
                                 <== NOT EXECUTED
4000a834:	02 80 00 18 	be  4000a894 <_Scheduler_simple_Unblock+0x7c>
 <== NOT EXECUTED
4000a838:	b6 17 20 01 	or  %i4, 1, %i3
                               
4000a83c:	c4 00 60 38 	ld  [ %g1 + 0x38 ], %g2
                       
4000a840:	c8 00 a0 18 	ld  [ %g2 + 0x18 ], %g4
                       
4000a844:	80 a1 20 00 	cmp  %g4, 0
                                   
4000a848:	12 80 00 12 	bne  4000a890 <_Scheduler_simple_Unblock+0x78>
<== NEVER TAKEN
4000a84c:	ba 10 20 00 	clr  %i5
                                      
4000a850:	c4 00 a0 1c 	ld  [ %g2 + 0x1c ], %g2
                       
4000a854:	80 a0 80 1b 	cmp  %g2, %i3
                                 
4000a858:	3a 80 00 0f 	bcc,a   4000a894 <_Scheduler_simple_Unblock+0x7c>

4000a85c:	86 10 00 01 	mov  %g1, %g3
                                 
4000a860:	c2 00 40 00 	ld  [ %g1 ], %g1
                              
4000a864:	80 a0 c0 01 	cmp  %g3, %g1
                                 
4000a868:	22 80 00 0c 	be,a   4000a898 <_Scheduler_simple_Unblock+0x80>

4000a86c:	c2 00 e0 04 	ld  [ %g3 + 4 ], %g1
                          
4000a870:	c4 00 60 38 	ld  [ %g1 + 0x38 ], %g2
                       
4000a874:	c8 00 a0 18 	ld  [ %g2 + 0x18 ], %g4
                       
4000a878:	80 a7 40 04 	cmp  %i5, %g4
                                 
4000a87c:	12 80 00 05 	bne  4000a890 <_Scheduler_simple_Unblock+0x78>
<== NEVER TAKEN
4000a880:	c4 00 a0 1c 	ld  [ %g2 + 0x1c ], %g2
                       
4000a884:	80 a6 c0 02 	cmp  %i3, %g2
                                 
4000a888:	38 bf ff f7 	bgu,a   4000a864 <_Scheduler_simple_Unblock+0x4c>

4000a88c:	c2 00 40 00 	ld  [ %g1 ], %g1
                              
4000a890:	86 10 00 01 	mov  %g1, %g3
                                 
4000a894:	c2 00 e0 04 	ld  [ %g3 + 4 ], %g1
                          
  the_node->previous    = after_node;
                                
4000a898:	c2 26 60 04 	st  %g1, [ %i1 + 4 ]
                          
  before_node           = after_node->next;
                          
4000a89c:	c4 00 40 00 	ld  [ %g1 ], %g2
                              
  after_node->next      = the_node;
                                  
4000a8a0:	f2 20 40 00 	st  %i1, [ %g1 ]
                              
  the_node->next        = before_node;
                               
4000a8a4:	c4 26 40 00 	st  %g2, [ %i1 ]
                              
   *    a context switch.
                                            
   *  Pseudo-ISR case:
                                               
   *    Even if the thread isn't preemptible, if the new heir is
     
   *    a pseudo-ISR system task, we need to do a context switch.
    
   */
                                                                
  if ( priority < _Thread_Get_priority( _Thread_Heir ) ) {
           
4000a8a8:	fa 01 a0 24 	ld  [ %g6 + 0x24 ], %i5
                       
4000a8ac:	c2 07 60 38 	ld  [ %i5 + 0x38 ], %g1
                       
  before_node->previous = the_node;
                                  
4000a8b0:	f2 20 a0 04 	st  %i1, [ %g2 + 4 ]
                          
4000a8b4:	c4 00 60 18 	ld  [ %g1 + 0x18 ], %g2
                       
4000a8b8:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000a8bc:	18 80 00 09 	bgu  4000a8e0 <_Scheduler_simple_Unblock+0xc8>
<== NEVER TAKEN
4000a8c0:	b6 10 00 06 	mov  %g6, %i3
                                 
4000a8c4:	22 80 00 04 	be,a   4000a8d4 <_Scheduler_simple_Unblock+0xbc>
<== ALWAYS TAKEN
4000a8c8:	c2 00 60 1c 	ld  [ %g1 + 0x1c ], %g1
                       
    _Scheduler_Update_heir(
                                          
      the_thread,
                                                    
      priority == PRIORITY_PSEUDO_ISR
                                
    );
                                                               
  }
                                                                  
}
                                                                    
4000a8cc:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000a8d0:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
  if ( priority < _Thread_Get_priority( _Thread_Heir ) ) {
           
4000a8d4:	80 a0 40 1c 	cmp  %g1, %i4
                                 
4000a8d8:	08 80 00 17 	bleu  4000a934 <_Scheduler_simple_Unblock+0x11c>

4000a8dc:	01 00 00 00 	nop 
                                          
  if ( heir != new_heir && ( heir->is_preemptible || force_dispatch ) ) {

4000a8e0:	80 a7 40 19 	cmp  %i5, %i1
                                 
4000a8e4:	02 bf ff fa 	be  4000a8cc <_Scheduler_simple_Unblock+0xb4>
 <== NEVER TAKEN
4000a8e8:	80 a7 20 00 	cmp  %i4, 0
                                   
4000a8ec:	02 80 00 06 	be  4000a904 <_Scheduler_simple_Unblock+0xec>
 
4000a8f0:	01 00 00 00 	nop 
                                          
4000a8f4:	c2 0f 60 89 	ldub  [ %i5 + 0x89 ], %g1
                     
4000a8f8:	80 a0 60 00 	cmp  %g1, 0
                                   
4000a8fc:	02 80 00 0e 	be  4000a934 <_Scheduler_simple_Unblock+0x11c>

4000a900:	01 00 00 00 	nop 
                                          
4000a904:	7f ff f9 bc 	call  40008ff4 <_Timecounter_Sbinuptime>
      
4000a908:	e0 1e e0 28 	ldd  [ %i3 + 0x28 ], %l0
                      
4000a90c:	d0 3e e0 28 	std  %o0, [ %i3 + 0x28 ]
                      
  *_result = *_end - *_start;
                                        
4000a910:	b6 a2 40 11 	subcc  %o1, %l1, %i3
                          
  *_time += *_add;
                                                   
4000a914:	d8 1f 60 98 	ldd  [ %i5 + 0x98 ], %o4
                      
  *_result = *_end - *_start;
                                        
4000a918:	b4 62 00 10 	subx  %o0, %l0, %i2
                           
  *_time += *_add;
                                                   
4000a91c:	86 83 40 1b 	addcc  %o5, %i3, %g3
                          
4000a920:	84 43 00 1a 	addx  %o4, %i2, %g2
                           
4000a924:	c4 3f 60 98 	std  %g2, [ %i5 + 0x98 ]
                      
    _Thread_Dispatch_necessary = true;
                               
4000a928:	84 10 20 01 	mov  1, %g2
                                   
    _Thread_Heir = new_heir;
                                         
4000a92c:	f2 21 a0 24 	st  %i1, [ %g6 + 0x24 ]
                       
    _Thread_Dispatch_necessary = true;
                               
4000a930:	c4 29 a0 1c 	stb  %g2, [ %g6 + 0x1c ]
                      
}
                                                                    
4000a934:	81 c7 e0 08 	ret 
                                          
4000a938:	81 e8 00 00 	restore 
                                      

                                                                     

4000a684 <_Scheduler_simple_Update_priority>: void _Scheduler_simple_Update_priority( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ) {
4000a684:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  Scheduler_simple_Context *context;
                                 
  unsigned int              new_priority;
                            

                                                                     
  if ( !_Thread_Is_ready( the_thread ) ) {
                           
4000a688:	c2 06 60 1c 	ld  [ %i1 + 0x1c ], %g1
                       <== NOT EXECUTED
4000a68c:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000a690:	22 80 00 04 	be,a   4000a6a0 <_Scheduler_simple_Update_priority+0x1c>
<== NOT EXECUTED
4000a694:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          
  new_priority = (unsigned int ) _Scheduler_Node_get_priority( node );


                                                                     
  _Scheduler_simple_Extract( scheduler, the_thread, node );
          
  _Scheduler_simple_Insert( &context->Ready, the_thread, new_priority );

  _Scheduler_simple_Schedule_body( scheduler, the_thread, false );
   
}
                                                                    
4000a698:	81 c7 e0 08 	ret 
                                          
4000a69c:	81 e8 00 00 	restore 
                                      
  next           = the_node->next;
                                   
4000a6a0:	c4 06 40 00 	ld  [ %i1 ], %g2
                              
4000a6a4:	f8 06 00 00 	ld  [ %i0 ], %i4
                              
4000a6a8:	f6 06 a0 34 	ld  [ %i2 + 0x34 ], %i3
                       
  next->previous = previous;
                                         
4000a6ac:	c2 20 a0 04 	st  %g1, [ %g2 + 4 ]
                          
  return &the_chain->Tail.Node;
                                      
4000a6b0:	88 07 20 04 	add  %i4, 4, %g4
                              
  previous->next = next;
                                             
4000a6b4:	c4 20 40 00 	st  %g2, [ %g1 ]
                              
  return _Chain_Immutable_head( the_chain )->next;
                   
4000a6b8:	c2 07 00 00 	ld  [ %i4 ], %g1
                              
)
                                                                    
{
                                                                    
  const Chain_Node *tail = _Chain_Immutable_tail( the_chain );
       
  Chain_Node *next = _Chain_First( the_chain );
                      

                                                                     
  while ( next != tail && !( *order )( left, next ) ) {
              
4000a6bc:	80 a1 00 01 	cmp  %g4, %g1
                                 
4000a6c0:	22 80 00 19 	be,a   4000a724 <_Scheduler_simple_Update_priority+0xa0>
<== NEVER TAKEN
4000a6c4:	c2 01 20 04 	ld  [ %g4 + 4 ], %g1
                          <== NOT EXECUTED
4000a6c8:	c4 00 60 38 	ld  [ %g1 + 0x38 ], %g2
                       
4000a6cc:	c6 00 a0 18 	ld  [ %g2 + 0x18 ], %g3
                       
4000a6d0:	80 a0 e0 00 	cmp  %g3, 0
                                   
4000a6d4:	12 80 00 12 	bne  4000a71c <_Scheduler_simple_Update_priority+0x98>
<== NEVER TAKEN
4000a6d8:	ba 10 20 00 	clr  %i5
                                      
4000a6dc:	c4 00 a0 1c 	ld  [ %g2 + 0x1c ], %g2
                       
4000a6e0:	80 a0 80 1b 	cmp  %g2, %i3
                                 
4000a6e4:	3a 80 00 0f 	bcc,a   4000a720 <_Scheduler_simple_Update_priority+0x9c>

4000a6e8:	88 10 00 01 	mov  %g1, %g4
                                 
4000a6ec:	c2 00 40 00 	ld  [ %g1 ], %g1
                              
4000a6f0:	80 a1 00 01 	cmp  %g4, %g1
                                 
4000a6f4:	22 80 00 0c 	be,a   4000a724 <_Scheduler_simple_Update_priority+0xa0>

4000a6f8:	c2 01 20 04 	ld  [ %g4 + 4 ], %g1
                          
4000a6fc:	c4 00 60 38 	ld  [ %g1 + 0x38 ], %g2
                       
4000a700:	c6 00 a0 18 	ld  [ %g2 + 0x18 ], %g3
                       
4000a704:	80 a7 40 03 	cmp  %i5, %g3
                                 
4000a708:	12 80 00 05 	bne  4000a71c <_Scheduler_simple_Update_priority+0x98>
<== NEVER TAKEN
4000a70c:	c4 00 a0 1c 	ld  [ %g2 + 0x1c ], %g2
                       
4000a710:	80 a6 c0 02 	cmp  %i3, %g2
                                 
4000a714:	38 bf ff f7 	bgu,a   4000a6f0 <_Scheduler_simple_Update_priority+0x6c>

4000a718:	c2 00 40 00 	ld  [ %g1 ], %g1
                              
4000a71c:	88 10 00 01 	mov  %g1, %g4
                                 
4000a720:	c2 01 20 04 	ld  [ %g4 + 4 ], %g1
                          
  the_node->previous    = after_node;
                                
4000a724:	c2 26 60 04 	st  %g1, [ %i1 + 4 ]
                          
  before_node           = after_node->next;
                          
4000a728:	c4 00 40 00 	ld  [ %g1 ], %g2
                              
  after_node->next      = the_node;
                                  
4000a72c:	f2 20 40 00 	st  %i1, [ %g1 ]
                              
  the_node->next        = before_node;
                               
4000a730:	c4 26 40 00 	st  %g2, [ %i1 ]
                              
  before_node->previous = the_node;
                                  
4000a734:	f2 20 a0 04 	st  %i1, [ %g2 + 4 ]
                          
  return _Chain_Immutable_head( the_chain )->next;
                   
4000a738:	f8 07 00 00 	ld  [ %i4 ], %i4
                              
  Thread_Control *heir = _Thread_Heir;
                               
4000a73c:	fa 01 a0 24 	ld  [ %g6 + 0x24 ], %i5
                       
  if ( heir != new_heir && ( heir->is_preemptible || force_dispatch ) ) {

4000a740:	80 a7 00 1d 	cmp  %i4, %i5
                                 
4000a744:	02 bf ff d5 	be  4000a698 <_Scheduler_simple_Update_priority+0x14>

4000a748:	b6 10 00 06 	mov  %g6, %i3
                                 
4000a74c:	c2 0f 60 89 	ldub  [ %i5 + 0x89 ], %g1
                     
4000a750:	80 a0 60 00 	cmp  %g1, 0
                                   
4000a754:	02 80 00 0e 	be  4000a78c <_Scheduler_simple_Update_priority+0x108>
<== ALWAYS TAKEN
4000a758:	01 00 00 00 	nop 
                                          
4000a75c:	7f ff fa 26 	call  40008ff4 <_Timecounter_Sbinuptime>
      <== NOT EXECUTED
4000a760:	f0 19 a0 28 	ldd  [ %g6 + 0x28 ], %i0
                      <== NOT EXECUTED
4000a764:	d0 3e e0 28 	std  %o0, [ %i3 + 0x28 ]
                      <== NOT EXECUTED
  *_result = *_end - *_start;
                                        
4000a768:	b6 a2 40 19 	subcc  %o1, %i1, %i3
                          <== NOT EXECUTED
4000a76c:	b4 62 00 18 	subx  %o0, %i0, %i2
                           <== NOT EXECUTED
  *_time += *_add;
                                                   
4000a770:	f0 1f 60 98 	ldd  [ %i5 + 0x98 ], %i0
                      <== NOT EXECUTED
4000a774:	86 86 40 1b 	addcc  %i1, %i3, %g3
                          <== NOT EXECUTED
4000a778:	84 46 00 1a 	addx  %i0, %i2, %g2
                           <== NOT EXECUTED
4000a77c:	c4 3f 60 98 	std  %g2, [ %i5 + 0x98 ]
                      <== NOT EXECUTED
    _Thread_Dispatch_necessary = true;
                               
4000a780:	84 10 20 01 	mov  1, %g2
                                   <== NOT EXECUTED
    _Thread_Heir = new_heir;
                                         
4000a784:	f8 21 a0 24 	st  %i4, [ %g6 + 0x24 ]
                       <== NOT EXECUTED
    _Thread_Dispatch_necessary = true;
                               
4000a788:	c4 29 a0 1c 	stb  %g2, [ %g6 + 0x1c ]
                      <== NOT EXECUTED
4000a78c:	81 c7 e0 08 	ret 
                                          
4000a790:	81 e8 00 00 	restore 
                                      

                                                                     

4000a93c <_Scheduler_simple_Yield>: void _Scheduler_simple_Yield( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ) {
4000a93c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  next           = the_node->next;
                                   
4000a940:	c4 06 40 00 	ld  [ %i1 ], %g2
                              <== NOT EXECUTED
  previous       = the_node->previous;
                               
4000a944:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          <== NOT EXECUTED
4000a948:	f8 06 00 00 	ld  [ %i0 ], %i4
                              <== NOT EXECUTED
  next->previous = previous;
                                         
4000a94c:	c2 20 a0 04 	st  %g1, [ %g2 + 4 ]
                          <== NOT EXECUTED
  return &the_chain->Tail.Node;
                                      
4000a950:	88 07 20 04 	add  %i4, 4, %g4
                              <== NOT EXECUTED
  previous->next = next;
                                             
4000a954:	c4 20 40 00 	st  %g2, [ %g1 ]
                              <== NOT EXECUTED
  context = _Scheduler_simple_Get_context( scheduler );
              

                                                                     
  (void) node;
                                                       

                                                                     
  _Chain_Extract_unprotected( &the_thread->Object.Node );
            
  insert_priority = (unsigned int) _Thread_Get_priority( the_thread );

4000a958:	c2 06 60 38 	ld  [ %i1 + 0x38 ], %g1
                       <== NOT EXECUTED
4000a95c:	c4 00 60 1c 	ld  [ %g1 + 0x1c ], %g2
                       <== NOT EXECUTED
  return _Chain_Immutable_head( the_chain )->next;
                   
4000a960:	c2 07 00 00 	ld  [ %i4 ], %g1
                              <== NOT EXECUTED
  while ( next != tail && !( *order )( left, next ) ) {
              
4000a964:	80 a1 00 01 	cmp  %g4, %g1
                                 <== NOT EXECUTED
4000a968:	02 80 00 18 	be  4000a9c8 <_Scheduler_simple_Yield+0x8c>
   <== NOT EXECUTED
4000a96c:	b6 10 a0 01 	or  %g2, 1, %i3
                               
4000a970:	c4 00 60 38 	ld  [ %g1 + 0x38 ], %g2
                       
4000a974:	c6 00 a0 18 	ld  [ %g2 + 0x18 ], %g3
                       
4000a978:	80 a0 e0 00 	cmp  %g3, 0
                                   
4000a97c:	12 80 00 12 	bne  4000a9c4 <_Scheduler_simple_Yield+0x88>
  <== NEVER TAKEN
4000a980:	ba 10 20 00 	clr  %i5
                                      
4000a984:	c4 00 a0 1c 	ld  [ %g2 + 0x1c ], %g2
                       
4000a988:	80 a0 80 1b 	cmp  %g2, %i3
                                 
4000a98c:	3a 80 00 0f 	bcc,a   4000a9c8 <_Scheduler_simple_Yield+0x8c>

4000a990:	88 10 00 01 	mov  %g1, %g4
                                 
4000a994:	c2 00 40 00 	ld  [ %g1 ], %g1
                              
4000a998:	80 a1 00 01 	cmp  %g4, %g1
                                 
4000a99c:	22 80 00 0c 	be,a   4000a9cc <_Scheduler_simple_Yield+0x90>
<== NEVER TAKEN
4000a9a0:	c2 01 20 04 	ld  [ %g4 + 4 ], %g1
                          <== NOT EXECUTED
4000a9a4:	c4 00 60 38 	ld  [ %g1 + 0x38 ], %g2
                       
4000a9a8:	c6 00 a0 18 	ld  [ %g2 + 0x18 ], %g3
                       
4000a9ac:	80 a7 40 03 	cmp  %i5, %g3
                                 
4000a9b0:	12 80 00 05 	bne  4000a9c4 <_Scheduler_simple_Yield+0x88>
  <== NEVER TAKEN
4000a9b4:	c4 00 a0 1c 	ld  [ %g2 + 0x1c ], %g2
                       
4000a9b8:	80 a6 c0 02 	cmp  %i3, %g2
                                 
4000a9bc:	38 bf ff f7 	bgu,a   4000a998 <_Scheduler_simple_Yield+0x5c>

4000a9c0:	c2 00 40 00 	ld  [ %g1 ], %g1
                              
4000a9c4:	88 10 00 01 	mov  %g1, %g4
                                 
4000a9c8:	c2 01 20 04 	ld  [ %g4 + 4 ], %g1
                          
  the_node->previous    = after_node;
                                
4000a9cc:	c2 26 60 04 	st  %g1, [ %i1 + 4 ]
                          
  before_node           = after_node->next;
                          
4000a9d0:	c4 00 40 00 	ld  [ %g1 ], %g2
                              
  after_node->next      = the_node;
                                  
4000a9d4:	f2 20 40 00 	st  %i1, [ %g1 ]
                              
  the_node->next        = before_node;
                               
4000a9d8:	c4 26 40 00 	st  %g2, [ %i1 ]
                              
  before_node->previous = the_node;
                                  
4000a9dc:	f2 20 a0 04 	st  %i1, [ %g2 + 4 ]
                          
  return _Chain_Immutable_head( the_chain )->next;
                   
4000a9e0:	f8 07 00 00 	ld  [ %i4 ], %i4
                              
  Thread_Control *heir = _Thread_Heir;
                               
4000a9e4:	fa 01 a0 24 	ld  [ %g6 + 0x24 ], %i5
                       
  if ( heir != new_heir && ( heir->is_preemptible || force_dispatch ) ) {

4000a9e8:	80 a7 00 1d 	cmp  %i4, %i5
                                 
4000a9ec:	02 80 00 06 	be  4000aa04 <_Scheduler_simple_Yield+0xc8>
   
4000a9f0:	b6 10 00 06 	mov  %g6, %i3
                                 
4000a9f4:	c2 0f 60 89 	ldub  [ %i5 + 0x89 ], %g1
                     
4000a9f8:	80 a0 60 00 	cmp  %g1, 0
                                   
4000a9fc:	12 80 00 04 	bne  4000aa0c <_Scheduler_simple_Yield+0xd0>
  <== NEVER TAKEN
4000aa00:	01 00 00 00 	nop 
                                          
  insert_priority = SCHEDULER_PRIORITY_APPEND( insert_priority );
    
  _Scheduler_simple_Insert( &context->Ready, the_thread, insert_priority );

  _Scheduler_simple_Schedule_body( scheduler, the_thread, false );
   
}
                                                                    
4000aa04:	81 c7 e0 08 	ret 
                                          
4000aa08:	81 e8 00 00 	restore 
                                      
4000aa0c:	7f ff f9 7a 	call  40008ff4 <_Timecounter_Sbinuptime>
      <== NOT EXECUTED
4000aa10:	f0 19 a0 28 	ldd  [ %g6 + 0x28 ], %i0
                      <== NOT EXECUTED
4000aa14:	d0 3e e0 28 	std  %o0, [ %i3 + 0x28 ]
                      <== NOT EXECUTED
  *_result = *_end - *_start;
                                        
4000aa18:	b6 a2 40 19 	subcc  %o1, %i1, %i3
                          <== NOT EXECUTED
4000aa1c:	b4 62 00 18 	subx  %o0, %i0, %i2
                           <== NOT EXECUTED
  *_time += *_add;
                                                   
4000aa20:	f0 1f 60 98 	ldd  [ %i5 + 0x98 ], %i0
                      <== NOT EXECUTED
4000aa24:	86 86 40 1b 	addcc  %i1, %i3, %g3
                          <== NOT EXECUTED
4000aa28:	84 46 00 1a 	addx  %i0, %i2, %g2
                           <== NOT EXECUTED
4000aa2c:	c4 3f 60 98 	std  %g2, [ %i5 + 0x98 ]
                      <== NOT EXECUTED
    _Thread_Dispatch_necessary = true;
                               
4000aa30:	84 10 20 01 	mov  1, %g2
                                   <== NOT EXECUTED
    _Thread_Heir = new_heir;
                                         
4000aa34:	f8 21 a0 24 	st  %i4, [ %g6 + 0x24 ]
                       <== NOT EXECUTED
    _Thread_Dispatch_necessary = true;
                               
4000aa38:	c4 29 a0 1c 	stb  %g2, [ %g6 + 0x1c ]
                      <== NOT EXECUTED
4000aa3c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000aa40:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

4001da94 <_Semaphore_Post>: _Sem_Queue_release( sem, level, &queue_context ); return eno; } void _Semaphore_Post( struct _Semaphore_Control *_sem ) {
4001da94:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4001da98:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  sem = _Sem_Get( _sem );
                                            
  _Thread_queue_Context_initialize( &queue_context );
                
  _Thread_queue_Context_ISR_disable( &queue_context, level );
        
  _Sem_Queue_acquire_critical( sem, &queue_context );
                

                                                                     
  heads = sem->Queue.Queue.heads;
                                    
4001da9c:	d0 06 20 08 	ld  [ %i0 + 8 ], %o0
                          
  if ( __predict_true( heads == NULL ) ) {
                           
4001daa0:	80 a2 20 00 	cmp  %o0, 0
                                   
4001daa4:	32 80 00 09 	bne,a   4001dac8 <_Semaphore_Post+0x34>
       
4001daa8:	c2 27 bf dc 	st  %g1, [ %fp + -36 ]
                        
    ++sem->count;
                                                    
4001daac:	c4 06 20 14 	ld  [ %i0 + 0x14 ], %g2
                       <== NOT EXECUTED
4001dab0:	84 00 a0 01 	inc  %g2
                                      <== NOT EXECUTED
4001dab4:	c4 26 20 14 	st  %g2, [ %i0 + 0x14 ]
                       <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4001dab8:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4001dabc:	01 00 00 00 	nop 
                                          
4001dac0:	81 c7 e0 08 	ret 
                                          
4001dac4:	81 e8 00 00 	restore 
                                      
    const Thread_queue_Operations *operations;
                       
    Thread_Control *first;
                                           

                                                                     
    _Thread_queue_Context_set_ISR_level( &queue_context, level );
    
    operations = SEMAPHORE_TQ_OPERATIONS;
                            
    first = ( *operations->first )( heads );
                         
4001dac8:	3b 10 01 5c 	sethi  %hi(0x40057000), %i5
                   
4001dacc:	ba 17 60 2c 	or  %i5, 0x2c, %i5	! 4005702c <_Thread_queue_Operations_priority>

4001dad0:	c2 07 60 10 	ld  [ %i5 + 0x10 ], %g1
                       
4001dad4:	9f c0 40 00 	call  %g1
                                     
4001dad8:	01 00 00 00 	nop 
                                          

                                                                     
    _Thread_queue_Extract_critical(
                                  
4001dadc:	96 07 bf dc 	add  %fp, -36, %o3
                            
4001dae0:	94 10 00 08 	mov  %o0, %o2
                                 
4001dae4:	92 10 00 1d 	mov  %i5, %o1
                                 
4001dae8:	40 00 03 a5 	call  4001e97c <_Thread_queue_Extract_critical>

4001daec:	90 06 20 08 	add  %i0, 8, %o0
                              
      operations,
                                                    
      first,
                                                         
      &queue_context
                                                 
    );
                                                               
  }
                                                                  
}
                                                                    
4001daf0:	81 c7 e0 08 	ret 
                                          
4001daf4:	81 e8 00 00 	restore 
                                      

                                                                     

40012ed8 <_Semaphore_Post_binary>: ); } } void _Semaphore_Post_binary( struct _Semaphore_Control *_sem ) {
40012ed8:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

40012edc:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  sem = _Sem_Get( _sem );
                                            
  _Thread_queue_Context_initialize( &queue_context );
                
  _Thread_queue_Context_ISR_disable( &queue_context, level );
        
  _Sem_Queue_acquire_critical( sem, &queue_context );
                

                                                                     
  heads = sem->Queue.Queue.heads;
                                    
40012ee0:	d0 06 20 08 	ld  [ %i0 + 8 ], %o0
                          
  if ( __predict_true( heads == NULL ) ) {
                           
40012ee4:	80 a2 20 00 	cmp  %o0, 0
                                   
40012ee8:	12 80 00 07 	bne  40012f04 <_Semaphore_Post_binary+0x2c>
   
40012eec:	84 10 20 01 	mov  1, %g2
                                   
    sem->count = 1;
                                                  
40012ef0:	c4 26 20 14 	st  %g2, [ %i0 + 0x14 ]
                       <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40012ef4:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40012ef8:	01 00 00 00 	nop 
                                          
40012efc:	81 c7 e0 08 	ret 
                                          
40012f00:	81 e8 00 00 	restore 
                                      
40012f04:	c2 27 bf dc 	st  %g1, [ %fp + -36 ]
                        
    const Thread_queue_Operations *operations;
                       
    Thread_Control *first;
                                           

                                                                     
    _Thread_queue_Context_set_ISR_level( &queue_context, level );
    
    operations = SEMAPHORE_TQ_OPERATIONS;
                            
    first = ( *operations->first )( heads );
                         
40012f08:	3b 10 00 4e 	sethi  %hi(0x40013800), %i5
                   
40012f0c:	ba 17 62 04 	or  %i5, 0x204, %i5	! 40013a04 <_Thread_queue_Operations_priority>

40012f10:	c2 07 60 10 	ld  [ %i5 + 0x10 ], %g1
                       
40012f14:	9f c0 40 00 	call  %g1
                                     
40012f18:	01 00 00 00 	nop 
                                          

                                                                     
    _Thread_queue_Extract_critical(
                                  
40012f1c:	96 07 bf dc 	add  %fp, -36, %o3
                            
40012f20:	94 10 00 08 	mov  %o0, %o2
                                 
40012f24:	92 10 00 1d 	mov  %i5, %o1
                                 
40012f28:	7f ff db bb 	call  40009e14 <_Thread_queue_Extract_critical>

40012f2c:	90 06 20 08 	add  %i0, 8, %o0
                              
      operations,
                                                    
      first,
                                                         
      &queue_context
                                                 
    );
                                                               
  }
                                                                  
}
                                                                    
40012f30:	81 c7 e0 08 	ret 
                                          
40012f34:	81 e8 00 00 	restore 
                                      

                                                                     

40012e94 <_Semaphore_Try_wait>: int _Semaphore_Try_wait( struct _Semaphore_Control *_sem ) {
40012e94:	86 10 00 08 	mov  %o0, %g3
                                 <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

40012e98:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  sem = _Sem_Get( _sem );
                                            
  _Thread_queue_Context_initialize( &queue_context );
                
  _Thread_queue_Context_ISR_disable( &queue_context, level );
        
  _Sem_Queue_acquire_critical( sem, &queue_context );
                

                                                                     
  count = sem->count;
                                                
40012e9c:	c4 02 20 14 	ld  [ %o0 + 0x14 ], %g2
                       
  if ( __predict_true( count > 0 ) ) {
                               
40012ea0:	80 a0 a0 00 	cmp  %g2, 0
                                   
40012ea4:	02 80 00 08 	be  40012ec4 <_Semaphore_Try_wait+0x30>
       
40012ea8:	84 00 bf ff 	add  %g2, -1, %g2
                             
    sem->count = count - 1;
                                          
    eno = 0;
                                                         
40012eac:	90 10 20 00 	clr  %o0
                                      <== NOT EXECUTED
    sem->count = count - 1;
                                          
40012eb0:	c4 20 e0 14 	st  %g2, [ %g3 + 0x14 ]
                       <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40012eb4:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40012eb8:	01 00 00 00 	nop 
                                          
    eno = EAGAIN;
                                                    
  }
                                                                  

                                                                     
  _Sem_Queue_release( sem, level, &queue_context );
                  
  return eno;
                                                        
}
                                                                    
40012ebc:	81 c3 e0 08 	retl 
                                         
40012ec0:	01 00 00 00 	nop 
                                          
    eno = EAGAIN;
                                                    
40012ec4:	90 10 20 0b 	mov  0xb, %o0	! b <_TLS_Alignment+0xa>
        <== NOT EXECUTED
40012ec8:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40012ecc:	01 00 00 00 	nop 
                                          
}
                                                                    
40012ed0:	81 c3 e0 08 	retl 
                                         
40012ed4:	01 00 00 00 	nop 
                                          

                                                                     

40012db4 <_Semaphore_Wait>: sizeof( Sem_Control ) == sizeof( struct _Semaphore_Control ), SEMAPHORE_CONTROL_SIZE ); void _Semaphore_Wait( struct _Semaphore_Control *_sem ) {
40012db4:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

40012db8:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return psr;
                                                        
40012dbc:	86 10 00 01 	mov  %g1, %g3
                                 
  sem = _Sem_Get( _sem );
                                            
  _Thread_queue_Context_initialize( &queue_context );
                
  _Thread_queue_Context_ISR_disable( &queue_context, level );
        
  executing = _Sem_Queue_acquire_critical( sem, &queue_context );
    

                                                                     
  count = sem->count;
                                                
40012dc0:	c4 06 20 14 	ld  [ %i0 + 0x14 ], %g2
                       
  if ( __predict_true( count > 0 ) ) {
                               
40012dc4:	80 a0 a0 00 	cmp  %g2, 0
                                   
40012dc8:	02 80 00 07 	be  40012de4 <_Semaphore_Wait+0x30>
           
40012dcc:	84 00 bf ff 	add  %g2, -1, %g2
                             
    sem->count = count - 1;
                                          
40012dd0:	c4 26 20 14 	st  %g2, [ %i0 + 0x14 ]
                       <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40012dd4:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40012dd8:	01 00 00 00 	nop 
                                          
40012ddc:	81 c7 e0 08 	ret 
                                          
40012de0:	81 e8 00 00 	restore 
                                      
  queue_context->thread_state = thread_state;
                        
40012de4:	82 10 20 02 	mov  2, %g1
                                   
  Thread_queue_Context *queue_context
                                
)
                                                                    
{
                                                                    
  Thread_Control *executing;
                                         

                                                                     
  executing = _Thread_Executing;
                                     
40012de8:	d4 01 a0 20 	ld  [ %g6 + 0x20 ], %o2
                       
40012dec:	c2 27 bf e0 	st  %g1, [ %fp + -32 ]
                        
  queue_context->enqueue_callout = _Thread_queue_Enqueue_do_nothing_extra;

40012df0:	03 10 00 27 	sethi  %hi(0x40009c00), %g1
                   
40012df4:	82 10 60 24 	or  %g1, 0x24, %g1	! 40009c24 <_Thread_queue_Enqueue_do_nothing_extra>

      &queue_context,
                                                
      STATES_WAITING_FOR_SEMAPHORE
                                   
    );
                                                               
    _Thread_queue_Context_set_enqueue_do_nothing_extra( &queue_context );

    _Thread_queue_Context_set_ISR_level( &queue_context, level );
    
    _Thread_queue_Enqueue(
                                           
40012df8:	96 07 bf dc 	add  %fp, -36, %o3
                            
40012dfc:	c2 27 bf e4 	st  %g1, [ %fp + -28 ]
                        
40012e00:	13 10 00 4e 	sethi  %hi(0x40013800), %o1
                   
40012e04:	c6 27 bf dc 	st  %g3, [ %fp + -36 ]
                        
40012e08:	92 12 62 04 	or  %o1, 0x204, %o1
                           
40012e0c:	7f ff db 8c 	call  40009c3c <_Thread_queue_Enqueue>
        
40012e10:	90 06 20 08 	add  %i0, 8, %o0
                              
      SEMAPHORE_TQ_OPERATIONS,
                                       
      executing,
                                                     
      &queue_context
                                                 
    );
                                                               
  }
                                                                  
}
                                                                    
40012e14:	81 c7 e0 08 	ret 
                                          
40012e18:	81 e8 00 00 	restore 
                                      

                                                                     

40012e1c <_Semaphore_Wait_timed_ticks>: int _Semaphore_Wait_timed_ticks( struct _Semaphore_Control *_sem, uint32_t ticks ) {
40012e1c:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

40012e20:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return psr;
                                                        
40012e24:	86 10 00 01 	mov  %g1, %g3
                                 
  sem = _Sem_Get( _sem );
                                            
  _Thread_queue_Context_initialize( &queue_context );
                
  _Thread_queue_Context_ISR_disable( &queue_context, level );
        
  executing = _Sem_Queue_acquire_critical( sem, &queue_context );
    

                                                                     
  count = sem->count;
                                                
40012e28:	c4 06 20 14 	ld  [ %i0 + 0x14 ], %g2
                       
  if ( __predict_true( count > 0 ) ) {
                               
40012e2c:	80 a0 a0 00 	cmp  %g2, 0
                                   
40012e30:	02 80 00 07 	be  40012e4c <_Semaphore_Wait_timed_ticks+0x30>

40012e34:	84 00 bf ff 	add  %g2, -1, %g2
                             
    sem->count = count - 1;
                                          
40012e38:	c4 26 20 14 	st  %g2, [ %i0 + 0x14 ]
                       <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40012e3c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40012e40:	01 00 00 00 	nop 
                                          
    _Sem_Queue_release( sem, level, &queue_context );
                
    return 0;
                                                        
40012e44:	81 c7 e0 08 	ret 
                                          
40012e48:	91 e8 20 00 	restore  %g0, 0, %o0
                          
  queue_context->thread_state = thread_state;
                        
40012e4c:	82 10 20 02 	mov  2, %g1
                                   
40012e50:	fa 01 a0 20 	ld  [ %g6 + 0x20 ], %i5
                       
40012e54:	c2 27 bf e0 	st  %g1, [ %fp + -32 ]
                        
  queue_context->enqueue_callout = _Thread_queue_Add_timeout_ticks;
  
40012e58:	03 10 00 2a 	sethi  %hi(0x4000a800), %g1
                   
40012e5c:	82 10 60 74 	or  %g1, 0x74, %g1	! 4000a874 <_Thread_queue_Add_timeout_ticks>

      &queue_context,
                                                
      STATES_WAITING_FOR_SEMAPHORE
                                   
    );
                                                               
    _Thread_queue_Context_set_enqueue_timeout_ticks( &queue_context, ticks );

    _Thread_queue_Context_set_ISR_level( &queue_context, level );
    
    _Thread_queue_Enqueue(
                                           
40012e60:	90 06 20 08 	add  %i0, 8, %o0
                              
  queue_context->Timeout.ticks = ticks;
                              
40012e64:	f2 27 bf e8 	st  %i1, [ %fp + -24 ]
                        
40012e68:	96 07 bf dc 	add  %fp, -36, %o3
                            
40012e6c:	c6 27 bf dc 	st  %g3, [ %fp + -36 ]
                        
40012e70:	94 10 00 1d 	mov  %i5, %o2
                                 
  queue_context->enqueue_callout = _Thread_queue_Add_timeout_ticks;
  
40012e74:	c2 27 bf e4 	st  %g1, [ %fp + -28 ]
                        
40012e78:	13 10 00 4e 	sethi  %hi(0x40013800), %o1
                   
40012e7c:	7f ff db 70 	call  40009c3c <_Thread_queue_Enqueue>
        
40012e80:	92 12 62 04 	or  %o1, 0x204, %o1	! 40013a04 <_Thread_queue_Operations_priority>

      &sem->Queue.Queue,
                                             
      SEMAPHORE_TQ_OPERATIONS,
                                       
      executing,
                                                     
      &queue_context
                                                 
    );
                                                               
    return STATUS_GET_POSIX( _Thread_Wait_get_status( executing ) );
 
40012e84:	f0 07 60 4c 	ld  [ %i5 + 0x4c ], %i0
                       
40012e88:	b1 3e 20 08 	sra  %i0, 8, %i0
                              
  }
                                                                  
}
                                                                    
40012e8c:	81 c7 e0 08 	ret 
                                          
40012e90:	81 e8 00 00 	restore 
                                      

                                                                     

40006a7c <_TOD_Adjust>: #include <rtems/score/todimpl.h> void _TOD_Adjust( const struct timespec *delta ) {
40006a7c:	9d e3 bf 88 	save  %sp, -120, %sp
                          <== NOT EXECUTED
   * enhancement would be to adjust the time in smaller increments
   
   * at each clock tick. Until then, there is no outstanding
         
   * adjustment.
                                                     
   */
                                                                

                                                                     
  _TOD_Lock();
                                                       
40006a80:	40 00 00 10 	call  40006ac0 <_TOD_Lock>
                    <== NOT EXECUTED
40006a84:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

40006a88:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  _Timecounter_Acquire( lock_context );
                              
40006a8c:	c2 27 bf ec 	st  %g1, [ %fp + -20 ]
                        
  _Timecounter_Nanotime( tod );
                                      
40006a90:	40 00 06 b0 	call  40008550 <_Timecounter_Nanotime>
        
40006a94:	90 07 bf f0 	add  %fp, -16, %o0
                            
  _TOD_Acquire( &lock_context );
                                     
  _TOD_Get( &tod );
                                                  
  _Timespec_Add_to( &tod, delta );
                                   
40006a98:	92 10 00 18 	mov  %i0, %o1
                                 
40006a9c:	40 00 14 16 	call  4000baf4 <_Timespec_Add_to>
             
40006aa0:	90 07 bf f0 	add  %fp, -16, %o0
                            
  _TOD_Set( &tod, &lock_context );
                                   
40006aa4:	92 07 bf ec 	add  %fp, -20, %o1
                            
40006aa8:	40 00 00 10 	call  40006ae8 <_TOD_Set>
                     
40006aac:	90 07 bf f0 	add  %fp, -16, %o0
                            
  _TOD_Unlock();
                                                     
40006ab0:	40 00 00 09 	call  40006ad4 <_TOD_Unlock>
                  
40006ab4:	01 00 00 00 	nop 
                                          
}
                                                                    
40006ab8:	81 c7 e0 08 	ret 
                                          
40006abc:	81 e8 00 00 	restore 
                                      

                                                                     

4000816c <_TOD_Lock>: static API_Mutex_Control _TOD_Mutex = API_MUTEX_INITIALIZER( "_TOD" ); void _TOD_Lock( void ) { _API_Mutex_Lock( &_TOD_Mutex );
4000816c:	11 10 00 4f 	sethi  %hi(0x40013c00), %o0
                   <== NOT EXECUTED
40008170:	90 12 23 04 	or  %o0, 0x304, %o0	! 40013f04 <_TOD_Mutex>
   <== NOT EXECUTED
40008174:	82 13 c0 00 	mov  %o7, %g1
                                 <== NOT EXECUTED
40008178:	7f ff ff d1 	call  400080bc <_API_Mutex_Lock>
              <== NOT EXECUTED
4000817c:	9e 10 40 00 	mov  %g1, %o7
                                 <== NOT EXECUTED

                                                                     

40008194 <_TOD_Set>: void _TOD_Set( const struct timespec *tod, ISR_lock_Context *lock_context ) {
40008194:	9d e3 bf 88 	save  %sp, -120, %sp
                          <== NOT EXECUTED
	_bt->frac = _ts->tv_nsec * (uint64_t)18446744073LL;
                 
40008198:	c4 06 20 08 	ld  [ %i0 + 8 ], %g2
                          <== NOT EXECUTED
4000819c:	89 28 a0 02 	sll  %g2, 2, %g4
                              <== NOT EXECUTED
	_bt->sec = _ts->tv_sec;
                                             
400081a0:	f8 1e 00 00 	ldd  [ %i0 ], %i4
                             
	_bt->frac = _ts->tv_nsec * (uint64_t)18446744073LL;
                 
400081a4:	83 38 a0 1f 	sra  %g2, 0x1f, %g1
                           
400081a8:	07 12 e0 be 	sethi  %hi(0x4b82f800), %g3
                   
400081ac:	86 10 e2 09 	or  %g3, 0x209, %g3	! 4b82fa09 <RAM_END+0xb42fa09>

400081b0:	82 58 40 03 	smul  %g1, %g3, %g1
                           
400081b4:	86 50 80 03 	umul  %g2, %g3, %g3
                           
400081b8:	85 40 00 00 	rd  %y, %g2
                                   
400081bc:	82 00 40 04 	add  %g1, %g4, %g1
                            
400081c0:	84 00 40 02 	add  %g1, %g2, %g2
                            
	_bt->sec = _ts->tv_sec;
                                             
400081c4:	f8 3f bf f0 	std  %i4, [ %fp + -16 ]
                       
  uint32_t        cpu_index;
                                         

                                                                     
  _Assert( _TOD_Is_owner() );
                                        

                                                                     
  timespec2bintime( tod, &tod_as_bintime );
                          
  _Timecounter_Set_clock( &tod_as_bintime, lock_context );
           
400081c8:	92 10 00 19 	mov  %i1, %o1
                                 
	_bt->frac = _ts->tv_nsec * (uint64_t)18446744073LL;
                 
400081cc:	c4 3f bf f8 	std  %g2, [ %fp + -8 ]
                        
400081d0:	40 00 06 cc 	call  40009d00 <_Timecounter_Set_clock>
       
400081d4:	90 07 bf f0 	add  %fp, -16, %o0
                            

                                                                     
  _Assert( _Watchdog_Is_valid_timespec( ts ) );
                      
  _Assert( ts->tv_sec >= 0 );
                                        
  _Assert( !_Watchdog_Is_far_future_timespec( ts ) );
                

                                                                     
  ticks = (uint64_t) ts->tv_sec;
                                     
400081d8:	c6 06 00 00 	ld  [ %i0 ], %g3
                              <== NOT EXECUTED
400081dc:	c4 06 20 04 	ld  [ %i0 + 4 ], %g2
                          <== NOT EXECUTED
  ticks <<= WATCHDOG_BITS_FOR_1E9_NANOSECONDS;
                       
  ticks |= (uint32_t) ts->tv_nsec;
                                   
400081e0:	d6 06 20 08 	ld  [ %i0 + 8 ], %o3
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

400081e4:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
    Watchdog_Control *first;
                                         

                                                                     
    cpu = _Per_CPU_Get_by_index( cpu_index );
                        
    header = &cpu->Watchdog.Header[ PER_CPU_WATCHDOG_REALTIME ];
     

                                                                     
    _ISR_lock_ISR_disable_and_acquire( &cpu->Watchdog.Lock, &lock_context );

400081e8:	c2 27 bf ec 	st  %g1, [ %fp + -20 ]
                        
400081ec:	11 10 00 57 	sethi  %hi(0x40015c00), %o0
                   
400081f0:	90 12 22 80 	or  %o0, 0x280, %o0	! 40015e80 <_Per_CPU_Information>

400081f4:	d2 02 20 44 	ld  [ %o0 + 0x44 ], %o1
                       

                                                                     
    first = _Watchdog_Header_first( header );
                        

                                                                     
    if ( first != NULL ) {
                                           
400081f8:	80 a2 60 00 	cmp  %o1, 0
                                   
400081fc:	02 80 00 09 	be  40008220 <_TOD_Set+0x8c>
                  
40008200:	95 30 a0 02 	srl  %g2, 2, %o2
                              
  ticks <<= WATCHDOG_BITS_FOR_1E9_NANOSECONDS;
                       
40008204:	87 28 e0 1e 	sll  %g3, 0x1e, %g3
                           
40008208:	85 28 a0 1e 	sll  %g2, 0x1e, %g2
                           
      _Watchdog_Tickle(
                                              
4000820c:	98 07 bf ec 	add  %fp, -20, %o4
                            
40008210:	94 12 80 03 	or  %o2, %g3, %o2
                             
40008214:	96 12 c0 02 	or  %o3, %g2, %o3
                             
40008218:	40 00 15 9a 	call  4000d880 <_Watchdog_Do_tickle>
          
4000821c:	90 02 20 40 	add  %o0, 0x40, %o0
                           
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

40008220:	c2 07 bf ec 	ld  [ %fp + -20 ], %g1
                        <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40008224:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40008228:	01 00 00 00 	nop 
                                          
    }
                                                                

                                                                     
    _ISR_lock_Release_and_ISR_enable( &cpu->Watchdog.Lock, &lock_context );

  }
                                                                  

                                                                     
  _TOD.is_set = true;
                                                
4000822c:	03 10 00 56 	sethi  %hi(0x40015800), %g1
                   
40008230:	84 10 20 01 	mov  1, %g2
                                   
40008234:	c4 28 62 55 	stb  %g2, [ %g1 + 0x255 ]
                     
}
                                                                    
40008238:	81 c7 e0 08 	ret 
                                          
4000823c:	81 e8 00 00 	restore 
                                      

                                                                     

40008180 <_TOD_Unlock>: } void _TOD_Unlock( void ) { _API_Mutex_Unlock( &_TOD_Mutex );
40008180:	11 10 00 4f 	sethi  %hi(0x40013c00), %o0
                   <== NOT EXECUTED
40008184:	90 12 23 04 	or  %o0, 0x304, %o0	! 40013f04 <_TOD_Mutex>
   <== NOT EXECUTED
40008188:	82 13 c0 00 	mov  %o7, %g1
                                 <== NOT EXECUTED
4000818c:	7f ff ff d8 	call  400080ec <_API_Mutex_Unlock>
            <== NOT EXECUTED
40008190:	9e 10 40 00 	mov  %g1, %o7
                                 <== NOT EXECUTED

                                                                     

40007858 <_Terminate>: void _Terminate( Internal_errors_Source the_source, Internal_errors_t the_error ) {
40007858:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  Internal_errors_t      error
                                       
)
                                                                    
{
                                                                    
  User_extensions_Fatal_context ctx = { source, error };
             

                                                                     
  _User_extensions_Iterate(
                                          
4000785c:	94 10 20 00 	clr  %o2
                                      
40007860:	90 07 bf f8 	add  %fp, -8, %o0
                             
  User_extensions_Fatal_context ctx = { source, error };
             
40007864:	f0 27 bf f8 	st  %i0, [ %fp + -8 ]
                         
  _User_extensions_Iterate(
                                          
40007868:	13 10 00 2f 	sethi  %hi(0x4000bc00), %o1
                   
  User_extensions_Fatal_context ctx = { source, error };
             
4000786c:	f2 27 bf fc 	st  %i1, [ %fp + -4 ]
                         
  _User_extensions_Iterate(
                                          
40007870:	40 00 11 58 	call  4000bdd0 <_User_extensions_Iterate>
     
40007874:	92 12 61 80 	or  %o1, 0x180, %o1
                           
  _User_extensions_Fatal( the_source, the_error );
                   

                                                                     
  _Internal_errors_What_happened.the_source = the_source;
            
40007878:	03 10 00 7d 	sethi  %hi(0x4001f400), %g1
                   
4000787c:	84 10 61 30 	or  %g1, 0x130, %g2	! 4001f530 <_Internal_errors_What_happened>

40007880:	f0 20 61 30 	st  %i0, [ %g1 + 0x130 ]
                      
40007884:	03 10 00 7d 	sethi  %hi(0x4001f400), %g1
                   
  _Internal_errors_What_happened.the_error  = the_error;
             
40007888:	f2 20 a0 04 	st  %i1, [ %g2 + 4 ]
                          
4000788c:	84 10 20 03 	mov  3, %g2
                                   

                                                                     
  _System_state_Set( SYSTEM_STATE_TERMINATED );
                      

                                                                     
  _SMP_Request_shutdown();
                                           

                                                                     
  _CPU_Fatal_halt( the_source, the_error );
                          
40007890:	92 10 00 19 	mov  %i1, %o1
                                 
40007894:	90 10 00 18 	mov  %i0, %o0
                                 
40007898:	40 00 42 96 	call  400182f0 <_CPU_Fatal_halt>
              
4000789c:	c4 20 61 38 	st  %g2, [ %g1 + 0x138 ]
                      
400078a0:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

4000e984 <_Thread_Cancel>: void _Thread_Cancel( Thread_Control *the_thread, Thread_Control *executing, void *exit_value ) {
4000e984:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000e988:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  previous = the_thread->Life.state;
                                 
4000e98c:	c4 06 21 70 	ld  [ %i0 + 0x170 ], %g2
                      
  state |= set;
                                                      
4000e990:	86 10 a0 04 	or  %g2, 4, %g3
                               
  the_thread->Life.exit_value = exit_value;
                          
4000e994:	f4 26 21 78 	st  %i2, [ %i0 + 0x178 ]
                      
  if (
                                                               
4000e998:	80 88 a0 09 	btst  9, %g2
                                  
4000e99c:	02 80 00 36 	be  4000ea74 <_Thread_Cancel+0xf0>
            
4000e9a0:	c6 26 21 70 	st  %g3, [ %i0 + 0x170 ]
                      
  disable_level = cpu_self->thread_dispatch_disable_level;
           
4000e9a4:	c4 01 a0 18 	ld  [ %g6 + 0x18 ], %g2
                       
  cpu_self->thread_dispatch_disable_level = disable_level + 1;
       
4000e9a8:	84 00 a0 01 	inc  %g2
                                      
4000e9ac:	c4 21 a0 18 	st  %g2, [ %g6 + 0x18 ]
                       
  );
                                                                 

                                                                     
  cpu_self = _Thread_Dispatch_disable_critical( &lock_context );
     
  priority = _Thread_Get_priority( executing );
                      

                                                                     
  if ( _States_Is_dormant( the_thread->current_state ) ) {
           
4000e9b0:	c4 06 20 1c 	ld  [ %i0 + 0x1c ], %g2
                       
4000e9b4:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000e9b8:	06 80 00 1d 	bl  4000ea2c <_Thread_Cancel+0xa8>
            <== NEVER TAKEN
4000e9bc:	ba 10 00 06 	mov  %g6, %i5
                                 
  pending_requests = the_thread->Life.pending_life_change_requests;
  
4000e9c0:	c4 06 21 74 	ld  [ %i0 + 0x174 ], %g2
                      
4000e9c4:	c6 06 60 38 	ld  [ %i1 + 0x38 ], %g3
                       
4000e9c8:	f4 18 e0 18 	ldd  [ %g3 + 0x18 ], %i2
                      
  the_thread->Life.pending_life_change_requests = pending_requests + 1;

4000e9cc:	86 00 a0 01 	add  %g2, 1, %g3
                              
  if ( pending_requests == 0 ) {
                                     
4000e9d0:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000e9d4:	02 80 00 44 	be  4000eae4 <_Thread_Cancel+0x160>
           <== ALWAYS TAKEN
4000e9d8:	c6 26 21 74 	st  %g3, [ %i0 + 0x174 ]
                      
4000e9dc:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
    _Thread_State_release( the_thread, &lock_context );
              

                                                                     
    _Thread_Finalize_life_change( the_thread, priority );
            
  } else {
                                                           
    _Thread_Add_life_change_request( the_thread );
                   
    _Thread_Clear_state_locked( the_thread, STATES_SUSPENDED );
      
4000e9e0:	13 00 00 20 	sethi  %hi(0x8000), %o1
                       
4000e9e4:	40 00 18 20 	call  40014a64 <_Thread_Clear_state_locked>
   
4000e9e8:	90 10 00 18 	mov  %i0, %o0
                                 
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000e9ec:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000e9f0:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000e9f4:	01 00 00 00 	nop 
                                          
    _Thread_State_release( the_thread, &lock_context );
              

                                                                     
    _Thread_Raise_real_priority( the_thread, priority );
             
4000e9f8:	92 10 00 1a 	mov  %i2, %o1
                                 
4000e9fc:	94 10 00 1b 	mov  %i3, %o2
                                 
4000ea00:	7f ff fe da 	call  4000e568 <_Thread_Raise_real_priority>
  
4000ea04:	90 10 00 18 	mov  %i0, %o0
                                 
    _Thread_Remove_life_change_request( the_thread );
                
4000ea08:	7f ff fe c3 	call  4000e514 <_Thread_Remove_life_change_request>

4000ea0c:	90 10 00 18 	mov  %i0, %o0
                                 
  uint32_t disable_level = cpu_self->thread_dispatch_disable_level;
  
4000ea10:	c2 07 60 18 	ld  [ %i5 + 0x18 ], %g1
                       
  if ( disable_level == 1 ) {
                                        
4000ea14:	80 a0 60 01 	cmp  %g1, 1
                                   
4000ea18:	02 80 00 0d 	be  4000ea4c <_Thread_Cancel+0xc8>
            <== NEVER TAKEN
4000ea1c:	82 00 7f ff 	add  %g1, -1, %g1
                             
    cpu_self->thread_dispatch_disable_level = disable_level - 1;
     
4000ea20:	c2 27 60 18 	st  %g1, [ %i5 + 0x18 ]
                       
  }
                                                                  

                                                                     
  _Thread_Dispatch_enable( cpu_self );
                               
}
                                                                    
4000ea24:	81 c7 e0 08 	ret 
                                          
4000ea28:	81 e8 00 00 	restore 
                                      
4000ea2c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000ea30:	01 00 00 00 	nop 
                                          
    _Thread_Make_zombie( the_thread );
                               
4000ea34:	7f ff ff 09 	call  4000e658 <_Thread_Make_zombie>
          
4000ea38:	90 10 00 18 	mov  %i0, %o0
                                 
  uint32_t disable_level = cpu_self->thread_dispatch_disable_level;
  
4000ea3c:	c2 07 60 18 	ld  [ %i5 + 0x18 ], %g1
                       
  if ( disable_level == 1 ) {
                                        
4000ea40:	80 a0 60 01 	cmp  %g1, 1
                                   
4000ea44:	12 bf ff f7 	bne  4000ea20 <_Thread_Cancel+0x9c>
           <== ALWAYS TAKEN
4000ea48:	82 00 7f ff 	add  %g1, -1, %g1
                             
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000ea4c:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
    if (
                                                             
4000ea50:	c4 0f 60 1c 	ldub  [ %i5 + 0x1c ], %g2
                     <== NOT EXECUTED
4000ea54:	80 a0 a0 00 	cmp  %g2, 0
                                   <== NOT EXECUTED
4000ea58:	12 80 00 2f 	bne  4000eb14 <_Thread_Cancel+0x190>
          <== NOT EXECUTED
4000ea5c:	92 10 00 01 	mov  %g1, %o1
                                 <== NOT EXECUTED
      cpu_self->thread_dispatch_disable_level = 0;
                   
4000ea60:	c0 27 60 18 	clr  [ %i5 + 0x18 ]
                           <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000ea64:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000ea68:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
4000ea6c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000ea70:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
4000ea74:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000ea78:	7f ff fe e0 	call  4000e5f8 <_Thread_Change_life_locked.part.37>

4000ea7c:	90 10 00 18 	mov  %i0, %o0
                                 
  disable_level = cpu_self->thread_dispatch_disable_level;
           
4000ea80:	c4 01 a0 18 	ld  [ %g6 + 0x18 ], %g2
                       
  cpu_self->thread_dispatch_disable_level = disable_level + 1;
       
4000ea84:	84 00 a0 01 	inc  %g2
                                      
4000ea88:	c4 21 a0 18 	st  %g2, [ %g6 + 0x18 ]
                       
  return _Thread_Dispatch_disable_with_CPU( _Per_CPU_Get(), lock_context );

4000ea8c:	ba 10 00 06 	mov  %g6, %i5
                                 
4000ea90:	c6 06 60 38 	ld  [ %i1 + 0x38 ], %g3
                       
  if ( _States_Is_dormant( the_thread->current_state ) ) {
           
4000ea94:	c4 06 20 1c 	ld  [ %i0 + 0x1c ], %g2
                       
4000ea98:	f4 18 e0 18 	ldd  [ %g3 + 0x18 ], %i2
                      
4000ea9c:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000eaa0:	06 bf ff e3 	bl  4000ea2c <_Thread_Cancel+0xa8>
            
4000eaa4:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
  pending_requests = the_thread->Life.pending_life_change_requests;
  
4000eaa8:	c4 06 21 74 	ld  [ %i0 + 0x174 ], %g2
                      
  the_thread->Life.pending_life_change_requests = pending_requests + 1;

4000eaac:	86 00 a0 01 	add  %g2, 1, %g3
                              
  if ( pending_requests == 0 ) {
                                     
4000eab0:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000eab4:	02 80 00 12 	be  4000eafc <_Thread_Cancel+0x178>
           <== ALWAYS TAKEN
4000eab8:	c6 26 21 74 	st  %g3, [ %i0 + 0x174 ]
                      
4000eabc:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000eac0:	01 00 00 00 	nop 
                                          
  _Thread_queue_Extract_with_proxy( the_thread );
                    
4000eac4:	40 00 18 5d 	call  40014c38 <_Thread_queue_Extract_with_proxy>

4000eac8:	90 10 00 18 	mov  %i0, %o0
                                 
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000eacc:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return psr;
                                                        
4000ead0:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000ead4:	d0 06 20 60 	ld  [ %i0 + 0x60 ], %o0
                       
4000ead8:	40 00 02 40 	call  4000f3d8 <_Watchdog_Remove>
             
4000eadc:	92 06 20 68 	add  %i0, 0x68, %o1
                           
4000eae0:	30 bf ff c3 	b,a   4000e9ec <_Thread_Cancel+0x68>
          
4000eae4:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
    _Thread_Set_state_locked( the_thread, STATES_LIFE_IS_CHANGING );
 
4000eae8:	13 00 00 80 	sethi  %hi(0x20000), %o1
                      
4000eaec:	40 00 00 65 	call  4000ec80 <_Thread_Set_state_locked>
     
4000eaf0:	90 10 00 18 	mov  %i0, %o0
                                 
4000eaf4:	10 bf ff ba 	b  4000e9dc <_Thread_Cancel+0x58>
             
4000eaf8:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
4000eafc:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000eb00:	13 00 00 80 	sethi  %hi(0x20000), %o1
                      
4000eb04:	40 00 00 5f 	call  4000ec80 <_Thread_Set_state_locked>
     
4000eb08:	90 10 00 18 	mov  %i0, %o0
                                 
4000eb0c:	10 bf ff ec 	b  4000eabc <_Thread_Cancel+0x138>
            
4000eb10:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
      _Thread_Do_dispatch( cpu_self, level );
                        
4000eb14:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         <== NOT EXECUTED
4000eb18:	40 00 17 f5 	call  40014aec <_Thread_Do_dispatch>
          <== NOT EXECUTED
4000eb1c:	90 10 00 1d 	mov  %i5, %o0
                                 <== NOT EXECUTED
4000eb20:	10 bf ff d1 	b  4000ea64 <_Thread_Cancel+0xe0>
             <== NOT EXECUTED
4000eb24:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED

                                                                     

4000b91c <_Thread_Change_life>: Thread_Life_state _Thread_Change_life( Thread_Life_state clear, Thread_Life_state set, Thread_Life_state ignore ) {
4000b91c:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000b920:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  executing = _Thread_Executing;
                                     
4000b924:	d0 01 a0 20 	ld  [ %g6 + 0x20 ], %o0
                       
  previous = the_thread->Life.state;
                                 
4000b928:	fa 02 21 70 	ld  [ %o0 + 0x170 ], %i5
                      
  state &= ~clear;
                                                   
4000b92c:	84 2f 40 18 	andn  %i5, %i0, %g2
                           
  state |= set;
                                                      
4000b930:	b2 16 40 02 	or  %i1, %g2, %i1
                             
  the_thread->Life.state = state;
                                    
4000b934:	f2 22 21 70 	st  %i1, [ %o0 + 0x170 ]
                      
  state &= ~ignore;
                                                  
4000b938:	b2 2e 40 1a 	andn  %i1, %i2, %i1
                           
  if (
                                                               
4000b93c:	80 8e 60 09 	btst  9, %i1
                                  
4000b940:	12 80 00 07 	bne  4000b95c <_Thread_Change_life+0x40>
      
4000b944:	80 8e 60 06 	btst  6, %i1
                                  
      && _Thread_Is_life_changing( state )
                           
4000b948:	02 80 00 05 	be  4000b95c <_Thread_Change_life+0x40>
       
4000b94c:	01 00 00 00 	nop 
                                          
4000b950:	7f ff ff 10 	call  4000b590 <_Thread_Change_life_locked.part.37>

4000b954:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000b958:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  disable_level = cpu_self->thread_dispatch_disable_level;
           
4000b95c:	c4 01 a0 18 	ld  [ %g6 + 0x18 ], %g2
                       
  cpu_self->thread_dispatch_disable_level = disable_level + 1;
       
4000b960:	84 00 a0 01 	inc  %g2
                                      
  return _Thread_Dispatch_disable_with_CPU( _Per_CPU_Get(), lock_context );

4000b964:	90 10 00 06 	mov  %g6, %o0
                                 
  cpu_self->thread_dispatch_disable_level = disable_level + 1;
       
4000b968:	c4 21 a0 18 	st  %g2, [ %g6 + 0x18 ]
                       <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b96c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b970:	01 00 00 00 	nop 
                                          
  uint32_t disable_level = cpu_self->thread_dispatch_disable_level;
  
4000b974:	c2 01 a0 18 	ld  [ %g6 + 0x18 ], %g1
                       
  if ( disable_level == 1 ) {
                                        
4000b978:	80 a0 60 01 	cmp  %g1, 1
                                   
4000b97c:	02 80 00 06 	be  4000b994 <_Thread_Change_life+0x78>
       
4000b980:	82 00 7f ff 	add  %g1, -1, %g1
                             
  cpu_self = _Thread_Dispatch_disable_critical( &lock_context );
     
  _Thread_State_release( executing, &lock_context );
                 
  _Thread_Dispatch_enable( cpu_self );
                               

                                                                     
  return previous;
                                                   
}
                                                                    
4000b984:	b0 10 00 1d 	mov  %i5, %i0
                                 
    cpu_self->thread_dispatch_disable_level = disable_level - 1;
     
4000b988:	c2 21 a0 18 	st  %g1, [ %g6 + 0x18 ]
                       
4000b98c:	81 c7 e0 08 	ret 
                                          
4000b990:	81 e8 00 00 	restore 
                                      
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000b994:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
    if (
                                                             
4000b998:	c4 09 a0 1c 	ldub  [ %g6 + 0x1c ], %g2
                     
4000b99c:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000b9a0:	12 80 00 07 	bne  4000b9bc <_Thread_Change_life+0xa0>
      
4000b9a4:	92 10 00 01 	mov  %g1, %o1
                                 
      cpu_self->thread_dispatch_disable_level = 0;
                   
4000b9a8:	c0 21 a0 18 	clr  [ %g6 + 0x18 ]
                           <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b9ac:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b9b0:	01 00 00 00 	nop 
                                          
4000b9b4:	81 c7 e0 08 	ret 
                                          
4000b9b8:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
      _Thread_Do_dispatch( cpu_self, level );
                        
4000b9bc:	40 00 0b 06 	call  4000e5d4 <_Thread_Do_dispatch>
          
4000b9c0:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000b9c4:	10 bf ff fa 	b  4000b9ac <_Thread_Change_life+0x90>
        <== NOT EXECUTED
4000b9c8:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED

                                                                     

4000e57c <_Thread_Clear_state>: States_Control _Thread_Clear_state( Thread_Control *the_thread, States_Control state ) {
4000e57c:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000e580:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  previous_state = the_thread->current_state;
                        
4000e584:	fa 06 20 1c 	ld  [ %i0 + 0x1c ], %i5
                       
  if ( ( previous_state & state ) != 0 ) {
                           
4000e588:	80 8e 40 1d 	btst  %i1, %i5
                                
4000e58c:	02 80 00 06 	be  4000e5a4 <_Thread_Clear_state+0x28>
       
4000e590:	01 00 00 00 	nop 
                                          
RTEMS_INLINE_ROUTINE States_Control _States_Clear (
                  
  States_Control states_to_clear,
                                    
  States_Control current_state
                                       
)
                                                                    
{
                                                                    
   return (current_state & ~states_to_clear);
                        
4000e594:	b2 2f 40 19 	andn  %i5, %i1, %i1
                           
    if ( _States_Is_ready( next_state ) ) {
                          
4000e598:	80 a6 60 00 	cmp  %i1, 0
                                   
4000e59c:	02 80 00 06 	be  4000e5b4 <_Thread_Clear_state+0x38>
       
4000e5a0:	f2 26 20 1c 	st  %i1, [ %i0 + 0x1c ]
                       
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000e5a4:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000e5a8:	01 00 00 00 	nop 
                                          
  _Thread_State_acquire( the_thread, &lock_context );
                
  previous_state = _Thread_Clear_state_locked( the_thread, state );
  
  _Thread_State_release( the_thread, &lock_context );
                

                                                                     
  return previous_state;
                                             
}
                                                                    
4000e5ac:	81 c7 e0 08 	ret 
                                          
4000e5b0:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
4000e5b4:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000e5b8:	7f ff ff dc 	call  4000e528 <_Thread_Clear_state_locked.part.10>

4000e5bc:	90 10 00 18 	mov  %i0, %o0
                                 
4000e5c0:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
4000e5c4:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000e5c8:	01 00 00 00 	nop 
                                          
4000e5cc:	81 c7 e0 08 	ret 
                                          
4000e5d0:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        

                                                                     

4000e54c <_Thread_Clear_state_locked>: {
4000e54c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  previous_state = the_thread->current_state;
                        
4000e550:	fa 06 20 1c 	ld  [ %i0 + 0x1c ], %i5
                       <== NOT EXECUTED
  if ( ( previous_state & state ) != 0 ) {
                           
4000e554:	80 8f 40 19 	btst  %i5, %i1
                                <== NOT EXECUTED
4000e558:	02 80 00 07 	be  4000e574 <_Thread_Clear_state_locked+0x28>
<== NOT EXECUTED
4000e55c:	b2 2f 40 19 	andn  %i5, %i1, %i1
                           <== NOT EXECUTED
    if ( _States_Is_ready( next_state ) ) {
                          
4000e560:	80 a6 60 00 	cmp  %i1, 0
                                   <== NOT EXECUTED
4000e564:	12 80 00 04 	bne  4000e574 <_Thread_Clear_state_locked+0x28>
<== NOT EXECUTED
4000e568:	f2 26 20 1c 	st  %i1, [ %i0 + 0x1c ]
                       <== NOT EXECUTED
4000e56c:	7f ff ff ef 	call  4000e528 <_Thread_Clear_state_locked.part.10>
<== NOT EXECUTED
4000e570:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
}
                                                                    
4000e574:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000e578:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        <== NOT EXECUTED

                                                                     

4000eb3c <_Thread_Close>: Thread_Control *the_thread, Thread_Control *executing, Thread_Close_context *context ) { context->cancel = the_thread;
4000eb3c:	d0 22 a0 24 	st  %o0, [ %o2 + 0x24 ]
                       
  queue_context->enqueue_callout = enqueue_callout;
                  
4000eb40:	03 10 00 3a 	sethi  %hi(0x4000e800), %g1
                   
4000eb44:	82 10 63 28 	or  %g1, 0x328, %g1	! 4000eb28 <_Thread_Close_enqueue_callout>

4000eb48:	c2 22 a0 08 	st  %g1, [ %o2 + 8 ]
                          
{
                                                                    
4000eb4c:	96 10 00 0a 	mov  %o2, %o3
                                 
  executing->Wait.return_argument = NULL;
                            
4000eb50:	c0 22 60 40 	clr  [ %o1 + 0x40 ]
                           
  queue_context->thread_state = thread_state;
                        
4000eb54:	03 00 00 10 	sethi  %hi(0x4000), %g1
                       
4000eb58:	c2 22 e0 04 	st  %g1, [ %o3 + 4 ]
                          
{
                                                                    
4000eb5c:	94 10 00 09 	mov  %o1, %o2
                                 
  _Thread_queue_Enqueue(
                                             
4000eb60:	90 02 20 10 	add  %o0, 0x10, %o0
                           
4000eb64:	13 10 00 8d 	sethi  %hi(0x40023400), %o1
                   
4000eb68:	92 12 61 a4 	or  %o1, 0x1a4, %o1	! 400235a4 <_Thread_queue_Operations_priority>

4000eb6c:	82 13 c0 00 	mov  %o7, %g1
                                 
4000eb70:	7f ff fb 30 	call  4000d830 <_Thread_queue_Enqueue>
        
4000eb74:	9e 10 40 00 	mov  %g1, %o7
                                 

                                                                     

4000ee70 <_Thread_Continue>: #include <rtems/score/threadimpl.h> #include <rtems/score/status.h> void _Thread_Continue( Thread_Control *the_thread, Status_Control status ) {
4000ee70:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
  queue_context->Priority.update_count = 0;
                          
4000ee74:	c0 27 bf f0 	clr  [ %fp + -16 ]
                            <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000ee78:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  _ISR_lock_ISR_disable( &queue_context->Lock_context.Lock_context );

4000ee7c:	c2 27 bf dc 	st  %g1, [ %fp + -36 ]
                        
4000ee80:	fa 06 20 50 	ld  [ %i0 + 0x50 ], %i5
                       
  _Thread_queue_Context_clear_priority_updates( &queue_context );
    
  _Thread_Wait_acquire( the_thread, &queue_context );
                

                                                                     
  wait_flags = _Thread_Wait_flags_get( the_thread );
                 

                                                                     
  if ( ( wait_flags & THREAD_WAIT_STATE_READY_AGAIN ) == 0 ) {
       
4000ee84:	80 8f 60 04 	btst  4, %i5
                                  
4000ee88:	12 80 00 20 	bne  4000ef08 <_Thread_Continue+0x98>
         
4000ee8c:	92 10 00 18 	mov  %i0, %o1
                                 
    ( *the_thread->Wait.operations->extract )(
                       
4000ee90:	c2 06 20 58 	ld  [ %i0 + 0x58 ], %g1
                       
4000ee94:	c2 00 60 08 	ld  [ %g1 + 8 ], %g1
                          
4000ee98:	d0 06 20 54 	ld  [ %i0 + 0x54 ], %o0
                       
4000ee9c:	9f c0 40 00 	call  %g1
                                     
4000eea0:	94 07 bf dc 	add  %fp, -36, %o2
                            
  the_thread->Wait.operations = &_Thread_queue_Operations_default;
   
4000eea4:	03 10 00 8d 	sethi  %hi(0x40023400), %g1
                   
4000eea8:	82 10 61 cc 	or  %g1, 0x1cc, %g1	! 400235cc <_Thread_queue_Operations_default>

4000eeac:	c2 26 20 58 	st  %g1, [ %i0 + 0x58 ]
                       

                                                                     
    _Thread_Wait_cancel( the_thread, &queue_context );
               

                                                                     
    the_thread->Wait.return_code = status;
                           

                                                                     
    wait_class = wait_flags & THREAD_WAIT_CLASS_MASK;
                
4000eeb0:	03 00 00 3f 	sethi  %hi(0xfc00), %g1
                       
4000eeb4:	82 10 63 00 	or  %g1, 0x300, %g1	! ff00 <_Configuration_Interrupt_stack_size+0xef00>

  if ( success ) {
                                                   
4000eeb8:	c4 06 20 50 	ld  [ %i0 + 0x50 ], %g2
                       
4000eebc:	ba 0f 40 01 	and  %i5, %g1, %i5
                            
  the_thread->Wait.queue = NULL;
                                     
4000eec0:	c0 26 20 54 	clr  [ %i0 + 0x54 ]
                           
    ready_again = wait_class | THREAD_WAIT_STATE_READY_AGAIN;
        
    success = _Thread_Wait_flags_try_change_release(
                 
4000eec4:	82 17 60 01 	or  %i5, 1, %g1
                               
    the_thread->Wait.return_code = status;
                           
4000eec8:	f4 26 20 4c 	st  %i2, [ %i0 + 0x4c ]
                       
    ready_again = wait_class | THREAD_WAIT_STATE_READY_AGAIN;
        
4000eecc:	ba 17 60 04 	or  %i5, 4, %i5
                               
  if ( success ) {
                                                   
4000eed0:	80 a0 40 02 	cmp  %g1, %g2
                                 
4000eed4:	02 80 00 0d 	be  4000ef08 <_Thread_Continue+0x98>
          
4000eed8:	fa 26 20 50 	st  %i5, [ %i0 + 0x50 ]
                       
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000eedc:	c2 07 bf dc 	ld  [ %fp + -36 ], %g1
                        <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000eee0:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000eee4:	01 00 00 00 	nop 
                                          
  } else {
                                                           
    unblock = false;
                                                 
  }
                                                                  

                                                                     
  _Thread_Wait_release( the_thread, &queue_context );
                
  _Thread_Priority_update( &queue_context );
                         
4000eee8:	40 00 16 be 	call  400149e0 <_Thread_Priority_update>
      
4000eeec:	90 07 bf dc 	add  %fp, -36, %o0
                            
  _Thread_Clear_state( the_thread, STATES_BLOCKED );
                 
4000eef0:	90 10 00 18 	mov  %i0, %o0
                                 
4000eef4:	13 0c 00 57 	sethi  %hi(0x30015c00), %o1
                   
4000eef8:	40 00 16 e7 	call  40014a94 <_Thread_Clear_state>
          
4000eefc:	92 12 63 ff 	or  %o1, 0x3ff, %o1	! 30015fff <RAM_SIZE+0x2fc15fff>

    if ( !_Objects_Is_local_id( the_thread->Object.id ) ) {
          
      _Thread_MP_Free_proxy( the_thread );
                           
    }
                                                                
#endif
                                                               
  }
                                                                  
}
                                                                    
4000ef00:	81 c7 e0 08 	ret 
                                          
4000ef04:	81 e8 00 00 	restore 
                                      
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000ef08:	c2 07 bf dc 	ld  [ %fp + -36 ], %g1
                        <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000ef0c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000ef10:	01 00 00 00 	nop 
                                          
  _Thread_Priority_update( &queue_context );
                         
4000ef14:	40 00 16 b3 	call  400149e0 <_Thread_Priority_update>
      
4000ef18:	90 07 bf dc 	add  %fp, -36, %o0
                            
}
                                                                    
4000ef1c:	81 c7 e0 08 	ret 
                                          
4000ef20:	81 e8 00 00 	restore 
                                      

                                                                     

4000a2b0 <_Thread_Create_idle>: _Scheduler_Start_idle( scheduler, idle, cpu ); _User_extensions_Thread_start( idle ); } void _Thread_Create_idle( void ) {
4000a2b0:	9d e3 bf 70 	save  %sp, -144, %sp
                          <== NOT EXECUTED
4000a2b4:	03 10 00 7d 	sethi  %hi(0x4001f400), %g1
                   <== NOT EXECUTED
4000a2b8:	84 10 20 01 	mov  1, %g2
                                   
  return maximum_internal_threads;
                                   
}
                                                                    

                                                                     
RTEMS_INLINE_ROUTINE Thread_Control *_Thread_Internal_allocate( void )

{
                                                                    
  return (Thread_Control *)
                                          
4000a2bc:	31 10 00 7e 	sethi  %hi(0x4001f800), %i0
                   
4000a2c0:	c4 20 61 38 	st  %g2, [ %g1 + 0x138 ]
                      
4000a2c4:	7f ff fa ac 	call  40008d74 <_Objects_Allocate_unprotected>

4000a2c8:	90 16 21 94 	or  %i0, 0x194, %o0
                           
    _Stack_Ensure_minimum( rtems_configuration_get_idle_task_stack_size() ),

4000a2cc:	37 10 00 63 	sethi  %hi(0x40018c00), %i3
                   
4000a2d0:	03 10 00 6c 	sethi  %hi(0x4001b000), %g1
                   
4000a2d4:	b6 16 e0 e8 	or  %i3, 0xe8, %i3
                            
4000a2d8:	c2 00 63 40 	ld  [ %g1 + 0x340 ], %g1
                      
4000a2dc:	f4 06 e0 20 	ld  [ %i3 + 0x20 ], %i2
                       
4000a2e0:	80 a6 80 01 	cmp  %i2, %g1
                                 
4000a2e4:	1a 80 00 03 	bcc  4000a2f0 <_Thread_Create_idle+0x40>
      <== ALWAYS TAKEN
4000a2e8:	b8 10 00 08 	mov  %o0, %i4
                                 
4000a2ec:	b4 10 00 01 	mov  %g1, %i2
                                 <== NOT EXECUTED
  _Thread_Initialize(
                                                
4000a2f0:	3b 10 00 63 	sethi  %hi(0x40018c00), %i5
                   
4000a2f4:	ba 17 61 c8 	or  %i5, 0x1c8, %i5	! 40018dc8 <_Scheduler_Table>

  return ( *scheduler->Operations.map_priority )( scheduler, priority );

4000a2f8:	d4 07 60 44 	ld  [ %i5 + 0x44 ], %o2
                       
4000a2fc:	c2 07 60 1c 	ld  [ %i5 + 0x1c ], %g1
                       
4000a300:	d2 07 60 40 	ld  [ %i5 + 0x40 ], %o1
                       
4000a304:	9f c0 40 00 	call  %g1
                                     
4000a308:	90 10 00 1d 	mov  %i5, %o0
                                 
4000a30c:	d0 3f bf f0 	std  %o0, [ %fp + -16 ]
                       
4000a310:	82 07 bf fc 	add  %fp, -4, %g1
                             
4000a314:	c2 23 a0 74 	st  %g1, [ %sp + 0x74 ]
                       
4000a318:	b2 10 20 01 	mov  1, %i1
                                   
4000a31c:	c2 07 bf f0 	ld  [ %fp + -16 ], %g1
                        
4000a320:	c2 23 a0 5c 	st  %g1, [ %sp + 0x5c ]
                       
4000a324:	98 10 00 1a 	mov  %i2, %o4
                                 
4000a328:	c2 07 bf f4 	ld  [ %fp + -12 ], %g1
                        
4000a32c:	f2 23 a0 64 	st  %i1, [ %sp + 0x64 ]
                       
4000a330:	9a 10 20 00 	clr  %o5
                                      
4000a334:	c2 23 a0 60 	st  %g1, [ %sp + 0x60 ]
                       
4000a338:	03 12 51 13 	sethi  %hi(0x49444c00), %g1
                   
4000a33c:	c0 23 a0 70 	clr  [ %sp + 0x70 ]
                           
4000a340:	82 10 60 45 	or  %g1, 0x45, %g1
                            
4000a344:	c0 23 a0 6c 	clr  [ %sp + 0x6c ]
                           
4000a348:	96 10 20 00 	clr  %o3
                                      
4000a34c:	c0 23 a0 68 	clr  [ %sp + 0x68 ]
                           
4000a350:	94 10 00 1d 	mov  %i5, %o2
                                 
4000a354:	92 10 00 1c 	mov  %i4, %o1
                                 
4000a358:	90 16 21 94 	or  %i0, 0x194, %o0
                           
4000a35c:	40 00 00 62 	call  4000a4e4 <_Thread_Initialize>
           
4000a360:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
  idle->Start.Entry.Kinds.Idle.entry = rtems_configuration_get_idle_task();

4000a364:	c4 06 e0 1c 	ld  [ %i3 + 0x1c ], %g2
                       
  cpu->executing = idle;
                                             
4000a368:	37 10 00 7e 	sethi  %hi(0x4001f800), %i3
                   
4000a36c:	b6 16 e1 40 	or  %i3, 0x140, %i3	! 4001f940 <_Per_CPU_Information>

4000a370:	f8 26 e0 20 	st  %i4, [ %i3 + 0x20 ]
                       
  idle->Start.Entry.adaptor = _Thread_Entry_adaptor_idle;
            
4000a374:	03 10 00 28 	sethi  %hi(0x4000a000), %g1
                   
  cpu->heir      =
                                                   
4000a378:	f8 26 e0 24 	st  %i4, [ %i3 + 0x24 ]
                       
  idle->Start.Entry.adaptor = _Thread_Entry_adaptor_idle;
            
4000a37c:	82 10 63 c0 	or  %g1, 0x3c0, %g1
                           
  idle->is_idle = true;
                                              
4000a380:	f2 2f 20 88 	stb  %i1, [ %i4 + 0x88 ]
                      
  _Thread_Load_environment( idle );
                                  
4000a384:	90 10 00 1c 	mov  %i4, %o0
                                 
  idle->Start.Entry.adaptor = _Thread_Entry_adaptor_idle;
            
4000a388:	c2 27 20 a0 	st  %g1, [ %i4 + 0xa0 ]
                       
  _User_extensions_Iterate(
                                          
4000a38c:	33 10 00 2f 	sethi  %hi(0x4000bc00), %i1
                   
  idle->Start.Entry.Kinds.Idle.entry = rtems_configuration_get_idle_task();

4000a390:	c4 27 20 a4 	st  %g2, [ %i4 + 0xa4 ]
                       
  _Thread_Load_environment( idle );
                                  
4000a394:	40 00 01 14 	call  4000a7e4 <_Thread_Load_environment>
     
4000a398:	b4 10 20 00 	clr  %i2
                                      
  idle->current_state = STATES_READY;
                                
4000a39c:	c0 27 20 1c 	clr  [ %i4 + 0x1c ]
                           
  ( *scheduler->Operations.start_idle )( scheduler, the_thread, cpu );

4000a3a0:	94 10 00 1b 	mov  %i3, %o2
                                 
4000a3a4:	c2 07 60 38 	ld  [ %i5 + 0x38 ], %g1
                       
4000a3a8:	92 10 00 1c 	mov  %i4, %o1
                                 
4000a3ac:	90 10 00 1d 	mov  %i5, %o0
                                 
4000a3b0:	9f c0 40 00 	call  %g1
                                     
4000a3b4:	b0 10 00 1c 	mov  %i4, %i0
                                 
4000a3b8:	40 00 06 86 	call  4000bdd0 <_User_extensions_Iterate>
     
4000a3bc:	93 ee 60 f0 	restore  %i1, 0xf0, %o1
                       

                                                                     

4000b344 <_Thread_Dispatch>: __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000b344:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return psr;
                                                        
4000b348:	92 10 00 01 	mov  %g1, %o1
                                 

                                                                     
  _ISR_Local_disable( level );
                                       

                                                                     
  cpu_self = _Per_CPU_Get();
                                         

                                                                     
  if ( cpu_self->dispatch_necessary ) {
                              
4000b34c:	c4 09 a0 1c 	ldub  [ %g6 + 0x1c ], %g2
                     
4000b350:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000b354:	12 80 00 06 	bne  4000b36c <_Thread_Dispatch+0x28>
         <== NEVER TAKEN
4000b358:	90 10 00 06 	mov  %g6, %o0
                                 <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b35c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b360:	01 00 00 00 	nop 
                                          
    cpu_self->thread_dispatch_disable_level = 1;
                     
    _Thread_Do_dispatch( cpu_self, level );
                          
  } else {
                                                           
    _ISR_Local_enable( level );
                                      
  }
                                                                  
}
                                                                    
4000b364:	81 c3 e0 08 	retl 
                                         
4000b368:	01 00 00 00 	nop 
                                          
    cpu_self->thread_dispatch_disable_level = 1;
                     
4000b36c:	82 10 20 01 	mov  1, %g1	! 1 <_TLS_Alignment>
              <== NOT EXECUTED
4000b370:	c2 21 a0 18 	st  %g1, [ %g6 + 0x18 ]
                       <== NOT EXECUTED
    _Thread_Do_dispatch( cpu_self, level );
                          
4000b374:	82 13 c0 00 	mov  %o7, %g1
                                 <== NOT EXECUTED
4000b378:	7f ff ff ab 	call  4000b224 <_Thread_Do_dispatch>
          <== NOT EXECUTED
4000b37c:	9e 10 40 00 	mov  %g1, %o7
                                 <== NOT EXECUTED

                                                                     

4000e6f4 <_Thread_Dispatch_direct>: _ISR_Local_enable( level ); } } void _Thread_Dispatch_direct( Per_CPU_Control *cpu_self ) {
4000e6f4:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  ISR_Level level;
                                                   

                                                                     
  if ( cpu_self->thread_dispatch_disable_level != 1 ) {
              
4000e6f8:	c2 06 20 18 	ld  [ %i0 + 0x18 ], %g1
                       <== NOT EXECUTED
4000e6fc:	80 a0 60 01 	cmp  %g1, 1
                                   <== NOT EXECUTED
4000e700:	12 80 00 05 	bne  4000e714 <_Thread_Dispatch_direct+0x20>
  <== NOT EXECUTED
4000e704:	01 00 00 00 	nop 
                                          
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000e708:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
    _Internal_error( INTERNAL_ERROR_BAD_THREAD_DISPATCH_DISABLE_LEVEL );

  }
                                                                  

                                                                     
  _ISR_Local_disable( level );
                                       
  _Thread_Do_dispatch( cpu_self, level );
                            
4000e70c:	7f ff ff b2 	call  4000e5d4 <_Thread_Do_dispatch>
          
4000e710:	93 e8 00 01 	restore  %g0, %g1, %o1
                        
    _Internal_error( INTERNAL_ERROR_BAD_THREAD_DISPATCH_DISABLE_LEVEL );

4000e714:	7f ff e4 64 	call  400078a4 <_Internal_error>
              
4000e718:	90 10 20 1e 	mov  0x1e, %o0
                                
4000e71c:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

4000e5d4 <_Thread_Do_dispatch>: _Thread_State_release( executing, &lock_context ); } void _Thread_Do_dispatch( Per_CPU_Control *cpu_self, ISR_Level level ) {
4000e5d4:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  ) {
                                                                
    _Internal_error( INTERNAL_ERROR_BAD_THREAD_DISPATCH_ENVIRONMENT );

  }
                                                                  
#endif
                                                               

                                                                     
  executing = cpu_self->executing;
                                   
4000e5d8:	f6 06 20 20 	ld  [ %i0 + 0x20 ], %i3
                       
{
                                                                    
4000e5dc:	82 10 00 19 	mov  %i1, %g1
                                 
    /*
                                                               
     *  Since heir and executing are not the same, we need to do a real

     *  context switch.
                                              
     */
                                                              
    if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )

      heir->cpu_time_budget = rtems_configuration_get_ticks_per_timeslice();

4000e5e0:	23 10 00 63 	sethi  %hi(0x40018c00), %l1
                   
  return _Chain_Immutable_head( the_chain )->next;
                   
4000e5e4:	33 10 00 6d 	sethi  %hi(0x4001b400), %i1
                   
4000e5e8:	a2 14 60 e8 	or  %l1, 0xe8, %l1
                            
4000e5ec:	b2 16 62 3c 	or  %i1, 0x23c, %i1
                           

                                                                     
    _ISR_Local_enable( level );
                                      

                                                                     
    _User_extensions_Thread_switch( executing, heir );
               
    _Thread_Save_fp( executing );
                                    
    _Context_Switch( &executing->Registers, &heir->Registers );
      
4000e5f0:	a0 06 e0 f0 	add  %i3, 0xf0, %l0
                           
  if ( node != tail ) {
                                              
4000e5f4:	b4 06 60 04 	add  %i1, 4, %i2
                              
  heir = cpu_self->heir;
                                             
4000e5f8:	f8 06 20 24 	ld  [ %i0 + 0x24 ], %i4
                       
  cpu_self->dispatch_necessary = false;
                              
4000e5fc:	c0 2e 20 1c 	clrb  [ %i0 + 0x1c ]
                          
    if ( heir == executing )
                                         
4000e600:	80 a6 c0 1c 	cmp  %i3, %i4
                                 
4000e604:	02 80 00 1f 	be  4000e680 <_Thread_Do_dispatch+0xac>
       
4000e608:	f8 26 20 20 	st  %i4, [ %i0 + 0x20 ]
                       
    if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )

4000e60c:	c4 07 20 90 	ld  [ %i4 + 0x90 ], %g2
                       
4000e610:	80 a0 a0 01 	cmp  %g2, 1
                                   
4000e614:	12 80 00 04 	bne  4000e624 <_Thread_Do_dispatch+0x50>
      
4000e618:	01 00 00 00 	nop 
                                          
      heir->cpu_time_budget = rtems_configuration_get_ticks_per_timeslice();

4000e61c:	c4 04 60 18 	ld  [ %l1 + 0x18 ], %g2
                       <== NOT EXECUTED
4000e620:	c4 27 20 8c 	st  %g2, [ %i4 + 0x8c ]
                       <== NOT EXECUTED
4000e624:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000e628:	01 00 00 00 	nop 
                                          
4000e62c:	fa 06 40 00 	ld  [ %i1 ], %i5
                              
4000e630:	80 a7 40 1a 	cmp  %i5, %i2
                                 
4000e634:	02 80 00 0b 	be  4000e660 <_Thread_Do_dispatch+0x8c>
       
4000e638:	92 07 20 f0 	add  %i4, 0xf0, %o1
                           
      (*extension->thread_switch)( executing, heir );
                
4000e63c:	c2 07 60 08 	ld  [ %i5 + 8 ], %g1
                          
4000e640:	92 10 00 1c 	mov  %i4, %o1
                                 
4000e644:	9f c0 40 00 	call  %g1
                                     
4000e648:	90 10 00 1b 	mov  %i3, %o0
                                 
4000e64c:	fa 07 40 00 	ld  [ %i5 ], %i5
                              
    while ( node != tail ) {
                                         
4000e650:	80 a7 40 1a 	cmp  %i5, %i2
                                 
4000e654:	32 bf ff fb 	bne,a   4000e640 <_Thread_Do_dispatch+0x6c>
   
4000e658:	c2 07 60 08 	ld  [ %i5 + 8 ], %g1
                          
    _Context_Switch( &executing->Registers, &heir->Registers );
      
4000e65c:	92 07 20 f0 	add  %i4, 0xf0, %o1
                           
4000e660:	7f ff f8 6e 	call  4000c818 <_CPU_Context_switch>
          
4000e664:	90 10 00 10 	mov  %l0, %o0
                                 
    /*
                                                               
     * We have to obtain this value again after the context switch since the

     * heir thread may have migrated from another processor.  Values from the

     * stack or non-volatile registers reflect the old execution environment.

     */
                                                              
    cpu_self = _Per_CPU_Get();
                                       
4000e668:	b0 10 00 06 	mov  %g6, %i0
                                 <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000e66c:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED

                                                                     
    _ISR_Local_disable( level );
                                     
  } while ( cpu_self->dispatch_necessary );
                          
4000e670:	c4 09 a0 1c 	ldub  [ %g6 + 0x1c ], %g2
                     
4000e674:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000e678:	32 bf ff e1 	bne,a   4000e5fc <_Thread_Do_dispatch+0x28>
   
4000e67c:	f8 06 20 24 	ld  [ %i0 + 0x24 ], %i4
                       

                                                                     
post_switch:
                                                         
  _Assert( cpu_self->thread_dispatch_disable_level == 1 );
           
  cpu_self->thread_dispatch_disable_level = 0;
                       
4000e680:	c0 26 20 18 	clr  [ %i0 + 0x18 ]
                           <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000e684:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000e688:	01 00 00 00 	nop 
                                          
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000e68c:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  _ISR_lock_ISR_disable( lock_context );
                             
4000e690:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000e694:	d2 06 e0 e0 	ld  [ %i3 + 0xe0 ], %o1
                       
  return &the_chain->Tail.Node;
                                      
4000e698:	ba 06 e0 e4 	add  %i3, 0xe4, %i5
                           
  if ( !_Chain_Is_empty(the_chain))
                                  
4000e69c:	80 a2 40 1d 	cmp  %o1, %i5
                                 
4000e6a0:	02 80 00 10 	be  4000e6e0 <_Thread_Do_dispatch+0x10c>
      
4000e6a4:	b8 06 e0 e0 	add  %i3, 0xe0, %i4
                           
  new_first = old_first->next;
                                       
4000e6a8:	c2 02 40 00 	ld  [ %o1 ], %g1
                              
  head->next = new_first;
                                            
4000e6ac:	c2 26 e0 e0 	st  %g1, [ %i3 + 0xe0 ]
                       
    ( *action->handler )( executing, action, &lock_context );
        
4000e6b0:	94 07 bf fc 	add  %fp, -4, %o2
                             
  new_first->previous = head;
                                        
4000e6b4:	f8 20 60 04 	st  %i4, [ %g1 + 4 ]
                          
  node->next = NULL;
                                                 
4000e6b8:	c0 22 40 00 	clr  [ %o1 ]
                                  
4000e6bc:	c2 02 60 08 	ld  [ %o1 + 8 ], %g1
                          
4000e6c0:	9f c0 40 00 	call  %g1
                                     
4000e6c4:	90 10 00 1b 	mov  %i3, %o0
                                 
4000e6c8:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
4000e6cc:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
  return _Chain_Immutable_head( the_chain )->next;
                   
4000e6d0:	d2 06 e0 e0 	ld  [ %i3 + 0xe0 ], %o1
                       
  if ( !_Chain_Is_empty(the_chain))
                                  
4000e6d4:	80 a7 40 09 	cmp  %i5, %o1
                                 
4000e6d8:	32 bf ff f5 	bne,a   4000e6ac <_Thread_Do_dispatch+0xd8>
   <== NEVER TAKEN
4000e6dc:	c2 02 40 00 	ld  [ %o1 ], %g1
                              <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000e6e0:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000e6e4:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000e6e8:	01 00 00 00 	nop 
                                          
  _Profiling_Thread_dispatch_enable( cpu_self, 0 );
                  

                                                                     
  _ISR_Local_enable( level );
                                        

                                                                     
  _Thread_Run_post_switch_actions( executing );
                      
}
                                                                    
4000e6ec:	81 c7 e0 08 	ret 
                                          
4000e6f0:	81 e8 00 00 	restore 
                                      

                                                                     

4000a3c0 <_Thread_Entry_adaptor_idle>: #endif #include <rtems/score/threadimpl.h> void _Thread_Entry_adaptor_idle( Thread_Control *executing ) {
4000a3c0:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  const Thread_Entry_idle *idle = &executing->Start.Entry.Kinds.Idle;


                                                                     
  ( *idle->entry )( 0 );
                                             
4000a3c4:	c2 06 20 a4 	ld  [ %i0 + 0xa4 ], %g1
                       
4000a3c8:	9f c0 40 00 	call  %g1
                                     
4000a3cc:	90 10 20 00 	clr  %o0
                                      
}
                                                                    
4000a3d0:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000a3d4:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

4000a3d8 <_Thread_Entry_adaptor_numeric>: #endif #include <rtems/score/threadimpl.h> void _Thread_Entry_adaptor_numeric( Thread_Control *executing ) {
4000a3d8:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  const Thread_Entry_numeric *numeric = &executing->Start.Entry.Kinds.Numeric;


                                                                     
  ( *numeric->entry )( numeric->argument );
                          
4000a3dc:	c2 06 20 a4 	ld  [ %i0 + 0xa4 ], %g1
                       <== NOT EXECUTED
4000a3e0:	9f c0 40 00 	call  %g1
                                     <== NOT EXECUTED
4000a3e4:	d0 06 20 a8 	ld  [ %i0 + 0xa8 ], %o0
                       
}
                                                                    
4000a3e8:	81 c7 e0 08 	ret 
                                          
4000a3ec:	81 e8 00 00 	restore 
                                      

                                                                     

400253b0 <_Thread_Entry_adaptor_pointer>: #endif #include <rtems/score/threadimpl.h> void _Thread_Entry_adaptor_pointer( Thread_Control *executing ) {
400253b0:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  const Thread_Entry_pointer *pointer = &executing->Start.Entry.Kinds.Pointer;


                                                                     
  executing->Wait.return_argument = ( *pointer->entry )( pointer->argument );

400253b4:	c2 06 20 a4 	ld  [ %i0 + 0xa4 ], %g1
                       <== NOT EXECUTED
400253b8:	9f c0 40 00 	call  %g1
                                     <== NOT EXECUTED
400253bc:	d0 06 20 a8 	ld  [ %i0 + 0xa8 ], %o0
                       
400253c0:	d0 26 20 40 	st  %o0, [ %i0 + 0x40 ]
                       
}
                                                                    
400253c4:	81 c7 e0 08 	ret 
                                          
400253c8:	81 e8 00 00 	restore 
                                      

                                                                     

4000eb78 <_Thread_Exit>: void _Thread_Exit( Thread_Control *executing, Thread_Life_state set, void *exit_value ) {
4000eb78:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000eb7c:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  state |= set;
                                                      
4000eb80:	c4 06 21 70 	ld  [ %i0 + 0x170 ], %g2
                      
4000eb84:	b2 16 40 02 	or  %i1, %g2, %i1
                             
  the_thread->Life.exit_value = exit_value;
                          
4000eb88:	f4 26 21 78 	st  %i2, [ %i0 + 0x178 ]
                      
      && _Thread_Is_life_changing( state )
                           
4000eb8c:	80 8e 60 06 	btst  6, %i1
                                  
4000eb90:	02 80 00 06 	be  4000eba8 <_Thread_Exit+0x30>
              <== NEVER TAKEN
4000eb94:	f2 26 21 70 	st  %i1, [ %i0 + 0x170 ]
                      
4000eb98:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000eb9c:	7f ff fe 97 	call  4000e5f8 <_Thread_Change_life_locked.part.37>

4000eba0:	90 10 00 18 	mov  %i0, %o0
                                 
4000eba4:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000eba8:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000ebac:	01 00 00 00 	nop 
                                          
    0,
                                                               
    set,
                                                             
    THREAD_LIFE_PROTECTED | THREAD_LIFE_CHANGE_DEFERRED
              
  );
                                                                 
  _Thread_State_release( executing, &lock_context );
                 
}
                                                                    
4000ebb0:	81 c7 e0 08 	ret 
                                          
4000ebb4:	81 e8 00 00 	restore 
                                      

                                                                     

4000a3f0 <_Thread_Get>: ISR_lock_Context *lock_context ) { Objects_Information *information; if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ) {
4000a3f0:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
4000a3f4:	02 80 00 11 	be  4000a438 <_Thread_Get+0x48>
               <== NEVER TAKEN
4000a3f8:	83 32 20 18 	srl  %o0, 0x18, %g1
                           
  return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);

4000a3fc:	82 08 60 07 	and  %g1, 7, %g1
                              
  if ( !the_api || the_api > OBJECTS_APIS_LAST )
                     
4000a400:	84 00 7f ff 	add  %g1, -1, %g2
                             
4000a404:	80 a0 a0 02 	cmp  %g2, 2
                                   
4000a408:	18 80 00 10 	bgu  4000a448 <_Thread_Get+0x58>
              
4000a40c:	83 28 60 02 	sll  %g1, 2, %g1
                              
  return _Objects_Information_table[ the_api ][ 1 ];
                 
4000a410:	05 10 00 66 	sethi  %hi(0x40019800), %g2
                   
4000a414:	84 10 a0 c0 	or  %g2, 0xc0, %g2	! 400198c0 <_Objects_Information_table>

4000a418:	c2 00 80 01 	ld  [ %g2 + %g1 ], %g1
                        
4000a41c:	d4 00 60 04 	ld  [ %g1 + 4 ], %o2
                          
    _ISR_lock_ISR_disable( lock_context );
                           
    return _Thread_Executing;
                                        
  }
                                                                  

                                                                     
  information = _Thread_Get_objects_information( id );
               
  if ( information == NULL ) {
                                       
4000a420:	80 a2 a0 00 	cmp  %o2, 0
                                   
4000a424:	02 80 00 09 	be  4000a448 <_Thread_Get+0x58>
               
4000a428:	01 00 00 00 	nop 
                                          
    return NULL;
                                                     
  }
                                                                  

                                                                     
  return (Thread_Control *)
                                          
4000a42c:	82 13 c0 00 	mov  %o7, %g1
                                 
4000a430:	40 00 0e ff 	call  4000e02c <_Objects_Get>
                 
4000a434:	9e 10 40 00 	mov  %g1, %o7
                                 
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000a438:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
    _ISR_lock_ISR_disable( lock_context );
                           
4000a43c:	c2 22 40 00 	st  %g1, [ %o1 ]
                              
    return _Thread_Executing;
                                        
4000a440:	81 c3 e0 08 	retl 
                                         
4000a444:	d0 01 a0 20 	ld  [ %g6 + 0x20 ], %o0
                       
    _Objects_Get( id, lock_context, information );
                   
}
                                                                    
4000a448:	81 c3 e0 08 	retl 
                                         
4000a44c:	90 10 20 00 	clr  %o0
                                      

                                                                     

4000ba04 <_Thread_Get_CPU_time_used>: void _Thread_Get_CPU_time_used( Thread_Control *the_thread, Timestamp_Control *cpu_time_used ) {
4000ba04:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
4000ba08:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED

                                                                     
  _Thread_State_acquire( the_thread, &state_lock_context );
          
  scheduler = _Thread_Scheduler_get_home( the_thread );
              
  _Scheduler_Acquire_critical( scheduler, &scheduler_lock_context );
 

                                                                     
  if ( _Thread_Is_scheduled( the_thread ) ) {
                        
4000ba0c:	c4 01 a0 20 	ld  [ %g6 + 0x20 ], %g2
                       
4000ba10:	80 a6 00 02 	cmp  %i0, %g2
                                 
4000ba14:	02 80 00 08 	be  4000ba34 <_Thread_Get_CPU_time_used+0x30>
 
4000ba18:	ba 10 00 06 	mov  %g6, %i5
                                 
4000ba1c:	c4 1e 20 98 	ldd  [ %i0 + 0x98 ], %g2
                      <== NOT EXECUTED
    _Thread_Update_CPU_time_used( the_thread, _Thread_Get_CPU( the_thread ) );

  }
                                                                  

                                                                     
  *cpu_time_used = the_thread->cpu_time_used;
                        
4000ba20:	c4 3e 40 00 	std  %g2, [ %i1 ]
                             <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000ba24:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000ba28:	01 00 00 00 	nop 
                                          

                                                                     
  _Scheduler_Release_critical( scheduler, &scheduler_lock_context );
 
  _Thread_State_release( the_thread, &state_lock_context );
          
}
                                                                    
4000ba2c:	81 c7 e0 08 	ret 
                                          
4000ba30:	81 e8 00 00 	restore 
                                      
  last = cpu->cpu_usage_timestamp;
                                   
4000ba34:	e0 19 a0 28 	ldd  [ %g6 + 0x28 ], %l0
                      
4000ba38:	7f ff f8 07 	call  40009a54 <_Timecounter_Sbinuptime>
      
4000ba3c:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000ba40:	d0 3f 60 28 	std  %o0, [ %i5 + 0x28 ]
                      <== NOT EXECUTED
  *_result = *_end - *_start;
                                        
4000ba44:	b6 a2 40 11 	subcc  %o1, %l1, %i3
                          <== NOT EXECUTED
  *_time += *_add;
                                                   
4000ba48:	f8 1e 20 98 	ldd  [ %i0 + 0x98 ], %i4
                      <== NOT EXECUTED
  *_result = *_end - *_start;
                                        
4000ba4c:	b4 62 00 10 	subx  %o0, %l0, %i2
                           <== NOT EXECUTED
  *_time += *_add;
                                                   
4000ba50:	86 86 c0 1d 	addcc  %i3, %i5, %g3
                          <== NOT EXECUTED
4000ba54:	84 46 80 1c 	addx  %i2, %i4, %g2
                           <== NOT EXECUTED
4000ba58:	c4 3e 20 98 	std  %g2, [ %i0 + 0x98 ]
                      <== NOT EXECUTED
4000ba5c:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  *cpu_time_used = the_thread->cpu_time_used;
                        
4000ba60:	c4 3e 40 00 	std  %g2, [ %i1 ]
                             <== NOT EXECUTED
4000ba64:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000ba68:	01 00 00 00 	nop 
                                          
}
                                                                    
4000ba6c:	81 c7 e0 08 	ret 
                                          
4000ba70:	81 e8 00 00 	restore 
                                      

                                                                     

4000bf68 <_Thread_Get_name>: size_t _Thread_Get_name( const Thread_Control *the_thread, char *buffer, size_t buffer_size ) {
4000bf68:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  const char *name;
                                                  

                                                                     
  name = the_thread->Join_queue.Queue.name;
                          
4000bf6c:	c2 06 20 18 	ld  [ %i0 + 0x18 ], %g1
                       <== NOT EXECUTED
{
                                                                    
4000bf70:	94 10 00 19 	mov  %i1, %o2
                                 <== NOT EXECUTED

                                                                     
  if ( name != NULL && name[ 0 ] != '\0' ) {
                         
4000bf74:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000bf78:	02 80 00 06 	be  4000bf90 <_Thread_Get_name+0x28>
          <== NOT EXECUTED
4000bf7c:	96 10 00 1a 	mov  %i2, %o3
                                 
4000bf80:	c4 48 40 00 	ldsb  [ %g1 ], %g2
                            
4000bf84:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000bf88:	12 80 00 09 	bne  4000bfac <_Thread_Get_name+0x44>
         
4000bf8c:	b2 10 00 01 	mov  %g1, %i1
                                 
    return strlcpy( buffer, name, buffer_size );
                     
  } else {
                                                           
    return _Objects_Name_to_string(
                                  
4000bf90:	c2 06 20 0c 	ld  [ %i0 + 0xc ], %g1
                        
4000bf94:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000bf98:	92 10 20 00 	clr  %o1
                                      
4000bf9c:	40 00 0d 91 	call  4000f5e0 <_Objects_Name_to_string>
      
4000bfa0:	90 07 bf fc 	add  %fp, -4, %o0
                             
      false,
                                                         
      buffer,
                                                        
      buffer_size
                                                    
    );
                                                               
  }
                                                                  
}
                                                                    
4000bfa4:	81 c7 e0 08 	ret 
                                          
4000bfa8:	91 e8 00 08 	restore  %g0, %o0, %o0
                        
    return strlcpy( buffer, name, buffer_size );
                     
4000bfac:	40 00 11 40 	call  400104ac <strlcpy>
                      
4000bfb0:	91 e8 00 0a 	restore  %g0, %o2, %o0
                        

                                                                     

4000a450 <_Thread_Handler>: } #endif } void _Thread_Handler( void ) {
4000a450:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  /*
                                                                 
   * Some CPUs need to tinker with the call frame or registers when the

   * thread actually begins to execute for the first time.  This is a

   * hook point where the port gets a shot at doing whatever it requires.

   */
                                                                
  _Context_Initialization_at_thread_begin();
                         
4000a454:	3f 10 00 29 	sethi  %hi(0x4000a400), %i7
                   <== NOT EXECUTED
4000a458:	be 17 e0 50 	or  %i7, 0x50, %i7	! 4000a450 <_Thread_Handler>
<== NOT EXECUTED
  executing = _Thread_Executing;
                                     
4000a45c:	fa 01 a0 20 	ld  [ %g6 + 0x20 ], %i5
                       <== NOT EXECUTED
4000a460:	90 10 00 06 	mov  %g6, %o0
                                 <== NOT EXECUTED

                                                                     
  /*
                                                                 
   * have to put level into a register for those cpu's that use
      
   * inline asm here
                                                 
   */
                                                                
  level = executing->Start.isr_level;
                                
4000a464:	c2 07 60 b8 	ld  [ %i5 + 0xb8 ], %g1
                       <== NOT EXECUTED
  _ISR_Set_level( level );
                                           
4000a468:	83 28 60 08 	sll  %g1, 8, %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000a46c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000a470:	01 00 00 00 	nop 
                                          
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000a474:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
   * Make sure we lose no thread dispatch necessary update and execute the

   * post-switch actions.  As a side-effect change the thread dispatch level

   * from one to zero.  Do not use _Thread_Enable_dispatch() since there is no

   * valid thread dispatch necessary indicator in this context.
      
   */
                                                                
  _Thread_Do_dispatch( cpu_self, level );
                            
4000a478:	40 00 10 57 	call  4000e5d4 <_Thread_Do_dispatch>
          
4000a47c:	92 10 00 01 	mov  %g1, %o1
                                 
  _User_extensions_Iterate(
                                          
4000a480:	94 10 20 00 	clr  %o2
                                      
4000a484:	90 10 00 1d 	mov  %i5, %o0
                                 
4000a488:	13 10 00 2f 	sethi  %hi(0x4000bc00), %o1
                   
4000a48c:	40 00 06 51 	call  4000bdd0 <_User_extensions_Iterate>
     
4000a490:	92 12 61 38 	or  %o1, 0x138, %o1	! 4000bd38 <_User_extensions_Thread_begin_visitor>

  if ( executing->Object.id == _Thread_Global_constructor ) {
        
4000a494:	03 10 00 7e 	sethi  %hi(0x4001f800), %g1
                   
4000a498:	c6 07 60 08 	ld  [ %i5 + 8 ], %g3
                          
4000a49c:	c4 00 61 90 	ld  [ %g1 + 0x190 ], %g2
                      
4000a4a0:	80 a0 c0 02 	cmp  %g3, %g2
                                 
4000a4a4:	02 80 00 0c 	be  4000a4d4 <_Thread_Handler+0x84>
           
4000a4a8:	01 00 00 00 	nop 
                                          
  /*
                                                                 
   *  RTEMS supports multiple APIs and each API can define a different

   *  thread/task prototype. The following code supports invoking the

   *  user thread entry point using the prototype expected.
          
   */
                                                                
  ( *executing->Start.Entry.adaptor )( executing );
                  
4000a4ac:	c2 07 60 a0 	ld  [ %i5 + 0xa0 ], %g1
                       
4000a4b0:	9f c0 40 00 	call  %g1
                                     
4000a4b4:	90 10 00 1d 	mov  %i5, %o0
                                 
  _User_extensions_Iterate(
                                          
4000a4b8:	90 10 00 1d 	mov  %i5, %o0
                                 
4000a4bc:	94 10 20 00 	clr  %o2
                                      
4000a4c0:	13 10 00 2f 	sethi  %hi(0x4000bc00), %o1
                   
4000a4c4:	40 00 06 43 	call  4000bdd0 <_User_extensions_Iterate>
     
4000a4c8:	92 12 61 5c 	or  %o1, 0x15c, %o1	! 4000bd5c <_User_extensions_Thread_exitted_visitor>

   *  able to fit in a (void *).
                                     
   */
                                                                

                                                                     
  _User_extensions_Thread_exitted( executing );
                      

                                                                     
  _Internal_error( INTERNAL_ERROR_THREAD_EXITTED );
                  
4000a4cc:	7f ff f4 f6 	call  400078a4 <_Internal_error>
              
4000a4d0:	90 10 20 05 	mov  5, %o0
                                   
    INIT_NAME();
                                                     
4000a4d4:	40 00 3f 71 	call  4001a298 <_init>
                        
4000a4d8:	c0 20 61 90 	clr  [ %g1 + 0x190 ]
                          
  ( *executing->Start.Entry.adaptor )( executing );
                  
4000a4dc:	10 bf ff f5 	b  4000a4b0 <_Thread_Handler+0x60>
            
4000a4e0:	c2 07 60 a0 	ld  [ %i5 + 0xa0 ], %g1
                       

                                                                     

4000a88c <_Thread_Handler_initialization>: THREAD_QUEUE_HEADS_SIZE( _Scheduler_Count ) ); } void _Thread_Handler_initialization(void) {
4000a88c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  rtems_stack_allocate_init_hook stack_allocate_init_hook =
          
4000a890:	03 10 00 63 	sethi  %hi(0x40018c00), %g1
                   
4000a894:	82 10 60 e8 	or  %g1, 0xe8, %g1	! 40018ce8 <Configuration>
 
  #if defined(RTEMS_MULTIPROCESSING)
                                 
    uint32_t maximum_proxies =
                                       
      _Configuration_MP_table->maximum_proxies;
                      
  #endif
                                                             

                                                                     
  if ( rtems_configuration_get_stack_allocate_hook() == NULL ||
      
4000a898:	c6 00 60 28 	ld  [ %g1 + 0x28 ], %g3
                       
4000a89c:	80 a0 e0 00 	cmp  %g3, 0
                                   
4000a8a0:	02 80 00 12 	be  4000a8e8 <_Thread_Handler_initialization+0x5c>
<== NEVER TAKEN
4000a8a4:	c4 00 60 24 	ld  [ %g1 + 0x24 ], %g2
                       
4000a8a8:	c6 00 60 2c 	ld  [ %g1 + 0x2c ], %g3
                       
4000a8ac:	80 a0 e0 00 	cmp  %g3, 0
                                   
4000a8b0:	02 80 00 0e 	be  4000a8e8 <_Thread_Handler_initialization+0x5c>

4000a8b4:	80 a0 a0 00 	cmp  %g2, 0
                                   
       rtems_configuration_get_stack_free_hook() == NULL)
            
    _Internal_error( INTERNAL_ERROR_BAD_STACK_HOOK );
                

                                                                     
  if ( stack_allocate_init_hook != NULL )
                            
4000a8b8:	22 80 00 05 	be,a   4000a8cc <_Thread_Handler_initialization+0x40>

4000a8bc:	31 10 00 7e 	sethi  %hi(0x4001f800), %i0
                   
    (*stack_allocate_init_hook)( rtems_configuration_get_stack_space_size() );

4000a8c0:	9f c0 80 00 	call  %g2
                                     
4000a8c4:	d0 00 60 04 	ld  [ %g1 + 4 ], %o0
                          
  /*
                                                                 
   *  Initialize the internal class of threads.  We need an IDLE thread

   *  per CPU in an SMP system.  In addition, if this is a loosely
   
   *  coupled multiprocessing system, account for the MPCI Server Thread.

   */
                                                                
  _Thread_Initialize_information(
                                    
4000a8c8:	31 10 00 7e 	sethi  %hi(0x4001f800), %i0
                   
4000a8cc:	ba 10 20 08 	mov  8, %i5
                                   
4000a8d0:	b8 10 20 00 	clr  %i4
                                      
4000a8d4:	b6 10 20 01 	mov  1, %i3
                                   
4000a8d8:	b4 10 20 01 	mov  1, %i2
                                   
4000a8dc:	b2 10 20 01 	mov  1, %i1
                                   
4000a8e0:	7f ff ff d8 	call  4000a840 <_Thread_Initialize_information>

4000a8e4:	91 ee 21 94 	restore  %i0, 0x194, %o0
                      
    _Internal_error( INTERNAL_ERROR_BAD_STACK_HOOK );
                
4000a8e8:	7f ff f3 ef 	call  400078a4 <_Internal_error>
              
4000a8ec:	90 10 20 0e 	mov  0xe, %o0
                                 
4000a8f0:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

4000a4e4 <_Thread_Initialize>: Thread_CPU_budget_algorithms budget_algorithm, Thread_CPU_budget_algorithm_callout budget_callout, uint32_t isr_level, Objects_Name name ) {
4000a4e4:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
4000a4e8:	c2 07 a0 74 	ld  [ %fp + 0x74 ], %g1
                       <== NOT EXECUTED
      return false;
                                                  
    }
                                                                
  }
                                                                  
#endif
                                                               

                                                                     
  memset(
                                                            
4000a4ec:	d4 06 20 18 	ld  [ %i0 + 0x18 ], %o2
                       <== NOT EXECUTED
{
                                                                    
4000a4f0:	e8 00 40 00 	ld  [ %g1 ], %l4
                              
  return (uintptr_t) _TLS_BSS_end - (uintptr_t) _TLS_Data_begin;
     
4000a4f4:	03 10 00 68 	sethi  %hi(0x4001a000), %g1
                   
4000a4f8:	82 10 62 d0 	or  %g1, 0x2d0, %g1	! 4001a2d0 <_Linker_set__Sysinit_bsp_work_area_initialize>

4000a4fc:	e4 07 a0 5c 	ld  [ %fp + 0x5c ], %l2
                       
4000a500:	e6 07 a0 60 	ld  [ %fp + 0x60 ], %l3
                       
4000a504:	e2 07 a0 68 	ld  [ %fp + 0x68 ], %l1
                       
4000a508:	ea 0f a0 67 	ldub  [ %fp + 0x67 ], %l5
                     
  memset(
                                                            
4000a50c:	94 02 bf f0 	add  %o2, -16, %o2
                            
4000a510:	21 10 00 68 	sethi  %hi(0x4001a000), %l0
                   
4000a514:	92 10 20 00 	clr  %o1
                                      
4000a518:	a0 14 22 d0 	or  %l0, 0x2d0, %l0
                           
4000a51c:	90 06 60 10 	add  %i1, 0x10, %o0
                           
4000a520:	40 00 13 38 	call  4000f200 <memset>
                       
4000a524:	a0 24 00 01 	sub  %l0, %g1, %l0
                            
    &the_thread->Join_queue,
                                         
    0,
                                                               
    information->Objects.size - offsetof( Thread_Control, Join_queue )

  );
                                                                 

                                                                     
  for ( i = 0 ; i < _Thread_Control_add_on_count ; ++i ) {
           
4000a528:	03 10 00 63 	sethi  %hi(0x40018c00), %g1
                   
4000a52c:	de 00 61 24 	ld  [ %g1 + 0x124 ], %o7	! 40018d24 <_Thread_Control_add_on_count>

4000a530:	80 a3 e0 00 	cmp  %o7, 0
                                   
4000a534:	02 80 00 0e 	be  4000a56c <_Thread_Initialize+0x88>
        <== NEVER TAKEN
4000a538:	80 a6 e0 00 	cmp  %i3, 0
                                   
4000a53c:	03 10 00 63 	sethi  %hi(0x40018c00), %g1
                   
4000a540:	86 10 20 00 	clr  %g3
                                      
4000a544:	82 10 61 28 	or  %g1, 0x128, %g1
                           
    const Thread_Control_add_on *add_on = &_Thread_Control_add_ons[ i ];


                                                                     
    *(void **) ( (char *) the_thread + add_on->destination_offset ) =

      (char *) the_thread + add_on->source_offset;
                   
4000a548:	c4 00 60 04 	ld  [ %g1 + 4 ], %g2
                          
    *(void **) ( (char *) the_thread + add_on->destination_offset ) =

4000a54c:	c8 00 40 00 	ld  [ %g1 ], %g4
                              
      (char *) the_thread + add_on->source_offset;
                   
4000a550:	84 06 40 02 	add  %i1, %g2, %g2
                            
    *(void **) ( (char *) the_thread + add_on->destination_offset ) =

4000a554:	c4 26 40 04 	st  %g2, [ %i1 + %g4 ]
                        
  for ( i = 0 ; i < _Thread_Control_add_on_count ; ++i ) {
           
4000a558:	86 00 e0 01 	inc  %g3
                                      
4000a55c:	80 a0 c0 0f 	cmp  %g3, %o7
                                 
4000a560:	12 bf ff fa 	bne  4000a548 <_Thread_Initialize+0x64>
       
4000a564:	82 00 60 08 	add  %g1, 8, %g1
                              
    if ( !actual_stack_size || actual_stack_size < stack_size )
      
      return false;                     /* stack allocation failed */


                                                                     
    stack = the_thread->Start.stack;
                                 
  #else
                                                              
    if ( !stack_area ) {
                                             
4000a568:	80 a6 e0 00 	cmp  %i3, 0
                                   
4000a56c:	02 80 00 93 	be  4000a7b8 <_Thread_Initialize+0x2d4>
       
4000a570:	92 10 00 1c 	mov  %i4, %o1
                                 
      stack = the_thread->Start.stack;
                               
      the_thread->Start.core_allocated_stack = true;
                 
    } else {
                                                         
      stack = stack_area;
                                            
      actual_stack_size = stack_size;
                                
      the_thread->Start.core_allocated_stack = false;
                
4000a574:	c0 2e 60 c8 	clrb  [ %i1 + 0xc8 ]
                          
4000a578:	ac 06 20 3c 	add  %i0, 0x3c, %l6
                           
  the_stack->area = starting_address;
                                
4000a57c:	f6 26 60 d0 	st  %i3, [ %i1 + 0xd0 ]
                       
  );
                                                                 

                                                                     
  scheduler_index = 0;
                                               

                                                                     
  /* Thread-local storage (TLS) area allocation */
                   
  if ( tls_size > 0 ) {
                                              
4000a580:	80 a4 20 00 	cmp  %l0, 0
                                   
4000a584:	12 80 00 6a 	bne  4000a72c <_Thread_Initialize+0x248>
      
4000a588:	f8 26 60 cc 	st  %i4, [ %i1 + 0xcc ]
                       

                                                                     
  /*
                                                                 
   *  Allocate the floating point area for this thread
               
   */
                                                                
  #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
     
    if ( is_fp ) {
                                                   
4000a58c:	80 a7 60 00 	cmp  %i5, 0
                                   
4000a590:	12 80 00 79 	bne  4000a774 <_Thread_Initialize+0x290>
      
4000a594:	b8 10 20 00 	clr  %i4
                                      
      fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE );
              
      if ( !fp_area )
                                                
        goto failed;
                                                 
    }
                                                                
    the_thread->fp_context       = fp_area;
                          
4000a598:	f8 26 61 50 	st  %i4, [ %i1 + 0x150 ]
                      
    the_thread->Start.fp_context = fp_area;
                          
4000a59c:	f8 26 60 d4 	st  %i4, [ %i1 + 0xd4 ]
                       
  return information->auto_extend ? information->allocation_size : 0;

4000a5a0:	c2 0e 20 12 	ldub  [ %i0 + 0x12 ], %g1
                     
4000a5a4:	80 a0 60 00 	cmp  %g1, 0
                                   
4000a5a8:	12 80 00 5f 	bne  4000a724 <_Thread_Initialize+0x240>
      
4000a5ac:	94 10 20 00 	clr  %o2
                                      
  #endif
                                                             

                                                                     
  /*
                                                                 
   *  Get thread queue heads
                                         
   */
                                                                
  the_thread->Wait.spare_heads = _Freechain_Get(
                     
4000a5b0:	96 10 20 48 	mov  0x48, %o3
                                
4000a5b4:	90 10 00 16 	mov  %l6, %o0
                                 
4000a5b8:	13 10 00 30 	sethi  %hi(0x4000c000), %o1
                   
4000a5bc:	7f ff f2 eb 	call  40007168 <_Freechain_Get>
               
4000a5c0:	92 12 63 b8 	or  %o1, 0x3b8, %o1	! 4000c3b8 <_Workspace_Allocate>

    &information->Free_thread_queue_heads,
                           
    _Workspace_Allocate,
                                             
    _Objects_Extend_size( &information->Objects ),
                   
    THREAD_QUEUE_HEADS_SIZE( _Scheduler_Count )
                      
  );
                                                                 
  if ( the_thread->Wait.spare_heads == NULL ) {
                      
4000a5c4:	80 a2 20 00 	cmp  %o0, 0
                                   
4000a5c8:	02 80 00 48 	be  4000a6e8 <_Thread_Initialize+0x204>
       <== NEVER TAKEN
4000a5cc:	d0 26 60 5c 	st  %o0, [ %i1 + 0x5c ]
                       
  return &the_chain->Tail.Node;
                                      
4000a5d0:	82 02 20 34 	add  %o0, 0x34, %g1
                           
  head->previous = NULL;
                                             
4000a5d4:	c0 22 20 34 	clr  [ %o0 + 0x34 ]
                           
  return &the_chain->Tail.Node;
                                      
4000a5d8:	84 02 20 30 	add  %o0, 0x30, %g2
                           
  head->next = tail;
                                                 
4000a5dc:	c2 22 20 30 	st  %g1, [ %o0 + 0x30 ]
                       
  the_thread->Start.budget_algorithm = budget_algorithm;
             
  the_thread->Start.budget_callout   = budget_callout;
               

                                                                     
  _Thread_Timer_initialize( &the_thread->Timer, cpu );
               

                                                                     
  switch ( budget_algorithm ) {
                                      
4000a5e0:	80 a4 60 02 	cmp  %l1, 2
                                   
  tail->previous = head;
                                             
4000a5e4:	c4 22 20 38 	st  %g2, [ %o0 + 0x38 ]
                       
  the_thread->Start.isr_level        = isr_level;
                    
4000a5e8:	c2 07 a0 70 	ld  [ %fp + 0x70 ], %g1
                       
4000a5ec:	c2 26 60 b8 	st  %g1, [ %i1 + 0xb8 ]
                       
  the_thread->Start.budget_callout   = budget_callout;
               
4000a5f0:	c2 07 a0 6c 	ld  [ %fp + 0x6c ], %g1
                       
4000a5f4:	c2 26 60 b4 	st  %g1, [ %i1 + 0xb4 ]
                       
  Thread_Timer_information *timer,
                                   
  Per_CPU_Control          *cpu
                                      
)
                                                                    
{
                                                                    
  _ISR_lock_Initialize( &timer->Lock, "Thread Timer" );
              
  timer->header = &cpu->Watchdog.Header[ PER_CPU_WATCHDOG_TICKS ];
   
4000a5f8:	03 10 00 7e 	sethi  %hi(0x4001f800), %g1
                   
4000a5fc:	82 10 61 78 	or  %g1, 0x178, %g1	! 4001f978 <_Per_CPU_Information+0x38>

  the_thread->is_fp                  = is_fp;
                        
4000a600:	fa 2e 60 8a 	stb  %i5, [ %i1 + 0x8a ]
                      
4000a604:	c2 26 60 60 	st  %g1, [ %i1 + 0x60 ]
                       
RTEMS_INLINE_ROUTINE void _Watchdog_Set_state(
                       
  Watchdog_Control *the_watchdog,
                                    
  Watchdog_State    state
                                            
)
                                                                    
{
                                                                    
  RB_COLOR( &the_watchdog->Node.RBTree, Node ) = state;
              
4000a608:	82 10 20 02 	mov  2, %g1
                                   
  the_thread->Start.is_preemptible   = is_preemptible;
               
4000a60c:	ea 2e 60 ac 	stb  %l5, [ %i1 + 0xac ]
                      
  the_thread->Start.budget_algorithm = budget_algorithm;
             
4000a610:	e2 26 60 b0 	st  %l1, [ %i1 + 0xb0 ]
                       
  switch ( budget_algorithm ) {
                                      
4000a614:	12 80 00 05 	bne  4000a628 <_Thread_Initialize+0x144>
      
4000a618:	c2 26 60 74 	st  %g1, [ %i1 + 0x74 ]
                       
    case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE:
                
      break;
                                                         
    #if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE)
         
      case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE:
            
        the_thread->cpu_time_budget =
                                
          rtems_configuration_get_ticks_per_timeslice();
             
4000a61c:	03 10 00 63 	sethi  %hi(0x40018c00), %g1
                   
        the_thread->cpu_time_budget =
                                
4000a620:	c2 00 61 00 	ld  [ %g1 + 0x100 ], %g1	! 40018d00 <Configuration+0x18>

4000a624:	c2 26 60 8c 	st  %g1, [ %i1 + 0x8c ]
                       
  ( *scheduler->Operations.node_initialize )(
                        
4000a628:	96 10 00 12 	mov  %l2, %o3
                                 
4000a62c:	fa 06 60 38 	ld  [ %i1 + 0x38 ], %i5
                       
4000a630:	c2 06 a0 24 	ld  [ %i2 + 0x24 ], %g1
                       
4000a634:	98 10 00 13 	mov  %l3, %o4
                                 
4000a638:	94 10 00 19 	mov  %i1, %o2
                                 
4000a63c:	92 10 00 1d 	mov  %i5, %o1
                                 
4000a640:	9f c0 40 00 	call  %g1
                                     
4000a644:	90 10 00 1a 	mov  %i2, %o0
                                 
RTEMS_INLINE_ROUTINE void _Priority_Node_initialize(
                 
  Priority_Node    *node,
                                            
  Priority_Control  priority
                                         
)
                                                                    
{
                                                                    
  node->priority = priority;
                                         
4000a648:	e4 3e 60 30 	std  %l2, [ %i1 + 0x30 ]
                      
#endif
                                                               
  aggregation->Action.node = NULL;
                                   
  aggregation->Action.type = PRIORITY_ACTION_INVALID;
                
#endif
                                                               
  _Priority_Node_initialize( &aggregation->Node, node->priority );
   
  _RBTree_Initialize_one( &aggregation->Contributors, &node->Node.RBTree );

4000a64c:	82 06 60 20 	add  %i1, 0x20, %g1
                           
  node->priority = priority;
                                         
4000a650:	e4 3f 60 18 	std  %l2, [ %i5 + 0x18 ]
                      
#endif
                                                               

                                                                     
  /* Initialize the CPU for the non-SMP schedulers */
                
  _Thread_Set_CPU( the_thread, cpu );
                                

                                                                     
  the_thread->current_state           = STATES_DORMANT;
              
4000a654:	05 20 00 00 	sethi  %hi(0x80000000), %g2
                   
  RB_ROOT( the_rbtree ) = the_node;
                                  
4000a658:	c2 27 60 20 	st  %g1, [ %i5 + 0x20 ]
                       
  return &the_chain->Tail.Node;
                                      
4000a65c:	86 06 60 e0 	add  %i1, 0xe0, %g3
                           
4000a660:	c4 26 60 1c 	st  %g2, [ %i1 + 0x1c ]
                       
  the_thread->Wait.operations         = &_Thread_queue_Operations_default;

4000a664:	05 10 00 66 	sethi  %hi(0x40019800), %g2
                   
4000a668:	84 10 a1 50 	or  %g2, 0x150, %g2	! 40019950 <_Thread_queue_Operations_default>

  information->local_table[ index ] = the_object;
                    
4000a66c:	c2 16 60 0a 	lduh  [ %i1 + 0xa ], %g1
                      
4000a670:	c4 26 60 58 	st  %g2, [ %i1 + 0x58 ]
                       
4000a674:	88 06 60 e4 	add  %i1, 0xe4, %g4
                           
4000a678:	c4 06 20 1c 	ld  [ %i0 + 0x1c ], %g2
                       
  RB_PARENT( the_node, Node ) = NULL;
                                
4000a67c:	c0 26 60 28 	clr  [ %i1 + 0x28 ]
                           
4000a680:	83 28 60 02 	sll  %g1, 2, %g1
                              
  RB_LEFT( the_node, Node ) = NULL;
                                  
4000a684:	c0 26 60 20 	clr  [ %i1 + 0x20 ]
                           
  _User_extensions_Iterate(
                                          
4000a688:	94 10 20 00 	clr  %o2
                                      
  RB_RIGHT( the_node, Node ) = NULL;
                                 
4000a68c:	c0 26 60 24 	clr  [ %i1 + 0x24 ]
                           
4000a690:	13 10 00 2f 	sethi  %hi(0x4000bc00), %o1
                   
  RB_COLOR( the_node, Node ) = RB_BLACK;
                             
4000a694:	c0 26 60 2c 	clr  [ %i1 + 0x2c ]
                           
4000a698:	92 12 60 90 	or  %o1, 0x90, %o1
                            
  the_thread->Start.initial_priority  = priority;
                    
4000a69c:	e4 3e 60 c0 	std  %l2, [ %i1 + 0xc0 ]
                      
4000a6a0:	90 07 bf f8 	add  %fp, -8, %o0
                             
  RB_INIT( the_rbtree );
                                             
4000a6a4:	c0 26 61 60 	clr  [ %i1 + 0x160 ]
                          
  head->next = tail;
                                                 
4000a6a8:	c8 26 60 e0 	st  %g4, [ %i1 + 0xe0 ]
                       
  head->previous = NULL;
                                             
4000a6ac:	c0 26 60 e4 	clr  [ %i1 + 0xe4 ]
                           
  tail->previous = head;
                                             
4000a6b0:	c6 26 60 e8 	st  %g3, [ %i1 + 0xe8 ]
                       
  the_object->name = name;
                                           
4000a6b4:	e8 26 60 0c 	st  %l4, [ %i1 + 0xc ]
                        
  information->local_table[ index ] = the_object;
                    
4000a6b8:	f2 20 80 01 	st  %i1, [ %g2 + %g1 ]
                        
  User_extensions_Thread_create_context ctx = { created, true };
     
4000a6bc:	82 10 20 01 	mov  1, %g1
                                   
4000a6c0:	f2 27 bf f8 	st  %i1, [ %fp + -8 ]
                         
  _User_extensions_Iterate(
                                          
4000a6c4:	40 00 05 c3 	call  4000bdd0 <_User_extensions_Iterate>
     
4000a6c8:	c2 2f bf fc 	stb  %g1, [ %fp + -4 ]
                        
   *  user extensions with dispatching enabled.  The Allocator
       
   *  Mutex provides sufficient protection to let the user extensions

   *  run safely.
                                                    
   */
                                                                
  extension_status = _User_extensions_Thread_create( the_thread );
   
  if ( extension_status )
                                            
4000a6cc:	f0 0f bf fc 	ldub  [ %fp + -4 ], %i0
                       
4000a6d0:	80 a6 20 00 	cmp  %i0, 0
                                   
4000a6d4:	12 80 00 0f 	bne  4000a710 <_Thread_Initialize+0x22c>
      
4000a6d8:	92 10 00 1d 	mov  %i5, %o1
                                 
  ( *scheduler->Operations.node_destroy )( scheduler, node );
        
4000a6dc:	c2 06 a0 28 	ld  [ %i2 + 0x28 ], %g1
                       
4000a6e0:	9f c0 40 00 	call  %g1
                                     
4000a6e4:	90 10 00 1a 	mov  %i2, %o0
                                 
4000a6e8:	d0 06 60 dc 	ld  [ %i1 + 0xdc ], %o0
                       
  if ( scheduler_index > 0 ) {
                                       
    _Scheduler_Node_destroy( scheduler, scheduler_node );
            
  }
                                                                  
#endif
                                                               

                                                                     
  _Workspace_Free( the_thread->Start.tls_area );
                     
4000a6ec:	40 00 07 43 	call  4000c3f8 <_Workspace_Free>
              
4000a6f0:	b0 10 20 00 	clr  %i0
                                      

                                                                     
  _Freechain_Put(
                                                    
4000a6f4:	d2 06 60 5c 	ld  [ %i1 + 0x5c ], %o1
                       
4000a6f8:	7f ff f2 ba 	call  400071e0 <_Freechain_Put>
               
4000a6fc:	90 10 00 16 	mov  %l6, %o0
                                 
    &information->Free_thread_queue_heads,
                           
    the_thread->Wait.spare_heads
                                     
  );
                                                                 

                                                                     
  #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
     
    _Workspace_Free( fp_area );
                                      
4000a700:	40 00 07 3e 	call  4000c3f8 <_Workspace_Free>
              
4000a704:	90 10 00 1c 	mov  %i4, %o0
                                 
  #endif
                                                             

                                                                     
   _Thread_Stack_Free( the_thread );
                                 
4000a708:	40 00 04 e8 	call  4000baa8 <_Thread_Stack_Free>
           
4000a70c:	90 10 00 19 	mov  %i1, %o0
                                 
  return false;
                                                      
4000a710:	81 c7 e0 08 	ret 
                                          
4000a714:	81 e8 00 00 	restore 
                                      
4000a718:	b0 10 20 00 	clr  %i0
                                      
}
                                                                    
4000a71c:	81 c7 e0 08 	ret 
                                          
4000a720:	81 e8 00 00 	restore 
                                      
4000a724:	10 bf ff a3 	b  4000a5b0 <_Thread_Initialize+0xcc>
         
4000a728:	d4 16 20 14 	lduh  [ %i0 + 0x14 ], %o2
                     
  return (val + msk) & ~msk;
                                         
4000a72c:	90 04 20 07 	add  %l0, 7, %o0
                              
4000a730:	13 00 00 00 	sethi  %hi(0), %o1
                            
4000a734:	90 0a 3f f8 	and  %o0, -8, %o0
                             
4000a738:	92 12 60 01 	or  %o1, 1, %o1
                               
4000a73c:	92 02 60 07 	add  %o1, 7, %o1
                              
4000a740:	92 0a 7f f8 	and  %o1, -8, %o1
                             
    sizeof(TLS_Thread_control_block) : alignment;
                    
4000a744:	80 a2 60 08 	cmp  %o1, 8
                                   
4000a748:	0a 80 00 12 	bcs  4000a790 <_Thread_Initialize+0x2ac>
      <== NEVER TAKEN
4000a74c:	82 10 00 09 	mov  %o1, %g1
                                 
  allocation_size += _TLS_Get_thread_control_block_area_size( alignment );

4000a750:	90 02 00 01 	add  %o0, %g1, %o0
                            
      _Workspace_Allocate_aligned( tls_alloc, tls_align );
           
4000a754:	40 00 07 21 	call  4000c3d8 <_Workspace_Allocate_aligned>
  
4000a758:	90 02 20 08 	add  %o0, 8, %o0
                              
    the_thread->Start.tls_area =
                                     
4000a75c:	d0 26 60 dc 	st  %o0, [ %i1 + 0xdc ]
                       
    if ( the_thread->Start.tls_area == NULL ) {
                      
4000a760:	80 a2 20 00 	cmp  %o0, 0
                                   
4000a764:	12 bf ff 8a 	bne  4000a58c <_Thread_Initialize+0xa8>
       <== ALWAYS TAKEN
4000a768:	b8 10 00 08 	mov  %o0, %i4
                                 
failed:
                                                              
4000a76c:	10 bf ff e0 	b  4000a6ec <_Thread_Initialize+0x208>
        <== NOT EXECUTED
4000a770:	90 10 20 00 	clr  %o0
                                      <== NOT EXECUTED
      fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE );
              
4000a774:	40 00 07 11 	call  4000c3b8 <_Workspace_Allocate>
          
4000a778:	90 10 20 88 	mov  0x88, %o0
                                
      if ( !fp_area )
                                                
4000a77c:	b8 92 20 00 	orcc  %o0, 0, %i4
                             
4000a780:	32 bf ff 87 	bne,a   4000a59c <_Thread_Initialize+0xb8>
    
4000a784:	f8 26 61 50 	st  %i4, [ %i1 + 0x150 ]
                      
failed:
                                                              
4000a788:	10 bf ff d9 	b  4000a6ec <_Thread_Initialize+0x208>
        
4000a78c:	d0 06 60 dc 	ld  [ %i1 + 0xdc ], %o0
                       
    sizeof(TLS_Thread_control_block) : alignment;
                    
4000a790:	82 10 20 08 	mov  8, %g1
                                   <== NOT EXECUTED
  allocation_size += _TLS_Get_thread_control_block_area_size( alignment );

4000a794:	90 02 00 01 	add  %o0, %g1, %o0
                            <== NOT EXECUTED
      _Workspace_Allocate_aligned( tls_alloc, tls_align );
           
4000a798:	40 00 07 10 	call  4000c3d8 <_Workspace_Allocate_aligned>
  <== NOT EXECUTED
4000a79c:	90 02 20 08 	add  %o0, 8, %o0
                              <== NOT EXECUTED
    the_thread->Start.tls_area =
                                     
4000a7a0:	d0 26 60 dc 	st  %o0, [ %i1 + 0xdc ]
                       <== NOT EXECUTED
    if ( the_thread->Start.tls_area == NULL ) {
                      
4000a7a4:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
4000a7a8:	12 bf ff 79 	bne  4000a58c <_Thread_Initialize+0xa8>
       <== NOT EXECUTED
4000a7ac:	b8 10 00 08 	mov  %o0, %i4
                                 <== NOT EXECUTED
4000a7b0:	10 bf ff cf 	b  4000a6ec <_Thread_Initialize+0x208>
        <== NOT EXECUTED
4000a7b4:	90 10 20 00 	clr  %o0
                                      <== NOT EXECUTED
      actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );

4000a7b8:	40 00 04 ac 	call  4000ba68 <_Thread_Stack_Allocate>
       
4000a7bc:	90 10 00 19 	mov  %i1, %o0
                                 
      if ( !actual_stack_size || actual_stack_size < stack_size )
    
4000a7c0:	80 a2 20 00 	cmp  %o0, 0
                                   
4000a7c4:	02 bf ff d5 	be  4000a718 <_Thread_Initialize+0x234>
       
4000a7c8:	80 a2 00 1c 	cmp  %o0, %i4
                                 
4000a7cc:	0a bf ff d3 	bcs  4000a718 <_Thread_Initialize+0x234>
      <== NEVER TAKEN
4000a7d0:	82 10 20 01 	mov  1, %g1
                                   
      stack = the_thread->Start.stack;
                               
4000a7d4:	f6 06 60 d8 	ld  [ %i1 + 0xd8 ], %i3
                       
      the_thread->Start.core_allocated_stack = true;
                 
4000a7d8:	c2 2e 60 c8 	stb  %g1, [ %i1 + 0xc8 ]
                      
4000a7dc:	10 bf ff 67 	b  4000a578 <_Thread_Initialize+0x94>
         
4000a7e0:	b8 10 00 08 	mov  %o0, %i4
                                 

                                                                     

4000a840 <_Thread_Initialize_information>: uint16_t the_class, uint32_t maximum, bool is_string, uint32_t maximum_name_length ) {
4000a840:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  _Objects_Initialize_information(
                                   
4000a844:	fa 23 a0 5c 	st  %i5, [ %sp + 0x5c ]
                       <== NOT EXECUTED
4000a848:	03 10 00 63 	sethi  %hi(0x40018c00), %g1
                   
4000a84c:	d8 10 61 52 	lduh  [ %g1 + 0x152 ], %o4	! 40018d52 <_Thread_Control_size+0x2>

{
                                                                    
4000a850:	ba 10 00 1b 	mov  %i3, %i5
                                 
  _Objects_Initialize_information(
                                   
4000a854:	94 10 00 1a 	mov  %i2, %o2
                                 
4000a858:	92 10 00 19 	mov  %i1, %o1
                                 
4000a85c:	96 10 00 1b 	mov  %i3, %o3
                                 
4000a860:	90 10 00 18 	mov  %i0, %o0
                                 
4000a864:	9a 10 00 1c 	mov  %i4, %o5
                                 
    is_string,
                                                       
    maximum_name_length,
                                             
    NULL
                                                             
  );
                                                                 

                                                                     
  _Freechain_Initialize(
                                             
4000a868:	33 10 00 31 	sethi  %hi(0x4000c400), %i1
                   
4000a86c:	35 00 00 3f 	sethi  %hi(0xfc00), %i2
                       
4000a870:	b6 10 20 48 	mov  0x48, %i3
                                
  _Objects_Initialize_information(
                                   
4000a874:	7f ff fa 4d 	call  400091a8 <_Objects_Do_initialize_information>

4000a878:	b4 16 a3 ff 	or  %i2, 0x3ff, %i2
                           
  _Freechain_Initialize(
                                             
4000a87c:	b0 06 20 3c 	add  %i0, 0x3c, %i0
                           
4000a880:	b4 0f 40 1a 	and  %i5, %i2, %i2
                            
4000a884:	7f ff f2 2c 	call  40007134 <_Freechain_Initialize>
        
4000a888:	93 ee 60 10 	restore  %i1, 0x10, %o1
                       

                                                                     

4000e830 <_Thread_Iterate>: void _Thread_Iterate( Thread_Visitor visitor, void *arg ) {
4000e830:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
4000e834:	37 10 00 77 	sethi  %hi(0x4001dc00), %i3
                   <== NOT EXECUTED
4000e838:	b6 16 e3 1c 	or  %i3, 0x31c, %i3	! 4001df1c <_Objects_Information_table>
<== NOT EXECUTED
4000e83c:	b4 06 e0 0c 	add  %i3, 0xc, %i2
                            <== NOT EXECUTED
    if ( _Objects_Information_table[ api_index ] == NULL ) {
         
      continue;
                                                      
    }
                                                                
#endif
                                                               

                                                                     
    information = _Objects_Information_table[ api_index ][ 1 ];
      
4000e840:	c2 06 e0 04 	ld  [ %i3 + 4 ], %g1
                          <== NOT EXECUTED
4000e844:	f8 00 60 04 	ld  [ %g1 + 4 ], %i4
                          

                                                                     
    if ( information == NULL ) {
                                     
4000e848:	80 a7 20 00 	cmp  %i4, 0
                                   
4000e84c:	22 80 00 1d 	be,a   4000e8c0 <_Thread_Iterate+0x90>
        
4000e850:	b6 06 e0 04 	add  %i3, 4, %i3
                              
      continue;
                                                      
    }
                                                                

                                                                     
    for ( i = 1 ; i <= information->maximum ; ++i ) {
                
4000e854:	c4 17 20 10 	lduh  [ %i4 + 0x10 ], %g2
                     
4000e858:	82 90 a0 00 	orcc  %g2, 0, %g1
                             
4000e85c:	02 80 00 18 	be  4000e8bc <_Thread_Iterate+0x8c>
           <== NEVER TAKEN
4000e860:	ba 10 20 01 	mov  1, %i5
                                   
      Thread_Control *the_thread;
                                    

                                                                     
      the_thread = (Thread_Control *) information->local_table[ i ];
 
4000e864:	10 80 00 09 	b  4000e888 <_Thread_Iterate+0x58>
            
4000e868:	c6 07 20 1c 	ld  [ %i4 + 0x1c ], %g3
                       
    for ( i = 1 ; i <= information->maximum ; ++i ) {
                
4000e86c:	ba 07 60 01 	inc  %i5
                                      
4000e870:	83 28 a0 10 	sll  %g2, 0x10, %g1
                           
4000e874:	87 2f 60 10 	sll  %i5, 0x10, %g3
                           
4000e878:	80 a0 c0 01 	cmp  %g3, %g1
                                 
4000e87c:	38 80 00 11 	bgu,a   4000e8c0 <_Thread_Iterate+0x90>
       
4000e880:	b6 06 e0 04 	add  %i3, 4, %i3
                              
      the_thread = (Thread_Control *) information->local_table[ i ];
 
4000e884:	c6 07 20 1c 	ld  [ %i4 + 0x1c ], %g3
                       
4000e888:	83 2f 60 10 	sll  %i5, 0x10, %g1
                           
4000e88c:	83 30 60 0e 	srl  %g1, 0xe, %g1
                            
4000e890:	d0 00 c0 01 	ld  [ %g3 + %g1 ], %o0
                        

                                                                     
      if ( the_thread != NULL ) {
                                    
4000e894:	80 a2 20 00 	cmp  %o0, 0
                                   
4000e898:	22 bf ff f6 	be,a   4000e870 <_Thread_Iterate+0x40>
        
4000e89c:	ba 07 60 01 	inc  %i5
                                      
        bool done;
                                                   

                                                                     
        done = (* visitor )( the_thread, arg );
                      
4000e8a0:	9f c6 00 00 	call  %i0
                                     
4000e8a4:	92 10 00 19 	mov  %i1, %o1
                                 

                                                                     
        if ( done ) {
                                                
4000e8a8:	80 a2 20 00 	cmp  %o0, 0
                                   
4000e8ac:	22 bf ff f0 	be,a   4000e86c <_Thread_Iterate+0x3c>
        <== ALWAYS TAKEN
4000e8b0:	c4 17 20 10 	lduh  [ %i4 + 0x10 ], %g2
                     
          return;
                                                    
        }
                                                            
      }
                                                              
    }
                                                                
  }
                                                                  
}
                                                                    
4000e8b4:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000e8b8:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
4000e8bc:	b6 06 e0 04 	add  %i3, 4, %i3
                              <== NOT EXECUTED
  for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; ++api_index ) {

4000e8c0:	80 a6 80 1b 	cmp  %i2, %i3
                                 
4000e8c4:	32 bf ff e0 	bne,a   4000e844 <_Thread_Iterate+0x14>
       
4000e8c8:	c2 06 e0 04 	ld  [ %i3 + 4 ], %g1
                          
}
                                                                    
4000e8cc:	81 c7 e0 08 	ret 
                                          
4000e8d0:	81 e8 00 00 	restore 
                                      

                                                                     

400105a0 <_Thread_Join>: { _Assert( the_thread != executing ); _Assert( _Thread_State_is_owner( the_thread ) ); #if defined(RTEMS_POSIX_API) executing->Wait.return_argument = NULL;
400105a0:	c0 22 a0 40 	clr  [ %o2 + 0x40 ]
                           <== NOT EXECUTED
#endif
                                                               

                                                                     
  _Thread_queue_Context_set_thread_state( queue_context, waiting_for_join );

  _Thread_queue_Enqueue(
                                             
400105a4:	90 02 20 10 	add  %o0, 0x10, %o0
                           <== NOT EXECUTED
  queue_context->thread_state = thread_state;
                        
400105a8:	d2 22 e0 04 	st  %o1, [ %o3 + 4 ]
                          <== NOT EXECUTED
400105ac:	13 10 00 6f 	sethi  %hi(0x4001bc00), %o1
                   <== NOT EXECUTED
400105b0:	92 12 61 68 	or  %o1, 0x168, %o1	! 4001bd68 <_Thread_queue_Operations_priority>
<== NOT EXECUTED
400105b4:	82 13 c0 00 	mov  %o7, %g1
                                 <== NOT EXECUTED
400105b8:	7f ff fb 73 	call  4000f384 <_Thread_queue_Enqueue>
        <== NOT EXECUTED
400105bc:	9e 10 40 00 	mov  %g1, %o7
                                 <== NOT EXECUTED

                                                                     

4000b7fc <_Thread_Kill_zombies>: {
4000b7fc:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000b800:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return _Chain_Immutable_head( the_chain )->next;
                   
4000b804:	05 10 00 6d 	sethi  %hi(0x4001b400), %g2
                   
4000b808:	fa 00 a1 cc 	ld  [ %g2 + 0x1cc ], %i5	! 4001b5cc <_Thread_Zombies>

4000b80c:	b8 10 a1 cc 	or  %g2, 0x1cc, %i4
                           
  if ( !_Chain_Is_empty(the_chain))
                                  
4000b810:	b0 07 20 04 	add  %i4, 4, %i0
                              
4000b814:	80 a7 40 18 	cmp  %i5, %i0
                                 
4000b818:	02 80 00 3d 	be  4000b90c <_Thread_Kill_zombies+0x110>
     
4000b81c:	33 10 00 2f 	sethi  %hi(0x4000bc00), %i1
                   
  new_first = old_first->next;
                                       
4000b820:	c6 07 40 00 	ld  [ %i5 ], %g3
                              <== NOT EXECUTED
  head->next = new_first;
                                            
4000b824:	c6 20 a1 cc 	st  %g3, [ %g2 + 0x1cc ]
                      <== NOT EXECUTED
  new_first->previous = head;
                                        
4000b828:	f8 20 e0 04 	st  %i4, [ %g3 + 4 ]
                          <== NOT EXECUTED
4000b82c:	35 10 00 63 	sethi  %hi(0x40018c00), %i2
                   <== NOT EXECUTED
  _User_extensions_Iterate(
                                          
4000b830:	b2 16 60 cc 	or  %i1, 0xcc, %i1
                            <== NOT EXECUTED
4000b834:	b4 16 a1 c8 	or  %i2, 0x1c8, %i2
                           <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b838:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b83c:	01 00 00 00 	nop 
                                          
  Thread_Information *information = (Thread_Information *)
           
4000b840:	40 00 09 d8 	call  4000dfa0 <_Objects_Get_information_id>
  
4000b844:	d0 07 60 08 	ld  [ %i5 + 8 ], %o0
                          
4000b848:	94 10 20 01 	mov  1, %o2
                                   
4000b84c:	b6 10 00 08 	mov  %o0, %i3
                                 
4000b850:	92 10 00 19 	mov  %i1, %o1
                                 
4000b854:	40 00 01 5f 	call  4000bdd0 <_User_extensions_Iterate>
     
4000b858:	90 10 00 1d 	mov  %i5, %o0
                                 
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000b85c:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  iter = the_thread->last_user_extensions_iterator;
                  
4000b860:	c4 07 61 88 	ld  [ %i5 + 0x188 ], %g2
                      
  while ( iter != NULL ) {
                                           
4000b864:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000b868:	02 80 00 0a 	be  4000b890 <_Thread_Kill_zombies+0x94>
      
4000b86c:	01 00 00 00 	nop 
                                          
  next           = the_node->next;
                                   
4000b870:	c8 00 80 00 	ld  [ %g2 ], %g4
                              
  previous       = the_node->previous;
                               
4000b874:	c6 00 a0 04 	ld  [ %g2 + 4 ], %g3
                          
  next->previous = previous;
                                         
4000b878:	c6 21 20 04 	st  %g3, [ %g4 + 4 ]
                          
  previous->next = next;
                                             
4000b87c:	c8 20 c0 00 	st  %g4, [ %g3 ]
                              
    iter = iter->previous;
                                           
4000b880:	c4 00 a0 10 	ld  [ %g2 + 0x10 ], %g2
                       
  while ( iter != NULL ) {
                                           
4000b884:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000b888:	32 bf ff fb 	bne,a   4000b874 <_Thread_Kill_zombies+0x78>
  <== NEVER TAKEN
4000b88c:	c8 00 80 00 	ld  [ %g2 ], %g4
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b890:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b894:	01 00 00 00 	nop 
                                          
4000b898:	c2 06 a0 28 	ld  [ %i2 + 0x28 ], %g1
                       
4000b89c:	d2 07 60 38 	ld  [ %i5 + 0x38 ], %o1
                       
4000b8a0:	9f c0 40 00 	call  %g1
                                     
4000b8a4:	90 10 00 1a 	mov  %i2, %o0
                                 
  _Workspace_Free( the_thread->Start.fp_context );
                   
4000b8a8:	40 00 02 d4 	call  4000c3f8 <_Workspace_Free>
              
4000b8ac:	d0 07 60 d4 	ld  [ %i5 + 0xd4 ], %o0
                       
  _Freechain_Put(
                                                    
4000b8b0:	d2 07 60 5c 	ld  [ %i5 + 0x5c ], %o1
                       
4000b8b4:	7f ff ee 4b 	call  400071e0 <_Freechain_Put>
               
4000b8b8:	90 06 e0 3c 	add  %i3, 0x3c, %o0
                           
  _Thread_Stack_Free( the_thread );
                                  
4000b8bc:	40 00 00 7b 	call  4000baa8 <_Thread_Stack_Free>
           
4000b8c0:	90 10 00 1d 	mov  %i5, %o0
                                 
  _Workspace_Free( the_thread->Start.tls_area );
                     
4000b8c4:	40 00 02 cd 	call  4000c3f8 <_Workspace_Free>
              
4000b8c8:	d0 07 60 dc 	ld  [ %i5 + 0xdc ], %o0
                       
  _Context_Destroy( the_thread, &the_thread->Registers );
            
4000b8cc:	c4 01 a0 04 	ld  [ %g6 + 4 ], %g2
                          
4000b8d0:	80 a0 80 1d 	cmp  %g2, %i5
                                 
4000b8d4:	22 80 00 02 	be,a   4000b8dc <_Thread_Kill_zombies+0xe0>
   
4000b8d8:	c0 21 a0 04 	clr  [ %g6 + 4 ]
                              
  _Objects_Free( &information->Objects, &the_thread->Object );
       
4000b8dc:	92 10 00 1d 	mov  %i5, %o1
                                 
4000b8e0:	40 00 09 84 	call  4000def0 <_Objects_Free>
                
4000b8e4:	90 10 00 1b 	mov  %i3, %o0
                                 
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000b8e8:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return _Chain_Immutable_head( the_chain )->next;
                   
4000b8ec:	fa 07 00 00 	ld  [ %i4 ], %i5
                              
  if ( !_Chain_Is_empty(the_chain))
                                  
4000b8f0:	80 a7 40 18 	cmp  %i5, %i0
                                 
4000b8f4:	02 80 00 06 	be  4000b90c <_Thread_Kill_zombies+0x110>
     
4000b8f8:	01 00 00 00 	nop 
                                          
  new_first = old_first->next;
                                       
4000b8fc:	c4 07 40 00 	ld  [ %i5 ], %g2
                              
  head->next = new_first;
                                            
4000b900:	c4 27 00 00 	st  %g2, [ %i4 ]
                              
  new_first->previous = head;
                                        
4000b904:	10 bf ff cd 	b  4000b838 <_Thread_Kill_zombies+0x3c>
       
4000b908:	f8 20 a0 04 	st  %i4, [ %g2 + 4 ]
                          
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b90c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b910:	01 00 00 00 	nop 
                                          
}
                                                                    
4000b914:	81 c7 e0 08 	ret 
                                          
4000b918:	81 e8 00 00 	restore 
                                      

                                                                     

4000a7e4 <_Thread_Load_environment>: #include <rtems/score/threadimpl.h> void _Thread_Load_environment( Thread_Control *the_thread ) {
4000a7e4:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
       
  if ( the_thread->Start.fp_context ) {
                              
4000a7e8:	c2 06 20 d4 	ld  [ %i0 + 0xd4 ], %g1
                       
4000a7ec:	80 a0 60 00 	cmp  %g1, 0
                                   
4000a7f0:	32 80 00 02 	bne,a   4000a7f8 <_Thread_Load_environment+0x14>

4000a7f4:	c2 26 21 50 	st  %g1, [ %i0 + 0x150 ]
                      

                                                                     
  the_thread->is_preemptible   = the_thread->Start.is_preemptible;
   
  the_thread->budget_algorithm = the_thread->Start.budget_algorithm;
 
  the_thread->budget_callout   = the_thread->Start.budget_callout;
   

                                                                     
  _Context_Initialize(
                                               
4000a7f8:	19 10 00 29 	sethi  %hi(0x4000a400), %o4
                   
  the_thread->is_preemptible   = the_thread->Start.is_preemptible;
   
4000a7fc:	c8 0e 20 ac 	ldub  [ %i0 + 0xac ], %g4
                     
  the_thread->budget_algorithm = the_thread->Start.budget_algorithm;
 
4000a800:	c6 06 20 b0 	ld  [ %i0 + 0xb0 ], %g3
                       
  the_thread->budget_callout   = the_thread->Start.budget_callout;
   
4000a804:	c4 06 20 b4 	ld  [ %i0 + 0xb4 ], %g2
                       
  _Context_Initialize(
                                               
4000a808:	c2 06 20 dc 	ld  [ %i0 + 0xdc ], %g1
                       
  the_thread->is_preemptible   = the_thread->Start.is_preemptible;
   
4000a80c:	c8 2e 20 89 	stb  %g4, [ %i0 + 0x89 ]
                      
  _Context_Initialize(
                                               
4000a810:	98 13 20 50 	or  %o4, 0x50, %o4
                            
  the_thread->budget_algorithm = the_thread->Start.budget_algorithm;
 
4000a814:	c6 26 20 90 	st  %g3, [ %i0 + 0x90 ]
                       
  _Context_Initialize(
                                               
4000a818:	90 06 20 f0 	add  %i0, 0xf0, %o0
                           
  the_thread->budget_callout   = the_thread->Start.budget_callout;
   
4000a81c:	c4 26 20 94 	st  %g2, [ %i0 + 0x94 ]
                       
  _Context_Initialize(
                                               
4000a820:	c2 23 a0 5c 	st  %g1, [ %sp + 0x5c ]
                       
4000a824:	da 0e 20 8a 	ldub  [ %i0 + 0x8a ], %o5
                     
4000a828:	d6 06 20 b8 	ld  [ %i0 + 0xb8 ], %o3
                       
4000a82c:	d4 06 20 cc 	ld  [ %i0 + 0xcc ], %o2
                       
4000a830:	7f ff e3 07 	call  4000344c <_CPU_Context_Initialize>
      
4000a834:	d2 06 20 d0 	ld  [ %i0 + 0xd0 ], %o1
                       
    the_thread->Start.isr_level,
                                     
    _Thread_Handler,
                                                 
    the_thread->is_fp,
                                               
    the_thread->Start.tls_area
                                       
  );
                                                                 
}
                                                                    
4000a838:	81 c7 e0 08 	ret 
                                          
4000a83c:	81 e8 00 00 	restore 
                                      

                                                                     

4001053c <_Thread_Priority_remove>: Thread_Control *the_thread, Priority_Node *priority_node, Thread_queue_Context *queue_context ) { _Thread_Priority_apply(
4001053c:	98 10 20 02 	mov  2, %o4
                                   <== NOT EXECUTED
40010540:	96 10 20 01 	mov  1, %o3
                                   <== NOT EXECUTED
40010544:	82 13 c0 00 	mov  %o7, %g1
                                 <== NOT EXECUTED
40010548:	7f ff ff e2 	call  400104d0 <_Thread_Priority_apply>
       <== NOT EXECUTED
4001054c:	9e 10 40 00 	mov  %g1, %o7
                                 <== NOT EXECUTED

                                                                     

4000e4c8 <_Thread_Priority_update>: replacement_node ); } void _Thread_Priority_update( Thread_queue_Context *queue_context ) {
4000e4c8:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  size_t i;
                                                          
  size_t n;
                                                          

                                                                     
  n = queue_context->Priority.update_count;
                          
4000e4cc:	fa 06 20 14 	ld  [ %i0 + 0x14 ], %i5
                       <== NOT EXECUTED

                                                                     
  /*
                                                                 
   * Update the priority of all threads of the set.  Do not care to clear the

   * set, since the thread queue context will soon get destroyed anyway.

   */
                                                                
  for ( i = 0; i < n ; ++i ) {
                                       
4000e4d0:	80 a7 60 00 	cmp  %i5, 0
                                   <== NOT EXECUTED
4000e4d4:	02 80 00 13 	be  4000e520 <_Thread_Priority_update+0x58>
   <== NOT EXECUTED
4000e4d8:	39 10 00 63 	sethi  %hi(0x40018c00), %i4
                   
4000e4dc:	b8 17 21 c8 	or  %i4, 0x1c8, %i4	! 40018dc8 <_Scheduler_Table>
<== NOT EXECUTED
  ( *scheduler->Operations.update_priority )(
                        
4000e4e0:	f6 07 20 18 	ld  [ %i4 + 0x18 ], %i3
                       <== NOT EXECUTED
4000e4e4:	bb 2f 60 02 	sll  %i5, 2, %i5
                              <== NOT EXECUTED
4000e4e8:	ba 06 00 1d 	add  %i0, %i5, %i5
                            <== NOT EXECUTED
    Thread_Control   *the_thread;
                                    
    ISR_lock_Context  lock_context;
                                  

                                                                     
    the_thread = queue_context->Priority.update[ i ];
                
4000e4ec:	d2 06 20 18 	ld  [ %i0 + 0x18 ], %o1
                       <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000e4f0:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return psr;
                                                        
4000e4f4:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000e4f8:	d4 02 60 38 	ld  [ %o1 + 0x38 ], %o2
                       
4000e4fc:	9f c6 c0 00 	call  %i3
                                     
4000e500:	90 10 00 1c 	mov  %i4, %o0
                                 
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000e504:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000e508:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000e50c:	01 00 00 00 	nop 
                                          
4000e510:	b0 06 20 04 	add  %i0, 4, %i0
                              
  for ( i = 0; i < n ; ++i ) {
                                       
4000e514:	80 a6 00 1d 	cmp  %i0, %i5
                                 
4000e518:	32 bf ff f6 	bne,a   4000e4f0 <_Thread_Priority_update+0x28>

4000e51c:	d2 06 20 18 	ld  [ %i0 + 0x18 ], %o1
                       
    _Thread_State_acquire( the_thread, &lock_context );
              
    _Scheduler_Update_priority( the_thread );
                        
    _Thread_State_release( the_thread, &lock_context );
              
  }
                                                                  
}
                                                                    
4000e520:	81 c7 e0 08 	ret 
                                          
4000e524:	81 e8 00 00 	restore 
                                      

                                                                     

4000b59c <_Thread_Restart_other>: bool _Thread_Restart_other( Thread_Control *the_thread, const Thread_Entry_information *entry, ISR_lock_Context *lock_context ) {
4000b59c:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  Thread_Life_state  previous;
                                       
  Per_CPU_Control   *cpu_self;
                                       

                                                                     
  _Thread_State_acquire_critical( the_thread, lock_context );
        

                                                                     
  if ( _States_Is_dormant( the_thread->current_state ) ) {
           
4000b5a0:	c2 06 20 1c 	ld  [ %i0 + 0x1c ], %g1
                       <== NOT EXECUTED
4000b5a4:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000b5a8:	06 80 00 4f 	bl  4000b6e4 <_Thread_Restart_other+0x148>
    <== NOT EXECUTED
4000b5ac:	01 00 00 00 	nop 
                                          
    _Thread_State_release( the_thread, lock_context );
               
    return false;
                                                    
  }
                                                                  

                                                                     
  the_thread->Start.Entry = *entry;
                                  
4000b5b0:	c2 06 40 00 	ld  [ %i1 ], %g1
                              
4000b5b4:	c2 26 20 a0 	st  %g1, [ %i0 + 0xa0 ]
                       
4000b5b8:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          
4000b5bc:	c2 26 20 a4 	st  %g1, [ %i0 + 0xa4 ]
                       
  previous = the_thread->Life.state;
                                 
4000b5c0:	c2 06 21 70 	ld  [ %i0 + 0x170 ], %g1
                      
  the_thread->Start.Entry = *entry;
                                  
4000b5c4:	c6 06 60 08 	ld  [ %i1 + 8 ], %g3
                          
  state |= set;
                                                      
4000b5c8:	84 10 60 02 	or  %g1, 2, %g2
                               
  the_thread->Start.Entry = *entry;
                                  
4000b5cc:	c6 26 20 a8 	st  %g3, [ %i0 + 0xa8 ]
                       
  if (
                                                               
4000b5d0:	80 88 60 09 	btst  9, %g1
                                  
4000b5d4:	02 80 00 15 	be  4000b628 <_Thread_Restart_other+0x8c>
     <== ALWAYS TAKEN
4000b5d8:	c4 26 21 70 	st  %g2, [ %i0 + 0x170 ]
                      
  disable_level = cpu_self->thread_dispatch_disable_level;
           
4000b5dc:	c2 01 a0 18 	ld  [ %g6 + 0x18 ], %g1
                       <== NOT EXECUTED
  cpu_self->thread_dispatch_disable_level = disable_level + 1;
       
4000b5e0:	82 00 60 01 	inc  %g1
                                      <== NOT EXECUTED
4000b5e4:	c2 21 a0 18 	st  %g1, [ %g6 + 0x18 ]
                       <== NOT EXECUTED
  return _Thread_Dispatch_disable_with_CPU( _Per_CPU_Get(), lock_context );

4000b5e8:	ba 10 00 06 	mov  %g6, %i5
                                 <== NOT EXECUTED
    _Thread_Finalize_life_change(
                                    
      the_thread,
                                                    
      the_thread->Start.initial_priority
                             
    );
                                                               
  } else {
                                                           
    _Thread_Clear_state_locked( the_thread, STATES_SUSPENDED );
      
4000b5ec:	13 00 00 20 	sethi  %hi(0x8000), %o1
                       <== NOT EXECUTED
4000b5f0:	40 00 0b c5 	call  4000e504 <_Thread_Clear_state_locked>
   <== NOT EXECUTED
4000b5f4:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000b5f8:	c2 06 80 00 	ld  [ %i2 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b5fc:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b600:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
  uint32_t disable_level = cpu_self->thread_dispatch_disable_level;
  
4000b604:	c2 07 60 18 	ld  [ %i5 + 0x18 ], %g1
                       <== NOT EXECUTED
  if ( disable_level == 1 ) {
                                        
4000b608:	80 a0 60 01 	cmp  %g1, 1
                                   <== NOT EXECUTED
4000b60c:	02 80 00 2a 	be  4000b6b4 <_Thread_Restart_other+0x118>
    <== NOT EXECUTED
4000b610:	82 00 7f ff 	add  %g1, -1, %g1
                             <== NOT EXECUTED
    _Thread_State_release( the_thread, lock_context );
               
  }
                                                                  

                                                                     
  _Thread_Dispatch_enable( cpu_self );
                               
  return true;
                                                       
4000b614:	b0 10 20 01 	mov  1, %i0
                                   
    cpu_self->thread_dispatch_disable_level = disable_level - 1;
     
4000b618:	c2 27 60 18 	st  %g1, [ %i5 + 0x18 ]
                       
4000b61c:	b0 0e 20 ff 	and  %i0, 0xff, %i0
                           
}
                                                                    
4000b620:	81 c7 e0 08 	ret 
                                          
4000b624:	81 e8 00 00 	restore 
                                      
4000b628:	7f ff fe 6d 	call  4000afdc <_Thread_Change_life_locked.part.37>

4000b62c:	90 10 00 18 	mov  %i0, %o0
                                 
  disable_level = cpu_self->thread_dispatch_disable_level;
           
4000b630:	c2 01 a0 18 	ld  [ %g6 + 0x18 ], %g1
                       
  pending_requests = the_thread->Life.pending_life_change_requests;
  
4000b634:	c4 06 21 74 	ld  [ %i0 + 0x174 ], %g2
                      
  cpu_self->thread_dispatch_disable_level = disable_level + 1;
       
4000b638:	82 00 60 01 	inc  %g1
                                      
4000b63c:	c2 21 a0 18 	st  %g1, [ %g6 + 0x18 ]
                       
  the_thread->Life.pending_life_change_requests = pending_requests + 1;

4000b640:	82 00 a0 01 	add  %g2, 1, %g1
                              
4000b644:	c2 26 21 74 	st  %g1, [ %i0 + 0x174 ]
                      
  if ( pending_requests == 0 ) {
                                     
4000b648:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000b64c:	02 80 00 2d 	be  4000b700 <_Thread_Restart_other+0x164>
    <== ALWAYS TAKEN
4000b650:	ba 10 00 06 	mov  %g6, %i5
                                 
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000b654:	c2 06 80 00 	ld  [ %i2 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b658:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b65c:	01 00 00 00 	nop 
                                          
    _Thread_Finalize_life_change(
                                    
4000b660:	f4 1e 20 c0 	ldd  [ %i0 + 0xc0 ], %i2
                      
  _Thread_queue_Extract_with_proxy( the_thread );
                    
4000b664:	40 00 0b d1 	call  4000e5a8 <_Thread_queue_Extract_with_proxy>

4000b668:	90 10 00 18 	mov  %i0, %o0
                                 
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000b66c:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return psr;
                                                        
4000b670:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000b674:	d0 06 20 60 	ld  [ %i0 + 0x60 ], %o0
                       
4000b678:	40 00 02 58 	call  4000bfd8 <_Watchdog_Remove>
             
4000b67c:	92 06 20 68 	add  %i0, 0x68, %o1
                           
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000b680:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b684:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b688:	01 00 00 00 	nop 
                                          
  _Thread_Raise_real_priority( the_thread, priority );
               
4000b68c:	92 10 00 1a 	mov  %i2, %o1
                                 
4000b690:	94 10 00 1b 	mov  %i3, %o2
                                 
4000b694:	7f ff fe 2e 	call  4000af4c <_Thread_Raise_real_priority>
  
4000b698:	90 10 00 18 	mov  %i0, %o0
                                 
  _Thread_Remove_life_change_request( the_thread );
                  
4000b69c:	7f ff fe 17 	call  4000aef8 <_Thread_Remove_life_change_request>

4000b6a0:	90 10 00 18 	mov  %i0, %o0
                                 
  uint32_t disable_level = cpu_self->thread_dispatch_disable_level;
  
4000b6a4:	c2 07 60 18 	ld  [ %i5 + 0x18 ], %g1
                       
  if ( disable_level == 1 ) {
                                        
4000b6a8:	80 a0 60 01 	cmp  %g1, 1
                                   
4000b6ac:	12 bf ff da 	bne  4000b614 <_Thread_Restart_other+0x78>
    
4000b6b0:	82 00 7f ff 	add  %g1, -1, %g1
                             
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000b6b4:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
    if (
                                                             
4000b6b8:	c4 0f 60 1c 	ldub  [ %i5 + 0x1c ], %g2
                     
4000b6bc:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000b6c0:	12 80 00 14 	bne  4000b710 <_Thread_Restart_other+0x174>
   <== ALWAYS TAKEN
4000b6c4:	92 10 00 01 	mov  %g1, %o1
                                 
      cpu_self->thread_dispatch_disable_level = 0;
                   
4000b6c8:	c0 27 60 18 	clr  [ %i5 + 0x18 ]
                           <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b6cc:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b6d0:	01 00 00 00 	nop 
                                          
  return true;
                                                       
4000b6d4:	b0 10 20 01 	mov  1, %i0	! 1 <_TLS_Alignment>
              
4000b6d8:	b0 0e 20 ff 	and  %i0, 0xff, %i0
                           
}
                                                                    
4000b6dc:	81 c7 e0 08 	ret 
                                          
4000b6e0:	81 e8 00 00 	restore 
                                      
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000b6e4:	c2 06 80 00 	ld  [ %i2 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b6e8:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b6ec:	01 00 00 00 	nop 
                                          
    return false;
                                                    
4000b6f0:	b0 10 20 00 	clr  %i0	! 0 <PROM_START>
                     
4000b6f4:	b0 0e 20 ff 	and  %i0, 0xff, %i0
                           
}
                                                                    
4000b6f8:	81 c7 e0 08 	ret 
                                          
4000b6fc:	81 e8 00 00 	restore 
                                      
    _Thread_Set_state_locked( the_thread, STATES_LIFE_IS_CHANGING );
 
4000b700:	13 00 00 80 	sethi  %hi(0x20000), %o1
                      
4000b704:	40 00 00 5f 	call  4000b880 <_Thread_Set_state_locked>
     
4000b708:	90 10 00 18 	mov  %i0, %o0
                                 
4000b70c:	30 bf ff d2 	b,a   4000b654 <_Thread_Restart_other+0xb8>
   
      _Thread_Do_dispatch( cpu_self, level );
                        
4000b710:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000b714:	7f ff f9 32 	call  40009bdc <_Thread_Do_dispatch>
          
4000b718:	90 10 00 1d 	mov  %i5, %o0
                                 
4000b71c:	10 bf ff ec 	b  4000b6cc <_Thread_Restart_other+0x130>
     
4000b720:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         

                                                                     

4000b724 <_Thread_Restart_self>: void _Thread_Restart_self( Thread_Control *executing, const Thread_Entry_information *entry, ISR_lock_Context *lock_context ) {
4000b724:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED

                                                                     
  _Thread_queue_Context_initialize( &queue_context );
                
  _Thread_queue_Context_clear_priority_updates( &queue_context );
    
  _Thread_State_acquire_critical( executing, lock_context );
         

                                                                     
  executing->Start.Entry = *entry;
                                   
4000b728:	c2 06 40 00 	ld  [ %i1 ], %g1
                              <== NOT EXECUTED
4000b72c:	c2 26 20 a0 	st  %g1, [ %i0 + 0xa0 ]
                       <== NOT EXECUTED
4000b730:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
4000b734:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          <== NOT EXECUTED
4000b738:	c2 26 20 a4 	st  %g1, [ %i0 + 0xa4 ]
                       <== NOT EXECUTED
  state |= set;
                                                      
4000b73c:	c2 06 21 70 	ld  [ %i0 + 0x170 ], %g1
                      <== NOT EXECUTED
  executing->Start.Entry = *entry;
                                   
4000b740:	c4 06 60 08 	ld  [ %i1 + 8 ], %g2
                          <== NOT EXECUTED
  state |= set;
                                                      
4000b744:	82 10 60 02 	or  %g1, 2, %g1
                               <== NOT EXECUTED
  executing->Start.Entry = *entry;
                                   
4000b748:	c4 26 20 a8 	st  %g2, [ %i0 + 0xa8 ]
                       <== NOT EXECUTED
  the_thread->Life.state = state;
                                    
4000b74c:	c2 26 21 70 	st  %g1, [ %i0 + 0x170 ]
                      <== NOT EXECUTED
4000b750:	7f ff fe 23 	call  4000afdc <_Thread_Change_life_locked.part.37>
<== NOT EXECUTED
4000b754:	c0 27 bf f0 	clr  [ %fp + -16 ]
                            <== NOT EXECUTED
  disable_level = cpu_self->thread_dispatch_disable_level;
           
4000b758:	c2 01 a0 18 	ld  [ %g6 + 0x18 ], %g1
                       <== NOT EXECUTED
  cpu_self->thread_dispatch_disable_level = disable_level + 1;
       
4000b75c:	82 00 60 01 	inc  %g1
                                      <== NOT EXECUTED
  return _Thread_Dispatch_disable_with_CPU( _Per_CPU_Get(), lock_context );

4000b760:	ba 10 00 06 	mov  %g6, %i5
                                 <== NOT EXECUTED
  cpu_self->thread_dispatch_disable_level = disable_level + 1;
       
4000b764:	c2 21 a0 18 	st  %g1, [ %g6 + 0x18 ]
                       <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000b768:	c2 06 80 00 	ld  [ %i2 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b76c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b770:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000b774:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  _ISR_lock_ISR_disable( lock_context );
                             
4000b778:	c2 26 80 00 	st  %g1, [ %i2 ]
                              
4000b77c:	c4 1e 20 c0 	ldd  [ %i0 + 0xc0 ], %g2
                      
4000b780:	c4 3e 20 30 	std  %g2, [ %i0 + 0x30 ]
                      
  _Thread_Priority_changed(
                                          
4000b784:	94 10 20 00 	clr  %o2
                                      
4000b788:	96 07 bf dc 	add  %fp, -36, %o3
                            
4000b78c:	92 06 20 20 	add  %i0, 0x20, %o1
                           
4000b790:	7f ff f8 b0 	call  40009a50 <_Thread_Priority_changed>
     
4000b794:	90 10 00 18 	mov  %i0, %o0
                                 
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000b798:	c2 06 80 00 	ld  [ %i2 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000b79c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000b7a0:	01 00 00 00 	nop 
                                          
    false,
                                                           
    &queue_context
                                                   
  );
                                                                 
  _Thread_Wait_release_default( executing, lock_context );
           

                                                                     
  _Thread_Priority_update( &queue_context );
                         
4000b7a4:	7f ff f8 b2 	call  40009a6c <_Thread_Priority_update>
      
4000b7a8:	90 07 bf dc 	add  %fp, -36, %o0
                            
  _Thread_Dispatch_direct( cpu_self );
                               
4000b7ac:	7f ff f9 54 	call  40009cfc <_Thread_Dispatch_direct>
      
4000b7b0:	90 10 00 1d 	mov  %i5, %o0
                                 
4000b7b4:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

4000b9cc <_Thread_Set_life_protection>: Thread_Life_state _Thread_Set_life_protection( Thread_Life_state state ) { return _Thread_Change_life(
4000b9cc:	92 0a 20 01 	and  %o0, 1, %o1
                              <== NOT EXECUTED
4000b9d0:	94 10 20 00 	clr  %o2
                                      
4000b9d4:	90 10 20 01 	mov  1, %o0
                                   
4000b9d8:	82 13 c0 00 	mov  %o7, %g1
                                 
4000b9dc:	7f ff ff d0 	call  4000b91c <_Thread_Change_life>
          
4000b9e0:	9e 10 40 00 	mov  %g1, %o7
                                 

                                                                     

4000a030 <_Thread_Set_name>: Status_Control _Thread_Set_name( Thread_Control *the_thread, const char *name ) {
4000a030:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  size_t length;
                                                     

                                                                     
  length = strlcpy(
                                                  
4000a034:	03 10 00 3e 	sethi  %hi(0x4000f800), %g1
                   <== NOT EXECUTED
4000a038:	d0 06 20 18 	ld  [ %i0 + 0x18 ], %o0
                       <== NOT EXECUTED
4000a03c:	fa 00 61 c0 	ld  [ %g1 + 0x1c0 ], %i5
                      <== NOT EXECUTED
4000a040:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
4000a044:	94 10 00 1d 	mov  %i5, %o2
                                 <== NOT EXECUTED
4000a048:	40 00 12 33 	call  4000e914 <strlcpy>
                      <== NOT EXECUTED
4000a04c:	33 00 00 08 	sethi  %hi(0x2000), %i1
                       <== NOT EXECUTED
    name,
                                                            
    _Thread_Maximum_name_size
                                        
  );
                                                                 

                                                                     
  if ( length >= _Thread_Maximum_name_size ) {
                       
    return STATUS_RESULT_TOO_LARGE;
                                  
4000a050:	b0 10 20 00 	clr  %i0
                                      
  if ( length >= _Thread_Maximum_name_size ) {
                       
4000a054:	80 a7 40 08 	cmp  %i5, %o0
                                 
4000a058:	08 80 00 04 	bleu  4000a068 <_Thread_Set_name+0x38>
        
4000a05c:	b2 16 62 0d 	or  %i1, 0x20d, %i1
                           
  }
                                                                  

                                                                     
  return STATUS_SUCCESSFUL;
                                          
4000a060:	b0 10 20 00 	clr  %i0
                                      
4000a064:	b2 10 20 00 	clr  %i1
                                      
}
                                                                    
4000a068:	81 c7 e0 08 	ret 
                                          
4000a06c:	81 e8 00 00 	restore 
                                      

                                                                     

4000ba1c <_Thread_Set_state>: States_Control _Thread_Set_state( Thread_Control *the_thread, States_Control state ) {
4000ba1c:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
4000ba20:	92 10 00 18 	mov  %i0, %o1
                                 <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000ba24:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  previous_state = the_thread->current_state;
                        
4000ba28:	f0 06 20 1c 	ld  [ %i0 + 0x1c ], %i0
                       
4000ba2c:	b2 16 40 18 	or  %i1, %i0, %i1
                             
  if ( _States_Is_ready( previous_state ) ) {
                        
4000ba30:	80 a6 20 00 	cmp  %i0, 0
                                   
4000ba34:	12 80 00 09 	bne  4000ba58 <_Thread_Set_state+0x3c>
        
4000ba38:	f2 22 60 1c 	st  %i1, [ %o1 + 0x1c ]
                       
4000ba3c:	d4 02 60 38 	ld  [ %o1 + 0x38 ], %o2
                       
4000ba40:	11 10 00 63 	sethi  %hi(0x40018c00), %o0
                   
4000ba44:	90 12 21 c8 	or  %o0, 0x1c8, %o0	! 40018dc8 <_Scheduler_Table>

4000ba48:	c4 02 20 10 	ld  [ %o0 + 0x10 ], %g2
                       
4000ba4c:	9f c0 80 00 	call  %g2
                                     
4000ba50:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000ba54:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000ba58:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000ba5c:	01 00 00 00 	nop 
                                          
  _Thread_State_acquire( the_thread, &lock_context );
                
  previous_state = _Thread_Set_state_locked( the_thread, state );
    
  _Thread_State_release( the_thread, &lock_context );
                

                                                                     
  return previous_state;
                                             
}
                                                                    
4000ba60:	81 c7 e0 08 	ret 
                                          
4000ba64:	81 e8 00 00 	restore 
                                      

                                                                     

4000b9e4 <_Thread_Set_state_locked>: States_Control _Thread_Set_state_locked( Thread_Control *the_thread, States_Control state ) {
4000b9e4:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
4000b9e8:	92 10 00 18 	mov  %i0, %o1
                                 <== NOT EXECUTED
  States_Control next_state;
                                         

                                                                     
  _Assert( state != 0 );
                                             
  _Assert( _Thread_State_is_owner( the_thread ) );
                   

                                                                     
  previous_state = the_thread->current_state;
                        
4000b9ec:	f0 06 20 1c 	ld  [ %i0 + 0x1c ], %i0
                       <== NOT EXECUTED
RTEMS_INLINE_ROUTINE States_Control _States_Set (
                    
  States_Control states_to_set,
                                      
  States_Control current_state
                                       
)
                                                                    
{
                                                                    
   return (current_state | states_to_set);
                           
4000b9f0:	b2 16 00 19 	or  %i0, %i1, %i1
                             <== NOT EXECUTED
  next_state = _States_Set( state, previous_state);
                  
  the_thread->current_state = next_state;
                            

                                                                     
  if ( _States_Is_ready( previous_state ) ) {
                        
4000b9f4:	80 a6 20 00 	cmp  %i0, 0
                                   <== NOT EXECUTED
4000b9f8:	12 80 00 07 	bne  4000ba14 <_Thread_Set_state_locked+0x30>
 <== NOT EXECUTED
4000b9fc:	f2 22 60 1c 	st  %i1, [ %o1 + 0x1c ]
                       <== NOT EXECUTED
  ( *scheduler->Operations.block )(
                                  
4000ba00:	11 10 00 63 	sethi  %hi(0x40018c00), %o0
                   <== NOT EXECUTED
4000ba04:	90 12 21 c8 	or  %o0, 0x1c8, %o0	! 40018dc8 <_Scheduler_Table>
<== NOT EXECUTED
4000ba08:	c2 02 20 10 	ld  [ %o0 + 0x10 ], %g1
                       <== NOT EXECUTED
4000ba0c:	9f c0 40 00 	call  %g1
                                     <== NOT EXECUTED
4000ba10:	d4 02 60 38 	ld  [ %o1 + 0x38 ], %o2
                       <== NOT EXECUTED
    _Scheduler_Block( the_thread );
                                  
  }
                                                                  

                                                                     
  return previous_state;
                                             
}
                                                                    
4000ba14:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000ba18:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

4000ba68 <_Thread_Stack_Allocate>: size_t _Thread_Stack_Allocate( Thread_Control *the_thread, size_t stack_size ) {
4000ba68:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  return rtems_minimum_stack_size;
                                   
4000ba6c:	03 10 00 6c 	sethi  %hi(0x4001b000), %g1
                   <== NOT EXECUTED
4000ba70:	fa 00 63 40 	ld  [ %g1 + 0x340 ], %i5	! 4001b340 <_data_load_start>
<== NOT EXECUTED
4000ba74:	80 a7 40 19 	cmp  %i5, %i1
                                 <== NOT EXECUTED
4000ba78:	2a 80 00 02 	bcs,a   4000ba80 <_Thread_Stack_Allocate+0x18>
<== NOT EXECUTED
4000ba7c:	ba 10 00 19 	mov  %i1, %i5
                                 <== NOT EXECUTED
  void *stack_addr = 0;
                                              
  size_t the_stack_size;
                                             
  rtems_stack_allocate_hook stack_allocate_hook =
                    
4000ba80:	03 10 00 63 	sethi  %hi(0x40018c00), %g1
                   
    rtems_configuration_get_stack_allocate_hook();
                   

                                                                     
  the_stack_size = _Stack_Ensure_minimum( stack_size );
              

                                                                     
  stack_addr = (*stack_allocate_hook)( the_stack_size );
             
4000ba84:	c2 00 61 10 	ld  [ %g1 + 0x110 ], %g1	! 40018d10 <Configuration+0x28>

4000ba88:	9f c0 40 00 	call  %g1
                                     
4000ba8c:	90 10 00 1d 	mov  %i5, %o0
                                 

                                                                     
  if ( !stack_addr )
                                                 
    the_stack_size = 0;
                                              
4000ba90:	80 a0 00 08 	cmp  %g0, %o0
                                 

                                                                     
  the_thread->Start.stack = stack_addr;
                              
4000ba94:	d0 26 20 d8 	st  %o0, [ %i0 + 0xd8 ]
                       
    the_stack_size = 0;
                                              
4000ba98:	b0 60 20 00 	subx  %g0, 0, %i0
                             

                                                                     
  return the_stack_size;
                                             
}
                                                                    
4000ba9c:	b0 0f 40 18 	and  %i5, %i0, %i0
                            
4000baa0:	81 c7 e0 08 	ret 
                                          
4000baa4:	81 e8 00 00 	restore 
                                      

                                                                     

4000baa8 <_Thread_Stack_Free>: #include <rtems/config.h> void _Thread_Stack_Free( Thread_Control *the_thread ) {
4000baa8:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED

                                                                     
  #if defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API)
 
    /*
                                                               
     *  If the API provided the stack space, then don't free it.
     
     */
                                                              
    if ( !the_thread->Start.core_allocated_stack )
                   
4000baac:	c2 0e 20 c8 	ldub  [ %i0 + 0xc8 ], %g1
                     <== NOT EXECUTED
4000bab0:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
  rtems_stack_free_hook stack_free_hook =
                            
4000bab4:	03 10 00 63 	sethi  %hi(0x40018c00), %g1
                   <== NOT EXECUTED
    if ( !the_thread->Start.core_allocated_stack )
                   
4000bab8:	02 80 00 04 	be  4000bac8 <_Thread_Stack_Free+0x20>
        <== NOT EXECUTED
4000babc:	c2 00 61 14 	ld  [ %g1 + 0x114 ], %g1	! 40018d14 <Configuration+0x2c>

   * Call ONLY the CPU table stack free hook, or the
                 
   * the RTEMS workspace free.  This is so the free
                  
   * routine properly matches the allocation of the stack.
           
   */
                                                                

                                                                     
  (*stack_free_hook)( the_thread->Start.Initial_stack.area );
        
4000bac0:	9f c0 40 00 	call  %g1
                                     
4000bac4:	d0 06 20 d0 	ld  [ %i0 + 0xd0 ], %o0
                       
}
                                                                    
4000bac8:	81 c7 e0 08 	ret 
                                          
4000bacc:	81 e8 00 00 	restore 
                                      

                                                                     

4000baec <_Thread_Start>: bool _Thread_Start( Thread_Control *the_thread, const Thread_Entry_information *entry, ISR_lock_Context *lock_context ) {
4000baec:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  Per_CPU_Control *cpu_self;
                                         

                                                                     
  _Thread_State_acquire_critical( the_thread, lock_context );
        

                                                                     
  if ( !_States_Is_dormant( the_thread->current_state ) ) {
          
4000baf0:	c2 06 20 1c 	ld  [ %i0 + 0x1c ], %g1
                       
4000baf4:	80 a0 60 00 	cmp  %g1, 0
                                   
4000baf8:	26 80 00 09 	bl,a   4000bb1c <_Thread_Start+0x30>
          <== ALWAYS TAKEN
4000bafc:	c2 06 40 00 	ld  [ %i1 ], %g1
                              
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000bb00:	c2 06 80 00 	ld  [ %i2 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000bb04:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000bb08:	01 00 00 00 	nop 
                                          
    _Thread_State_release( the_thread, lock_context );
               
    return false;
                                                    
4000bb0c:	b0 10 20 00 	clr  %i0	! 0 <PROM_START>
                     

                                                                     
  _User_extensions_Thread_start( the_thread );
                       

                                                                     
  _Thread_Dispatch_enable( cpu_self );
                               
  return true;
                                                       
}
                                                                    
4000bb10:	b0 0e 20 01 	and  %i0, 1, %i0
                              
4000bb14:	81 c7 e0 08 	ret 
                                          
4000bb18:	81 e8 00 00 	restore 
                                      
  the_thread->Start.Entry = *entry;
                                  
4000bb1c:	c2 26 20 a0 	st  %g1, [ %i0 + 0xa0 ]
                       
  _Thread_Load_environment( the_thread );
                            
4000bb20:	90 10 00 18 	mov  %i0, %o0
                                 
  the_thread->Start.Entry = *entry;
                                  
4000bb24:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          
4000bb28:	c2 26 20 a4 	st  %g1, [ %i0 + 0xa4 ]
                       
4000bb2c:	c2 06 60 08 	ld  [ %i1 + 8 ], %g1
                          
  _Thread_Load_environment( the_thread );
                            
4000bb30:	7f ff fb 2d 	call  4000a7e4 <_Thread_Load_environment>
     
4000bb34:	c2 26 20 a8 	st  %g1, [ %i0 + 0xa8 ]
                       
  _Thread_Clear_state_locked( the_thread, STATES_ALL_SET );
          
4000bb38:	92 10 3f ff 	mov  -1, %o1
                                  
4000bb3c:	40 00 0a 84 	call  4000e54c <_Thread_Clear_state_locked>
   
4000bb40:	90 10 00 18 	mov  %i0, %o0
                                 
  disable_level = cpu_self->thread_dispatch_disable_level;
           
4000bb44:	c2 01 a0 18 	ld  [ %g6 + 0x18 ], %g1
                       
  cpu_self->thread_dispatch_disable_level = disable_level + 1;
       
4000bb48:	82 00 60 01 	inc  %g1
                                      
  return _Thread_Dispatch_disable_with_CPU( _Per_CPU_Get(), lock_context );

4000bb4c:	ba 10 00 06 	mov  %g6, %i5
                                 
  cpu_self->thread_dispatch_disable_level = disable_level + 1;
       
4000bb50:	c2 21 a0 18 	st  %g1, [ %g6 + 0x18 ]
                       
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000bb54:	c2 06 80 00 	ld  [ %i2 ], %g1
                              
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000bb58:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000bb5c:	01 00 00 00 	nop 
                                          
  _User_extensions_Iterate(
                                          
4000bb60:	94 10 20 00 	clr  %o2	! 0 <PROM_START>
                     
4000bb64:	90 10 00 18 	mov  %i0, %o0
                                 
4000bb68:	13 10 00 2f 	sethi  %hi(0x4000bc00), %o1
                   
4000bb6c:	40 00 00 99 	call  4000bdd0 <_User_extensions_Iterate>
     
4000bb70:	92 12 60 f0 	or  %o1, 0xf0, %o1	! 4000bcf0 <_User_extensions_Thread_start_visitor>

  uint32_t disable_level = cpu_self->thread_dispatch_disable_level;
  
4000bb74:	c2 07 60 18 	ld  [ %i5 + 0x18 ], %g1
                       
  if ( disable_level == 1 ) {
                                        
4000bb78:	80 a0 60 01 	cmp  %g1, 1
                                   
4000bb7c:	02 80 00 07 	be  4000bb98 <_Thread_Start+0xac>
             
4000bb80:	82 00 7f ff 	add  %g1, -1, %g1
                             
  return true;
                                                       
4000bb84:	b0 10 20 01 	mov  1, %i0
                                   
    cpu_self->thread_dispatch_disable_level = disable_level - 1;
     
4000bb88:	c2 27 60 18 	st  %g1, [ %i5 + 0x18 ]
                       
}
                                                                    
4000bb8c:	b0 0e 20 01 	and  %i0, 1, %i0
                              
4000bb90:	81 c7 e0 08 	ret 
                                          
4000bb94:	81 e8 00 00 	restore 
                                      
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000bb98:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
    if (
                                                             
4000bb9c:	c4 0f 60 1c 	ldub  [ %i5 + 0x1c ], %g2
                     
4000bba0:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000bba4:	12 80 00 07 	bne  4000bbc0 <_Thread_Start+0xd4>
            
4000bba8:	92 10 00 01 	mov  %g1, %o1
                                 
      cpu_self->thread_dispatch_disable_level = 0;
                   
4000bbac:	c0 27 60 18 	clr  [ %i5 + 0x18 ]
                           <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000bbb0:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000bbb4:	01 00 00 00 	nop 
                                          
  return true;
                                                       
4000bbb8:	10 bf ff d6 	b  4000bb10 <_Thread_Start+0x24>
              
4000bbbc:	b0 10 20 01 	mov  1, %i0	! 1 <_TLS_Alignment>
              
      _Thread_Do_dispatch( cpu_self, level );
                        
4000bbc0:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000bbc4:	40 00 0a 84 	call  4000e5d4 <_Thread_Do_dispatch>
          
4000bbc8:	90 10 00 1d 	mov  %i5, %o0
                                 
4000bbcc:	10 bf ff f9 	b  4000bbb0 <_Thread_Start+0xc4>
              
4000bbd0:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         

                                                                     

4000bad0 <_Thread_Start_multitasking>: #include <rtems/score/threadimpl.h> #include <rtems/score/assert.h> void _Thread_Start_multitasking( void ) {
4000bad0:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  heir = cpu_self->heir;
                                             
4000bad4:	c4 01 a0 24 	ld  [ %g6 + 0x24 ], %g2
                       <== NOT EXECUTED
  cpu_self->dispatch_necessary = false;
                              
4000bad8:	c0 29 a0 1c 	clrb  [ %g6 + 0x1c ]
                          <== NOT EXECUTED
    _CPU_Context_Set_is_executing( &trash, true );
                   
    _CPU_Context_switch( &trash, &heir->Registers );
                 
    RTEMS_UNREACHABLE();
                                             
  }
                                                                  
#else
                                                                
  _CPU_Context_Restart_self( &heir->Registers );
                     
4000badc:	90 00 a0 f0 	add  %g2, 0xf0, %o0
                           
4000bae0:	40 00 03 91 	call  4000c924 <_CPU_Context_restore>
         
4000bae4:	c4 21 a0 20 	st  %g2, [ %g6 + 0x20 ]
                       
4000bae8:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

4000ef24 <_Thread_Timeout>: the_thread = RTEMS_CONTAINER_OF( the_watchdog, Thread_Control, Timer.Watchdog ); _Thread_Continue( the_thread, STATUS_TIMEOUT );
4000ef24:	15 00 00 1d 	sethi  %hi(0x7400), %o2
                       <== NOT EXECUTED
4000ef28:	92 10 20 00 	clr  %o1
                                      <== NOT EXECUTED
4000ef2c:	94 12 a0 06 	or  %o2, 6, %o2
                               <== NOT EXECUTED
4000ef30:	90 02 3f 98 	add  %o0, -104, %o0
                           <== NOT EXECUTED
4000ef34:	82 13 c0 00 	mov  %o7, %g1
                                 <== NOT EXECUTED
4000ef38:	7f ff ff ce 	call  4000ee70 <_Thread_Continue>
             
4000ef3c:	9e 10 40 00 	mov  %g1, %o7
                                 

                                                                     

4000ce84 <_Thread_Wait_get_id>: if ( _States_Is_waiting_for_rpc_reply( the_thread->current_state ) ) { return the_thread->Wait.remote_id; } #endif queue = the_thread->Wait.queue;
4000ce84:	c2 02 20 54 	ld  [ %o0 + 0x54 ], %g1
                       <== NOT EXECUTED

                                                                     
  if ( queue != NULL && queue->name == _Thread_queue_Object_name ) {
 
4000ce88:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000ce8c:	02 80 00 08 	be  4000ceac <_Thread_Wait_get_id+0x28>
       <== NOT EXECUTED
4000ce90:	90 10 20 00 	clr  %o0
                                      
4000ce94:	c6 00 60 08 	ld  [ %g1 + 8 ], %g3
                          
4000ce98:	05 10 00 44 	sethi  %hi(0x40011000), %g2
                   
4000ce9c:	84 10 a2 80 	or  %g2, 0x280, %g2	! 40011280 <_Thread_queue_Object_name>

4000cea0:	80 a0 c0 02 	cmp  %g3, %g2
                                 
4000cea4:	02 80 00 04 	be  4000ceb4 <_Thread_Wait_get_id+0x30>
       <== ALWAYS TAKEN
4000cea8:	01 00 00 00 	nop 
                                          
    queue_object = THREAD_QUEUE_QUEUE_TO_OBJECT( queue );
            
    return queue_object->Object.id;
                                  
  }
                                                                  

                                                                     
  return 0;
                                                          
}
                                                                    
4000ceac:	81 c3 e0 08 	retl 
                                         
4000ceb0:	01 00 00 00 	nop 
                                          
4000ceb4:	81 c3 e0 08 	retl 
                                         
4000ceb8:	d0 00 7f f8 	ld  [ %g1 + -8 ], %o0
                         

                                                                     

4000bbd4 <_Thread_Yield>: #include <rtems/score/threadimpl.h> #include <rtems/score/schedulerimpl.h> void _Thread_Yield( Thread_Control *executing ) {
4000bbd4:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000bbd8:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  ISR_lock_Context lock_context;
                                     

                                                                     
  _Thread_State_acquire( executing, &lock_context );
                 

                                                                     
  if ( _States_Is_ready( executing->current_state ) ) {
              
4000bbdc:	c4 06 20 1c 	ld  [ %i0 + 0x1c ], %g2
                       
4000bbe0:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000bbe4:	12 80 00 09 	bne  4000bc08 <_Thread_Yield+0x34>
            <== NEVER TAKEN
4000bbe8:	11 10 00 63 	sethi  %hi(0x40018c00), %o0
                   
  ( *scheduler->Operations.yield )(
                                  
4000bbec:	d4 06 20 38 	ld  [ %i0 + 0x38 ], %o2
                       
4000bbf0:	90 12 21 c8 	or  %o0, 0x1c8, %o0
                           
4000bbf4:	c4 02 20 0c 	ld  [ %o0 + 0xc ], %g2
                        
4000bbf8:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000bbfc:	9f c0 80 00 	call  %g2
                                     
4000bc00:	92 10 00 18 	mov  %i0, %o1
                                 
4000bc04:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000bc08:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000bc0c:	01 00 00 00 	nop 
                                          
    _Scheduler_Yield( executing );
                                   
  }
                                                                  

                                                                     
  _Thread_State_release( executing, &lock_context );
                 
}
                                                                    
4000bc10:	81 c7 e0 08 	ret 
                                          
4000bc14:	81 e8 00 00 	restore 
                                      

                                                                     

40011dec <_Thread_queue_Add_timeout_ticks>: Thread_queue_Queue *queue, Thread_Control *the_thread, Per_CPU_Control *cpu_self, Thread_queue_Context *queue_context ) {
40011dec:	9d e3 bf 98 	save  %sp, -104, %sp
                          
  Watchdog_Interval ticks;
                                           

                                                                     
  ticks = queue_context->Timeout.ticks;
                              
40011df0:	c4 06 e0 0c 	ld  [ %i3 + 0xc ], %g2
                        

                                                                     
  if ( ticks != WATCHDOG_NO_TIMEOUT ) {
                              
40011df4:	80 a0 a0 00 	cmp  %g2, 0
                                   
40011df8:	12 80 00 04 	bne  40011e08 <_Thread_queue_Add_timeout_ticks+0x1c>

40011dfc:	01 00 00 00 	nop 
                                          
      the_thread,
                                                    
      cpu_self,
                                                      
      queue_context->Timeout.ticks
                                   
    );
                                                               
  }
                                                                  
}
                                                                    
40011e00:	81 c7 e0 08 	ret 
                                          
40011e04:	81 e8 00 00 	restore 
                                      
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

40011e08:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return psr;
                                                        
40011e0c:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
  the_thread->Timer.Watchdog.routine = _Thread_Timeout;
              
40011e10:	07 10 00 4a 	sethi  %hi(0x40012800), %g3
                   
  expire = ticks + cpu->Watchdog.ticks;
                              
40011e14:	d4 1e a0 30 	ldd  [ %i2 + 0x30 ], %o2
                      
    &cpu->Watchdog.Header[ PER_CPU_WATCHDOG_TICKS ];
                 
40011e18:	90 06 a0 38 	add  %i2, 0x38, %o0
                           
  the_thread->Timer.Watchdog.routine = _Thread_Timeout;
              
40011e1c:	86 10 e0 70 	or  %g3, 0x70, %g3
                            
  the_thread->Timer.header =
                                         
40011e20:	d0 26 60 60 	st  %o0, [ %i1 + 0x60 ]
                       
  _Watchdog_Insert(header, the_watchdog, expire);
                    
40011e24:	b6 82 c0 02 	addcc  %o3, %g2, %i3
                          
  the_thread->Timer.Watchdog.routine = _Thread_Timeout;
              
40011e28:	c6 26 60 78 	st  %g3, [ %i1 + 0x78 ]
                       
40011e2c:	b4 42 a0 00 	addx  %o2, 0, %i2
                             
40011e30:	92 06 60 68 	add  %i1, 0x68, %o1
                           
40011e34:	94 10 00 1a 	mov  %i2, %o2
                                 
40011e38:	40 00 03 93 	call  40012c84 <_Watchdog_Insert>
             
40011e3c:	96 10 00 1b 	mov  %i3, %o3
                                 
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

40011e40:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40011e44:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40011e48:	01 00 00 00 	nop 
                                          
40011e4c:	81 c7 e0 08 	ret 
                                          
40011e50:	81 e8 00 00 	restore 
                                      

                                                                     

4000a9a4 <_Thread_queue_Deadlock_fatal>: {
4000a9a4:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  _Internal_error( INTERNAL_ERROR_THREAD_QUEUE_DEADLOCK );
           
4000a9a8:	7f ff f3 bf 	call  400078a4 <_Internal_error>
              <== NOT EXECUTED
4000a9ac:	90 10 20 1c 	mov  0x1c, %o0
                                <== NOT EXECUTED
4000a9b0:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

40010eb8 <_Thread_queue_Deadlock_status>: the_thread->Wait.return_code = STATUS_DEADLOCK;
40010eb8:	03 00 00 0b 	sethi  %hi(0x2c00), %g1
                       <== NOT EXECUTED
40010ebc:	82 10 61 0e 	or  %g1, 0x10e, %g1	! 2d0e <_Configuration_Interrupt_stack_size+0x1d0e>
<== NOT EXECUTED
}
                                                                    
40010ec0:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
40010ec4:	c2 22 20 4c 	st  %g1, [ %o0 + 0x4c ]
                       

                                                                     

4000a9b4 <_Thread_queue_Enqueue>: {
4000a9b4:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  the_thread->Wait.queue = queue;
                                    
4000a9b8:	f0 26 a0 54 	st  %i0, [ %i2 + 0x54 ]
                       <== NOT EXECUTED
4000a9bc:	10 80 00 08 	b  4000a9dc <_Thread_queue_Enqueue+0x28>
      <== NOT EXECUTED
4000a9c0:	82 10 00 18 	mov  %i0, %g1
                                 <== NOT EXECUTED
    if ( owner == the_thread ) {
                                     
4000a9c4:	22 80 00 44 	be,a   4000aad4 <_Thread_queue_Enqueue+0x120>
 
4000a9c8:	c0 26 a0 54 	clr  [ %i2 + 0x54 ]
                           
    queue = owner->Wait.queue;
                                       
4000a9cc:	c2 00 60 54 	ld  [ %g1 + 0x54 ], %g1
                       
  } while ( queue != NULL );
                                         
4000a9d0:	80 a0 60 00 	cmp  %g1, 0
                                   
4000a9d4:	22 80 00 07 	be,a   4000a9f0 <_Thread_queue_Enqueue+0x3c>
  
4000a9d8:	c0 26 e0 14 	clr  [ %i3 + 0x14 ]
                           
    owner = queue->owner;
                                            
4000a9dc:	c2 00 60 04 	ld  [ %g1 + 4 ], %g1
                          
    if ( owner == NULL ) {
                                           
4000a9e0:	80 a0 60 00 	cmp  %g1, 0
                                   
4000a9e4:	12 bf ff f8 	bne  4000a9c4 <_Thread_queue_Enqueue+0x10>
    
4000a9e8:	80 a6 80 01 	cmp  %i2, %g1
                                 

                                                                     
RTEMS_INLINE_ROUTINE void _Thread_queue_Context_clear_priority_updates(

  Thread_queue_Context *queue_context
                                
)
                                                                    
{
                                                                    
  queue_context->Priority.update_count = 0;
                          
4000a9ec:	c0 26 e0 14 	clr  [ %i3 + 0x14 ]
                           
  ( *operations->enqueue )( queue, the_thread, queue_context );
      
4000a9f0:	94 10 00 1b 	mov  %i3, %o2
                                 
  the_thread->Wait.operations = operations;
                          
4000a9f4:	f2 26 a0 58 	st  %i1, [ %i2 + 0x58 ]
                       
4000a9f8:	92 10 00 1a 	mov  %i2, %o1
                                 
4000a9fc:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          
4000aa00:	9f c0 40 00 	call  %g1
                                     
4000aa04:	90 10 00 18 	mov  %i0, %o0
                                 
  the_thread->Wait.flags = flags;
                                    
4000aa08:	84 10 24 01 	mov  0x401, %g2
                               
  disable_level = cpu_self->thread_dispatch_disable_level;
           
4000aa0c:	c2 01 a0 18 	ld  [ %g6 + 0x18 ], %g1
                       
  the_thread->Wait.return_code = STATUS_SUCCESSFUL;
                  
4000aa10:	c0 26 a0 4c 	clr  [ %i2 + 0x4c ]
                           
  cpu_self->thread_dispatch_disable_level = disable_level + 1;
       
4000aa14:	82 00 60 01 	inc  %g1
                                      
4000aa18:	c4 26 a0 50 	st  %g2, [ %i2 + 0x50 ]
                       
  return _Thread_Dispatch_disable_with_CPU( _Per_CPU_Get(), lock_context );

4000aa1c:	ba 10 00 06 	mov  %g6, %i5
                                 <== NOT EXECUTED
  cpu_self->thread_dispatch_disable_level = disable_level + 1;
       
4000aa20:	c2 21 a0 18 	st  %g1, [ %g6 + 0x18 ]
                       <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000aa24:	c2 06 c0 00 	ld  [ %i3 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000aa28:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000aa2c:	01 00 00 00 	nop 
                                          
  ( *queue_context->enqueue_callout )(
                               
4000aa30:	c2 06 e0 08 	ld  [ %i3 + 8 ], %g1
                          
4000aa34:	96 10 00 1b 	mov  %i3, %o3
                                 
4000aa38:	94 10 00 06 	mov  %g6, %o2
                                 
4000aa3c:	92 10 00 1a 	mov  %i2, %o1
                                 
4000aa40:	9f c0 40 00 	call  %g1
                                     
4000aa44:	90 10 00 18 	mov  %i0, %o0
                                 
  _Thread_Set_state( the_thread, queue_context->thread_state );
      
4000aa48:	d2 06 e0 04 	ld  [ %i3 + 4 ], %o1
                          
4000aa4c:	40 00 03 f4 	call  4000ba1c <_Thread_Set_state>
            
4000aa50:	90 10 00 1a 	mov  %i2, %o0
                                 
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000aa54:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  bool success = ( the_thread->Wait.flags == expected_flags );
       
4000aa58:	c4 06 a0 50 	ld  [ %i2 + 0x50 ], %g2
                       
  if ( success ) {
                                                   
4000aa5c:	80 a0 a4 01 	cmp  %g2, 0x401
                               
4000aa60:	02 80 00 28 	be  4000ab00 <_Thread_queue_Enqueue+0x14c>
    
4000aa64:	86 10 24 02 	mov  0x402, %g3
                               
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000aa68:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000aa6c:	01 00 00 00 	nop 
                                          
  if ( !success ) {
                                                  
4000aa70:	80 a0 a4 01 	cmp  %g2, 0x401
                               
4000aa74:	12 80 00 07 	bne  4000aa90 <_Thread_queue_Enqueue+0xdc>
    <== ALWAYS TAKEN
4000aa78:	01 00 00 00 	nop 
                                          
  _Thread_Priority_update( queue_context );
                          
4000aa7c:	90 10 00 1b 	mov  %i3, %o0
                                 <== NOT EXECUTED
4000aa80:	40 00 0e 92 	call  4000e4c8 <_Thread_Priority_update>
      
4000aa84:	b0 10 00 1d 	mov  %i5, %i0
                                 
  _Thread_Dispatch_direct( cpu_self );
                               
4000aa88:	40 00 0f 1b 	call  4000e6f4 <_Thread_Dispatch_direct>
      
4000aa8c:	81 e8 00 00 	restore 
                                      
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000aa90:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return psr;
                                                        
4000aa94:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000aa98:	d0 06 a0 60 	ld  [ %i2 + 0x60 ], %o0
                       
4000aa9c:	40 00 05 4c 	call  4000bfcc <_Watchdog_Remove>
             
4000aaa0:	92 06 a0 68 	add  %i2, 0x68, %o1
                           
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000aaa4:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000aaa8:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000aaac:	01 00 00 00 	nop 
                                          
  _Thread_Clear_state( the_thread, STATES_BLOCKED );
                 
4000aab0:	13 0c 00 57 	sethi  %hi(0x30015c00), %o1
                   
4000aab4:	90 10 00 1a 	mov  %i2, %o0
                                 
4000aab8:	40 00 0e b1 	call  4000e57c <_Thread_Clear_state>
          
4000aabc:	92 12 63 ff 	or  %o1, 0x3ff, %o1
                           
  _Thread_Priority_update( queue_context );
                          
4000aac0:	90 10 00 1b 	mov  %i3, %o0
                                 
4000aac4:	40 00 0e 81 	call  4000e4c8 <_Thread_Priority_update>
      
4000aac8:	b0 10 00 1d 	mov  %i5, %i0
                                 
  _Thread_Dispatch_direct( cpu_self );
                               
4000aacc:	40 00 0f 0a 	call  4000e6f4 <_Thread_Dispatch_direct>
      
4000aad0:	81 e8 00 00 	restore 
                                      
  the_thread->Wait.operations = &_Thread_queue_Operations_default;
   
4000aad4:	03 10 00 66 	sethi  %hi(0x40019800), %g1
                   <== NOT EXECUTED
4000aad8:	82 10 61 50 	or  %g1, 0x150, %g1	! 40019950 <_Thread_queue_Operations_default>
<== NOT EXECUTED
4000aadc:	c2 26 a0 58 	st  %g1, [ %i2 + 0x58 ]
                       <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000aae0:	c2 06 c0 00 	ld  [ %i3 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000aae4:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000aae8:	01 00 00 00 	nop 
                                          
    ( *queue_context->deadlock_callout )( the_thread );
              
4000aaec:	c2 06 e0 20 	ld  [ %i3 + 0x20 ], %g1
                       
4000aaf0:	9f c0 40 00 	call  %g1
                                     
4000aaf4:	90 10 00 1a 	mov  %i2, %o0
                                 
}
                                                                    
4000aaf8:	81 c7 e0 08 	ret 
                                          
4000aafc:	81 e8 00 00 	restore 
                                      
    the_thread->Wait.flags = desired_flags;
                          
4000ab00:	c6 26 a0 50 	st  %g3, [ %i2 + 0x50 ]
                       <== NOT EXECUTED
4000ab04:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000ab08:	01 00 00 00 	nop 
                                          
  if ( !success ) {
                                                  
4000ab0c:	80 a0 a4 01 	cmp  %g2, 0x401
                               
4000ab10:	22 bf ff dc 	be,a   4000aa80 <_Thread_queue_Enqueue+0xcc>
  <== ALWAYS TAKEN
4000ab14:	90 10 00 1b 	mov  %i3, %o0
                                 
4000ab18:	30 bf ff de 	b,a   4000aa90 <_Thread_queue_Enqueue+0xdc>
   <== NOT EXECUTED

                                                                     

4000ab8c <_Thread_queue_Extract>: &queue_context->Lock_context.Lock_context ); } void _Thread_queue_Extract( Thread_Control *the_thread ) {
4000ab8c:	9d e3 bf 78 	save  %sp, -136, %sp
                          <== NOT EXECUTED
4000ab90:	c0 27 bf f0 	clr  [ %fp + -16 ]
                            <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000ab94:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  _ISR_lock_ISR_disable( &queue_context->Lock_context.Lock_context );

4000ab98:	c2 27 bf dc 	st  %g1, [ %fp + -36 ]
                        

                                                                     
  _Thread_queue_Context_initialize( &queue_context );
                
  _Thread_queue_Context_clear_priority_updates( &queue_context );
    
  _Thread_Wait_acquire( the_thread, &queue_context );
                

                                                                     
  queue = the_thread->Wait.queue;
                                    
4000ab9c:	d0 06 20 54 	ld  [ %i0 + 0x54 ], %o0
                       

                                                                     
  if ( queue != NULL ) {
                                             
4000aba0:	80 a2 20 00 	cmp  %o0, 0
                                   
4000aba4:	02 80 00 1c 	be  4000ac14 <_Thread_queue_Extract+0x88>
     
4000aba8:	92 10 00 18 	mov  %i0, %o1
                                 
  ( *operations->extract )( queue, the_thread, queue_context );
      
4000abac:	c2 06 20 58 	ld  [ %i0 + 0x58 ], %g1
                       
4000abb0:	c2 00 60 08 	ld  [ %g1 + 8 ], %g1
                          
4000abb4:	9f c0 40 00 	call  %g1
                                     
4000abb8:	94 07 bf dc 	add  %fp, -36, %o2
                            
  if ( success ) {
                                                   
4000abbc:	c2 06 20 50 	ld  [ %i0 + 0x50 ], %g1
                       
4000abc0:	80 a0 64 01 	cmp  %g1, 0x401
                               
  the_thread->Wait.queue = NULL;
                                     
4000abc4:	c0 26 20 54 	clr  [ %i0 + 0x54 ]
                           
    the_thread->Wait.flags = desired_flags;
                          
4000abc8:	82 10 24 04 	mov  0x404, %g1
                               
  if ( success ) {
                                                   
4000abcc:	02 80 00 0a 	be  4000abf4 <_Thread_queue_Extract+0x68>
     <== NEVER TAKEN
4000abd0:	c2 26 20 50 	st  %g1, [ %i0 + 0x50 ]
                       
  the_thread->Wait.operations = &_Thread_queue_Operations_default;
   
4000abd4:	03 10 00 66 	sethi  %hi(0x40019800), %g1
                   
4000abd8:	82 10 61 50 	or  %g1, 0x150, %g1	! 40019950 <_Thread_queue_Operations_default>

4000abdc:	c2 26 20 58 	st  %g1, [ %i0 + 0x58 ]
                       
4000abe0:	92 07 bf dc 	add  %fp, -36, %o1
                            
4000abe4:	7f ff ff 44 	call  4000a8f4 <_Thread_queue_Unblock_critical.part.33>

4000abe8:	90 10 00 18 	mov  %i0, %o0
                                 
      &queue_context.Lock_context.Lock_context
                       
    );
                                                               
  } else {
                                                           
    _Thread_Wait_release( the_thread, &queue_context );
              
  }
                                                                  
}
                                                                    
4000abec:	81 c7 e0 08 	ret 
                                          
4000abf0:	81 e8 00 00 	restore 
                                      
4000abf4:	03 10 00 66 	sethi  %hi(0x40019800), %g1
                   <== NOT EXECUTED
4000abf8:	82 10 61 50 	or  %g1, 0x150, %g1	! 40019950 <_Thread_queue_Operations_default>
<== NOT EXECUTED
4000abfc:	c2 26 20 58 	st  %g1, [ %i0 + 0x58 ]
                       <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000ac00:	c2 07 bf dc 	ld  [ %fp + -36 ], %g1
                        <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000ac04:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000ac08:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
4000ac0c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000ac10:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000ac14:	c2 07 bf dc 	ld  [ %fp + -36 ], %g1
                        <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000ac18:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000ac1c:	01 00 00 00 	nop 
                                          
4000ac20:	81 c7 e0 08 	ret 
                                          
4000ac24:	81 e8 00 00 	restore 
                                      

                                                                     

400110b0 <_Thread_queue_Extract_critical>: Thread_queue_Queue *queue, const Thread_queue_Operations *operations, Thread_Control *the_thread, Thread_queue_Context *queue_context ) {
400110b0:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  ( *operations->extract )( queue, the_thread, queue_context );
      
400110b4:	c2 06 60 08 	ld  [ %i1 + 8 ], %g1
                          
400110b8:	92 10 00 1a 	mov  %i2, %o1
                                 
400110bc:	94 10 00 1b 	mov  %i3, %o2
                                 
400110c0:	9f c0 40 00 	call  %g1
                                     
400110c4:	90 10 00 18 	mov  %i0, %o0
                                 
  if ( success ) {
                                                   
400110c8:	c2 06 a0 50 	ld  [ %i2 + 0x50 ], %g1
                       
400110cc:	80 a0 64 01 	cmp  %g1, 0x401
                               
  the_thread->Wait.queue = NULL;
                                     
400110d0:	c0 26 a0 54 	clr  [ %i2 + 0x54 ]
                           
    the_thread->Wait.flags = desired_flags;
                          
400110d4:	82 10 24 04 	mov  0x404, %g1
                               
  if ( success ) {
                                                   
400110d8:	02 80 00 08 	be  400110f8 <_Thread_queue_Extract_critical+0x48>

400110dc:	c2 26 a0 50 	st  %g1, [ %i2 + 0x50 ]
                       
  the_thread->Wait.operations = &_Thread_queue_Operations_default;
   
400110e0:	03 10 00 77 	sethi  %hi(0x4001dc00), %g1
                   
400110e4:	82 10 63 08 	or  %g1, 0x308, %g1	! 4001df08 <_Thread_queue_Operations_default>

400110e8:	c2 26 a0 58 	st  %g1, [ %i2 + 0x58 ]
                       
400110ec:	b2 10 00 1b 	mov  %i3, %i1
                                 
400110f0:	7f ff ff 46 	call  40010e08 <_Thread_queue_Unblock_critical.part.33>

400110f4:	91 e8 00 1a 	restore  %g0, %i2, %o0
                        
400110f8:	03 10 00 77 	sethi  %hi(0x4001dc00), %g1
                   <== NOT EXECUTED
400110fc:	82 10 63 08 	or  %g1, 0x308, %g1	! 4001df08 <_Thread_queue_Operations_default>
<== NOT EXECUTED
40011100:	c2 26 a0 58 	st  %g1, [ %i2 + 0x58 ]
                       <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

40011104:	c2 06 c0 00 	ld  [ %i3 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40011108:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4001110c:	01 00 00 00 	nop 
                                          
    unblock,
                                                         
    queue,
                                                           
    the_thread,
                                                      
    &queue_context->Lock_context.Lock_context
                        
  );
                                                                 
}
                                                                    
40011110:	81 c7 e0 08 	ret 
                                          
40011114:	81 e8 00 00 	restore 
                                      

                                                                     

4000ab1c <_Thread_queue_Extract_locked>: {
4000ab1c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  ( *operations->extract )( queue, the_thread, queue_context );
      
4000ab20:	c2 06 60 08 	ld  [ %i1 + 8 ], %g1
                          <== NOT EXECUTED
4000ab24:	94 10 00 1b 	mov  %i3, %o2
                                 <== NOT EXECUTED
4000ab28:	92 10 00 1a 	mov  %i2, %o1
                                 <== NOT EXECUTED
4000ab2c:	9f c0 40 00 	call  %g1
                                     <== NOT EXECUTED
4000ab30:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
  if ( success ) {
                                                   
4000ab34:	c2 06 a0 50 	ld  [ %i2 + 0x50 ], %g1
                       <== NOT EXECUTED
4000ab38:	80 a0 64 01 	cmp  %g1, 0x401
                               <== NOT EXECUTED
4000ab3c:	02 80 00 0b 	be  4000ab68 <_Thread_queue_Extract_locked+0x4c>
<== NOT EXECUTED
4000ab40:	82 10 24 04 	mov  0x404, %g1
                               <== NOT EXECUTED
    unblock = true;
                                                  
4000ab44:	b0 10 20 01 	mov  1, %i0
                                   <== NOT EXECUTED
  the_thread->Wait.flags = flags;
                                    
4000ab48:	c2 26 a0 50 	st  %g1, [ %i2 + 0x50 ]
                       <== NOT EXECUTED
  return _Thread_queue_Make_ready_again( the_thread );
               
4000ab4c:	b0 0e 20 ff 	and  %i0, 0xff, %i0
                           <== NOT EXECUTED
  the_thread->Wait.queue = NULL;
                                     
4000ab50:	c0 26 a0 54 	clr  [ %i2 + 0x54 ]
                           <== NOT EXECUTED
  the_thread->Wait.operations = &_Thread_queue_Operations_default;
   
4000ab54:	03 10 00 66 	sethi  %hi(0x40019800), %g1
                   <== NOT EXECUTED
4000ab58:	82 10 61 50 	or  %g1, 0x150, %g1	! 40019950 <_Thread_queue_Operations_default>
<== NOT EXECUTED
4000ab5c:	c2 26 a0 58 	st  %g1, [ %i2 + 0x58 ]
                       <== NOT EXECUTED
}
                                                                    
4000ab60:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000ab64:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    unblock = false;
                                                 
4000ab68:	b0 10 20 00 	clr  %i0
                                      <== NOT EXECUTED
    the_thread->Wait.flags = desired_flags;
                          
4000ab6c:	c2 26 a0 50 	st  %g1, [ %i2 + 0x50 ]
                       <== NOT EXECUTED
  return _Thread_queue_Make_ready_again( the_thread );
               
4000ab70:	b0 0e 20 ff 	and  %i0, 0xff, %i0
                           <== NOT EXECUTED
  the_thread->Wait.queue = NULL;
                                     
4000ab74:	c0 26 a0 54 	clr  [ %i2 + 0x54 ]
                           <== NOT EXECUTED
  the_thread->Wait.operations = &_Thread_queue_Operations_default;
   
4000ab78:	03 10 00 66 	sethi  %hi(0x40019800), %g1
                   <== NOT EXECUTED
4000ab7c:	82 10 61 50 	or  %g1, 0x150, %g1	! 40019950 <_Thread_queue_Operations_default>
<== NOT EXECUTED
4000ab80:	c2 26 a0 58 	st  %g1, [ %i2 + 0x58 ]
                       <== NOT EXECUTED
}
                                                                    
4000ab84:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000ab88:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

4000e720 <_Thread_queue_Extract_with_proxy>: if ( proxy_extract_callout != NULL ) (*proxy_extract_callout)( the_thread, id ); } #endif _Thread_queue_Extract( the_thread );
4000e720:	82 13 c0 00 	mov  %o7, %g1
                                 <== NOT EXECUTED
4000e724:	7f ff f1 1a 	call  4000ab8c <_Thread_queue_Extract>
        <== NOT EXECUTED
4000e728:	9e 10 40 00 	mov  %g1, %o7
                                 <== NOT EXECUTED

                                                                     

40011200 <_Thread_queue_First>: Thread_Control *_Thread_queue_First( Thread_queue_Control *the_thread_queue, const Thread_queue_Operations *operations ) {
40011200:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

40011204:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  _ISR_lock_ISR_disable( &queue_context->Lock_context.Lock_context );

40011208:	d0 06 00 00 	ld  [ %i0 ], %o0
                              
  const Thread_queue_Operations *operations
                          
)
                                                                    
{
                                                                    
  Thread_queue_Heads *heads = the_thread_queue->Queue.heads;
         

                                                                     
  if ( heads != NULL ) {
                                             
4001120c:	80 a2 20 00 	cmp  %o0, 0
                                   
40011210:	22 80 00 07 	be,a   4001122c <_Thread_queue_First+0x2c>
    
40011214:	b0 10 20 00 	clr  %i0
                                      
    return ( *operations->first )( heads );
                          
40011218:	c4 06 60 10 	ld  [ %i1 + 0x10 ], %g2
                       
4001121c:	9f c0 80 00 	call  %g2
                                     
40011220:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
40011224:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
40011228:	b0 10 00 08 	mov  %o0, %i0
                                 <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4001122c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40011230:	01 00 00 00 	nop 
                                          
  _Thread_queue_Acquire( the_thread_queue, &queue_context );
         
  the_thread = _Thread_queue_First_locked( the_thread_queue, operations );

  _Thread_queue_Release( the_thread_queue, &queue_context );
         

                                                                     
  return the_thread;
                                                 
}
                                                                    
40011234:	81 c7 e0 08 	ret 
                                          
40011238:	81 e8 00 00 	restore 
                                      

                                                                     

4000e72c <_Thread_queue_Flush_critical>: Thread_queue_Queue *queue, const Thread_queue_Operations *operations, Thread_queue_Flush_filter filter, Thread_queue_Context *queue_context ) {
4000e72c:	9d e3 bf 88 	save  %sp, -120, %sp
                          <== NOT EXECUTED
  head->next = tail;
                                                 
4000e730:	a0 07 bf f8 	add  %fp, -8, %l0
                             <== NOT EXECUTED
  tail->previous = head;
                                             
4000e734:	82 07 bf f4 	add  %fp, -12, %g1
                            <== NOT EXECUTED
  head->previous = NULL;
                                             
4000e738:	c0 27 bf f8 	clr  [ %fp + -8 ]
                             <== NOT EXECUTED
4000e73c:	b8 10 00 18 	mov  %i0, %i4
                                 <== NOT EXECUTED
  head->next = tail;
                                                 
4000e740:	e0 27 bf f4 	st  %l0, [ %fp + -12 ]
                        <== NOT EXECUTED
  tail->previous = head;
                                             
4000e744:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         <== NOT EXECUTED
  while ( true ) {
                                                   
    Thread_queue_Heads *heads;
                                       
    Thread_Control     *first;
                                       
    bool                do_unblock;
                                  

                                                                     
    heads = queue->heads;
                                            
4000e748:	d0 06 00 00 	ld  [ %i0 ], %o0
                              <== NOT EXECUTED
  owner = queue->owner;
                                              
4000e74c:	e2 06 20 04 	ld  [ %i0 + 4 ], %l1
                          <== NOT EXECUTED
    if ( heads == NULL ) {
                                           
4000e750:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
4000e754:	12 80 00 16 	bne  4000e7ac <_Thread_queue_Flush_critical+0x80>
<== NOT EXECUTED
4000e758:	b0 10 20 00 	clr  %i0
                                      
4000e75c:	30 80 00 59 	b,a   4000e8c0 <_Thread_queue_Flush_critical+0x194>

     * updates, so clear it each time.  We unconditionally do the priority

     * update for the owner later if it exists.
                      
     */
                                                              
    _Thread_queue_Context_clear_priority_updates( queue_context );
   

                                                                     
    do_unblock = _Thread_queue_Extract_locked(
                       
4000e760:	96 10 00 1b 	mov  %i3, %o3
                                 
4000e764:	94 10 00 1d 	mov  %i5, %o2
                                 
4000e768:	92 10 00 19 	mov  %i1, %o1
                                 
4000e76c:	7f ff f0 ec 	call  4000ab1c <_Thread_queue_Extract_locked>
 
4000e770:	90 10 00 1c 	mov  %i4, %o0
                                 
      queue,
                                                         
      operations,
                                                    
      first,
                                                         
      queue_context
                                                  
    );
                                                               
    if ( do_unblock ) {
                                              
4000e774:	80 a2 20 00 	cmp  %o0, 0
                                   
4000e778:	22 80 00 0a 	be,a   4000e7a0 <_Thread_queue_Flush_critical+0x74>

4000e77c:	d0 07 00 00 	ld  [ %i4 ], %o0
                              
4000e780:	c2 07 60 38 	ld  [ %i5 + 0x38 ], %g1
                       
  old_last = tail->previous;
                                         
4000e784:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         
  the_node->next = tail;
                                             
4000e788:	e0 20 60 08 	st  %l0, [ %g1 + 8 ]
                          
      Scheduler_Node *scheduler_node;
                                

                                                                     
      scheduler_node = _Thread_Scheduler_get_home_node( first );
     
      _Chain_Append_unprotected(
                                     
4000e78c:	86 00 60 08 	add  %g1, 8, %g3
                              
  tail->previous = the_node;
                                         
4000e790:	c6 27 bf fc 	st  %g3, [ %fp + -4 ]
                         
  old_last->next = the_node;
                                         
4000e794:	c6 20 80 00 	st  %g3, [ %g2 ]
                              
  the_node->previous = old_last;
                                     
4000e798:	c4 20 60 0c 	st  %g2, [ %g1 + 0xc ]
                        
    heads = queue->heads;
                                            
4000e79c:	d0 07 00 00 	ld  [ %i4 ], %o0
                              
    if ( heads == NULL ) {
                                           
4000e7a0:	80 a2 20 00 	cmp  %o0, 0
                                   
4000e7a4:	02 80 00 0b 	be  4000e7d0 <_Thread_queue_Flush_critical+0xa4>

4000e7a8:	b0 06 20 01 	inc  %i0
                                      
    first = ( *operations->first )( heads );
                         
4000e7ac:	c2 06 60 10 	ld  [ %i1 + 0x10 ], %g1
                       
4000e7b0:	9f c0 40 00 	call  %g1
                                     
4000e7b4:	01 00 00 00 	nop 
                                          
    first = ( *filter )( first, queue, queue_context );
              
4000e7b8:	94 10 00 1b 	mov  %i3, %o2
                                 
4000e7bc:	9f c6 80 00 	call  %i2
                                     
4000e7c0:	92 10 00 1c 	mov  %i4, %o1
                                 
    if ( first == NULL ) {
                                           
4000e7c4:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
4000e7c8:	32 bf ff e6 	bne,a   4000e760 <_Thread_queue_Flush_critical+0x34>

4000e7cc:	c0 26 e0 14 	clr  [ %i3 + 0x14 ]
                           
  return _Chain_Immutable_head( the_chain )->next;
                   
4000e7d0:	c4 07 bf f4 	ld  [ %fp + -12 ], %g2
                        
  }
                                                                  

                                                                     
  node = _Chain_First( &unblock );
                                   
  tail = _Chain_Tail( &unblock );
                                    

                                                                     
  if ( node != tail ) {
                                              
4000e7d4:	80 a0 80 10 	cmp  %g2, %l0
                                 
4000e7d8:	02 80 00 3a 	be  4000e8c0 <_Thread_queue_Flush_critical+0x194>

4000e7dc:	01 00 00 00 	nop 
                                          
  disable_level = cpu_self->thread_dispatch_disable_level;
           
4000e7e0:	c2 01 a0 18 	ld  [ %g6 + 0x18 ], %g1
                       <== NOT EXECUTED
  cpu_self->thread_dispatch_disable_level = disable_level + 1;
       
4000e7e4:	82 00 60 01 	inc  %g1
                                      <== NOT EXECUTED
  return _Thread_Dispatch_disable_with_CPU( _Per_CPU_Get(), lock_context );

4000e7e8:	b4 10 00 06 	mov  %g6, %i2
                                 <== NOT EXECUTED
  cpu_self->thread_dispatch_disable_level = disable_level + 1;
       
4000e7ec:	c2 21 a0 18 	st  %g1, [ %g6 + 0x18 ]
                       <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000e7f0:	c2 06 c0 00 	ld  [ %i3 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000e7f4:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000e7f8:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
  _Thread_Clear_state( the_thread, STATES_BLOCKED );
                 
4000e7fc:	37 0c 00 57 	sethi  %hi(0x30015c00), %i3
                   <== NOT EXECUTED
4000e800:	b6 16 e3 ff 	or  %i3, 0x3ff, %i3	! 30015fff <RAM_SIZE+0x2fc15fff>
<== NOT EXECUTED
4000e804:	f8 00 80 00 	ld  [ %g2 ], %i4
                              <== NOT EXECUTED
4000e808:	fa 00 bf f8 	ld  [ %g2 + -8 ], %i5
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000e80c:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return psr;
                                                        
4000e810:	c2 27 bf ec 	st  %g1, [ %fp + -20 ]
                        
4000e814:	d0 07 60 60 	ld  [ %i5 + 0x60 ], %o0
                       
4000e818:	7f ff f5 ed 	call  4000bfcc <_Watchdog_Remove>
             
4000e81c:	92 07 60 68 	add  %i5, 0x68, %o1
                           
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000e820:	c2 07 bf ec 	ld  [ %fp + -20 ], %g1
                        <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000e824:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000e828:	01 00 00 00 	nop 
                                          
4000e82c:	92 10 00 1b 	mov  %i3, %o1
                                 
4000e830:	7f ff ff 53 	call  4000e57c <_Thread_Clear_state>
          
4000e834:	90 10 00 1d 	mov  %i5, %o0
                                 
      scheduler_node = SCHEDULER_NODE_OF_WAIT_PRIORITY_NODE( node );
 
      the_thread = _Scheduler_Node_get_owner( scheduler_node );
      
      _Thread_Remove_timer_and_unblock( the_thread, queue );
         

                                                                     
      node = next;
                                                   
    } while ( node != tail );
                                        
4000e838:	80 a7 00 10 	cmp  %i4, %l0
                                 
4000e83c:	12 bf ff f2 	bne  4000e804 <_Thread_queue_Flush_critical+0xd8>

4000e840:	84 10 00 1c 	mov  %i4, %g2
                                 

                                                                     
    if ( owner != NULL ) {
                                           
4000e844:	80 a4 60 00 	cmp  %l1, 0
                                   
4000e848:	02 80 00 0d 	be  4000e87c <_Thread_queue_Flush_critical+0x150>

4000e84c:	01 00 00 00 	nop 
                                          
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000e850:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return psr;
                                                        
4000e854:	c2 27 bf ec 	st  %g1, [ %fp + -20 ]
                        
  ( *scheduler->Operations.update_priority )(
                        
4000e858:	11 10 00 63 	sethi  %hi(0x40018c00), %o0
                   
4000e85c:	d4 04 60 38 	ld  [ %l1 + 0x38 ], %o2
                       
4000e860:	90 12 21 c8 	or  %o0, 0x1c8, %o0
                           
4000e864:	c4 02 20 18 	ld  [ %o0 + 0x18 ], %g2
                       
4000e868:	9f c0 80 00 	call  %g2
                                     
4000e86c:	92 10 00 11 	mov  %l1, %o1
                                 
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000e870:	c2 07 bf ec 	ld  [ %fp + -20 ], %g1
                        <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000e874:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000e878:	01 00 00 00 	nop 
                                          
  uint32_t disable_level = cpu_self->thread_dispatch_disable_level;
  
4000e87c:	c2 06 a0 18 	ld  [ %i2 + 0x18 ], %g1
                       
  if ( disable_level == 1 ) {
                                        
4000e880:	80 a0 60 01 	cmp  %g1, 1
                                   
4000e884:	02 80 00 05 	be  4000e898 <_Thread_queue_Flush_critical+0x16c>

4000e888:	82 00 7f ff 	add  %g1, -1, %g1
                             
    cpu_self->thread_dispatch_disable_level = disable_level - 1;
     
4000e88c:	c2 26 a0 18 	st  %g1, [ %i2 + 0x18 ]
                       
4000e890:	81 c7 e0 08 	ret 
                                          
4000e894:	81 e8 00 00 	restore 
                                      
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000e898:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
    if (
                                                             
4000e89c:	c4 0e a0 1c 	ldub  [ %i2 + 0x1c ], %g2
                     
4000e8a0:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000e8a4:	12 80 00 0c 	bne  4000e8d4 <_Thread_queue_Flush_critical+0x1a8>

4000e8a8:	92 10 00 01 	mov  %g1, %o1
                                 
      cpu_self->thread_dispatch_disable_level = 0;
                   
4000e8ac:	c0 26 a0 18 	clr  [ %i2 + 0x18 ]
                           <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000e8b0:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000e8b4:	01 00 00 00 	nop 
                                          
4000e8b8:	81 c7 e0 08 	ret 
                                          
4000e8bc:	81 e8 00 00 	restore 
                                      
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000e8c0:	c2 06 c0 00 	ld  [ %i3 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000e8c4:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000e8c8:	01 00 00 00 	nop 
                                          
  } else {
                                                           
    _Thread_queue_Queue_release( queue, &queue_context->Lock_context.Lock_context );

  }
                                                                  

                                                                     
  return flushed;
                                                    
}
                                                                    
4000e8cc:	81 c7 e0 08 	ret 
                                          
4000e8d0:	81 e8 00 00 	restore 
                                      
      _Thread_Do_dispatch( cpu_self, level );
                        
4000e8d4:	c2 27 bf ec 	st  %g1, [ %fp + -20 ]
                        
4000e8d8:	7f ff ff 3f 	call  4000e5d4 <_Thread_Do_dispatch>
          
4000e8dc:	90 10 00 1a 	mov  %i2, %o0
                                 
4000e8e0:	10 bf ff f4 	b  4000e8b0 <_Thread_queue_Flush_critical+0x184>

4000e8e4:	c2 07 bf ec 	ld  [ %fp + -20 ], %g1
                        

                                                                     

4000b95c <_Thread_queue_Flush_default_filter>: ) { (void) queue; (void) queue_context; return the_thread; }
4000b95c:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000b960:	01 00 00 00 	nop 
                                          

                                                                     

4000eeb8 <_Thread_queue_Flush_status_object_was_deleted>: Thread_Control *the_thread, Thread_queue_Queue *queue, Thread_queue_Context *queue_context ) { the_thread->Wait.return_code = STATUS_OBJECT_WAS_DELETED;
4000eeb8:	03 00 00 05 	sethi  %hi(0x1400), %g1
                       <== NOT EXECUTED
4000eebc:	82 10 62 07 	or  %g1, 0x207, %g1	! 1607 <_Configuration_Interrupt_stack_size+0x607>
<== NOT EXECUTED

                                                                     
  (void) queue;
                                                      
  (void) queue_context;
                                              
  return the_thread;
                                                 
}
                                                                    
4000eec0:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000eec4:	c2 22 20 4c 	st  %g1, [ %o0 + 0x4c ]
                       

                                                                     

4000b834 <_Thread_queue_Flush_status_unavailable>: Thread_Control *the_thread, Thread_queue_Queue *queue, Thread_queue_Context *queue_context ) { the_thread->Wait.return_code = STATUS_UNAVAILABLE;
4000b834:	03 00 00 04 	sethi  %hi(0x1000), %g1
                       <== NOT EXECUTED
4000b838:	82 10 60 0d 	or  %g1, 0xd, %g1	! 100d <_Configuration_Interrupt_stack_size+0xd>
<== NOT EXECUTED

                                                                     
  (void) queue;
                                                      
  (void) queue_context;
                                              
  return the_thread;
                                                 
}
                                                                    
4000b83c:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000b840:	c2 22 20 4c 	st  %g1, [ %o0 + 0x4c ]
                       

                                                                     

40011498 <_Thread_queue_Object_initialize>: queue->name = name;
40011498:	03 10 00 77 	sethi  %hi(0x4001dc00), %g1
                   <== NOT EXECUTED
  queue->heads = NULL;
                                               
4001149c:	c0 22 00 00 	clr  [ %o0 ]
                                  <== NOT EXECUTED
  queue->name = name;
                                                
400114a0:	82 10 62 c8 	or  %g1, 0x2c8, %g1
                           <== NOT EXECUTED
  queue->owner = NULL;
                                               
400114a4:	c0 22 20 04 	clr  [ %o0 + 4 ]
                              <== NOT EXECUTED
}
                                                                    

                                                                     
void _Thread_queue_Object_initialize( Thread_queue_Control *the_thread_queue )

{
                                                                    
  _Thread_queue_Initialize( the_thread_queue, _Thread_queue_Object_name );

}
                                                                    
400114a8:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
400114ac:	c2 22 20 08 	st  %g1, [ %o0 + 8 ]
                          

                                                                     

40014a5c <_Thread_queue_Queue_get_name_and_id>: const Thread_queue_Queue *queue, char *buffer, size_t buffer_size, Objects_Id *id ) {
40014a5c:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  const char *name;
                                                  

                                                                     
  name = queue->name;
                                                
40014a60:	c4 06 20 08 	ld  [ %i0 + 8 ], %g2
                          <== NOT EXECUTED

                                                                     
  if ( name == _Thread_queue_Object_name ) {
                         
40014a64:	03 10 00 a5 	sethi  %hi(0x40029400), %g1
                   <== NOT EXECUTED
40014a68:	82 10 61 50 	or  %g1, 0x150, %g1	! 40029550 <_Thread_queue_Object_name>
<== NOT EXECUTED
40014a6c:	80 a0 80 01 	cmp  %g2, %g1
                                 <== NOT EXECUTED
40014a70:	02 80 00 0c 	be  40014aa0 <_Thread_queue_Queue_get_name_and_id+0x44>
<== NOT EXECUTED
40014a74:	94 10 00 19 	mov  %i1, %o2
                                 <== NOT EXECUTED
      false,
                                                         
      buffer,
                                                        
      buffer_size
                                                    
    );
                                                               
  } else {
                                                           
    if ( name == NULL ) {
                                            
40014a78:	80 a0 a0 00 	cmp  %g2, 0
                                   <== NOT EXECUTED
40014a7c:	02 80 00 05 	be  40014a90 <_Thread_queue_Queue_get_name_and_id+0x34>
<== NOT EXECUTED
40014a80:	c0 26 c0 00 	clr  [ %i3 ]
                                  <== NOT EXECUTED
      name = _Thread_queue_Object_name;
                              
    }
                                                                

                                                                     
    *id = 0;
                                                         
    return strlcpy( buffer, name, buffer_size );
                     
40014a84:	b2 10 00 02 	mov  %g2, %i1
                                 <== NOT EXECUTED
40014a88:	40 00 14 c6 	call  40019da0 <strlcpy>
                      <== NOT EXECUTED
40014a8c:	91 e8 00 0a 	restore  %g0, %o2, %o0
                        <== NOT EXECUTED
      name = _Thread_queue_Object_name;
                              
40014a90:	84 10 00 01 	mov  %g1, %g2
                                 <== NOT EXECUTED
    return strlcpy( buffer, name, buffer_size );
                     
40014a94:	b0 10 00 0a 	mov  %o2, %i0
                                 <== NOT EXECUTED
40014a98:	40 00 14 c2 	call  40019da0 <strlcpy>
                      <== NOT EXECUTED
40014a9c:	93 e8 00 02 	restore  %g0, %g2, %o1
                        <== NOT EXECUTED
    *id = queue_object->Object.id;
                                   
40014aa0:	c4 06 3f f8 	ld  [ %i0 + -8 ], %g2
                         <== NOT EXECUTED
40014aa4:	c4 26 c0 00 	st  %g2, [ %i3 ]
                              <== NOT EXECUTED
    return _Objects_Name_to_string(
                                  
40014aa8:	96 10 00 1a 	mov  %i2, %o3
                                 <== NOT EXECUTED
40014aac:	c2 06 3f fc 	ld  [ %i0 + -4 ], %g1
                         <== NOT EXECUTED
40014ab0:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         <== NOT EXECUTED
40014ab4:	92 10 20 00 	clr  %o1
                                      <== NOT EXECUTED
40014ab8:	7f ff fe 0a 	call  400142e0 <_Objects_Name_to_string>
      <== NOT EXECUTED
40014abc:	90 07 bf fc 	add  %fp, -4, %o0
                             <== NOT EXECUTED
  }
                                                                  
}
                                                                    
40014ac0:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40014ac4:	91 e8 00 08 	restore  %g0, %o0, %o0
                        <== NOT EXECUTED

                                                                     

4000ac28 <_Thread_queue_Surrender>: Thread_queue_Heads *heads, Thread_Control *previous_owner, Thread_queue_Context *queue_context, const Thread_queue_Operations *operations ) {
4000ac28:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
4000ac2c:	c0 26 e0 14 	clr  [ %i3 + 0x14 ]
                           <== NOT EXECUTED
  Per_CPU_Control *cpu_self;
                                         

                                                                     
  _Assert( heads != NULL );
                                          

                                                                     
  _Thread_queue_Context_clear_priority_updates( queue_context );
     
  new_owner = ( *operations->surrender )(
                            
4000ac30:	96 10 00 1b 	mov  %i3, %o3
                                 <== NOT EXECUTED
4000ac34:	c2 07 20 0c 	ld  [ %i4 + 0xc ], %g1
                        <== NOT EXECUTED
4000ac38:	94 10 00 1a 	mov  %i2, %o2
                                 <== NOT EXECUTED
4000ac3c:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
4000ac40:	9f c0 40 00 	call  %g1
                                     <== NOT EXECUTED
4000ac44:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
    queue,
                                                           
    heads,
                                                           
    previous_owner,
                                                  
    queue_context
                                                    
  );
                                                                 
  queue->owner = new_owner;
                                          
4000ac48:	d0 26 20 04 	st  %o0, [ %i0 + 4 ]
                          <== NOT EXECUTED
  if ( success ) {
                                                   
4000ac4c:	c2 02 20 50 	ld  [ %o0 + 0x50 ], %g1
                       <== NOT EXECUTED
4000ac50:	80 a0 64 01 	cmp  %g1, 0x401
                               <== NOT EXECUTED
4000ac54:	02 80 00 1c 	be  4000acc4 <_Thread_queue_Surrender+0x9c>
   <== NOT EXECUTED
4000ac58:	ba 10 00 08 	mov  %o0, %i5
                                 <== NOT EXECUTED
  the_thread->Wait.flags = flags;
                                    
4000ac5c:	82 10 24 04 	mov  0x404, %g1
                               <== NOT EXECUTED
4000ac60:	c2 22 20 50 	st  %g1, [ %o0 + 0x50 ]
                       <== NOT EXECUTED
    unblock = true;
                                                  
4000ac64:	b4 10 20 01 	mov  1, %i2
                                   <== NOT EXECUTED
  disable_level = cpu_self->thread_dispatch_disable_level;
           
4000ac68:	c2 01 a0 18 	ld  [ %g6 + 0x18 ], %g1
                       <== NOT EXECUTED
  the_thread->Wait.queue = NULL;
                                     
4000ac6c:	c0 27 60 54 	clr  [ %i5 + 0x54 ]
                           <== NOT EXECUTED
  the_thread->Wait.operations = &_Thread_queue_Operations_default;
   
4000ac70:	05 10 00 66 	sethi  %hi(0x40019800), %g2
                   <== NOT EXECUTED
4000ac74:	84 10 a1 50 	or  %g2, 0x150, %g2	! 40019950 <_Thread_queue_Operations_default>
<== NOT EXECUTED
4000ac78:	c4 27 60 58 	st  %g2, [ %i5 + 0x58 ]
                       <== NOT EXECUTED
  cpu_self->thread_dispatch_disable_level = disable_level + 1;
       
4000ac7c:	82 00 60 01 	inc  %g1
                                      <== NOT EXECUTED
  return _Thread_Dispatch_disable_with_CPU( _Per_CPU_Get(), lock_context );

4000ac80:	b8 10 00 06 	mov  %g6, %i4
                                 <== NOT EXECUTED
  cpu_self->thread_dispatch_disable_level = disable_level + 1;
       
4000ac84:	c2 21 a0 18 	st  %g1, [ %g6 + 0x18 ]
                       <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000ac88:	c2 06 c0 00 	ld  [ %i3 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000ac8c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000ac90:	01 00 00 00 	nop 
                                          
  _Thread_queue_Queue_release(
                                       
    queue,
                                                           
    &queue_context->Lock_context.Lock_context
                        
  );
                                                                 

                                                                     
  _Thread_Priority_update( queue_context );
                          
4000ac94:	40 00 0e 0d 	call  4000e4c8 <_Thread_Priority_update>
      
4000ac98:	90 10 00 1b 	mov  %i3, %o0
                                 

                                                                     
  if ( unblock ) {
                                                   
4000ac9c:	80 8e a0 ff 	btst  0xff, %i2
                               
4000aca0:	12 80 00 0d 	bne  4000acd4 <_Thread_queue_Surrender+0xac>
  <== ALWAYS TAKEN
4000aca4:	01 00 00 00 	nop 
                                          
  uint32_t disable_level = cpu_self->thread_dispatch_disable_level;
  
4000aca8:	c2 07 20 18 	ld  [ %i4 + 0x18 ], %g1
                       <== NOT EXECUTED
  if ( disable_level == 1 ) {
                                        
4000acac:	80 a0 60 01 	cmp  %g1, 1
                                   <== NOT EXECUTED
4000acb0:	02 80 00 19 	be  4000ad14 <_Thread_queue_Surrender+0xec>
   <== NOT EXECUTED
4000acb4:	82 00 7f ff 	add  %g1, -1, %g1
                             <== NOT EXECUTED
    cpu_self->thread_dispatch_disable_level = disable_level - 1;
     
4000acb8:	c2 27 20 18 	st  %g1, [ %i4 + 0x18 ]
                       
    _Thread_Remove_timer_and_unblock( new_owner, queue );
            
  }
                                                                  

                                                                     
  _Thread_Dispatch_enable( cpu_self );
                               
}
                                                                    
4000acbc:	81 c7 e0 08 	ret 
                                          
4000acc0:	81 e8 00 00 	restore 
                                      
    the_thread->Wait.flags = desired_flags;
                          
4000acc4:	82 10 24 04 	mov  0x404, %g1
                               <== NOT EXECUTED
    unblock = false;
                                                 
4000acc8:	b4 10 20 00 	clr  %i2
                                      <== NOT EXECUTED
4000accc:	10 bf ff e7 	b  4000ac68 <_Thread_queue_Surrender+0x40>
    <== NOT EXECUTED
4000acd0:	c2 22 20 50 	st  %g1, [ %o0 + 0x50 ]
                       <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000acd4:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  return psr;
                                                        
4000acd8:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000acdc:	d0 07 60 60 	ld  [ %i5 + 0x60 ], %o0
                       
4000ace0:	40 00 04 bb 	call  4000bfcc <_Watchdog_Remove>
             
4000ace4:	92 07 60 68 	add  %i5, 0x68, %o1
                           
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000ace8:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000acec:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000acf0:	01 00 00 00 	nop 
                                          
  _Thread_Clear_state( the_thread, STATES_BLOCKED );
                 
4000acf4:	13 0c 00 57 	sethi  %hi(0x30015c00), %o1
                   
4000acf8:	90 10 00 1d 	mov  %i5, %o0
                                 
4000acfc:	40 00 0e 20 	call  4000e57c <_Thread_Clear_state>
          
4000ad00:	92 12 63 ff 	or  %o1, 0x3ff, %o1
                           
  uint32_t disable_level = cpu_self->thread_dispatch_disable_level;
  
4000ad04:	c2 07 20 18 	ld  [ %i4 + 0x18 ], %g1
                       
  if ( disable_level == 1 ) {
                                        
4000ad08:	80 a0 60 01 	cmp  %g1, 1
                                   
4000ad0c:	12 bf ff eb 	bne  4000acb8 <_Thread_queue_Surrender+0x90>
  
4000ad10:	82 00 7f ff 	add  %g1, -1, %g1
                             
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000ad14:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
    if (
                                                             
4000ad18:	c4 0f 20 1c 	ldub  [ %i4 + 0x1c ], %g2
                     
4000ad1c:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000ad20:	32 80 00 07 	bne,a   4000ad3c <_Thread_queue_Surrender+0x114>

4000ad24:	92 10 00 01 	mov  %g1, %o1
                                 
      cpu_self->thread_dispatch_disable_level = 0;
                   
4000ad28:	c0 27 20 18 	clr  [ %i4 + 0x18 ]
                           <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000ad2c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000ad30:	01 00 00 00 	nop 
                                          
4000ad34:	81 c7 e0 08 	ret 
                                          
4000ad38:	81 e8 00 00 	restore 
                                      
      _Thread_Do_dispatch( cpu_self, level );
                        
4000ad3c:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000ad40:	40 00 0e 25 	call  4000e5d4 <_Thread_Do_dispatch>
          
4000ad44:	90 10 00 1c 	mov  %i4, %o0
                                 
4000ad48:	10 bf ff f9 	b  4000ad2c <_Thread_queue_Surrender+0x104>
   
4000ad4c:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         

                                                                     

40008924 <_Timecounter_Bintime>: {
40008924:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
40008928:	33 10 00 6d 	sethi  %hi(0x4001b400), %i1
                   <== NOT EXECUTED
4000892c:	b2 16 61 00 	or  %i1, 0x100, %i1	! 4001b500 <timehands>
    <== NOT EXECUTED
		th = timehands;
                                                    
40008930:	fa 06 40 00 	ld  [ %i1 ], %i5
                              
40008934:	f4 07 60 70 	ld  [ %i5 + 0x70 ], %i2
                       
		*bt = th->th_bintime;
                                              
40008938:	c4 1f 60 30 	ldd  [ %i5 + 0x30 ], %g2
                      
4000893c:	c4 3e 00 00 	std  %g2, [ %i0 ]
                             
40008940:	c4 1f 60 38 	ldd  [ %i5 + 0x38 ], %g2
                      
40008944:	f6 07 40 00 	ld  [ %i5 ], %i3
                              
40008948:	c4 3e 20 08 	std  %g2, [ %i0 + 8 ]
                         
	return ((tc->tc_get_timecount(tc) - th->th_offset_count) &
          
4000894c:	90 10 00 1b 	mov  %i3, %o0
                                 
40008950:	c2 06 c0 00 	ld  [ %i3 ], %g1
                              
		bintime_addx(bt, th->th_scale * tc_delta(th));
                     
40008954:	f8 07 60 10 	ld  [ %i5 + 0x10 ], %i4
                       
	return ((tc->tc_get_timecount(tc) - th->th_offset_count) &
          
40008958:	9f c0 40 00 	call  %g1
                                     
4000895c:	e0 07 60 14 	ld  [ %i5 + 0x14 ], %l0
                       
40008960:	c4 1e 20 08 	ldd  [ %i0 + 8 ], %g2
                         
40008964:	c2 07 60 18 	ld  [ %i5 + 0x18 ], %g1
                       
40008968:	f6 06 e0 08 	ld  [ %i3 + 8 ], %i3
                          
4000896c:	90 22 00 01 	sub  %o0, %g1, %o0
                            
40008970:	90 0a 00 1b 	and  %o0, %i3, %o0
                            
		bintime_addx(bt, th->th_scale * tc_delta(th));
                     
40008974:	b8 5f 00 08 	smul  %i4, %o0, %i4
                           
40008978:	92 52 00 10 	umul  %o0, %l0, %o1
                           
4000897c:	91 40 00 00 	rd  %y, %o0
                                   
40008980:	90 07 00 08 	add  %i4, %o0, %o0
                            
40008984:	9a 82 40 03 	addcc  %o1, %g3, %o5
                          
40008988:	98 c2 00 02 	addxcc  %o0, %g2, %o4
                         
4000898c:	0a 80 00 12 	bcs  400089d4 <_Timecounter_Bintime+0xb0>
     
40008990:	88 10 20 00 	clr  %g4
                                      
	if (_u > _bt->frac)
                                                 
40008994:	80 a1 20 00 	cmp  %g4, 0
                                   
40008998:	02 80 00 06 	be  400089b0 <_Timecounter_Bintime+0x8c>
      
4000899c:	d8 3e 20 08 	std  %o4, [ %i0 + 8 ]
                         
		_bt->sec++;
                                                        
400089a0:	c4 1e 00 00 	ldd  [ %i0 ], %g2
                             
400089a4:	9a 80 e0 01 	addcc  %g3, 1, %o5
                            
400089a8:	98 40 a0 00 	addx  %g2, 0, %o4
                             
400089ac:	d8 3e 00 00 	std  %o4, [ %i0 ]
                             
	} while (gen == 0 || gen != th->th_generation);
                     
400089b0:	80 a6 a0 00 	cmp  %i2, 0
                                   
400089b4:	02 bf ff df 	be  40008930 <_Timecounter_Bintime+0xc>
       <== NEVER TAKEN
400089b8:	01 00 00 00 	nop 
                                          
400089bc:	c2 07 60 70 	ld  [ %i5 + 0x70 ], %g1
                       
400089c0:	80 a0 40 1a 	cmp  %g1, %i2
                                 
400089c4:	12 bf ff db 	bne  40008930 <_Timecounter_Bintime+0xc>
      
400089c8:	01 00 00 00 	nop 
                                          
}
                                                                    
400089cc:	81 c7 e0 08 	ret 
                                          
400089d0:	81 e8 00 00 	restore 
                                      
400089d4:	10 bf ff f0 	b  40008994 <_Timecounter_Bintime+0x70>
       
400089d8:	88 10 20 01 	mov  1, %g4
                                   

                                                                     

40009208 <_Timecounter_Binuptime>: {
40009208:	9d e3 bf a0 	save  %sp, -96, %sp
                           
4000920c:	33 10 00 4b 	sethi  %hi(0x40012c00), %i1
                   
40009210:	b2 16 62 c0 	or  %i1, 0x2c0, %i1	! 40012ec0 <timehands>
    
		th = timehands;
                                                    
40009214:	fa 06 40 00 	ld  [ %i1 ], %i5
                              
40009218:	f4 07 60 70 	ld  [ %i5 + 0x70 ], %i2
                       
		*bt = th->th_offset;
                                               
4000921c:	c4 1f 60 20 	ldd  [ %i5 + 0x20 ], %g2
                      
40009220:	c4 3e 00 00 	std  %g2, [ %i0 ]
                             
40009224:	c4 1f 60 28 	ldd  [ %i5 + 0x28 ], %g2
                      
40009228:	f6 07 40 00 	ld  [ %i5 ], %i3
                              
4000922c:	c4 3e 20 08 	std  %g2, [ %i0 + 8 ]
                         
	return ((tc->tc_get_timecount(tc) - th->th_offset_count) &
          
40009230:	90 10 00 1b 	mov  %i3, %o0
                                 
40009234:	c2 06 c0 00 	ld  [ %i3 ], %g1
                              
		bintime_addx(bt, th->th_scale * tc_delta(th));
                     
40009238:	f8 07 60 10 	ld  [ %i5 + 0x10 ], %i4
                       
	return ((tc->tc_get_timecount(tc) - th->th_offset_count) &
          
4000923c:	9f c0 40 00 	call  %g1
                                     
40009240:	e0 07 60 14 	ld  [ %i5 + 0x14 ], %l0
                       
40009244:	c4 1e 20 08 	ldd  [ %i0 + 8 ], %g2
                         
40009248:	c2 07 60 18 	ld  [ %i5 + 0x18 ], %g1
                       
4000924c:	f6 06 e0 08 	ld  [ %i3 + 8 ], %i3
                          
40009250:	90 22 00 01 	sub  %o0, %g1, %o0
                            
40009254:	90 0a 00 1b 	and  %o0, %i3, %o0
                            
		bintime_addx(bt, th->th_scale * tc_delta(th));
                     
40009258:	b8 5f 00 08 	smul  %i4, %o0, %i4
                           
4000925c:	92 52 00 10 	umul  %o0, %l0, %o1
                           
40009260:	91 40 00 00 	rd  %y, %o0
                                   
40009264:	90 07 00 08 	add  %i4, %o0, %o0
                            
40009268:	9a 82 40 03 	addcc  %o1, %g3, %o5
                          
4000926c:	98 c2 00 02 	addxcc  %o0, %g2, %o4
                         
40009270:	0a 80 00 12 	bcs  400092b8 <_Timecounter_Binuptime+0xb0>
   
40009274:	88 10 20 00 	clr  %g4
                                      
	if (_u > _bt->frac)
                                                 
40009278:	80 a1 20 00 	cmp  %g4, 0
                                   
4000927c:	02 80 00 06 	be  40009294 <_Timecounter_Binuptime+0x8c>
    
40009280:	d8 3e 20 08 	std  %o4, [ %i0 + 8 ]
                         
		_bt->sec++;
                                                        
40009284:	c4 1e 00 00 	ldd  [ %i0 ], %g2
                             
40009288:	9a 80 e0 01 	addcc  %g3, 1, %o5
                            
4000928c:	98 40 a0 00 	addx  %g2, 0, %o4
                             
40009290:	d8 3e 00 00 	std  %o4, [ %i0 ]
                             
	} while (gen == 0 || gen != th->th_generation);
                     
40009294:	80 a6 a0 00 	cmp  %i2, 0
                                   
40009298:	02 bf ff df 	be  40009214 <_Timecounter_Binuptime+0xc>
     <== NEVER TAKEN
4000929c:	01 00 00 00 	nop 
                                          
400092a0:	c2 07 60 70 	ld  [ %i5 + 0x70 ], %g1
                       
400092a4:	80 a0 40 1a 	cmp  %g1, %i2
                                 
400092a8:	12 bf ff db 	bne  40009214 <_Timecounter_Binuptime+0xc>
    
400092ac:	01 00 00 00 	nop 
                                          
}
                                                                    
400092b0:	81 c7 e0 08 	ret 
                                          
400092b4:	81 e8 00 00 	restore 
                                      
400092b8:	10 bf ff f0 	b  40009278 <_Timecounter_Binuptime+0x70>
     
400092bc:	88 10 20 01 	mov  1, %g4
                                   

                                                                     

40008a64 <_Timecounter_Getbintime>: {
40008a64:	07 10 00 6d 	sethi  %hi(0x4001b400), %g3
                   <== NOT EXECUTED
40008a68:	86 10 e1 00 	or  %g3, 0x100, %g3	! 4001b500 <timehands>
    <== NOT EXECUTED
		th = timehands;
                                                    
40008a6c:	c2 00 c0 00 	ld  [ %g3 ], %g1
                              
40008a70:	c4 00 60 70 	ld  [ %g1 + 0x70 ], %g2
                       
		*bt = th->th_bintime;
                                              
40008a74:	d8 18 60 30 	ldd  [ %g1 + 0x30 ], %o4
                      
40008a78:	d8 3a 00 00 	std  %o4, [ %o0 ]
                             
40008a7c:	d8 18 60 38 	ldd  [ %g1 + 0x38 ], %o4
                      
40008a80:	d8 3a 20 08 	std  %o4, [ %o0 + 8 ]
                         
	} while (gen == 0 || gen != th->th_generation);
                     
40008a84:	80 a0 a0 00 	cmp  %g2, 0
                                   
40008a88:	02 bf ff f9 	be  40008a6c <_Timecounter_Getbintime+0x8>
    <== NEVER TAKEN
40008a8c:	01 00 00 00 	nop 
                                          
40008a90:	c2 00 60 70 	ld  [ %g1 + 0x70 ], %g1
                       
40008a94:	80 a0 40 02 	cmp  %g1, %g2
                                 
40008a98:	12 bf ff f5 	bne  40008a6c <_Timecounter_Getbintime+0x8>
   
40008a9c:	01 00 00 00 	nop 
                                          
}
                                                                    
40008aa0:	81 c3 e0 08 	retl 
                                         
40008aa4:	01 00 00 00 	nop 
                                          

                                                                     

40004a14 <_Timecounter_Getbinuptime>: {
40004a14:	07 10 00 32 	sethi  %hi(0x4000c800), %g3
                   <== NOT EXECUTED
40004a18:	86 10 e2 08 	or  %g3, 0x208, %g3	! 4000ca08 <timehands>
    <== NOT EXECUTED
		th = timehands;
                                                    
40004a1c:	c2 00 c0 00 	ld  [ %g3 ], %g1
                              <== NOT EXECUTED
40004a20:	c4 00 60 70 	ld  [ %g1 + 0x70 ], %g2
                       <== NOT EXECUTED
		*bt = th->th_offset;
                                               
40004a24:	d8 18 60 20 	ldd  [ %g1 + 0x20 ], %o4
                      <== NOT EXECUTED
40004a28:	d8 3a 00 00 	std  %o4, [ %o0 ]
                             <== NOT EXECUTED
40004a2c:	d8 18 60 28 	ldd  [ %g1 + 0x28 ], %o4
                      <== NOT EXECUTED
40004a30:	d8 3a 20 08 	std  %o4, [ %o0 + 8 ]
                         <== NOT EXECUTED
	} while (gen == 0 || gen != th->th_generation);
                     
40004a34:	80 a0 a0 00 	cmp  %g2, 0
                                   <== NOT EXECUTED
40004a38:	02 bf ff f9 	be  40004a1c <_Timecounter_Getbinuptime+0x8>
  <== NOT EXECUTED
40004a3c:	01 00 00 00 	nop 
                                          
40004a40:	c2 00 60 70 	ld  [ %g1 + 0x70 ], %g1
                       
40004a44:	80 a0 40 02 	cmp  %g1, %g2
                                 
40004a48:	12 bf ff f5 	bne  40004a1c <_Timecounter_Getbinuptime+0x8>
 <== NEVER TAKEN
40004a4c:	01 00 00 00 	nop 
                                          
}
                                                                    
40004a50:	81 c3 e0 08 	retl 
                                         
40004a54:	01 00 00 00 	nop 
                                          

                                                                     

40004b88 <_Timecounter_Getmicrotime>: {
40004b88:	07 10 00 32 	sethi  %hi(0x4000c800), %g3
                   <== NOT EXECUTED
40004b8c:	86 10 e2 08 	or  %g3, 0x208, %g3	! 4000ca08 <timehands>
    <== NOT EXECUTED
		th = timehands;
                                                    
40004b90:	c2 00 c0 00 	ld  [ %g3 ], %g1
                              <== NOT EXECUTED
40004b94:	c4 00 60 70 	ld  [ %g1 + 0x70 ], %g2
                       <== NOT EXECUTED
		*tvp = th->th_microtime;
                                           
40004b98:	d8 18 60 40 	ldd  [ %g1 + 0x40 ], %o4
                      <== NOT EXECUTED
40004b9c:	d8 3a 00 00 	std  %o4, [ %o0 ]
                             <== NOT EXECUTED
40004ba0:	d8 18 60 48 	ldd  [ %g1 + 0x48 ], %o4
                      <== NOT EXECUTED
40004ba4:	d8 3a 20 08 	std  %o4, [ %o0 + 8 ]
                         <== NOT EXECUTED
	} while (gen == 0 || gen != th->th_generation);
                     
40004ba8:	80 a0 a0 00 	cmp  %g2, 0
                                   <== NOT EXECUTED
40004bac:	02 bf ff f9 	be  40004b90 <_Timecounter_Getmicrotime+0x8>
  <== NOT EXECUTED
40004bb0:	01 00 00 00 	nop 
                                          
40004bb4:	c2 00 60 70 	ld  [ %g1 + 0x70 ], %g1
                       
40004bb8:	80 a0 40 02 	cmp  %g1, %g2
                                 
40004bbc:	12 bf ff f5 	bne  40004b90 <_Timecounter_Getmicrotime+0x8>
 <== NEVER TAKEN
40004bc0:	01 00 00 00 	nop 
                                          
}
                                                                    
40004bc4:	81 c3 e0 08 	retl 
                                         
40004bc8:	01 00 00 00 	nop 
                                          

                                                                     

40004aac <_Timecounter_Getmicrouptime>: {
40004aac:	19 10 00 32 	sethi  %hi(0x4000c800), %o4
                   <== NOT EXECUTED
	_tv->tv_usec = ((uint64_t)1000000 * (uint32_t)(_bt->frac >> 32)) >> 32;

40004ab0:	1b 00 03 d0 	sethi  %hi(0xf4000), %o5
                      <== NOT EXECUTED
40004ab4:	98 13 22 08 	or  %o4, 0x208, %o4
                           <== NOT EXECUTED
40004ab8:	9a 13 62 40 	or  %o5, 0x240, %o5
                           <== NOT EXECUTED
		th = timehands;
                                                    
40004abc:	c2 03 00 00 	ld  [ %o4 ], %g1
                              <== NOT EXECUTED
40004ac0:	c8 00 60 70 	ld  [ %g1 + 0x70 ], %g4
                       <== NOT EXECUTED
	_tv->tv_sec = _bt->sec;
                                             
40004ac4:	c4 18 60 20 	ldd  [ %g1 + 0x20 ], %g2
                      <== NOT EXECUTED
40004ac8:	c4 3a 00 00 	std  %g2, [ %o0 ]
                             <== NOT EXECUTED
	_tv->tv_usec = ((uint64_t)1000000 * (uint32_t)(_bt->frac >> 32)) >> 32;

40004acc:	c4 00 60 28 	ld  [ %g1 + 0x28 ], %g2
                       <== NOT EXECUTED
40004ad0:	86 50 80 0d 	umul  %g2, %o5, %g3
                           <== NOT EXECUTED
40004ad4:	85 40 00 00 	rd  %y, %g2
                                   <== NOT EXECUTED
40004ad8:	c4 22 20 08 	st  %g2, [ %o0 + 8 ]
                          <== NOT EXECUTED
	} while (gen == 0 || gen != th->th_generation);
                     
40004adc:	80 a1 20 00 	cmp  %g4, 0
                                   <== NOT EXECUTED
40004ae0:	02 bf ff f7 	be  40004abc <_Timecounter_Getmicrouptime+0x10>
<== NOT EXECUTED
40004ae4:	01 00 00 00 	nop 
                                          
40004ae8:	c2 00 60 70 	ld  [ %g1 + 0x70 ], %g1
                       
40004aec:	80 a0 40 04 	cmp  %g1, %g4
                                 
40004af0:	12 bf ff f3 	bne  40004abc <_Timecounter_Getmicrouptime+0x10>
<== NEVER TAKEN
40004af4:	01 00 00 00 	nop 
                                          
}
                                                                    
40004af8:	81 c3 e0 08 	retl 
                                         
40004afc:	01 00 00 00 	nop 
                                          

                                                                     

40008aa8 <_Timecounter_Getnanotime>: {
40008aa8:	07 10 00 6d 	sethi  %hi(0x4001b400), %g3
                   <== NOT EXECUTED
40008aac:	86 10 e1 00 	or  %g3, 0x100, %g3	! 4001b500 <timehands>
    <== NOT EXECUTED
		th = timehands;
                                                    
40008ab0:	c2 00 c0 00 	ld  [ %g3 ], %g1
                              <== NOT EXECUTED
40008ab4:	c4 00 60 70 	ld  [ %g1 + 0x70 ], %g2
                       
		*tsp = th->th_nanotime;
                                            
40008ab8:	d8 18 60 50 	ldd  [ %g1 + 0x50 ], %o4
                      
40008abc:	d8 3a 00 00 	std  %o4, [ %o0 ]
                             
40008ac0:	d8 18 60 58 	ldd  [ %g1 + 0x58 ], %o4
                      
40008ac4:	d8 3a 20 08 	std  %o4, [ %o0 + 8 ]
                         
	} while (gen == 0 || gen != th->th_generation);
                     
40008ac8:	80 a0 a0 00 	cmp  %g2, 0
                                   
40008acc:	02 bf ff f9 	be  40008ab0 <_Timecounter_Getnanotime+0x8>
   <== NEVER TAKEN
40008ad0:	01 00 00 00 	nop 
                                          
40008ad4:	c2 00 60 70 	ld  [ %g1 + 0x70 ], %g1
                       
40008ad8:	80 a0 40 02 	cmp  %g1, %g2
                                 
40008adc:	12 bf ff f5 	bne  40008ab0 <_Timecounter_Getnanotime+0x8>
  <== NEVER TAKEN
40008ae0:	01 00 00 00 	nop 
                                          
}
                                                                    
40008ae4:	81 c3 e0 08 	retl 
                                         
40008ae8:	01 00 00 00 	nop 
                                          

                                                                     

40008a10 <_Timecounter_Getnanouptime>: {
40008a10:	19 10 00 6d 	sethi  %hi(0x4001b400), %o4
                   <== NOT EXECUTED
	_ts->tv_nsec = ((uint64_t)1000000000 *
                              
40008a14:	1b 0e e6 b2 	sethi  %hi(0x3b9ac800), %o5
                   <== NOT EXECUTED
40008a18:	98 13 21 00 	or  %o4, 0x100, %o4
                           <== NOT EXECUTED
40008a1c:	9a 13 62 00 	or  %o5, 0x200, %o5
                           <== NOT EXECUTED
		th = timehands;
                                                    
40008a20:	c2 03 00 00 	ld  [ %o4 ], %g1
                              <== NOT EXECUTED
40008a24:	c8 00 60 70 	ld  [ %g1 + 0x70 ], %g4
                       <== NOT EXECUTED
	_ts->tv_sec = _bt->sec;
                                             
40008a28:	c4 18 60 20 	ldd  [ %g1 + 0x20 ], %g2
                      
40008a2c:	c4 3a 00 00 	std  %g2, [ %o0 ]
                             
	    (uint32_t)(_bt->frac >> 32)) >> 32;
                             
40008a30:	c4 00 60 28 	ld  [ %g1 + 0x28 ], %g2
                       
	_ts->tv_nsec = ((uint64_t)1000000000 *
                              
40008a34:	86 50 80 0d 	umul  %g2, %o5, %g3
                           
40008a38:	85 40 00 00 	rd  %y, %g2
                                   
40008a3c:	c4 22 20 08 	st  %g2, [ %o0 + 8 ]
                          
	} while (gen == 0 || gen != th->th_generation);
                     
40008a40:	80 a1 20 00 	cmp  %g4, 0
                                   
40008a44:	02 bf ff f7 	be  40008a20 <_Timecounter_Getnanouptime+0x10>
<== NEVER TAKEN
40008a48:	01 00 00 00 	nop 
                                          
40008a4c:	c2 00 60 70 	ld  [ %g1 + 0x70 ], %g1
                       
40008a50:	80 a0 40 04 	cmp  %g1, %g4
                                 
40008a54:	12 bf ff f3 	bne  40008a20 <_Timecounter_Getnanouptime+0x10>
<== NEVER TAKEN
40008a58:	01 00 00 00 	nop 
                                          
}
                                                                    
40008a5c:	81 c3 e0 08 	retl 
                                         
40008a60:	01 00 00 00 	nop 
                                          

                                                                     

40008aec <_Timecounter_Install>: {
40008aec:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
	tc->tc_next = timecounters;
                                         
40008af0:	03 10 00 6d 	sethi  %hi(0x4001b400), %g1
                   <== NOT EXECUTED
40008af4:	c4 00 60 f8 	ld  [ %g1 + 0xf8 ], %g2	! 4001b4f8 <timecounters>
<== NOT EXECUTED
40008af8:	c4 26 20 28 	st  %g2, [ %i0 + 0x28 ]
                       <== NOT EXECUTED
	(void)tc->tc_get_timecount(tc);
                                     
40008afc:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
40008b00:	c4 06 00 00 	ld  [ %i0 ], %g2
                              <== NOT EXECUTED
40008b04:	9f c0 80 00 	call  %g2
                                     
40008b08:	f0 20 60 f8 	st  %i0, [ %g1 + 0xf8 ]
                       
	(void)tc->tc_get_timecount(tc);
                                     
40008b0c:	c2 06 00 00 	ld  [ %i0 ], %g1
                              
40008b10:	9f c0 40 00 	call  %g1
                                     
40008b14:	90 10 00 18 	mov  %i0, %o0
                                 
	timecounter = tc;
                                                   
40008b18:	03 10 00 6d 	sethi  %hi(0x4001b400), %g1
                   <== NOT EXECUTED
40008b1c:	f0 20 60 fc 	st  %i0, [ %g1 + 0xfc ]	! 4001b4fc <_Timecounter>
<== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

40008b20:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
        _Timecounter_Acquire(&lock_context);
                         
40008b24:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
        _Timecounter_Windup(new_boottimebin, &lock_context);
         
40008b28:	90 10 20 00 	clr  %o0
                                      
40008b2c:	7f ff fe a6 	call  400085c4 <_Timecounter_Windup>
          
40008b30:	92 07 bf fc 	add  %fp, -4, %o1
                             
}
                                                                    
40008b34:	81 c7 e0 08 	ret 
                                          
40008b38:	81 e8 00 00 	restore 
                                      

                                                                     

400089dc <_Timecounter_Microtime>: {
400089dc:	9d e3 bf 90 	save  %sp, -112, %sp
                          <== NOT EXECUTED
	bintime(&bt);
                                                       
400089e0:	7f ff ff d1 	call  40008924 <_Timecounter_Bintime>
         <== NOT EXECUTED
400089e4:	90 07 bf f0 	add  %fp, -16, %o0
                            <== NOT EXECUTED
	_tv->tv_sec = _bt->sec;
                                             
400089e8:	c4 1f bf f0 	ldd  [ %fp + -16 ], %g2
                       
400089ec:	c4 3e 00 00 	std  %g2, [ %i0 ]
                             
	_tv->tv_usec = ((uint64_t)1000000 * (uint32_t)(_bt->frac >> 32)) >> 32;

400089f0:	03 00 03 d0 	sethi  %hi(0xf4000), %g1
                      
400089f4:	c4 07 bf f8 	ld  [ %fp + -8 ], %g2
                         
400089f8:	82 10 62 40 	or  %g1, 0x240, %g1
                           
400089fc:	86 50 80 01 	umul  %g2, %g1, %g3
                           
40008a00:	85 40 00 00 	rd  %y, %g2
                                   
40008a04:	c4 26 20 08 	st  %g2, [ %i0 + 8 ]
                          
}
                                                                    
40008a08:	81 c7 e0 08 	ret 
                                          
40008a0c:	81 e8 00 00 	restore 
                                      

                                                                     

40007e70 <_Timecounter_Microuptime>: {
40007e70:	9d e3 bf 90 	save  %sp, -112, %sp
                          <== NOT EXECUTED
	binuptime(&bt);
                                                     
40007e74:	7f ff ff ac 	call  40007d24 <_Timecounter_Binuptime>
       <== NOT EXECUTED
40007e78:	90 07 bf f0 	add  %fp, -16, %o0
                            <== NOT EXECUTED
	_tv->tv_sec = _bt->sec;
                                             
40007e7c:	c4 1f bf f0 	ldd  [ %fp + -16 ], %g2
                       
40007e80:	c4 3e 00 00 	std  %g2, [ %i0 ]
                             
	_tv->tv_usec = ((uint64_t)1000000 * (uint32_t)(_bt->frac >> 32)) >> 32;

40007e84:	03 00 03 d0 	sethi  %hi(0xf4000), %g1
                      
40007e88:	c4 07 bf f8 	ld  [ %fp + -8 ], %g2
                         
40007e8c:	82 10 62 40 	or  %g1, 0x240, %g1
                           
40007e90:	86 50 80 01 	umul  %g2, %g1, %g3
                           
40007e94:	85 40 00 00 	rd  %y, %g2
                                   
40007e98:	c4 26 20 08 	st  %g2, [ %i0 + 8 ]
                          
}
                                                                    
40007e9c:	81 c7 e0 08 	ret 
                                          
40007ea0:	81 e8 00 00 	restore 
                                      

                                                                     

400090bc <_Timecounter_Nanotime>: {
400090bc:	9d e3 bf 90 	save  %sp, -112, %sp
                          <== NOT EXECUTED
	bintime(&bt);
                                                       
400090c0:	7f ff ff d1 	call  40009004 <_Timecounter_Bintime>
         <== NOT EXECUTED
400090c4:	90 07 bf f0 	add  %fp, -16, %o0
                            <== NOT EXECUTED
	_ts->tv_sec = _bt->sec;
                                             
400090c8:	c4 1f bf f0 	ldd  [ %fp + -16 ], %g2
                       
400090cc:	c4 3e 00 00 	std  %g2, [ %i0 ]
                             
	_ts->tv_nsec = ((uint64_t)1000000000 *
                              
400090d0:	03 0e e6 b2 	sethi  %hi(0x3b9ac800), %g1
                   
400090d4:	c4 07 bf f8 	ld  [ %fp + -8 ], %g2
                         
400090d8:	82 10 62 00 	or  %g1, 0x200, %g1
                           
400090dc:	86 50 80 01 	umul  %g2, %g1, %g3
                           
400090e0:	85 40 00 00 	rd  %y, %g2
                                   
400090e4:	c4 26 20 08 	st  %g2, [ %i0 + 8 ]
                          
}
                                                                    
400090e8:	81 c7 e0 08 	ret 
                                          
400090ec:	81 e8 00 00 	restore 
                                      

                                                                     

40009354 <_Timecounter_Nanouptime>: {
40009354:	9d e3 bf 90 	save  %sp, -112, %sp
                          <== NOT EXECUTED
	binuptime(&bt);
                                                     
40009358:	7f ff ff ac 	call  40009208 <_Timecounter_Binuptime>
       <== NOT EXECUTED
4000935c:	90 07 bf f0 	add  %fp, -16, %o0
                            <== NOT EXECUTED
	_ts->tv_sec = _bt->sec;
                                             
40009360:	c4 1f bf f0 	ldd  [ %fp + -16 ], %g2
                       
40009364:	c4 3e 00 00 	std  %g2, [ %i0 ]
                             
	_ts->tv_nsec = ((uint64_t)1000000000 *
                              
40009368:	03 0e e6 b2 	sethi  %hi(0x3b9ac800), %g1
                   
4000936c:	c4 07 bf f8 	ld  [ %fp + -8 ], %g2
                         
40009370:	82 10 62 00 	or  %g1, 0x200, %g1
                           
40009374:	86 50 80 01 	umul  %g2, %g1, %g3
                           
40009378:	85 40 00 00 	rd  %y, %g2
                                   
4000937c:	c4 26 20 08 	st  %g2, [ %i0 + 8 ]
                          
}
                                                                    
40009380:	81 c7 e0 08 	ret 
                                          
40009384:	81 e8 00 00 	restore 
                                      

                                                                     

40008890 <_Timecounter_Sbinuptime>: {
40008890:	9d e3 bf a0 	save  %sp, -96, %sp
                           
40008894:	33 10 00 6d 	sethi  %hi(0x4001b400), %i1
                   
40008898:	b2 16 61 00 	or  %i1, 0x100, %i1	! 4001b500 <timehands>
    
		th = timehands;
                                                    
4000889c:	fa 06 40 00 	ld  [ %i1 ], %i5
                              
400088a0:	f6 07 60 70 	ld  [ %i5 + 0x70 ], %i3
                       
  RTEMS_COMPILER_MEMORY_BARRIER();
                                   
400088a4:	f8 07 40 00 	ld  [ %i5 ], %i4
                              
	return ((tc->tc_get_timecount(tc) - th->th_offset_count) &
          
400088a8:	c2 07 00 00 	ld  [ %i4 ], %g1
                              
400088ac:	e2 07 60 24 	ld  [ %i5 + 0x24 ], %l1
                       
400088b0:	e0 07 60 28 	ld  [ %i5 + 0x28 ], %l0
                       
		sbt += (th->th_scale * tc_delta(th)) >> 32;
                        
400088b4:	f4 07 60 10 	ld  [ %i5 + 0x10 ], %i2
                       
400088b8:	e4 07 60 14 	ld  [ %i5 + 0x14 ], %l2
                       
	return ((tc->tc_get_timecount(tc) - th->th_offset_count) &
          
400088bc:	9f c0 40 00 	call  %g1
                                     
400088c0:	90 10 00 1c 	mov  %i4, %o0
                                 
400088c4:	c4 07 60 18 	ld  [ %i5 + 0x18 ], %g2
                       
	    tc->tc_counter_mask);
                                           
400088c8:	c2 07 20 08 	ld  [ %i4 + 8 ], %g1
                          
	} while (gen == 0 || gen != th->th_generation);
                     
400088cc:	80 a6 e0 00 	cmp  %i3, 0
                                   
400088d0:	02 bf ff f3 	be  4000889c <_Timecounter_Sbinuptime+0xc>
    <== NEVER TAKEN
400088d4:	01 00 00 00 	nop 
                                          
400088d8:	c6 07 60 70 	ld  [ %i5 + 0x70 ], %g3
                       
400088dc:	80 a0 c0 1b 	cmp  %g3, %i3
                                 
400088e0:	12 bf ff ef 	bne  4000889c <_Timecounter_Sbinuptime+0xc>
   
400088e4:	84 22 00 02 	sub  %o0, %g2, %g2
                            
	return ((tc->tc_get_timecount(tc) - th->th_offset_count) &
          
400088e8:	84 08 80 01 	and  %g2, %g1, %g2
                            
		sbt += (th->th_scale * tc_delta(th)) >> 32;
                        
400088ec:	b4 5e 80 02 	smul  %i2, %g2, %i2
                           
400088f0:	86 50 80 12 	umul  %g2, %l2, %g3
                           
400088f4:	85 40 00 00 	rd  %y, %g2
                                   
	return (((sbintime_t)_bt.sec << 32) + (_bt.frac >> 32));
            
400088f8:	9a 10 20 00 	clr  %o5
                                      
400088fc:	ba 06 80 02 	add  %i2, %g2, %i5
                            
40008900:	b2 83 40 10 	addcc  %o5, %l0, %i1
                          
40008904:	84 10 20 00 	clr  %g2
                                      
40008908:	b0 44 40 02 	addx  %l1, %g2, %i0
                           
4000890c:	b8 10 20 00 	clr  %i4
                                      
}
                                                                    
40008910:	86 87 40 19 	addcc  %i5, %i1, %g3
                          
40008914:	84 47 00 18 	addx  %i4, %i0, %g2
                           
40008918:	b2 10 00 03 	mov  %g3, %i1
                                 
4000891c:	81 c7 e0 08 	ret 
                                          
40008920:	91 e8 00 02 	restore  %g0, %g2, %o0
                        

                                                                     

40009d00 <_Timecounter_Set_clock>: {
40009d00:	9d e3 bf 80 	save  %sp, -128, %sp
                          <== NOT EXECUTED
	bt = *_bt;
                                                          
40009d04:	f8 1e 00 00 	ldd  [ %i0 ], %i4
                             <== NOT EXECUTED
40009d08:	c4 1e 20 08 	ldd  [ %i0 + 8 ], %g2
                         <== NOT EXECUTED
40009d0c:	f8 3f bf e0 	std  %i4, [ %fp + -32 ]
                       <== NOT EXECUTED
	binuptime(&bt2);
                                                    
40009d10:	90 07 bf f0 	add  %fp, -16, %o0
                            <== NOT EXECUTED
40009d14:	7f ff ff 22 	call  4000999c <_Timecounter_Binuptime>
       <== NOT EXECUTED
40009d18:	c4 3f bf e8 	std  %g2, [ %fp + -24 ]
                       <== NOT EXECUTED
40009d1c:	c4 1f bf f8 	ldd  [ %fp + -8 ], %g2
                        
40009d20:	f8 1f bf e8 	ldd  [ %fp + -24 ], %i4
                       
40009d24:	b6 a7 40 03 	subcc  %i5, %g3, %i3
                          
40009d28:	b4 e7 00 02 	subxcc  %i4, %g2, %i2
                         
40009d2c:	0a 80 00 12 	bcs  40009d74 <_Timecounter_Set_clock+0x74>
   
40009d30:	82 10 20 00 	clr  %g1
                                      
	_bt->frac -= _bt2->frac;
                                            
40009d34:	f4 3f bf e8 	std  %i2, [ %fp + -24 ]
                       
	if (_u < _bt->frac)
                                                 
40009d38:	80 a0 60 00 	cmp  %g1, 0
                                   
40009d3c:	02 80 00 05 	be  40009d50 <_Timecounter_Set_clock+0x50>
    
40009d40:	f4 1f bf e0 	ldd  [ %fp + -32 ], %i2
                       
		_bt->sec--;
                                                        
40009d44:	c4 1f bf e0 	ldd  [ %fp + -32 ], %g2
                       
40009d48:	b6 80 ff ff 	addcc  %g3, -1, %i3
                           
40009d4c:	b4 40 bf ff 	addx  %g2, -1, %i2
                            
	_bt->sec -= _bt2->sec;
                                              
40009d50:	f8 1f bf f0 	ldd  [ %fp + -16 ], %i4
                       
40009d54:	86 a6 c0 1d 	subcc  %i3, %i5, %g3
                          
40009d58:	84 66 80 1c 	subx  %i2, %i4, %g2
                           
	_Timecounter_Windup(&bt, lock_context);
                             
40009d5c:	92 10 00 19 	mov  %i1, %o1
                                 
40009d60:	c4 3f bf e0 	std  %g2, [ %fp + -32 ]
                       
40009d64:	7f ff fe 5b 	call  400096d0 <_Timecounter_Windup>
          
40009d68:	90 07 bf e0 	add  %fp, -32, %o0
                            
}
                                                                    
40009d6c:	81 c7 e0 08 	ret 
                                          
40009d70:	81 e8 00 00 	restore 
                                      
40009d74:	10 bf ff f0 	b  40009d34 <_Timecounter_Set_clock+0x34>
     
40009d78:	82 10 20 01 	mov  1, %g1
                                   

                                                                     

40008b3c <_Timecounter_Tick>: } } #else /* __rtems__ */ void _Timecounter_Tick(void) {
40008b3c:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
	Per_CPU_Control *cpu_self = _Per_CPU_Get();
                         
40008b40:	ba 10 00 06 	mov  %g6, %i5
                                 <== NOT EXECUTED
40008b44:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
        _Timecounter_Acquire(&lock_context);
                         
40008b48:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
        _Timecounter_Windup(new_boottimebin, &lock_context);
         
40008b4c:	90 10 20 00 	clr  %o0
                                      
40008b50:	7f ff fe 9d 	call  400085c4 <_Timecounter_Windup>
          
40008b54:	92 07 bf fc 	add  %fp, -4, %o1
                             

                                                                     
	if (_Per_CPU_Is_boot_processor(cpu_self)) {
                         
                tc_windup(NULL);
                                     
	}
                                                                   

                                                                     
	_Watchdog_Tick(cpu_self);
                                           
40008b58:	40 00 0d 67 	call  4000c0f4 <_Watchdog_Tick>
               
40008b5c:	90 10 00 1d 	mov  %i5, %o0
                                 
}
                                                                    
40008b60:	81 c7 e0 08 	ret 
                                          
40008b64:	81 e8 00 00 	restore 
                                      

                                                                     

40008b68 <_Timecounter_Tick_simple>: void _Timecounter_Tick_simple(uint32_t delta, uint32_t offset, ISR_lock_Context *lock_context) {
40008b68:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
	struct bintime bt;
                                                  
	struct timehands *th;
                                               
	uint32_t ogen;
                                                      

                                                                     
	th = timehands;
                                                     
40008b6c:	03 10 00 6d 	sethi  %hi(0x4001b400), %g1
                   
40008b70:	c2 00 61 00 	ld  [ %g1 + 0x100 ], %g1	! 4001b500 <timehands>

	ogen = th->th_generation;
                                           
	th->th_offset_count = offset;
                                       
40008b74:	f2 20 60 18 	st  %i1, [ %g1 + 0x18 ]
                       
	bintime_addx(&th->th_offset, th->th_scale * delta);
                 
40008b78:	c4 00 60 14 	ld  [ %g1 + 0x14 ], %g2
                       
40008b7c:	f8 18 60 28 	ldd  [ %g1 + 0x28 ], %i4
                      
40008b80:	c6 00 60 10 	ld  [ %g1 + 0x10 ], %g3
                       
40008b84:	86 58 c0 18 	smul  %g3, %i0, %g3
                           
	ogen = th->th_generation;
                                           
40008b88:	c8 00 60 70 	ld  [ %g1 + 0x70 ], %g4
                       
	bintime_addx(&th->th_offset, th->th_scale * delta);
                 
40008b8c:	b2 50 80 18 	umul  %g2, %i0, %i1
                           
40008b90:	b1 40 00 00 	rd  %y, %i0
                                   
40008b94:	b0 00 c0 18 	add  %g3, %i0, %i0
                            
40008b98:	96 86 40 1d 	addcc  %i1, %i5, %o3
                          
40008b9c:	94 c6 00 1c 	addxcc  %i0, %i4, %o2
                         
40008ba0:	0a 80 00 30 	bcs  40008c60 <_Timecounter_Tick_simple+0xf8>
 
40008ba4:	84 10 20 00 	clr  %g2
                                      
	if (_u > _bt->frac)
                                                 
40008ba8:	80 a0 a0 00 	cmp  %g2, 0
                                   
40008bac:	12 80 00 28 	bne  40008c4c <_Timecounter_Tick_simple+0xe4>
 
40008bb0:	d4 38 60 28 	std  %o2, [ %g1 + 0x28 ]
                      
40008bb4:	d8 18 60 20 	ldd  [ %g1 + 0x20 ], %o4
                      
40008bb8:	c4 18 60 68 	ldd  [ %g1 + 0x68 ], %g2
                      
40008bbc:	b2 80 c0 0b 	addcc  %g3, %o3, %i1
                          
40008bc0:	b0 c0 80 0a 	addxcc  %g2, %o2, %i0
                         
		_bt->sec++;
                                                        
40008bc4:	0a 80 00 29 	bcs  40008c68 <_Timecounter_Tick_simple+0x100>

40008bc8:	96 83 60 01 	addcc  %o5, 1, %o3
                            

                                                                     
	bt = th->th_offset;
                                                 
40008bcc:	94 10 00 0c 	mov  %o4, %o2
                                 
40008bd0:	96 10 00 0d 	mov  %o5, %o3
                                 
	_bt->sec += _bt2->sec;
                                              
40008bd4:	c4 18 60 60 	ldd  [ %g1 + 0x60 ], %g2
                      
40008bd8:	ba 82 c0 03 	addcc  %o3, %g3, %i5
                          
	bintime_add(&bt, &th->th_boottime);
                                 
	/* Update the UTC timestamps used by the get*() functions. */
       
	th->th_bintime = bt;
                                                
40008bdc:	f0 38 60 38 	std  %i0, [ %g1 + 0x38 ]
                      
40008be0:	b8 42 80 02 	addx  %o2, %g2, %i4
                           
	_tv->tv_usec = ((uint64_t)1000000 * (uint32_t)(_bt->frac >> 32)) >> 32;

40008be4:	15 00 03 d0 	sethi  %hi(0xf4000), %o2
                      
	_ts->tv_nsec = ((uint64_t)1000000000 *
                              
40008be8:	05 0e e6 b2 	sethi  %hi(0x3b9ac800), %g2
                   
	_tv->tv_usec = ((uint64_t)1000000 * (uint32_t)(_bt->frac >> 32)) >> 32;

40008bec:	94 12 a2 40 	or  %o2, 0x240, %o2
                           
	_ts->tv_nsec = ((uint64_t)1000000000 *
                              
40008bf0:	84 10 a2 00 	or  %g2, 0x200, %g2
                           
	_tv->tv_usec = ((uint64_t)1000000 * (uint32_t)(_bt->frac >> 32)) >> 32;

40008bf4:	96 56 00 0a 	umul  %i0, %o2, %o3
                           
40008bf8:	95 40 00 00 	rd  %y, %o2
                                   
	_ts->tv_nsec = ((uint64_t)1000000000 *
                              
40008bfc:	86 56 00 02 	umul  %i0, %g2, %g3
                           
40008c00:	85 40 00 00 	rd  %y, %g2
                                   
40008c04:	f8 38 60 30 	std  %i4, [ %g1 + 0x30 ]
                      

                                                                     
	/*
                                                                  
	 * Now that the struct timehands is again consistent, set the new
   
	 * generation number, making sure to not make it zero.
              
	 */
                                                                 
	if (++ogen == 0)
                                                    
40008c08:	88 81 20 01 	inccc  %g4
                                    
	_tv->tv_sec = _bt->sec;
                                             
40008c0c:	f8 38 60 40 	std  %i4, [ %g1 + 0x40 ]
                      
	_tv->tv_usec = ((uint64_t)1000000 * (uint32_t)(_bt->frac >> 32)) >> 32;

40008c10:	d4 20 60 48 	st  %o2, [ %g1 + 0x48 ]
                       
	_ts->tv_sec = _bt->sec;
                                             
40008c14:	f8 38 60 50 	std  %i4, [ %g1 + 0x50 ]
                      
40008c18:	12 80 00 03 	bne  40008c24 <_Timecounter_Tick_simple+0xbc>
 <== ALWAYS TAKEN
40008c1c:	c4 20 60 58 	st  %g2, [ %g1 + 0x58 ]
                       
		ogen = 1;
                                                          
40008c20:	88 10 20 01 	mov  1, %g4
                                   <== NOT EXECUTED
	th->th_generation = ogen;
                                           

                                                                     
	/* Go live with the new struct timehands. */
                        
	time_second = th->th_microtime.tv_sec;
                              
40008c24:	05 10 00 6d 	sethi  %hi(0x4001b400), %g2
                   
40008c28:	f8 38 a0 f0 	std  %i4, [ %g2 + 0xf0 ]	! 4001b4f0 <_Timecounter_Time_second>

	th->th_generation = ogen;
                                           
40008c2c:	c8 20 60 70 	st  %g4, [ %g1 + 0x70 ]
                       
	time_uptime = th->th_offset.sec;
                                    
40008c30:	03 10 00 6d 	sethi  %hi(0x4001b400), %g1
                   
40008c34:	da 20 60 e8 	st  %o5, [ %g1 + 0xe8 ]	! 4001b4e8 <_Timecounter_Time_uptime>

  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

40008c38:	c2 06 80 00 	ld  [ %i2 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40008c3c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40008c40:	01 00 00 00 	nop 
                                          

                                                                     
	_Timecounter_Release(lock_context);
                                 

                                                                     
	_Watchdog_Tick(_Per_CPU_Get_snapshot());
                            
40008c44:	40 00 0d 2c 	call  4000c0f4 <_Watchdog_Tick>
               
40008c48:	91 e8 00 06 	restore  %g0, %g6, %o0
                        
		_bt->sec++;
                                                        
40008c4c:	c4 18 60 20 	ldd  [ %g1 + 0x20 ], %g2
                      
40008c50:	9a 80 e0 01 	addcc  %g3, 1, %o5
                            
40008c54:	98 40 a0 00 	addx  %g2, 0, %o4
                             
40008c58:	10 bf ff d8 	b  40008bb8 <_Timecounter_Tick_simple+0x50>
   
40008c5c:	d8 38 60 20 	std  %o4, [ %g1 + 0x20 ]
                      
40008c60:	10 bf ff d2 	b  40008ba8 <_Timecounter_Tick_simple+0x40>
   
40008c64:	84 10 20 01 	mov  1, %g2
                                   
		_bt->sec++;
                                                        
40008c68:	10 bf ff db 	b  40008bd4 <_Timecounter_Tick_simple+0x6c>
   
40008c6c:	94 43 20 00 	addx  %o4, 0, %o2
                             

                                                                     

4000baf4 <_Timespec_Add_to>: uint32_t _Timespec_Add_to( struct timespec *time, const struct timespec *add ) {
4000baf4:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  uint32_t seconds = add->tv_sec;
                                    
4000baf8:	f8 1e 40 00 	ldd  [ %i1 ], %i4
                             <== NOT EXECUTED

                                                                     
  /* Add the basics */
                                               
  time->tv_sec += add->tv_sec;
                                       
  time->tv_nsec += add->tv_nsec;
                                     
4000bafc:	c2 06 60 08 	ld  [ %i1 + 8 ], %g1
                          <== NOT EXECUTED
  time->tv_sec += add->tv_sec;
                                       
4000bb00:	d8 1e 00 00 	ldd  [ %i0 ], %o4
                             <== NOT EXECUTED
  time->tv_nsec += add->tv_nsec;
                                     
4000bb04:	c4 06 20 08 	ld  [ %i0 + 8 ], %g2
                          <== NOT EXECUTED
  time->tv_sec += add->tv_sec;
                                       
4000bb08:	b6 87 40 0d 	addcc  %i5, %o5, %i3
                          <== NOT EXECUTED
  time->tv_nsec += add->tv_nsec;
                                     
4000bb0c:	84 00 80 01 	add  %g2, %g1, %g2
                            <== NOT EXECUTED
  time->tv_sec += add->tv_sec;
                                       
4000bb10:	b4 47 00 0c 	addx  %i4, %o4, %i2
                           <== NOT EXECUTED
  time->tv_nsec += add->tv_nsec;
                                     
4000bb14:	c4 26 20 08 	st  %g2, [ %i0 + 8 ]
                          <== NOT EXECUTED
  uint32_t seconds = add->tv_sec;
                                    
4000bb18:	88 10 00 1d 	mov  %i5, %g4
                                 <== NOT EXECUTED
  time->tv_sec += add->tv_sec;
                                       
4000bb1c:	f4 3e 00 00 	std  %i2, [ %i0 ]
                             <== NOT EXECUTED

                                                                     
  /* Now adjust it so nanoseconds is in range */
                     
  while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
            
4000bb20:	3b 0e e6 b2 	sethi  %hi(0x3b9ac800), %i5
                   <== NOT EXECUTED
4000bb24:	ba 17 61 ff 	or  %i5, 0x1ff, %i5	! 3b9ac9ff <RAM_SIZE+0x3b5ac9ff>
<== NOT EXECUTED
4000bb28:	80 a0 80 1d 	cmp  %g2, %i5
                                 <== NOT EXECUTED
4000bb2c:	08 80 00 10 	bleu  4000bb6c <_Timespec_Add_to+0x78>
        <== NOT EXECUTED
4000bb30:	82 10 00 02 	mov  %g2, %g1
                                 
4000bb34:	86 86 e0 01 	addcc  %i3, 1, %g3
                            
    time->tv_nsec -= TOD_NANOSECONDS_PER_SECOND;
                     
4000bb38:	39 31 19 4d 	sethi  %hi(0xc4653400), %i4
                   
4000bb3c:	84 46 a0 00 	addx  %i2, 0, %g2
                             
4000bb40:	b8 17 22 00 	or  %i4, 0x200, %i4
                           
    time->tv_sec++;
                                                  
4000bb44:	b6 10 00 03 	mov  %g3, %i3
                                 
4000bb48:	86 80 e0 01 	inccc  %g3
                                    
4000bb4c:	b4 10 00 02 	mov  %g2, %i2
                                 
    time->tv_nsec -= TOD_NANOSECONDS_PER_SECOND;
                     
4000bb50:	82 00 40 1c 	add  %g1, %i4, %g1
                            
4000bb54:	84 40 a0 00 	addx  %g2, 0, %g2
                             
  while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
            
4000bb58:	80 a0 40 1d 	cmp  %g1, %i5
                                 
4000bb5c:	18 bf ff fa 	bgu  4000bb44 <_Timespec_Add_to+0x50>
         <== NEVER TAKEN
4000bb60:	88 01 20 01 	inc  %g4
                                      
4000bb64:	c2 26 20 08 	st  %g1, [ %i0 + 8 ]
                          
4000bb68:	f4 3e 00 00 	std  %i2, [ %i0 ]
                             
    seconds++;
                                                       
  }
                                                                  

                                                                     
  return seconds;
                                                    
}
                                                                    
4000bb6c:	81 c7 e0 08 	ret 
                                          
4000bb70:	91 e8 00 04 	restore  %g0, %g4, %o0
                        

                                                                     

4000d38c <_Timespec_Divide>: const struct timespec *lhs, const struct timespec *rhs, uint32_t *ival_percentage, uint32_t *fval_percentage ) {
4000d38c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
   *  in a 64-bit integer.
                                           
   */
                                                                
  left   = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
       
  left  += lhs->tv_nsec;
                                             
  right  = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
       
  right += rhs->tv_nsec;
                                             
4000d390:	de 06 60 08 	ld  [ %i1 + 8 ], %o7
                          <== NOT EXECUTED
  right  = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
       
4000d394:	c8 06 40 00 	ld  [ %i1 ], %g4
                              <== NOT EXECUTED
4000d398:	c4 06 60 04 	ld  [ %i1 + 4 ], %g2
                          <== NOT EXECUTED
4000d39c:	03 0e e6 b2 	sethi  %hi(0x3b9ac800), %g1
                   <== NOT EXECUTED
  right += rhs->tv_nsec;
                                             
4000d3a0:	b9 3b e0 1f 	sra  %o7, 0x1f, %i4
                           <== NOT EXECUTED
  right  = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
       
4000d3a4:	82 10 62 00 	or  %g1, 0x200, %g1
                           <== NOT EXECUTED
4000d3a8:	86 50 80 01 	umul  %g2, %g1, %g3
                           <== NOT EXECUTED
4000d3ac:	85 40 00 00 	rd  %y, %g2
                                   <== NOT EXECUTED
4000d3b0:	88 59 00 01 	smul  %g4, %g1, %g4
                           <== NOT EXECUTED
  right += rhs->tv_nsec;
                                             
4000d3b4:	96 83 c0 03 	addcc  %o7, %g3, %o3
                          <== NOT EXECUTED
  right  = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
       
4000d3b8:	84 01 00 02 	add  %g4, %g2, %g2
                            <== NOT EXECUTED
  right += rhs->tv_nsec;
                                             
4000d3bc:	94 47 00 02 	addx  %i4, %g2, %o2
                           <== NOT EXECUTED

                                                                     
  if ( right == 0 ) {
                                                
4000d3c0:	80 92 80 0b 	orcc  %o2, %o3, %g0
                           <== NOT EXECUTED
4000d3c4:	02 80 00 20 	be  4000d444 <_Timespec_Divide+0xb8>
          <== NOT EXECUTED
4000d3c8:	11 00 00 61 	sethi  %hi(0x18400), %o0
                      
  left  += lhs->tv_nsec;
                                             
4000d3cc:	f2 06 20 08 	ld  [ %i0 + 8 ], %i1
                          
  left   = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
       
4000d3d0:	c8 06 00 00 	ld  [ %i0 ], %g4
                              
4000d3d4:	c4 06 20 04 	ld  [ %i0 + 4 ], %g2
                          
4000d3d8:	86 50 80 01 	umul  %g2, %g1, %g3
                           
4000d3dc:	85 40 00 00 	rd  %y, %g2
                                   
4000d3e0:	88 59 00 01 	smul  %g4, %g1, %g4
                           
  left  += lhs->tv_nsec;
                                             
4000d3e4:	b9 3e 60 1f 	sra  %i1, 0x1f, %i4
                           
  left   = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
       
4000d3e8:	84 01 00 02 	add  %g4, %g2, %g2
                            
  left  += lhs->tv_nsec;
                                             
4000d3ec:	b2 86 40 03 	addcc  %i1, %g3, %i1
                          
4000d3f0:	b0 47 00 02 	addx  %i4, %g2, %i0
                           
   *  Put it back in the timespec result.
                            
   *
                                                                 
   *  TODO: Rounding on the last digit of the fval.
                  
   */
                                                                

                                                                     
  answer = (left * 100000) / right;
                                  
4000d3f4:	90 12 22 a0 	or  %o0, 0x2a0, %o0
                           
4000d3f8:	82 5e 00 08 	smul  %i0, %o0, %g1
                           
4000d3fc:	92 56 40 08 	umul  %i1, %o0, %o1
                           
4000d400:	91 40 00 00 	rd  %y, %o0
                                   
4000d404:	40 00 0e 34 	call  40010cd4 <__udivdi3>
                    
4000d408:	90 00 40 08 	add  %g1, %o0, %o0
                            

                                                                     
  *ival_percentage = answer / 1000;
                                  
4000d40c:	94 10 20 00 	clr  %o2
                                      
  answer = (left * 100000) / right;
                                  
4000d410:	b8 10 00 08 	mov  %o0, %i4
                                 
4000d414:	ba 10 00 09 	mov  %o1, %i5
                                 
  *ival_percentage = answer / 1000;
                                  
4000d418:	40 00 0e 2f 	call  40010cd4 <__udivdi3>
                    
4000d41c:	96 10 23 e8 	mov  0x3e8, %o3
                               
4000d420:	d2 26 80 00 	st  %o1, [ %i2 ]
                              
  *fval_percentage = answer % 1000;
                                  
4000d424:	94 10 20 00 	clr  %o2
                                      
4000d428:	96 10 23 e8 	mov  0x3e8, %o3
                               
4000d42c:	90 10 00 1c 	mov  %i4, %o0
                                 
4000d430:	40 00 0e a2 	call  40010eb8 <__umoddi3>
                    
4000d434:	92 10 00 1d 	mov  %i5, %o1
                                 
4000d438:	d2 26 c0 00 	st  %o1, [ %i3 ]
                              
}
                                                                    
4000d43c:	81 c7 e0 08 	ret 
                                          
4000d440:	81 e8 00 00 	restore 
                                      
    *ival_percentage = 0;
                                            
4000d444:	c0 26 80 00 	clr  [ %i2 ]
                                  
    *fval_percentage = 0;
                                            
4000d448:	c0 26 c0 00 	clr  [ %i3 ]
                                  
    return;
                                                          
4000d44c:	81 c7 e0 08 	ret 
                                          
4000d450:	81 e8 00 00 	restore 
                                      

                                                                     

4000d830 <_Timespec_Divide_by_integer>: void _Timespec_Divide_by_integer( const struct timespec *time, uint32_t iterations, struct timespec *result ) {
4000d830:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
   *  For math simplicity just convert the timespec to nanoseconds
   
   *  in a 64-bit integer.
                                           
   */
                                                                
  t  = time->tv_sec;
                                                 
  t *= TOD_NANOSECONDS_PER_SECOND;
                                   
  t += time->tv_nsec;
                                                
4000d834:	fa 06 20 08 	ld  [ %i0 + 8 ], %i5
                          <== NOT EXECUTED
  t  = time->tv_sec;
                                                 
4000d838:	c6 06 00 00 	ld  [ %i0 ], %g3
                              <== NOT EXECUTED
4000d83c:	c4 06 20 04 	ld  [ %i0 + 4 ], %g2
                          <== NOT EXECUTED
  t += time->tv_nsec;
                                                
4000d840:	91 3f 60 1f 	sra  %i5, 0x1f, %o0
                           <== NOT EXECUTED
  t *= TOD_NANOSECONDS_PER_SECOND;
                                   
4000d844:	03 0e e6 b2 	sethi  %hi(0x3b9ac800), %g1
                   <== NOT EXECUTED
4000d848:	82 10 62 00 	or  %g1, 0x200, %g1	! 3b9aca00 <RAM_SIZE+0x3b5aca00>
<== NOT EXECUTED
4000d84c:	88 58 c0 01 	smul  %g3, %g1, %g4
                           <== NOT EXECUTED
4000d850:	86 50 80 01 	umul  %g2, %g1, %g3
                           <== NOT EXECUTED
4000d854:	85 40 00 00 	rd  %y, %g2
                                   <== NOT EXECUTED

                                                                     
  /*
                                                                 
   *  Divide to get nanoseconds per iteration
                        
   */
                                                                

                                                                     
  t /= iterations;
                                                   
4000d858:	ba 87 40 03 	addcc  %i5, %g3, %i5
                          <== NOT EXECUTED
  t *= TOD_NANOSECONDS_PER_SECOND;
                                   
4000d85c:	84 01 00 02 	add  %g4, %g2, %g2
                            <== NOT EXECUTED
  t /= iterations;
                                                   
4000d860:	94 10 20 00 	clr  %o2
                                      <== NOT EXECUTED
4000d864:	b8 42 00 02 	addx  %o0, %g2, %i4
                           <== NOT EXECUTED
4000d868:	96 10 00 19 	mov  %i1, %o3
                                 <== NOT EXECUTED
4000d86c:	90 10 00 1c 	mov  %i4, %o0
                                 <== NOT EXECUTED
4000d870:	40 00 0d e0 	call  40010ff0 <__udivdi3>
                    <== NOT EXECUTED
4000d874:	92 10 00 1d 	mov  %i5, %o1
                                 <== NOT EXECUTED

                                                                     
  /*
                                                                 
   *  Put it back in the timespec result
                             
   */
                                                                

                                                                     
  result->tv_sec  = t / TOD_NANOSECONDS_PER_SECOND;
                  
4000d878:	94 10 20 00 	clr  %o2
                                      
  t /= iterations;
                                                   
4000d87c:	b8 10 00 08 	mov  %o0, %i4
                                 
4000d880:	ba 10 00 09 	mov  %o1, %i5
                                 
  result->tv_sec  = t / TOD_NANOSECONDS_PER_SECOND;
                  
4000d884:	17 0e e6 b2 	sethi  %hi(0x3b9ac800), %o3
                   
4000d888:	40 00 0d da 	call  40010ff0 <__udivdi3>
                    
4000d88c:	96 12 e2 00 	or  %o3, 0x200, %o3	! 3b9aca00 <RAM_SIZE+0x3b5aca00>

4000d890:	d0 3e 80 00 	std  %o0, [ %i2 ]
                             
  result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND;
                  
4000d894:	94 10 20 00 	clr  %o2
                                      
4000d898:	17 0e e6 b2 	sethi  %hi(0x3b9ac800), %o3
                   
4000d89c:	90 10 00 1c 	mov  %i4, %o0
                                 
4000d8a0:	96 12 e2 00 	or  %o3, 0x200, %o3
                           
4000d8a4:	40 00 0e 4c 	call  400111d4 <__umoddi3>
                    
4000d8a8:	92 10 00 1d 	mov  %i5, %o1
                                 
4000d8ac:	d2 26 a0 08 	st  %o1, [ %i2 + 8 ]
                          
}
                                                                    
4000d8b0:	81 c7 e0 08 	ret 
                                          
4000d8b4:	81 e8 00 00 	restore 
                                      

                                                                     

4000c4bc <_Timespec_From_ticks>: struct timespec *time ) { uint32_t usecs; usecs = ticks * rtems_configuration_get_microseconds_per_tick();
4000c4bc:	03 10 00 5c 	sethi  %hi(0x40017000), %g1
                   <== NOT EXECUTED
4000c4c0:	c2 00 62 1c 	ld  [ %g1 + 0x21c ], %g1	! 4001721c <Configuration+0x14>
<== NOT EXECUTED
4000c4c4:	90 5a 00 01 	smul  %o0, %g1, %o0
                           <== NOT EXECUTED

                                                                     
  time->tv_sec  = usecs / TOD_MICROSECONDS_PER_SECOND;
               
  time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) *
            
4000c4c8:	05 00 03 d0 	sethi  %hi(0xf4000), %g2
                      <== NOT EXECUTED
  time->tv_sec  = usecs / TOD_MICROSECONDS_PER_SECOND;
               
4000c4cc:	03 10 c6 f7 	sethi  %hi(0x431bdc00), %g1
                   <== NOT EXECUTED
  time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) *
            
4000c4d0:	84 10 a2 40 	or  %g2, 0x240, %g2
                           <== NOT EXECUTED
  time->tv_sec  = usecs / TOD_MICROSECONDS_PER_SECOND;
               
4000c4d4:	82 10 62 83 	or  %g1, 0x283, %g1
                           <== NOT EXECUTED
4000c4d8:	c0 22 40 00 	clr  [ %o1 ]
                                  <== NOT EXECUTED
4000c4dc:	80 52 00 01 	umul  %o0, %g1, %g0
                           <== NOT EXECUTED
4000c4e0:	83 40 00 00 	rd  %y, %g1
                                   <== NOT EXECUTED
4000c4e4:	83 30 60 12 	srl  %g1, 0x12, %g1
                           <== NOT EXECUTED
  time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) *
            
4000c4e8:	84 58 40 02 	smul  %g1, %g2, %g2
                           <== NOT EXECUTED
  time->tv_sec  = usecs / TOD_MICROSECONDS_PER_SECOND;
               
4000c4ec:	c2 22 60 04 	st  %g1, [ %o1 + 4 ]
                          <== NOT EXECUTED
  time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) *
            
4000c4f0:	90 22 00 02 	sub  %o0, %g2, %o0
                            <== NOT EXECUTED
4000c4f4:	90 5a 23 e8 	smul  %o0, 0x3e8, %o0
                         <== NOT EXECUTED
                    TOD_NANOSECONDS_PER_MICROSECOND;
                 
}
                                                                    
4000c4f8:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000c4fc:	d0 22 60 08 	st  %o0, [ %o1 + 8 ]
                          

                                                                     

400104bc <_Timespec_Get_as_nanoseconds>: #include <rtems/score/todimpl.h> uint64_t _Timespec_Get_as_nanoseconds( const struct timespec *time ) {
400104bc:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  return ( ((uint64_t) time->tv_sec) * 1000000000ULL ) + time->tv_nsec;

400104c0:	fa 06 20 08 	ld  [ %i0 + 8 ], %i5
                          
400104c4:	c8 06 00 00 	ld  [ %i0 ], %g4
                              
400104c8:	c4 06 20 04 	ld  [ %i0 + 4 ], %g2
                          
400104cc:	b1 3f 60 1f 	sra  %i5, 0x1f, %i0
                           
400104d0:	03 0e e6 b2 	sethi  %hi(0x3b9ac800), %g1
                   
400104d4:	82 10 62 00 	or  %g1, 0x200, %g1	! 3b9aca00 <RAM_SIZE+0x3b5aca00>

400104d8:	86 50 80 01 	umul  %g2, %g1, %g3
                           
400104dc:	85 40 00 00 	rd  %y, %g2
                                   
400104e0:	88 59 00 01 	smul  %g4, %g1, %g4
                           
}
                                                                    
400104e4:	9a 80 c0 1d 	addcc  %g3, %i5, %o5
                          
  return ( ((uint64_t) time->tv_sec) * 1000000000ULL ) + time->tv_nsec;

400104e8:	84 01 00 02 	add  %g4, %g2, %g2
                            
}
                                                                    
400104ec:	b2 10 00 0d 	mov  %o5, %i1
                                 
400104f0:	98 40 80 18 	addx  %g2, %i0, %o4
                           
400104f4:	81 c7 e0 08 	ret 
                                          
400104f8:	91 e8 00 0c 	restore  %g0, %o4, %o0
                        

                                                                     

4000c088 <_Timespec_Is_valid>: bool _Timespec_Is_valid( const struct timespec *time ) { if ( !time )
4000c088:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
4000c08c:	02 80 00 0b 	be  4000c0b8 <_Timespec_Is_valid+0x30>
        <== NOT EXECUTED
4000c090:	82 10 20 00 	clr  %g1
                                      
    return false;
                                                    

                                                                     
  if ( time->tv_sec < 0 )
                                            
4000c094:	c4 02 00 00 	ld  [ %o0 ], %g2
                              
4000c098:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000c09c:	06 80 00 07 	bl  4000c0b8 <_Timespec_Is_valid+0x30>
        
4000c0a0:	01 00 00 00 	nop 
                                          
    return false;
                                                    

                                                                     
  if ( time->tv_nsec < 0 )
                                           
    return false;
                                                    

                                                                     
  if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
                 
4000c0a4:	c4 02 20 08 	ld  [ %o0 + 8 ], %g2
                          
4000c0a8:	03 0e e6 b2 	sethi  %hi(0x3b9ac800), %g1
                   
4000c0ac:	82 10 61 ff 	or  %g1, 0x1ff, %g1	! 3b9ac9ff <RAM_SIZE+0x3b5ac9ff>

4000c0b0:	80 a0 40 02 	cmp  %g1, %g2
                                 
4000c0b4:	82 60 3f ff 	subx  %g0, -1, %g1
                            
    return false;
                                                    

                                                                     
  return true;
                                                       
}
                                                                    
4000c0b8:	81 c3 e0 08 	retl 
                                         
4000c0bc:	90 08 60 01 	and  %g1, 1, %o0
                              

                                                                     

40010bc0 <_Timespec_Less_than>: bool _Timespec_Less_than( const struct timespec *lhs, const struct timespec *rhs ) { if ( lhs->tv_sec < rhs->tv_sec )
40010bc0:	c4 02 00 00 	ld  [ %o0 ], %g2
                              
40010bc4:	c2 02 40 00 	ld  [ %o1 ], %g1
                              
40010bc8:	c8 02 20 04 	ld  [ %o0 + 4 ], %g4
                          
40010bcc:	80 a0 40 02 	cmp  %g1, %g2
                                 
40010bd0:	14 80 00 13 	bg  40010c1c <_Timespec_Less_than+0x5c>
       <== NEVER TAKEN
40010bd4:	c6 02 60 04 	ld  [ %o1 + 4 ], %g3
                          
40010bd8:	02 80 00 0f 	be  40010c14 <_Timespec_Less_than+0x54>
       <== ALWAYS TAKEN
40010bdc:	80 a0 c0 04 	cmp  %g3, %g4
                                 
    return true;
                                                     

                                                                     
  if ( lhs->tv_sec > rhs->tv_sec )
                                   
40010be0:	80 a0 80 01 	cmp  %g2, %g1
                                 <== NOT EXECUTED
40010be4:	34 80 00 0a 	bg,a   40010c0c <_Timespec_Less_than+0x4c>
    <== NEVER TAKEN
40010be8:	90 10 20 00 	clr  %o0
                                      <== NOT EXECUTED
40010bec:	02 80 00 0f 	be  40010c28 <_Timespec_Less_than+0x68>
       <== ALWAYS TAKEN
40010bf0:	80 a1 00 03 	cmp  %g4, %g3
                                 
    return false;
                                                    

                                                                     
  /* ASSERT: lhs->tv_sec == rhs->tv_sec */
                           
  if ( lhs->tv_nsec < rhs->tv_nsec )
                                 
40010bf4:	c4 02 20 08 	ld  [ %o0 + 8 ], %g2
                          <== NOT EXECUTED
40010bf8:	c2 02 60 08 	ld  [ %o1 + 8 ], %g1
                          
40010bfc:	80 a0 80 01 	cmp  %g2, %g1
                                 
40010c00:	06 80 00 03 	bl  40010c0c <_Timespec_Less_than+0x4c>
       
40010c04:	90 10 20 01 	mov  1, %o0
                                   
    return false;
                                                    
40010c08:	90 10 20 00 	clr  %o0
                                      
    return true;
                                                     

                                                                     
  return false;
                                                      
}
                                                                    
40010c0c:	81 c3 e0 08 	retl 
                                         
40010c10:	90 0a 20 01 	and  %o0, 1, %o0
                              
  if ( lhs->tv_sec < rhs->tv_sec )
                                   
40010c14:	08 bf ff f4 	bleu  40010be4 <_Timespec_Less_than+0x24>
     
40010c18:	80 a0 80 01 	cmp  %g2, %g1
                                 
    return true;
                                                     
40010c1c:	90 10 20 01 	mov  1, %o0
                                   
}
                                                                    
40010c20:	81 c3 e0 08 	retl 
                                         
40010c24:	90 0a 20 01 	and  %o0, 1, %o0
                              
  if ( lhs->tv_sec > rhs->tv_sec )
                                   
40010c28:	28 bf ff f4 	bleu,a   40010bf8 <_Timespec_Less_than+0x38>
  
40010c2c:	c4 02 20 08 	ld  [ %o0 + 8 ], %g2
                          
    return false;
                                                    
40010c30:	10 bf ff f7 	b  40010c0c <_Timespec_Less_than+0x4c>
        
40010c34:	90 10 20 00 	clr  %o0
                                      

                                                                     

40010c38 <_Timespec_Subtract>: void _Timespec_Subtract( const struct timespec *start, const struct timespec *end, struct timespec *result ) {
40010c38:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
40010c3c:	d8 1e 00 00 	ldd  [ %i0 ], %o4
                             <== NOT EXECUTED
40010c40:	d4 1e 40 00 	ldd  [ %i1 ], %o2
                             
40010c44:	ba a2 c0 0d 	subcc  %o3, %o5, %i5
                          

                                                                     
  if (end->tv_nsec < start->tv_nsec) {
                               
40010c48:	c2 06 60 08 	ld  [ %i1 + 8 ], %g1
                          
40010c4c:	c4 06 20 08 	ld  [ %i0 + 8 ], %g2
                          
40010c50:	b8 62 80 0c 	subx  %o2, %o4, %i4
                           
40010c54:	80 a0 40 02 	cmp  %g1, %g2
                                 
40010c58:	26 80 00 07 	bl,a   40010c74 <_Timespec_Subtract+0x3c>
     
40010c5c:	b2 87 7f ff 	addcc  %i5, -1, %i1
                           
    result->tv_sec  = end->tv_sec - start->tv_sec - 1;
               
    result->tv_nsec =
                                                
      (TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
  
  } else {
                                                           
    result->tv_sec  = end->tv_sec - start->tv_sec;
                   
    result->tv_nsec = end->tv_nsec - start->tv_nsec;
                 
40010c60:	82 20 40 02 	sub  %g1, %g2, %g1
                            
    result->tv_sec  = end->tv_sec - start->tv_sec;
                   
40010c64:	f8 3e 80 00 	std  %i4, [ %i2 ]
                             
    result->tv_nsec = end->tv_nsec - start->tv_nsec;
                 
40010c68:	c2 26 a0 08 	st  %g1, [ %i2 + 8 ]
                          
  }
                                                                  
}
                                                                    
40010c6c:	81 c7 e0 08 	ret 
                                          
40010c70:	81 e8 00 00 	restore 
                                      
      (TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
  
40010c74:	82 20 40 02 	sub  %g1, %g2, %g1
                            
    result->tv_sec  = end->tv_sec - start->tv_sec - 1;
               
40010c78:	b0 47 3f ff 	addx  %i4, -1, %i0
                            
      (TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
  
40010c7c:	05 0e e6 b2 	sethi  %hi(0x3b9ac800), %g2
                   
    result->tv_sec  = end->tv_sec - start->tv_sec - 1;
               
40010c80:	f0 3e 80 00 	std  %i0, [ %i2 ]
                             
      (TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
  
40010c84:	84 10 a2 00 	or  %g2, 0x200, %g2
                           
40010c88:	82 00 40 02 	add  %g1, %g2, %g1
                            
    result->tv_nsec =
                                                
40010c8c:	c2 26 a0 08 	st  %g1, [ %i2 + 8 ]
                          
40010c90:	81 c7 e0 08 	ret 
                                          
40010c94:	81 e8 00 00 	restore 
                                      

                                                                     

40026fc8 <_Timespec_To_ticks>: */ uint32_t _Timespec_To_ticks( const struct timespec *time ) {
40026fc8:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  uint32_t  ticks;
                                                   
  uint32_t  nanoseconds_per_tick;
                                    

                                                                     
  if ( (time->tv_sec == 0) && (time->tv_nsec == 0) )
                 
40026fcc:	c2 06 00 00 	ld  [ %i0 ], %g1
                              <== NOT EXECUTED
40026fd0:	fa 06 20 04 	ld  [ %i0 + 4 ], %i5
                          <== NOT EXECUTED
40026fd4:	80 90 40 1d 	orcc  %g1, %i5, %g0
                           <== NOT EXECUTED
40026fd8:	12 80 00 06 	bne  40026ff0 <_Timespec_To_ticks+0x28>
       <== NOT EXECUTED
40026fdc:	01 00 00 00 	nop 
                                          
40026fe0:	c2 06 20 08 	ld  [ %i0 + 8 ], %g1
                          
40026fe4:	80 a0 60 00 	cmp  %g1, 0
                                   
40026fe8:	02 80 00 11 	be  4002702c <_Timespec_To_ticks+0x64>
        
40026fec:	90 10 20 00 	clr  %o0
                                      
  /**
                                                                
   *  We should ensure the ticks not be truncated by integer division.  We

   *  need to have it be greater than or equal to the requested time.  It

   *  should not be shorter.
                                         
   */
                                                                
  ticks                 = time->tv_sec * TOD_TICKS_PER_SECOND;
       
40026ff0:	40 00 5c 16 	call  4003e048 <TOD_TICKS_PER_SECOND_method>
  
40026ff4:	01 00 00 00 	nop 
                                          
  nanoseconds_per_tick  = rtems_configuration_get_nanoseconds_per_tick();

  ticks                += time->tv_nsec / nanoseconds_per_tick;
      
40026ff8:	c2 06 20 08 	ld  [ %i0 + 8 ], %g1
                          
  nanoseconds_per_tick  = rtems_configuration_get_nanoseconds_per_tick();

40026ffc:	05 10 01 7a 	sethi  %hi(0x4005e800), %g2
                   
40027000:	c4 00 a0 a4 	ld  [ %g2 + 0xa4 ], %g2	! 4005e8a4 <_Watchdog_Nanoseconds_per_tick>

  ticks                += time->tv_nsec / nanoseconds_per_tick;
      
40027004:	81 80 20 00 	wr  %g0, %y
                                   
40027008:	01 00 00 00 	nop 
                                          
4002700c:	01 00 00 00 	nop 
                                          
40027010:	01 00 00 00 	nop 
                                          
40027014:	b0 70 40 02 	udiv  %g1, %g2, %i0
                           
  ticks                 = time->tv_sec * TOD_TICKS_PER_SECOND;
       
40027018:	90 5a 00 1d 	smul  %o0, %i5, %o0
                           

                                                                     
  if ( (time->tv_nsec % nanoseconds_per_tick) != 0 )
                 
4002701c:	84 5e 00 02 	smul  %i0, %g2, %g2
                           
40027020:	82 20 40 02 	sub  %g1, %g2, %g1
                            
    ticks += 1;
                                                      
40027024:	80 a0 00 01 	cmp  %g0, %g1
                                 
40027028:	90 42 00 18 	addx  %o0, %i0, %o0
                           

                                                                     
  return ticks;
                                                      
}
                                                                    
4002702c:	81 c7 e0 08 	ret 
                                          
40027030:	91 e8 00 08 	restore  %g0, %o0, %o0
                        

                                                                     

4000bc18 <_User_extensions_Add_set>: __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000bc18:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  old_last = tail->previous;
                                         
4000bc1c:	05 10 00 6d 	sethi  %hi(0x4001b400), %g2
                   
4000bc20:	84 10 a1 d8 	or  %g2, 0x1d8, %g2	! 4001b5d8 <_User_extensions_List>

4000bc24:	c6 00 a0 08 	ld  [ %g2 + 8 ], %g3
                          
  the_node->next = tail;
                                             
4000bc28:	88 00 a0 04 	add  %g2, 4, %g4
                              
4000bc2c:	c8 22 00 00 	st  %g4, [ %o0 ]
                              
  tail->previous = the_node;
                                         
4000bc30:	d0 20 a0 08 	st  %o0, [ %g2 + 8 ]
                          
  old_last->next = the_node;
                                         
4000bc34:	d0 20 c0 00 	st  %o0, [ %g3 ]
                              
  the_node->previous = old_last;
                                     
4000bc38:	c6 22 20 04 	st  %g3, [ %o0 + 4 ]
                          
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000bc3c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000bc40:	01 00 00 00 	nop 
                                          

                                                                     
  /*
                                                                 
   * If a switch handler is present, append it to the switch chain.
  
   */
                                                                

                                                                     
  if ( the_extension->Callouts.thread_switch != NULL ) {
             
4000bc44:	c2 02 20 24 	ld  [ %o0 + 0x24 ], %g1
                       
4000bc48:	80 a0 60 00 	cmp  %g1, 0
                                   
4000bc4c:	02 80 00 0f 	be  4000bc88 <_User_extensions_Add_set+0x70>
  
4000bc50:	01 00 00 00 	nop 
                                          
    ISR_Level level;
                                                 

                                                                     
    the_extension->Switch.thread_switch =
                            
4000bc54:	c2 22 20 10 	st  %g1, [ %o0 + 0x10 ]
                       <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000bc58:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  old_last = tail->previous;
                                         
4000bc5c:	05 10 00 6d 	sethi  %hi(0x4001b400), %g2
                   <== NOT EXECUTED
4000bc60:	84 10 a2 3c 	or  %g2, 0x23c, %g2	! 4001b63c <_User_extensions_Switches_list>
<== NOT EXECUTED
4000bc64:	c6 00 a0 08 	ld  [ %g2 + 8 ], %g3
                          <== NOT EXECUTED
  the_node->next = tail;
                                             
4000bc68:	88 00 a0 04 	add  %g2, 4, %g4
                              <== NOT EXECUTED
4000bc6c:	c8 22 20 08 	st  %g4, [ %o0 + 8 ]
                          <== NOT EXECUTED
      the_extension->Callouts.thread_switch;
                         

                                                                     
    _Per_CPU_Acquire_all( level );
                                   
    _Chain_Initialize_node( &the_extension->Switch.Node );
           
4000bc70:	88 02 20 08 	add  %o0, 8, %g4
                              <== NOT EXECUTED
  tail->previous = the_node;
                                         
4000bc74:	c8 20 a0 08 	st  %g4, [ %g2 + 8 ]
                          <== NOT EXECUTED
  old_last->next = the_node;
                                         
4000bc78:	c8 20 c0 00 	st  %g4, [ %g3 ]
                              <== NOT EXECUTED
  the_node->previous = old_last;
                                     
4000bc7c:	c6 22 20 0c 	st  %g3, [ %o0 + 0xc ]
                        <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000bc80:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000bc84:	01 00 00 00 	nop 
                                          
      &_User_extensions_Switches_list,
                               
      &the_extension->Switch.Node
                                    
    );
                                                               
    _Per_CPU_Release_all( level );
                                   
  }
                                                                  
}
                                                                    
4000bc88:	81 c3 e0 08 	retl 
                                         
4000bc8c:	01 00 00 00 	nop 
                                          

                                                                     

4000bd80 <_User_extensions_Fatal_visitor>: void _User_extensions_Fatal_visitor( Thread_Control *executing, void *arg, const User_extensions_Table *callouts ) {
4000bd80:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  User_extensions_fatal_extension callout = callouts->fatal;
         
4000bd84:	c2 06 a0 1c 	ld  [ %i2 + 0x1c ], %g1
                       <== NOT EXECUTED

                                                                     
  if ( callout != NULL ) {
                                           
4000bd88:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000bd8c:	02 80 00 06 	be  4000bda4 <_User_extensions_Fatal_visitor+0x24>
<== NOT EXECUTED
4000bd90:	01 00 00 00 	nop 
                                          
    const User_extensions_Fatal_context *ctx = arg;
                  

                                                                     
    (*callout)( ctx->source, false, ctx->error );
                    
4000bd94:	d4 06 60 04 	ld  [ %i1 + 4 ], %o2
                          
4000bd98:	d0 06 40 00 	ld  [ %i1 ], %o0
                              
4000bd9c:	9f c0 40 00 	call  %g1
                                     
4000bda0:	92 10 20 00 	clr  %o1
                                      
  }
                                                                  
}
                                                                    
4000bda4:	81 c7 e0 08 	ret 
                                          
4000bda8:	81 e8 00 00 	restore 
                                      

                                                                     

4000bf48 <_User_extensions_Handler_initialization>: #include <rtems/config.h> #include <rtems/score/userextimpl.h> #include <rtems/score/wkspace.h> void _User_extensions_Handler_initialization(void) {
4000bf48:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  User_extensions_Switch_control *initial_extension_switch_controls;
 
  const User_extensions_Table    *initial_table;
                     
  uint32_t                        n;
                                 
  uint32_t                        i;
                                 

                                                                     
  n = rtems_configuration_get_number_of_initial_extensions();
        
4000bf4c:	39 10 00 63 	sethi  %hi(0x40018c00), %i4
                   
4000bf50:	b8 17 20 e8 	or  %i4, 0xe8, %i4	! 40018ce8 <Configuration>
 
4000bf54:	f6 07 20 34 	ld  [ %i4 + 0x34 ], %i3
                       

                                                                     
  initial_extension_switch_controls = _Workspace_Allocate_or_fatal_error(

    n * sizeof( *initial_extension_switch_controls )
                 
4000bf58:	87 2e e0 01 	sll  %i3, 1, %g3
                              
4000bf5c:	86 00 c0 1b 	add  %g3, %i3, %g3
                            
4000bf60:	bb 28 e0 02 	sll  %g3, 2, %i5
                              
  initial_extension_switch_controls = _Workspace_Allocate_or_fatal_error(

4000bf64:	40 00 01 2b 	call  4000c410 <_Workspace_Allocate_or_fatal_error>

4000bf68:	90 10 00 1d 	mov  %i5, %o0
                                 
  );
                                                                 

                                                                     
  initial_table = rtems_configuration_get_user_extension_table();
    

                                                                     
  for ( i = 0 ; i < n ; ++i ) {
                                      
4000bf6c:	80 a6 e0 00 	cmp  %i3, 0
                                   
4000bf70:	02 80 00 15 	be  4000bfc4 <_User_extensions_Handler_initialization+0x7c>
<== NEVER TAKEN
4000bf74:	c2 07 20 38 	ld  [ %i4 + 0x38 ], %g1
                       
  old_last = tail->previous;
                                         
4000bf78:	09 10 00 6d 	sethi  %hi(0x4001b400), %g4
                   
4000bf7c:	86 02 00 1d 	add  %o0, %i5, %g3
                            
4000bf80:	88 11 22 3c 	or  %g4, 0x23c, %g4
                           
4000bf84:	82 00 60 10 	add  %g1, 0x10, %g1
                           
  the_node->next = tail;
                                             
4000bf88:	ba 01 20 04 	add  %g4, 4, %i5
                              
    User_extensions_thread_switch_extension callout;
                 

                                                                     
    callout = initial_table[ i ].thread_switch;
                      
4000bf8c:	c4 00 40 00 	ld  [ %g1 ], %g2
                              

                                                                     
    if ( callout != NULL ) {
                                         
4000bf90:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000bf94:	22 80 00 09 	be,a   4000bfb8 <_User_extensions_Handler_initialization+0x70>

4000bf98:	90 02 20 0c 	add  %o0, 0xc, %o0
                            
      User_extensions_Switch_control *c;
                             

                                                                     
      c = &initial_extension_switch_controls[ i ];
                   
      c->thread_switch = callout;
                                    
4000bf9c:	c4 22 20 08 	st  %g2, [ %o0 + 8 ]
                          
  old_last = tail->previous;
                                         
4000bfa0:	c4 01 20 08 	ld  [ %g4 + 8 ], %g2
                          
  the_node->next = tail;
                                             
4000bfa4:	fa 22 00 00 	st  %i5, [ %o0 ]
                              
  tail->previous = the_node;
                                         
4000bfa8:	d0 21 20 08 	st  %o0, [ %g4 + 8 ]
                          
  old_last->next = the_node;
                                         
4000bfac:	d0 20 80 00 	st  %o0, [ %g2 ]
                              
  the_node->previous = old_last;
                                     
4000bfb0:	c4 22 20 04 	st  %g2, [ %o0 + 4 ]
                          
4000bfb4:	90 02 20 0c 	add  %o0, 0xc, %o0
                            
  for ( i = 0 ; i < n ; ++i ) {
                                      
4000bfb8:	80 a2 00 03 	cmp  %o0, %g3
                                 
4000bfbc:	12 bf ff f4 	bne  4000bf8c <_User_extensions_Handler_initialization+0x44>

4000bfc0:	82 00 60 24 	add  %g1, 0x24, %g1
                           
      _Chain_Initialize_node( &c->Node );
                            
      _Chain_Append_unprotected( &_User_extensions_Switches_list, &c->Node );

    }
                                                                
  }
                                                                  
}
                                                                    
4000bfc4:	81 c7 e0 08 	ret 
                                          
4000bfc8:	81 e8 00 00 	restore 
                                      

                                                                     

4000bdd0 <_User_extensions_Iterate>: void _User_extensions_Iterate( void *arg, User_extensions_Visitor visitor, Chain_Iterator_direction direction ) {
4000bdd0:	9d e3 bf 88 	save  %sp, -120, %sp
                          <== NOT EXECUTED
  User_extensions_Iterator     iter;
                                 
  ISR_lock_Context             lock_context;
                         

                                                                     
  executing = _Thread_Get_executing();
                               

                                                                     
  initial_begin = rtems_configuration_get_user_extension_table();
    
4000bdd4:	03 10 00 63 	sethi  %hi(0x40018c00), %g1
                   <== NOT EXECUTED
4000bdd8:	82 10 60 e8 	or  %g1, 0xe8, %g1	! 40018ce8 <Configuration>
 
  initial_end =
                                                      
    initial_begin + rtems_configuration_get_number_of_initial_extensions();

4000bddc:	c4 00 60 34 	ld  [ %g1 + 0x34 ], %g2
                       
  initial_begin = rtems_configuration_get_user_extension_table();
    
4000bde0:	e0 00 60 38 	ld  [ %g1 + 0x38 ], %l0
                       
    initial_begin + rtems_configuration_get_number_of_initial_extensions();

4000bde4:	bb 28 a0 03 	sll  %g2, 3, %i5
                              
4000bde8:	f8 01 a0 20 	ld  [ %g6 + 0x20 ], %i4
                       
4000bdec:	ba 07 40 02 	add  %i5, %g2, %i5
                            

                                                                     
  if ( direction == CHAIN_ITERATOR_FORWARD ) {
                       
4000bdf0:	80 a6 a0 00 	cmp  %i2, 0
                                   
    initial_begin + rtems_configuration_get_number_of_initial_extensions();

4000bdf4:	bb 2f 60 02 	sll  %i5, 2, %i5
                              
  if ( direction == CHAIN_ITERATOR_FORWARD ) {
                       
4000bdf8:	12 80 00 50 	bne  4000bf38 <_User_extensions_Iterate+0x168>

4000bdfc:	ba 04 00 1d 	add  %l0, %i5, %i5
                            
    initial_current = initial_begin;
                                 

                                                                     
    while ( initial_current != initial_end ) {
                       
4000be00:	80 a4 00 1d 	cmp  %l0, %i5
                                 
4000be04:	02 80 00 0a 	be  4000be2c <_User_extensions_Iterate+0x5c>
  <== NEVER TAKEN
4000be08:	b6 10 00 10 	mov  %l0, %i3
                                 
      (*visitor)( executing, arg, initial_current );
                 
4000be0c:	94 10 00 1b 	mov  %i3, %o2
                                 
4000be10:	92 10 00 18 	mov  %i0, %o1
                                 
4000be14:	9f c6 40 00 	call  %i1
                                     
4000be18:	90 10 00 1c 	mov  %i4, %o0
                                 
      ++initial_current;
                                             
4000be1c:	b6 06 e0 24 	add  %i3, 0x24, %i3
                           
    while ( initial_current != initial_end ) {
                       
4000be20:	80 a7 40 1b 	cmp  %i5, %i3
                                 
4000be24:	12 bf ff fb 	bne  4000be10 <_User_extensions_Iterate+0x40>
 
4000be28:	94 10 00 1b 	mov  %i3, %o2
                                 
    }
                                                                

                                                                     
    end = _Chain_Immutable_tail( &_User_extensions_List.Active );
    
4000be2c:	37 10 00 6d 	sethi  %hi(0x4001b400), %i3
                   <== NOT EXECUTED
4000be30:	b6 16 e1 dc 	or  %i3, 0x1dc, %i3	! 4001b5dc <_User_extensions_List+0x4>
<== NOT EXECUTED
4000be34:	84 06 ff fc 	add  %i3, -4, %g2
                             <== NOT EXECUTED
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000be38:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  old_last = tail->previous;
                                         
4000be3c:	c8 00 a0 14 	ld  [ %g2 + 0x14 ], %g4
                       
  tail->previous = the_node;
                                         
4000be40:	86 07 bf ec 	add  %fp, -20, %g3
                            
  the_node->next = tail;
                                             
4000be44:	9e 00 a0 10 	add  %g2, 0x10, %o7
                           
  tail->previous = the_node;
                                         
4000be48:	c6 20 a0 14 	st  %g3, [ %g2 + 0x14 ]
                       
    &the_iterator->Registry_node
                                     
  );
                                                                 

                                                                     
  the_iterator->direction = direction;
                               

                                                                     
  if ( direction == CHAIN_ITERATOR_FORWARD ) {
                       
4000be4c:	80 a6 a0 00 	cmp  %i2, 0
                                   
  the_node->next = tail;
                                             
4000be50:	de 27 bf ec 	st  %o7, [ %fp + -20 ]
                        
  old_last->next = the_node;
                                         
4000be54:	c6 21 00 00 	st  %g3, [ %g4 ]
                              
  the_node->previous = old_last;
                                     
4000be58:	c8 27 bf f0 	st  %g4, [ %fp + -16 ]
                        
  if ( direction == CHAIN_ITERATOR_FORWARD ) {
                       
4000be5c:	02 80 00 03 	be  4000be68 <_User_extensions_Iterate+0x98>
  
4000be60:	f4 27 bf f4 	st  %i2, [ %fp + -12 ]
                        
    the_iterator->position = _Chain_Head( the_chain );
               
  } else {
                                                           
    the_iterator->position = _Chain_Tail( the_chain );
               
4000be64:	84 00 a0 04 	add  %g2, 4, %g2
                              
    &_User_extensions_List.Iterators,
                                
    &iter.Iterator,
                                                  
    direction
                                                        
  );
                                                                 

                                                                     
  if ( executing != NULL ) {
                                         
4000be68:	80 a7 20 00 	cmp  %i4, 0
                                   
4000be6c:	02 80 00 05 	be  4000be80 <_User_extensions_Iterate+0xb0>
  
4000be70:	c4 27 bf f8 	st  %g2, [ %fp + -8 ]
                         
    iter.previous = executing->last_user_extensions_iterator;
        
4000be74:	c4 07 21 88 	ld  [ %i4 + 0x188 ], %g2
                      
4000be78:	c4 27 bf fc 	st  %g2, [ %fp + -4 ]
                         
    executing->last_user_extensions_iterator = &iter;
                
4000be7c:	c6 27 21 88 	st  %g3, [ %i4 + 0x188 ]
                      
    end = _Chain_Immutable_head( &_User_extensions_List.Active );
    
4000be80:	10 80 00 0f 	b  4000bebc <_User_extensions_Iterate+0xec>
   
4000be84:	84 10 00 1a 	mov  %i2, %g2
                                 
4000be88:	d4 00 c0 00 	ld  [ %g3 ], %o2
                              
  }
                                                                  

                                                                     
  while ( ( node = _Chain_Iterator_next( &iter.Iterator ) ) != end ) {

4000be8c:	80 a6 c0 0a 	cmp  %i3, %o2
                                 
4000be90:	02 80 00 13 	be  4000bedc <_User_extensions_Iterate+0x10c>
 
4000be94:	80 a7 20 00 	cmp  %i4, 0
                                   
RTEMS_INLINE_ROUTINE void _Chain_Iterator_set_position(
              
  Chain_Iterator *the_iterator,
                                      
  Chain_Node     *the_node
                                           
)
                                                                    
{
                                                                    
  the_iterator->position = the_node;
                                 
4000be98:	d4 27 bf f8 	st  %o2, [ %fp + -8 ]
                         <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000be9c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000bea0:	01 00 00 00 	nop 
                                          
    _Chain_Iterator_set_position( &iter.Iterator, node );
            

                                                                     
    _User_extensions_Release( &lock_context );
                       

                                                                     
    extension = (const User_extensions_Control *) node;
              
    ( *visitor )( executing, arg, &extension->Callouts );
            
4000bea4:	94 02 a0 14 	add  %o2, 0x14, %o2
                           
4000bea8:	92 10 00 18 	mov  %i0, %o1
                                 
4000beac:	9f c6 40 00 	call  %i1
                                     
4000beb0:	90 10 00 1c 	mov  %i4, %o0
                                 
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000beb4:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  _ISR_lock_ISR_disable_and_acquire(
                                 
4000beb8:	c4 07 bf f4 	ld  [ %fp + -12 ], %g2
                        
  if ( the_iterator->direction == CHAIN_ITERATOR_FORWARD ) {
         
4000bebc:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000bec0:	02 bf ff f2 	be  4000be88 <_User_extensions_Iterate+0xb8>
  
4000bec4:	c6 07 bf f8 	ld  [ %fp + -8 ], %g3
                         
4000bec8:	d4 00 e0 04 	ld  [ %g3 + 4 ], %o2
                          
  while ( ( node = _Chain_Iterator_next( &iter.Iterator ) ) != end ) {

4000becc:	80 a6 c0 0a 	cmp  %i3, %o2
                                 
4000bed0:	32 bf ff f3 	bne,a   4000be9c <_User_extensions_Iterate+0xcc>

4000bed4:	d4 27 bf f8 	st  %o2, [ %fp + -8 ]
                         

                                                                     
    _User_extensions_Acquire( &lock_context );
                       
  }
                                                                  

                                                                     
  if ( executing != NULL ) {
                                         
4000bed8:	80 a7 20 00 	cmp  %i4, 0
                                   
4000bedc:	02 80 00 03 	be  4000bee8 <_User_extensions_Iterate+0x118>
 
4000bee0:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         
    executing->last_user_extensions_iterator = iter.previous;
        
4000bee4:	c4 27 21 88 	st  %g2, [ %i4 + 0x188 ]
                      
  next           = the_node->next;
                                   
4000bee8:	c6 07 bf ec 	ld  [ %fp + -20 ], %g3
                        
  previous       = the_node->previous;
                               
4000beec:	c4 07 bf f0 	ld  [ %fp + -16 ], %g2
                        
  next->previous = previous;
                                         
4000bef0:	c4 20 e0 04 	st  %g2, [ %g3 + 4 ]
                          
  previous->next = next;
                                             
4000bef4:	c6 20 80 00 	st  %g3, [ %g2 ]
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000bef8:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000befc:	01 00 00 00 	nop 
                                          

                                                                     
  _Chain_Iterator_destroy( &iter.Iterator );
                         

                                                                     
  _User_extensions_Release( &lock_context );
                         

                                                                     
  if ( direction == CHAIN_ITERATOR_BACKWARD ) {
                      
4000bf00:	80 a6 a0 01 	cmp  %i2, 1
                                   
4000bf04:	02 80 00 09 	be  4000bf28 <_User_extensions_Iterate+0x158>
 
4000bf08:	80 a4 00 1d 	cmp  %l0, %i5
                                 
    while ( initial_current != initial_begin ) {
                     
      --initial_current;
                                             
      (*visitor)( executing, arg, initial_current );
                 
    }
                                                                
  }
                                                                  
}
                                                                    
4000bf0c:	81 c7 e0 08 	ret 
                                          
4000bf10:	81 e8 00 00 	restore 
                                      
      (*visitor)( executing, arg, initial_current );
                 
4000bf14:	92 10 00 18 	mov  %i0, %o1
                                 
4000bf18:	94 10 00 1d 	mov  %i5, %o2
                                 
4000bf1c:	9f c6 40 00 	call  %i1
                                     
4000bf20:	90 10 00 1c 	mov  %i4, %o0
                                 
    while ( initial_current != initial_begin ) {
                     
4000bf24:	80 a4 00 1d 	cmp  %l0, %i5
                                 
4000bf28:	12 bf ff fb 	bne  4000bf14 <_User_extensions_Iterate+0x144>

4000bf2c:	ba 07 7f dc 	add  %i5, -36, %i5
                            
}
                                                                    
4000bf30:	81 c7 e0 08 	ret 
                                          
4000bf34:	81 e8 00 00 	restore 
                                      
    end = _Chain_Immutable_head( &_User_extensions_List.Active );
    
4000bf38:	05 10 00 6d 	sethi  %hi(0x4001b400), %g2
                   
4000bf3c:	84 10 a1 d8 	or  %g2, 0x1d8, %g2	! 4001b5d8 <_User_extensions_List>

4000bf40:	10 bf ff be 	b  4000be38 <_User_extensions_Iterate+0x68>
   
4000bf44:	b6 10 00 02 	mov  %g2, %i3
                                 

                                                                     

4000c5b8 <_User_extensions_Remove_set>: __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000c5b8:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  iter_node = _Chain_Head( &the_registry->Iterators );
               
4000c5bc:	05 10 00 57 	sethi  %hi(0x40015c00), %g2
                   
4000c5c0:	84 10 a2 68 	or  %g2, 0x268, %g2	! 40015e68 <_User_extensions_List+0xc>

4000c5c4:	88 00 a0 04 	add  %g2, 4, %g4
                              
4000c5c8:	c4 00 80 00 	ld  [ %g2 ], %g2
                              
  while ( ( iter_node = _Chain_Next( iter_node ) ) != iter_tail ) {
  
4000c5cc:	80 a0 80 04 	cmp  %g2, %g4
                                 
4000c5d0:	22 80 00 11 	be,a   4000c614 <_User_extensions_Remove_set+0x5c>
<== ALWAYS TAKEN
4000c5d4:	c6 02 00 00 	ld  [ %o0 ], %g3
                              
    if ( iter->position == the_node_to_extract ) {
                   
4000c5d8:	c6 00 a0 0c 	ld  [ %g2 + 0xc ], %g3
                        <== NOT EXECUTED
4000c5dc:	80 a2 00 03 	cmp  %o0, %g3
                                 <== NOT EXECUTED
4000c5e0:	32 bf ff fb 	bne,a   4000c5cc <_User_extensions_Remove_set+0x14>
<== NOT EXECUTED
4000c5e4:	c4 00 80 00 	ld  [ %g2 ], %g2
                              <== NOT EXECUTED
      if ( iter->direction == CHAIN_ITERATOR_FORWARD ) {
             
4000c5e8:	c6 00 a0 08 	ld  [ %g2 + 8 ], %g3
                          <== NOT EXECUTED
4000c5ec:	80 a0 e0 00 	cmp  %g3, 0
                                   <== NOT EXECUTED
4000c5f0:	32 80 00 1b 	bne,a   4000c65c <_User_extensions_Remove_set+0xa4>
<== NOT EXECUTED
4000c5f4:	c6 02 00 00 	ld  [ %o0 ], %g3
                              <== NOT EXECUTED
4000c5f8:	c6 02 20 04 	ld  [ %o0 + 4 ], %g3
                          <== NOT EXECUTED
        iter->position = _Chain_Previous( the_node_to_extract );
     
4000c5fc:	c6 20 a0 0c 	st  %g3, [ %g2 + 0xc ]
                        <== NOT EXECUTED
4000c600:	c4 00 80 00 	ld  [ %g2 ], %g2
                              <== NOT EXECUTED
  while ( ( iter_node = _Chain_Next( iter_node ) ) != iter_tail ) {
  
4000c604:	80 a0 80 04 	cmp  %g2, %g4
                                 <== NOT EXECUTED
4000c608:	32 bf ff f5 	bne,a   4000c5dc <_User_extensions_Remove_set+0x24>
<== NOT EXECUTED
4000c60c:	c6 00 a0 0c 	ld  [ %g2 + 0xc ], %g3
                        <== NOT EXECUTED
  next           = the_node->next;
                                   
4000c610:	c6 02 00 00 	ld  [ %o0 ], %g3
                              <== NOT EXECUTED
  previous       = the_node->previous;
                               
4000c614:	c4 02 20 04 	ld  [ %o0 + 4 ], %g2
                          <== NOT EXECUTED
  next->previous = previous;
                                         
4000c618:	c4 20 e0 04 	st  %g2, [ %g3 + 4 ]
                          <== NOT EXECUTED
  previous->next = next;
                                             
4000c61c:	c6 20 80 00 	st  %g3, [ %g2 ]
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000c620:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000c624:	01 00 00 00 	nop 
                                          

                                                                     
  /*
                                                                 
   * If a switch handler is present, remove it.
                      
   */
                                                                

                                                                     
  if ( the_extension->Callouts.thread_switch != NULL ) {
             
4000c628:	c2 02 20 24 	ld  [ %o0 + 0x24 ], %g1
                       
4000c62c:	80 a0 60 00 	cmp  %g1, 0
                                   
4000c630:	02 80 00 09 	be  4000c654 <_User_extensions_Remove_set+0x9c>

4000c634:	01 00 00 00 	nop 
                                          
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000c638:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  next           = the_node->next;
                                   
4000c63c:	c6 02 20 08 	ld  [ %o0 + 8 ], %g3
                          <== NOT EXECUTED
  previous       = the_node->previous;
                               
4000c640:	c4 02 20 0c 	ld  [ %o0 + 0xc ], %g2
                        <== NOT EXECUTED
  next->previous = previous;
                                         
4000c644:	c4 20 e0 04 	st  %g2, [ %g3 + 4 ]
                          <== NOT EXECUTED
  previous->next = next;
                                             
4000c648:	c6 20 80 00 	st  %g3, [ %g2 ]
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000c64c:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000c650:	01 00 00 00 	nop 
                                          

                                                                     
    _Per_CPU_Acquire_all( level );
                                   
    _Chain_Extract_unprotected( &the_extension->Switch.Node );
       
    _Per_CPU_Release_all( level );
                                   
  }
                                                                  
}
                                                                    
4000c654:	81 c3 e0 08 	retl 
                                         
4000c658:	01 00 00 00 	nop 
                                          
        iter->position = _Chain_Next( the_node_to_extract );
         
4000c65c:	10 bf ff db 	b  4000c5c8 <_User_extensions_Remove_set+0x10>
<== NOT EXECUTED
4000c660:	c6 20 a0 0c 	st  %g3, [ %g2 + 0xc ]
                        <== NOT EXECUTED

                                                                     

4000bd38 <_User_extensions_Thread_begin_visitor>: void _User_extensions_Thread_begin_visitor( Thread_Control *executing, void *arg, const User_extensions_Table *callouts ) {
4000bd38:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  User_extensions_thread_begin_extension callout = callouts->thread_begin;

4000bd3c:	c2 06 a0 14 	ld  [ %i2 + 0x14 ], %g1
                       <== NOT EXECUTED

                                                                     
  if ( callout != NULL ) {
                                           
4000bd40:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000bd44:	02 80 00 04 	be  4000bd54 <_User_extensions_Thread_begin_visitor+0x1c>
<== NOT EXECUTED
4000bd48:	01 00 00 00 	nop 
                                          
    (*callout)( executing );
                                         
4000bd4c:	9f c0 40 00 	call  %g1
                                     
4000bd50:	90 10 00 18 	mov  %i0, %o0
                                 
  }
                                                                  
}
                                                                    
4000bd54:	81 c7 e0 08 	ret 
                                          
4000bd58:	81 e8 00 00 	restore 
                                      

                                                                     

4000bc90 <_User_extensions_Thread_create_visitor>: void _User_extensions_Thread_create_visitor( Thread_Control *executing, void *arg, const User_extensions_Table *callouts ) {
4000bc90:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  User_extensions_thread_create_extension callout = callouts->thread_create;

4000bc94:	c4 06 80 00 	ld  [ %i2 ], %g2
                              

                                                                     
  if ( callout != NULL ) {
                                           
4000bc98:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000bc9c:	02 80 00 0a 	be  4000bcc4 <_User_extensions_Thread_create_visitor+0x34>

4000bca0:	01 00 00 00 	nop 
                                          
    User_extensions_Thread_create_context *ctx = arg;
                

                                                                     
    ctx->ok = ctx->ok && (*callout)( executing, ctx->created );
      
4000bca4:	d0 0e 60 04 	ldub  [ %i1 + 4 ], %o0
                        
4000bca8:	80 8a 20 ff 	btst  0xff, %o0
                               
4000bcac:	22 80 00 06 	be,a   4000bcc4 <_User_extensions_Thread_create_visitor+0x34>
<== NEVER TAKEN
4000bcb0:	d0 2e 60 04 	stb  %o0, [ %i1 + 4 ]
                         <== NOT EXECUTED
4000bcb4:	d2 06 40 00 	ld  [ %i1 ], %o1
                              
4000bcb8:	9f c0 80 00 	call  %g2
                                     
4000bcbc:	90 10 00 18 	mov  %i0, %o0
                                 
4000bcc0:	d0 2e 60 04 	stb  %o0, [ %i1 + 4 ]
                         
  }
                                                                  
}
                                                                    
4000bcc4:	81 c7 e0 08 	ret 
                                          
4000bcc8:	81 e8 00 00 	restore 
                                      

                                                                     

4000bccc <_User_extensions_Thread_delete_visitor>: void _User_extensions_Thread_delete_visitor( Thread_Control *executing, void *arg, const User_extensions_Table *callouts ) {
4000bccc:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  User_extensions_thread_delete_extension callout = callouts->thread_delete;

4000bcd0:	c2 06 a0 0c 	ld  [ %i2 + 0xc ], %g1
                        <== NOT EXECUTED

                                                                     
  if ( callout != NULL ) {
                                           
4000bcd4:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000bcd8:	02 80 00 04 	be  4000bce8 <_User_extensions_Thread_delete_visitor+0x1c>

4000bcdc:	92 10 00 19 	mov  %i1, %o1
                                 
    (*callout)( executing, arg );
                                    
4000bce0:	9f c0 40 00 	call  %g1
                                     
4000bce4:	90 10 00 18 	mov  %i0, %o0
                                 
  }
                                                                  
}
                                                                    
4000bce8:	81 c7 e0 08 	ret 
                                          
4000bcec:	81 e8 00 00 	restore 
                                      

                                                                     

4000bd5c <_User_extensions_Thread_exitted_visitor>: void _User_extensions_Thread_exitted_visitor( Thread_Control *executing, void *arg, const User_extensions_Table *callouts ) {
4000bd5c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  User_extensions_thread_exitted_extension callout = callouts->thread_exitted;

4000bd60:	c2 06 a0 18 	ld  [ %i2 + 0x18 ], %g1
                       <== NOT EXECUTED

                                                                     
  if ( callout != NULL ) {
                                           
4000bd64:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000bd68:	02 80 00 04 	be  4000bd78 <_User_extensions_Thread_exitted_visitor+0x1c>
<== NOT EXECUTED
4000bd6c:	01 00 00 00 	nop 
                                          
    (*callout)( executing );
                                         
4000bd70:	9f c0 40 00 	call  %g1
                                     
4000bd74:	90 10 00 18 	mov  %i0, %o0
                                 
  }
                                                                  
}
                                                                    
4000bd78:	81 c7 e0 08 	ret 
                                          
4000bd7c:	81 e8 00 00 	restore 
                                      

                                                                     

4000bd14 <_User_extensions_Thread_restart_visitor>: void _User_extensions_Thread_restart_visitor( Thread_Control *executing, void *arg, const User_extensions_Table *callouts ) {
4000bd14:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  User_extensions_thread_restart_extension callout = callouts->thread_restart;

4000bd18:	c2 06 a0 08 	ld  [ %i2 + 8 ], %g1
                          <== NOT EXECUTED

                                                                     
  if ( callout != NULL ) {
                                           
4000bd1c:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000bd20:	02 80 00 04 	be  4000bd30 <_User_extensions_Thread_restart_visitor+0x1c>
<== NOT EXECUTED
4000bd24:	92 10 00 19 	mov  %i1, %o1
                                 
    (*callout)( executing, arg );
                                    
4000bd28:	9f c0 40 00 	call  %g1
                                     
4000bd2c:	90 10 00 18 	mov  %i0, %o0
                                 
  }
                                                                  
}
                                                                    
4000bd30:	81 c7 e0 08 	ret 
                                          
4000bd34:	81 e8 00 00 	restore 
                                      

                                                                     

4000bcf0 <_User_extensions_Thread_start_visitor>: void _User_extensions_Thread_start_visitor( Thread_Control *executing, void *arg, const User_extensions_Table *callouts ) {
4000bcf0:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  User_extensions_thread_start_extension callout = callouts->thread_start;

4000bcf4:	c2 06 a0 04 	ld  [ %i2 + 4 ], %g1
                          <== NOT EXECUTED

                                                                     
  if ( callout != NULL ) {
                                           
4000bcf8:	80 a0 60 00 	cmp  %g1, 0
                                   
4000bcfc:	02 80 00 04 	be  4000bd0c <_User_extensions_Thread_start_visitor+0x1c>

4000bd00:	92 10 00 19 	mov  %i1, %o1
                                 
    (*callout)( executing, arg );
                                    
4000bd04:	9f c0 40 00 	call  %g1
                                     
4000bd08:	90 10 00 18 	mov  %i0, %o0
                                 
  }
                                                                  
}
                                                                    
4000bd0c:	81 c7 e0 08 	ret 
                                          
4000bd10:	81 e8 00 00 	restore 
                                      

                                                                     

4000bdac <_User_extensions_Thread_terminate_visitor>: void _User_extensions_Thread_terminate_visitor( Thread_Control *executing, void *arg, const User_extensions_Table *callouts ) {
4000bdac:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  User_extensions_thread_terminate_extension callout =
               
4000bdb0:	c2 06 a0 20 	ld  [ %i2 + 0x20 ], %g1
                       <== NOT EXECUTED
    callouts->thread_terminate;
                                      

                                                                     
  if ( callout != NULL ) {
                                           
4000bdb4:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000bdb8:	02 80 00 04 	be  4000bdc8 <_User_extensions_Thread_terminate_visitor+0x1c>

4000bdbc:	01 00 00 00 	nop 
                                          
    (*callout)( executing );
                                         
4000bdc0:	9f c0 40 00 	call  %g1
                                     
4000bdc4:	90 10 00 18 	mov  %i0, %o0
                                 
  }
                                                                  
}
                                                                    
4000bdc8:	81 c7 e0 08 	ret 
                                          
4000bdcc:	81 e8 00 00 	restore 
                                      

                                                                     

4000c044 <_Watchdog_Do_tickle>: #ifdef RTEMS_SMP ISR_lock_Control *lock, #endif ISR_lock_Context *lock_context ) {
4000c044:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  RB_COLOR( &the_watchdog->Node.RBTree, Node ) = state;
              
4000c048:	ba 10 20 02 	mov  2, %i5
                                   
  do {
                                                               
    if ( first->expire <= now ) {
                                    
4000c04c:	c2 06 60 18 	ld  [ %i1 + 0x18 ], %g1
                       
4000c050:	80 a0 40 1a 	cmp  %g1, %i2
                                 
4000c054:	18 80 00 26 	bgu  4000c0ec <_Watchdog_Do_tickle+0xa8>
      
4000c058:	01 00 00 00 	nop 
                                          
4000c05c:	22 80 00 21 	be,a   4000c0e0 <_Watchdog_Do_tickle+0x9c>
    
4000c060:	c2 06 60 1c 	ld  [ %i1 + 0x1c ], %g1
                       
4000c064:	c4 06 60 04 	ld  [ %i1 + 4 ], %g2
                          
  if ( node != NULL ) {
                                              
4000c068:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000c06c:	32 80 00 05 	bne,a   4000c080 <_Watchdog_Do_tickle+0x3c>
   
4000c070:	c2 00 80 00 	ld  [ %g2 ], %g1
                              
4000c074:	10 80 00 19 	b  4000c0d8 <_Watchdog_Do_tickle+0x94>
        
4000c078:	c2 06 60 08 	ld  [ %i1 + 8 ], %g1
                          
4000c07c:	c2 00 80 00 	ld  [ %g2 ], %g1
                              <== NOT EXECUTED
    while ( ( left = _RBTree_Left( node ) ) != NULL ) {
              
4000c080:	80 a0 60 00 	cmp  %g1, 0
                                   
4000c084:	32 bf ff fe 	bne,a   4000c07c <_Watchdog_Do_tickle+0x38>
   <== NEVER TAKEN
4000c088:	84 10 00 01 	mov  %g1, %g2
                                 <== NOT EXECUTED
    header->first = node;
                                            
4000c08c:	c4 26 20 04 	st  %g2, [ %i0 + 4 ]
                          
      Watchdog_Service_routine_entry routine;
                        

                                                                     
      _Watchdog_Next_first( header, first );
                         
      _RBTree_Extract( &header->Watchdogs, &first->Node.RBTree );
    
4000c090:	92 10 00 19 	mov  %i1, %o1
                                 
4000c094:	7f ff f4 9e 	call  4000930c <_RBTree_Extract>
              
4000c098:	90 10 00 18 	mov  %i0, %o0
                                 
      _Watchdog_Set_state( first, WATCHDOG_INACTIVE );
               
      routine = first->routine;
                                      
4000c09c:	c4 06 60 10 	ld  [ %i1 + 0x10 ], %g2
                       <== NOT EXECUTED
  RB_COLOR( &the_watchdog->Node.RBTree, Node ) = state;
              
4000c0a0:	fa 26 60 0c 	st  %i5, [ %i1 + 0xc ]
                        <== NOT EXECUTED
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000c0a4:	c2 07 00 00 	ld  [ %i4 ], %g1
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000c0a8:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000c0ac:	01 00 00 00 	nop 
                                          

                                                                     
      _ISR_lock_Release_and_ISR_enable( lock, lock_context );
        
      ( *routine )( first );
                                         
4000c0b0:	9f c0 80 00 	call  %g2
                                     
4000c0b4:	90 10 00 19 	mov  %i1, %o0
                                 
  __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));

4000c0b8:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
      _ISR_lock_ISR_disable_and_acquire( lock, lock_context );
       
4000c0bc:	c2 27 00 00 	st  %g1, [ %i4 ]
                              
4000c0c0:	f2 06 20 04 	ld  [ %i0 + 4 ], %i1
                          
    } else {
                                                         
      break;
                                                         
    }
                                                                

                                                                     
    first = _Watchdog_Header_first( header );
                        
  } while ( first != NULL );
                                         
4000c0c4:	80 a6 60 00 	cmp  %i1, 0
                                   
4000c0c8:	32 bf ff e2 	bne,a   4000c050 <_Watchdog_Do_tickle+0xc>
    
4000c0cc:	c2 06 60 18 	ld  [ %i1 + 0x18 ], %g1
                       
}
                                                                    
4000c0d0:	81 c7 e0 08 	ret 
                                          
4000c0d4:	81 e8 00 00 	restore 
                                      
    header->first = _RBTree_Parent( &the_watchdog->Node.RBTree );
    
4000c0d8:	10 bf ff ee 	b  4000c090 <_Watchdog_Do_tickle+0x4c>
        
4000c0dc:	c2 26 20 04 	st  %g1, [ %i0 + 4 ]
                          
    if ( first->expire <= now ) {
                                    
4000c0e0:	80 a0 40 1b 	cmp  %g1, %i3
                                 
4000c0e4:	28 bf ff e1 	bleu,a   4000c068 <_Watchdog_Do_tickle+0x24>
  
4000c0e8:	c4 06 60 04 	ld  [ %i1 + 4 ], %g2
                          
}
                                                                    
4000c0ec:	81 c7 e0 08 	ret 
                                          
4000c0f0:	81 e8 00 00 	restore 
                                      

                                                                     

4000f338 <_Watchdog_Insert>: _Assert( _Watchdog_Get_state( the_watchdog ) == WATCHDOG_INACTIVE ); link = _RBTree_Root_reference( &header->Watchdogs ); parent = NULL; old_first = header->first;
4000f338:	d8 02 20 04 	ld  [ %o0 + 4 ], %o4
                          <== NOT EXECUTED
  new_first = &the_watchdog->Node.RBTree;
                            

                                                                     
  the_watchdog->expire = expire;
                                     
4000f33c:	d4 22 60 18 	st  %o2, [ %o1 + 0x18 ]
                       <== NOT EXECUTED
  link = _RBTree_Root_reference( &header->Watchdogs );
               
4000f340:	84 10 00 08 	mov  %o0, %g2
                                 
  the_watchdog->expire = expire;
                                     
4000f344:	d6 22 60 1c 	st  %o3, [ %o1 + 0x1c ]
                       
{
                                                                    
4000f348:	86 10 00 09 	mov  %o1, %g3
                                 

                                                                     
  while ( *link != NULL ) {
                                          
4000f34c:	c2 00 80 00 	ld  [ %g2 ], %g1
                              
  new_first = &the_watchdog->Node.RBTree;
                            
4000f350:	9a 10 00 09 	mov  %o1, %o5
                                 
  while ( *link != NULL ) {
                                          
4000f354:	80 a0 60 00 	cmp  %g1, 0
                                   
4000f358:	02 80 00 12 	be  4000f3a0 <_Watchdog_Insert+0x68>
          
4000f35c:	88 10 20 00 	clr  %g4
                                      
    Watchdog_Control *parent_watchdog;
                               

                                                                     
    parent = *link;
                                                  
    parent_watchdog = (Watchdog_Control *) parent;
                   

                                                                     
    if ( expire < parent_watchdog->expire ) {
                        
4000f360:	c4 00 60 18 	ld  [ %g1 + 0x18 ], %g2
                       
4000f364:	80 a0 80 0a 	cmp  %g2, %o2
                                 
4000f368:	18 80 00 09 	bgu  4000f38c <_Watchdog_Insert+0x54>
         
4000f36c:	84 10 00 01 	mov  %g1, %g2
                                 
4000f370:	12 80 00 17 	bne  4000f3cc <_Watchdog_Insert+0x94>
         
4000f374:	84 00 60 04 	add  %g1, 4, %g2
                              
4000f378:	c4 00 60 1c 	ld  [ %g1 + 0x1c ], %g2
                       
4000f37c:	80 a0 80 0b 	cmp  %g2, %o3
                                 
4000f380:	08 80 00 13 	bleu  4000f3cc <_Watchdog_Insert+0x94>
        
4000f384:	84 00 60 04 	add  %g1, 4, %g2
                              
  return &RB_LEFT( the_node, Node );
                                 
4000f388:	84 10 00 01 	mov  %g1, %g2
                                 
      link = _RBTree_Left_reference( parent );
                       
    } else {
                                                         
      link = _RBTree_Right_reference( parent );
                      
      new_first = old_first;
                                         
4000f38c:	88 10 00 01 	mov  %g1, %g4
                                 
  while ( *link != NULL ) {
                                          
4000f390:	c2 00 80 00 	ld  [ %g2 ], %g1
                              
4000f394:	80 a0 60 00 	cmp  %g1, 0
                                   
4000f398:	32 bf ff f3 	bne,a   4000f364 <_Watchdog_Insert+0x2c>
      
4000f39c:	c4 00 60 18 	ld  [ %g1 + 0x18 ], %g2
                       
    }
                                                                
  }
                                                                  

                                                                     
  header->first = new_first;
                                         
4000f3a0:	da 22 20 04 	st  %o5, [ %o0 + 4 ]
                          
  RB_SET( child, parent, Node );
                                     
4000f3a4:	82 10 20 01 	mov  1, %g1
                                   
4000f3a8:	c8 20 e0 08 	st  %g4, [ %g3 + 8 ]
                          
  _RBTree_Initialize_node( &the_watchdog->Node.RBTree );
             
  _RBTree_Add_child( &the_watchdog->Node.RBTree, parent, link );
     
  _RBTree_Insert_color( &header->Watchdogs, &the_watchdog->Node.RBTree );

4000f3ac:	92 10 00 03 	mov  %g3, %o1
                                 
4000f3b0:	c0 20 e0 04 	clr  [ %g3 + 4 ]
                              
4000f3b4:	c0 20 c0 00 	clr  [ %g3 ]
                                  
4000f3b8:	c2 20 e0 0c 	st  %g1, [ %g3 + 0xc ]
                        
  *link = child;
                                                     
4000f3bc:	c6 20 80 00 	st  %g3, [ %g2 ]
                              
4000f3c0:	82 13 c0 00 	mov  %o7, %g1
                                 
4000f3c4:	7f ff f4 d3 	call  4000c710 <_RBTree_Insert_color>
         
4000f3c8:	9e 10 40 00 	mov  %g1, %o7
                                 
      new_first = old_first;
                                         
4000f3cc:	9a 10 00 0c 	mov  %o4, %o5
                                 
4000f3d0:	10 bf ff f0 	b  4000f390 <_Watchdog_Insert+0x58>
           
4000f3d4:	88 10 00 01 	mov  %g1, %g4
                                 

                                                                     

4000bfcc <_Watchdog_Remove>: void _Watchdog_Remove( Watchdog_Header *header, Watchdog_Control *the_watchdog ) {
4000bfcc:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  if ( _Watchdog_Is_scheduled( the_watchdog ) ) {
                    
4000bfd0:	c2 06 60 0c 	ld  [ %i1 + 0xc ], %g1
                        <== NOT EXECUTED
4000bfd4:	80 a0 60 01 	cmp  %g1, 1
                                   <== NOT EXECUTED
4000bfd8:	28 80 00 04 	bleu,a   4000bfe8 <_Watchdog_Remove+0x1c>
     <== NOT EXECUTED
4000bfdc:	c2 06 20 04 	ld  [ %i0 + 4 ], %g1
                          
    }
                                                                

                                                                     
    _RBTree_Extract( &header->Watchdogs, &the_watchdog->Node.RBTree );

    _Watchdog_Set_state( the_watchdog, WATCHDOG_INACTIVE );
          
  }
                                                                  
}
                                                                    
4000bfe0:	81 c7 e0 08 	ret 
                                          
4000bfe4:	81 e8 00 00 	restore 
                                      
    if ( header->first == &the_watchdog->Node.RBTree ) {
             
4000bfe8:	80 a0 40 19 	cmp  %g1, %i1
                                 
4000bfec:	22 80 00 09 	be,a   4000c010 <_Watchdog_Remove+0x44>
       
4000bff0:	c4 06 60 04 	ld  [ %i1 + 4 ], %g2
                          
    _RBTree_Extract( &header->Watchdogs, &the_watchdog->Node.RBTree );

4000bff4:	92 10 00 19 	mov  %i1, %o1
                                 
4000bff8:	7f ff f4 c5 	call  4000930c <_RBTree_Extract>
              
4000bffc:	90 10 00 18 	mov  %i0, %o0
                                 
  RB_COLOR( &the_watchdog->Node.RBTree, Node ) = state;
              
4000c000:	82 10 20 02 	mov  2, %g1
                                   
4000c004:	c2 26 60 0c 	st  %g1, [ %i1 + 0xc ]
                        
}
                                                                    
4000c008:	81 c7 e0 08 	ret 
                                          
4000c00c:	81 e8 00 00 	restore 
                                      
  if ( node != NULL ) {
                                              
4000c010:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000c014:	32 80 00 05 	bne,a   4000c028 <_Watchdog_Remove+0x5c>
      
4000c018:	c2 00 80 00 	ld  [ %g2 ], %g1
                              
4000c01c:	10 80 00 08 	b  4000c03c <_Watchdog_Remove+0x70>
           
4000c020:	c2 06 60 08 	ld  [ %i1 + 8 ], %g1
                          
4000c024:	c2 00 80 00 	ld  [ %g2 ], %g1
                              <== NOT EXECUTED
    while ( ( left = _RBTree_Left( node ) ) != NULL ) {
              
4000c028:	80 a0 60 00 	cmp  %g1, 0
                                   
4000c02c:	32 bf ff fe 	bne,a   4000c024 <_Watchdog_Remove+0x58>
      <== NEVER TAKEN
4000c030:	84 10 00 01 	mov  %g1, %g2
                                 <== NOT EXECUTED
    header->first = node;
                                            
4000c034:	10 bf ff f0 	b  4000bff4 <_Watchdog_Remove+0x28>
           
4000c038:	c4 26 20 04 	st  %g2, [ %i0 + 4 ]
                          
    header->first = _RBTree_Parent( &the_watchdog->Node.RBTree );
    
4000c03c:	10 bf ff ee 	b  4000bff4 <_Watchdog_Remove+0x28>
           
4000c040:	c2 26 20 04 	st  %g1, [ %i0 + 4 ]
                          

                                                                     

4000c0f4 <_Watchdog_Tick>: void _Watchdog_Tick( Per_CPU_Control *cpu ) {
4000c0f4:	9d e3 bf 88 	save  %sp, -120, %sp
                          <== NOT EXECUTED
  Watchdog_Control *first;
                                           
  uint64_t          ticks;
                                           
  struct timespec   now;
                                             

                                                                     
  if ( _Per_CPU_Is_boot_processor( cpu ) ) {
                         
    ++_Watchdog_Ticks_since_boot;
                                    
4000c0f8:	05 10 00 7e 	sethi  %hi(0x4001f800), %g2
                   <== NOT EXECUTED
4000c0fc:	c2 00 a1 dc 	ld  [ %g2 + 0x1dc ], %g1	! 4001f9dc <_Watchdog_Ticks_since_boot>
<== NOT EXECUTED
4000c100:	82 00 60 01 	inc  %g1
                                      <== NOT EXECUTED
4000c104:	c2 20 a1 dc 	st  %g1, [ %g2 + 0x1dc ]
                      <== NOT EXECUTED
4000c108:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  }
                                                                  

                                                                     
  _ISR_lock_ISR_disable_and_acquire( &cpu->Watchdog.Lock, &lock_context );

4000c10c:	c2 27 bf ec 	st  %g1, [ %fp + -20 ]
                        

                                                                     
  ticks = cpu->Watchdog.ticks;
                                       
4000c110:	c4 1e 20 30 	ldd  [ %i0 + 0x30 ], %g2
                      
  _Assert( ticks < UINT64_MAX );
                                     
  ++ticks;
                                                           
4000c114:	96 80 e0 01 	addcc  %g3, 1, %o3
                            
4000c118:	94 40 a0 00 	addx  %g2, 0, %o2
                             
  cpu->Watchdog.ticks = ticks;
                                       
4000c11c:	d4 3e 20 30 	std  %o2, [ %i0 + 0x30 ]
                      
4000c120:	d2 06 20 3c 	ld  [ %i0 + 0x3c ], %o1
                       

                                                                     
  header = &cpu->Watchdog.Header[ PER_CPU_WATCHDOG_TICKS ];
          
  first = _Watchdog_Header_first( header );
                          

                                                                     
  if ( first != NULL ) {
                                             
4000c124:	80 a2 60 00 	cmp  %o1, 0
                                   
4000c128:	02 80 00 04 	be  4000c138 <_Watchdog_Tick+0x44>
            
4000c12c:	98 07 bf ec 	add  %fp, -20, %o4
                            
    _Watchdog_Tickle(
                                                
4000c130:	7f ff ff c5 	call  4000c044 <_Watchdog_Do_tickle>
          
4000c134:	90 06 20 38 	add  %i0, 0x38, %o0
                           
4000c138:	fa 06 20 4c 	ld  [ %i0 + 0x4c ], %i5
                       
  }
                                                                  

                                                                     
  header = &cpu->Watchdog.Header[ PER_CPU_WATCHDOG_MONOTONIC ];
      
  first = _Watchdog_Header_first( header );
                          

                                                                     
  if ( first != NULL ) {
                                             
4000c13c:	80 a7 60 00 	cmp  %i5, 0
                                   
4000c140:	22 80 00 11 	be,a   4000c184 <_Watchdog_Tick+0x90>
         
4000c144:	fa 06 20 44 	ld  [ %i0 + 0x44 ], %i5
                       
    _Timecounter_Getnanouptime( &now );
                              
4000c148:	7f ff f2 32 	call  40008a10 <_Timecounter_Getnanouptime>
   
4000c14c:	90 07 bf f0 	add  %fp, -16, %o0
                            
  ticks <<= WATCHDOG_BITS_FOR_1E9_NANOSECONDS;
                       
4000c150:	c2 07 bf f0 	ld  [ %fp + -16 ], %g1
                        
  ticks = (uint64_t) ts->tv_sec;
                                     
4000c154:	d6 07 bf f4 	ld  [ %fp + -12 ], %o3
                        
  ticks <<= WATCHDOG_BITS_FOR_1E9_NANOSECONDS;
                       
4000c158:	83 28 60 1e 	sll  %g1, 0x1e, %g1
                           
4000c15c:	95 32 e0 02 	srl  %o3, 2, %o2
                              
    _Watchdog_Tickle(
                                                
4000c160:	94 12 80 01 	or  %o2, %g1, %o2
                             
4000c164:	c2 07 bf f8 	ld  [ %fp + -8 ], %g1
                         
4000c168:	97 2a e0 1e 	sll  %o3, 0x1e, %o3
                           
4000c16c:	98 07 bf ec 	add  %fp, -20, %o4
                            
4000c170:	96 10 40 0b 	or  %g1, %o3, %o3
                             
4000c174:	92 10 00 1d 	mov  %i5, %o1
                                 
4000c178:	7f ff ff b3 	call  4000c044 <_Watchdog_Do_tickle>
          
4000c17c:	90 06 20 48 	add  %i0, 0x48, %o0
                           
4000c180:	fa 06 20 44 	ld  [ %i0 + 0x44 ], %i5
                       
  }
                                                                  

                                                                     
  header = &cpu->Watchdog.Header[ PER_CPU_WATCHDOG_REALTIME ];
       
  first = _Watchdog_Header_first( header );
                          

                                                                     
  if ( first != NULL ) {
                                             
4000c184:	80 a7 60 00 	cmp  %i5, 0
                                   
4000c188:	02 80 00 10 	be  4000c1c8 <_Watchdog_Tick+0xd4>
            
4000c18c:	01 00 00 00 	nop 
                                          
    _Timecounter_Getnanotime( &now );
                                
4000c190:	7f ff f2 46 	call  40008aa8 <_Timecounter_Getnanotime>
     
4000c194:	90 07 bf f0 	add  %fp, -16, %o0
                            
4000c198:	c2 07 bf f0 	ld  [ %fp + -16 ], %g1
                        
  ticks = (uint64_t) ts->tv_sec;
                                     
4000c19c:	d6 07 bf f4 	ld  [ %fp + -12 ], %o3
                        
  ticks <<= WATCHDOG_BITS_FOR_1E9_NANOSECONDS;
                       
4000c1a0:	83 28 60 1e 	sll  %g1, 0x1e, %g1
                           
4000c1a4:	95 32 e0 02 	srl  %o3, 2, %o2
                              
    _Watchdog_Tickle(
                                                
4000c1a8:	94 12 80 01 	or  %o2, %g1, %o2
                             
4000c1ac:	c2 07 bf f8 	ld  [ %fp + -8 ], %g1
                         
4000c1b0:	97 2a e0 1e 	sll  %o3, 0x1e, %o3
                           
4000c1b4:	98 07 bf ec 	add  %fp, -20, %o4
                            
4000c1b8:	96 10 40 0b 	or  %g1, %o3, %o3
                             
4000c1bc:	92 10 00 1d 	mov  %i5, %o1
                                 
4000c1c0:	7f ff ff a1 	call  4000c044 <_Watchdog_Do_tickle>
          
4000c1c4:	90 06 20 40 	add  %i0, 0x40, %o0
                           
  register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */

4000c1c8:	c2 07 bf ec 	ld  [ %fp + -20 ], %g1
                        <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

4000c1cc:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
4000c1d0:	01 00 00 00 	nop 
                                          
  Thread_Control *executing = cpu->executing;
                        
4000c1d4:	d2 06 20 20 	ld  [ %i0 + 0x20 ], %o1
                       
  if ( scheduler != NULL && executing != NULL ) {
                    
4000c1d8:	80 a2 60 00 	cmp  %o1, 0
                                   
4000c1dc:	02 80 00 06 	be  4000c1f4 <_Watchdog_Tick+0x100>
           
4000c1e0:	11 10 00 63 	sethi  %hi(0x40018c00), %o0
                   
    ( *scheduler->Operations.tick )( scheduler, executing );
         
4000c1e4:	90 12 21 c8 	or  %o0, 0x1c8, %o0	! 40018dc8 <_Scheduler_Table>

4000c1e8:	c2 02 20 34 	ld  [ %o0 + 0x34 ], %g1
                       
4000c1ec:	9f c0 40 00 	call  %g1
                                     
4000c1f0:	01 00 00 00 	nop 
                                          
  }
                                                                  

                                                                     
  _ISR_lock_Release_and_ISR_enable( &cpu->Watchdog.Lock, &lock_context );


                                                                     
  _Scheduler_Tick( cpu );
                                            
}
                                                                    
4000c1f4:	81 c7 e0 08 	ret 
                                          
4000c1f8:	81 e8 00 00 	restore 
                                      

                                                                     

4000c3b8 <_Workspace_Allocate>: return _Heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );
4000c3b8:	92 10 00 08 	mov  %o0, %o1
                                 <== NOT EXECUTED
4000c3bc:	96 10 20 00 	clr  %o3
                                      
4000c3c0:	11 10 00 7e 	sethi  %hi(0x4001f800), %o0
                   
4000c3c4:	94 10 20 00 	clr  %o2
                                      
4000c3c8:	90 12 21 e0 	or  %o0, 0x1e0, %o0
                           
4000c3cc:	82 13 c0 00 	mov  %o7, %g1
                                 
4000c3d0:	7f ff eb 8e 	call  40007208 <_Heap_Allocate_aligned_with_boundary>

4000c3d4:	9e 10 40 00 	mov  %g1, %o7
                                 

                                                                     

4000c3d8 <_Workspace_Allocate_aligned>: return _Heap_Allocate_aligned_with_boundary( heap, size, alignment, 0 );
4000c3d8:	94 10 00 09 	mov  %o1, %o2
                                 <== NOT EXECUTED
4000c3dc:	96 10 20 00 	clr  %o3
                                      <== NOT EXECUTED
4000c3e0:	92 10 00 08 	mov  %o0, %o1
                                 <== NOT EXECUTED
4000c3e4:	11 10 00 7e 	sethi  %hi(0x4001f800), %o0
                   <== NOT EXECUTED
4000c3e8:	90 12 21 e0 	or  %o0, 0x1e0, %o0	! 4001f9e0 <_Workspace_Area>
<== NOT EXECUTED
4000c3ec:	82 13 c0 00 	mov  %o7, %g1
                                 <== NOT EXECUTED
4000c3f0:	7f ff eb 86 	call  40007208 <_Heap_Allocate_aligned_with_boundary>
<== NOT EXECUTED
4000c3f4:	9e 10 40 00 	mov  %g1, %o7
                                 <== NOT EXECUTED

                                                                     

4000c410 <_Workspace_Allocate_or_fatal_error>: } void *_Workspace_Allocate_or_fatal_error( size_t size ) {
4000c410:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  return _Heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );
   
4000c414:	96 10 20 00 	clr  %o3
                                      <== NOT EXECUTED
4000c418:	94 10 20 00 	clr  %o2
                                      <== NOT EXECUTED
4000c41c:	92 10 00 18 	mov  %i0, %o1
                                 
4000c420:	11 10 00 7e 	sethi  %hi(0x4001f800), %o0
                   
4000c424:	7f ff eb 79 	call  40007208 <_Heap_Allocate_aligned_with_boundary>

4000c428:	90 12 21 e0 	or  %o0, 0x1e0, %o0	! 4001f9e0 <_Workspace_Area>

      __builtin_return_address( 1 ),
                                 
      memory
                                                         
    );
                                                               
  #endif
                                                             

                                                                     
  if ( memory == NULL )
                                              
4000c42c:	80 a2 20 00 	cmp  %o0, 0
                                   
4000c430:	02 80 00 04 	be  4000c440 <_Workspace_Allocate_or_fatal_error+0x30>

4000c434:	b0 10 00 08 	mov  %o0, %i0
                                 
    _Internal_error( INTERNAL_ERROR_WORKSPACE_ALLOCATION );
          

                                                                     
  return memory;
                                                     
}
                                                                    
4000c438:	81 c7 e0 08 	ret 
                                          
4000c43c:	81 e8 00 00 	restore 
                                      
    _Internal_error( INTERNAL_ERROR_WORKSPACE_ALLOCATION );
          
4000c440:	7f ff ed 19 	call  400078a4 <_Internal_error>
              
4000c444:	90 10 20 03 	mov  3, %o0
                                   
4000c448:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
	...
                                                                 

                                                                     

4000c3f8 <_Workspace_Free>: block, __builtin_return_address( 0 ), __builtin_return_address( 1 ) ); #endif _Heap_Free( &_Workspace_Area, block );
4000c3f8:	92 10 00 08 	mov  %o0, %o1
                                 <== NOT EXECUTED
4000c3fc:	11 10 00 7e 	sethi  %hi(0x4001f800), %o0
                   
4000c400:	90 12 21 e0 	or  %o0, 0x1e0, %o0	! 4001f9e0 <_Workspace_Area>

4000c404:	82 13 c0 00 	mov  %o7, %g1
                                 
4000c408:	40 00 06 35 	call  4000dcdc <_Heap_Free>
                   
4000c40c:	9e 10 40 00 	mov  %g1, %o7
                                 

                                                                     

4000c1fc <_Workspace_Handler_initialization>: void _Workspace_Handler_initialization( Heap_Area *areas, size_t area_count, Heap_Initialization_or_extend_handler extend ) {
4000c1fc:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;

  uintptr_t remaining = rtems_configuration_get_work_space_size();
   
4000c200:	03 10 00 63 	sethi  %hi(0x40018c00), %g1
                   <== NOT EXECUTED
4000c204:	86 10 60 e8 	or  %g1, 0xe8, %g3	! 40018ce8 <Configuration>
 
4000c208:	c4 08 e0 32 	ldub  [ %g3 + 0x32 ], %g2
                     
4000c20c:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000c210:	12 80 00 04 	bne  4000c220 <_Workspace_Handler_initialization+0x24>

4000c214:	f8 00 60 e8 	ld  [ %g1 + 0xe8 ], %i4
                       
4000c218:	c2 00 e0 04 	ld  [ %g3 + 4 ], %g1
                          
4000c21c:	b8 07 00 01 	add  %i4, %g1, %i4
                            
  bool do_zero = rtems_configuration_get_do_zero_of_workspace();
     
4000c220:	c8 08 e0 30 	ldub  [ %g3 + 0x30 ], %g4
                     
  bool unified = rtems_configuration_get_unified_work_area();
        
4000c224:	c6 08 e0 31 	ldub  [ %g3 + 0x31 ], %g3
                     
  bool do_zero = rtems_configuration_get_do_zero_of_workspace();
     
4000c228:	c8 2f bf ff 	stb  %g4, [ %fp + -1 ]
                        
  return (uintptr_t) _TLS_BSS_end - (uintptr_t) _TLS_Data_begin;
     
4000c22c:	03 10 00 68 	sethi  %hi(0x4001a000), %g1
                   
4000c230:	82 10 62 d0 	or  %g1, 0x2d0, %g1	! 4001a2d0 <_Linker_set__Sysinit_bsp_work_area_initialize>

4000c234:	05 10 00 68 	sethi  %hi(0x4001a000), %g2
                   
4000c238:	84 10 a2 d0 	or  %g2, 0x2d0, %g2	! 4001a2d0 <_Linker_set__Sysinit_bsp_work_area_initialize>

   * workspace is large enough to fulfill all requests known at configuration

   * time (so excluding the unlimited option).  It is not possible to estimate

   * the TLS size in the configuration at compile-time.  The TLS size is

   * determined at application link-time.
                            
   */
                                                                
  if ( tls_size > 0 ) {
                                              
4000c23c:	82 a0 40 02 	subcc  %g1, %g2, %g1
                          
4000c240:	02 80 00 1b 	be  4000c2ac <_Workspace_Handler_initialization+0xb0>

4000c244:	c6 2f bf fe 	stb  %g3, [ %fp + -2 ]
                        
  return (val + msk) & ~msk;
                                         
4000c248:	05 00 00 00 	sethi  %hi(0), %g2
                            
4000c24c:	84 10 a0 01 	or  %g2, 1, %g2	! 1 <_TLS_Alignment>
          
4000c250:	84 00 a0 07 	add  %g2, 7, %g2
                              
4000c254:	84 08 bf f8 	and  %g2, -8, %g2
                             
    sizeof(TLS_Thread_control_block) : alignment;
                    
4000c258:	80 a0 a0 08 	cmp  %g2, 8
                                   
4000c25c:	2a 80 00 02 	bcs,a   4000c264 <_Workspace_Handler_initialization+0x68>
<== NEVER TAKEN
4000c260:	84 10 20 08 	mov  8, %g2
                                   <== NOT EXECUTED
  thread_count += rtems_resource_maximum_per_allocation(
             
4000c264:	09 10 00 6e 	sethi  %hi(0x4001b800), %g4
                   

                                                                     
  if ( page_size < alignment ) {
                                     
    page_size = alignment;
                                           
  }
                                                                  

                                                                     
  return HEAP_BLOCK_HEADER_SIZE + page_size - 1 + size;
              
4000c268:	85 28 a0 01 	sll  %g2, 1, %g2
                              
4000c26c:	fa 01 21 60 	ld  [ %g4 + 0x160 ], %i5
                      
4000c270:	07 10 00 6c 	sethi  %hi(0x4001b000), %g3
                   
4000c274:	c6 00 e3 44 	ld  [ %g3 + 0x344 ], %g3	! 4001b344 <Configuration_RTEMS_API>

  return (val + msk) & ~msk;
                                         
4000c278:	82 00 60 07 	add  %g1, 7, %g1
                              
4000c27c:	09 00 00 3f 	sethi  %hi(0xfc00), %g4
                       
4000c280:	82 08 7f f8 	and  %g1, -8, %g1
                             
4000c284:	88 11 23 ff 	or  %g4, 0x3ff, %g4
                           
4000c288:	82 00 60 0f 	add  %g1, 0xf, %g1
                            
4000c28c:	86 08 c0 04 	and  %g3, %g4, %g3
                            
4000c290:	82 00 80 01 	add  %g2, %g1, %g1
                            
4000c294:	84 0f 40 04 	and  %i5, %g4, %g2
                            
4000c298:	84 00 c0 02 	add  %g3, %g2, %g2
                            
4000c29c:	84 00 a0 01 	inc  %g2
                                      
     * size.
                                                         
     */
                                                              
    remaining += _Heap_Min_block_size( page_size );
                  

                                                                     
    remaining += _Get_maximum_thread_count()
                         
      * _Heap_Size_with_overhead( page_size, tls_alloc, tls_align );
 
4000c2a0:	82 58 40 02 	smul  %g1, %g2, %g1
                           
    remaining += _Get_maximum_thread_count()
                         
4000c2a4:	82 00 60 10 	add  %g1, 0x10, %g1
                           
4000c2a8:	b8 07 00 01 	add  %i4, %g1, %i4
                            
  }
                                                                  

                                                                     
  for (i = 0; i < area_count; ++i) {
                                 
4000c2ac:	80 a6 60 00 	cmp  %i1, 0
                                   
4000c2b0:	02 80 00 2d 	be  4000c364 <_Workspace_Handler_initialization+0x168>
<== NEVER TAKEN
4000c2b4:	80 a7 20 00 	cmp  %i4, 0
                                   
4000c2b8:	f6 0f bf ff 	ldub  [ %fp + -1 ], %i3
                       

                                                                     
    if ( area->size > overhead ) {
                                   
      uintptr_t space_available;
                                     
      uintptr_t size;
                                                

                                                                     
      if ( unified ) {
                                               
4000c2bc:	e2 0f bf fe 	ldub  [ %fp + -2 ], %l1
                       
4000c2c0:	b3 2e 60 03 	sll  %i1, 3, %i1
                              
  for (i = 0; i < area_count; ++i) {
                                 
4000c2c4:	21 10 00 1d 	sethi  %hi(0x40007400), %l0
                   
        } else {
                                                     
          size = 0;
                                                  
        }
                                                            
      }
                                                              

                                                                     
      space_available = (*init_or_extend)(
                           
4000c2c8:	25 10 00 7e 	sethi  %hi(0x4001f800), %l2
                   
4000c2cc:	b2 06 00 19 	add  %i0, %i1, %i1
                            
  for (i = 0; i < area_count; ++i) {
                                 
4000c2d0:	a0 14 21 80 	or  %l0, 0x180, %l0
                           
      space_available = (*init_or_extend)(
                           
4000c2d4:	a4 14 a1 e0 	or  %l2, 0x1e0, %l2
                           
    if ( do_zero ) {
                                                 
4000c2d8:	80 a6 e0 00 	cmp  %i3, 0
                                   
4000c2dc:	12 80 00 26 	bne  4000c374 <_Workspace_Handler_initialization+0x178>

4000c2e0:	fa 06 20 04 	ld  [ %i0 + 4 ], %i5
                          
    if ( area->size > overhead ) {
                                   
4000c2e4:	80 a7 60 16 	cmp  %i5, 0x16
                                
4000c2e8:	28 80 00 1b 	bleu,a   4000c354 <_Workspace_Handler_initialization+0x158>

4000c2ec:	b0 06 20 08 	add  %i0, 8, %i0
                              
      if ( unified ) {
                                               
4000c2f0:	80 a4 60 00 	cmp  %l1, 0
                                   
4000c2f4:	12 80 00 09 	bne  4000c318 <_Workspace_Handler_initialization+0x11c>

4000c2f8:	d2 06 00 00 	ld  [ %i0 ], %o1
                              
        if ( remaining > 0 ) {
                                       
4000c2fc:	80 a7 20 00 	cmp  %i4, 0
                                   
4000c300:	02 80 00 23 	be  4000c38c <_Workspace_Handler_initialization+0x190>
<== NEVER TAKEN
4000c304:	96 10 20 08 	mov  8, %o3
                                   
          size = remaining < area->size - overhead ?
                 
4000c308:	82 07 7f ea 	add  %i5, -22, %g1
                            
            remaining + overhead : area->size;
                       
4000c30c:	80 a0 40 1c 	cmp  %g1, %i4
                                 
4000c310:	38 80 00 02 	bgu,a   4000c318 <_Workspace_Handler_initialization+0x11c>
<== ALWAYS TAKEN
4000c314:	ba 07 20 16 	add  %i4, 0x16, %i5
                           
      space_available = (*init_or_extend)(
                           
4000c318:	94 10 00 1d 	mov  %i5, %o2
                                 
4000c31c:	96 10 20 08 	mov  8, %o3
                                   
4000c320:	9f c4 00 00 	call  %l0
                                     
4000c324:	90 10 00 12 	mov  %l2, %o0
                                 
        area->begin,
                                                 
        size,
                                                        
        page_size
                                                    
      );
                                                             

                                                                     
      area->begin = (char *) area->begin + size;
                     
4000c328:	c4 06 00 00 	ld  [ %i0 ], %g2
                              
      area->size -= size;
                                            
4000c32c:	c2 06 20 04 	ld  [ %i0 + 4 ], %g1
                          
      area->begin = (char *) area->begin + size;
                     
4000c330:	84 00 80 1d 	add  %g2, %i5, %g2
                            
      area->size -= size;
                                            
4000c334:	ba 20 40 1d 	sub  %g1, %i5, %i5
                            
      area->begin = (char *) area->begin + size;
                     
4000c338:	c4 26 00 00 	st  %g2, [ %i0 ]
                              

                                                                     
      if ( space_available < remaining ) {
                           
4000c33c:	80 a2 00 1c 	cmp  %o0, %i4
                                 
4000c340:	1a 80 00 18 	bcc  4000c3a0 <_Workspace_Handler_initialization+0x1a4>
<== ALWAYS TAKEN
4000c344:	fa 26 20 04 	st  %i5, [ %i0 + 4 ]
                          
        remaining -= space_available;
                                
4000c348:	b8 27 00 08 	sub  %i4, %o0, %i4
                            <== NOT EXECUTED
      } else {
                                                       
        remaining = 0;
                                               
      }
                                                              

                                                                     
      init_or_extend = extend;
                                       
4000c34c:	a0 10 00 1a 	mov  %i2, %l0
                                 <== NOT EXECUTED
4000c350:	b0 06 20 08 	add  %i0, 8, %i0
                              
  for (i = 0; i < area_count; ++i) {
                                 
4000c354:	80 a6 40 18 	cmp  %i1, %i0
                                 
4000c358:	12 bf ff e1 	bne  4000c2dc <_Workspace_Handler_initialization+0xe0>
<== NEVER TAKEN
4000c35c:	80 a6 e0 00 	cmp  %i3, 0
                                   
    }
                                                                
  }
                                                                  

                                                                     
  if ( remaining > 0 ) {
                                             
4000c360:	80 a7 20 00 	cmp  %i4, 0
                                   
4000c364:	12 80 00 12 	bne  4000c3ac <_Workspace_Handler_initialization+0x1b0>

4000c368:	01 00 00 00 	nop 
                                          
    _Internal_error( INTERNAL_ERROR_TOO_LITTLE_WORKSPACE );
          
  }
                                                                  

                                                                     
  _Heap_Protection_set_delayed_free_fraction( &_Workspace_Area, 1 );
 
}
                                                                    
4000c36c:	81 c7 e0 08 	ret 
                                          
4000c370:	81 e8 00 00 	restore 
                                      
      memset( area->begin, 0, area->size );
                          
4000c374:	d0 06 00 00 	ld  [ %i0 ], %o0
                              
4000c378:	94 10 00 1d 	mov  %i5, %o2
                                 
4000c37c:	40 00 0b a1 	call  4000f200 <memset>
                       
4000c380:	92 10 20 00 	clr  %o1
                                      
4000c384:	10 bf ff d8 	b  4000c2e4 <_Workspace_Handler_initialization+0xe8>

4000c388:	fa 06 20 04 	ld  [ %i0 + 4 ], %i5
                          
      space_available = (*init_or_extend)(
                           
4000c38c:	94 10 20 00 	clr  %o2
                                      <== NOT EXECUTED
4000c390:	9f c4 00 00 	call  %l0
                                     <== NOT EXECUTED
4000c394:	90 10 00 12 	mov  %l2, %o0
                                 <== NOT EXECUTED
      init_or_extend = extend;
                                       
4000c398:	10 bf ff ee 	b  4000c350 <_Workspace_Handler_initialization+0x154>
<== NOT EXECUTED
4000c39c:	a0 10 00 1a 	mov  %i2, %l0
                                 <== NOT EXECUTED
4000c3a0:	a0 10 00 1a 	mov  %i2, %l0
                                 
        remaining = 0;
                                               
4000c3a4:	10 bf ff eb 	b  4000c350 <_Workspace_Handler_initialization+0x154>

4000c3a8:	b8 10 20 00 	clr  %i4
                                      
    _Internal_error( INTERNAL_ERROR_TOO_LITTLE_WORKSPACE );
          
4000c3ac:	7f ff ed 3e 	call  400078a4 <_Internal_error>
              
4000c3b0:	90 10 20 02 	mov  2, %o0
                                   
4000c3b4:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

400104a4 <_Workspace_String_duplicate>: char *_Workspace_String_duplicate( const char *string, size_t len ) {
400104a4:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  char *dup = _Workspace_Allocate(len + 1);
                          
400104a8:	7f ff ff da 	call  40010410 <_Workspace_Allocate>
          <== NOT EXECUTED
400104ac:	90 06 60 01 	add  %i1, 1, %o0
                              <== NOT EXECUTED

                                                                     
  if (dup != NULL) {
                                                 
400104b0:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
400104b4:	02 80 00 05 	be  400104c8 <_Workspace_String_duplicate+0x24>

400104b8:	94 10 00 19 	mov  %i1, %o2
                                 
    dup [len] = '\0';
                                                
400104bc:	c0 2f 40 19 	clrb  [ %i5 + %i1 ]
                           
    memcpy(dup, string, len);
                                        
400104c0:	40 00 07 de 	call  40012438 <memcpy>
                       
400104c4:	92 10 00 18 	mov  %i0, %o1
                                 
  }
                                                                  

                                                                     
  return dup;
                                                        
}
                                                                    
400104c8:	81 c7 e0 08 	ret 
                                          
400104cc:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
	...