RTEMS-5
Annotated Report
Fri Aug 10 13:05:48 2018

40007054 <_IO_Initialize_all_drivers>:
                               
#include <rtems/ioimpl.h>
                                            

                                                                     
bool _IO_All_drivers_initialized;
                                    

                                                                     
void _IO_Initialize_all_drivers( void )
                              
{
                                                                    
40007054:	9d e3 bf a0 	save  %sp, -96, %sp
                           
   rtems_device_major_number major;
                                  

                                                                     
   _IO_All_drivers_initialized = true;
                               
40007058:	03 10 00 6b 	sethi  %hi(0x4001ac00), %g1
                   
4000705c:	84 10 20 01 	mov  1, %g2
                                   
40007060:	c4 28 61 b8 	stb  %g2, [ %g1 + 0x1b8 ]
                     

                                                                     
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
        
40007064:	03 10 00 5c 	sethi  %hi(0x40017000), %g1
                   
40007068:	f8 00 62 e4 	ld  [ %g1 + 0x2e4 ], %i4	! 400172e4 <_IO_Number_of_drivers>

4000706c:	80 a7 20 00 	cmp  %i4, 0
                                   
40007070:	02 80 00 0a 	be  40007098 <_IO_Initialize_all_drivers+0x44>
<== NEVER TAKEN
40007074:	ba 10 20 00 	clr  %i5
                                      
     (void) rtems_io_initialize( major, 0, NULL );
                   
40007078:	90 10 00 1d 	mov  %i5, %o0
                                 
4000707c:	94 10 20 00 	clr  %o2
                                      
40007080:	40 00 1d 4f 	call  4000e5bc <rtems_io_initialize>
          
40007084:	92 10 20 00 	clr  %o1
                                      
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
        
40007088:	ba 07 60 01 	inc  %i5
                                      
4000708c:	80 a7 40 1c 	cmp  %i5, %i4
                                 
40007090:	12 bf ff fb 	bne  4000707c <_IO_Initialize_all_drivers+0x28>

40007094:	90 10 00 1d 	mov  %i5, %o0
                                 
}
                                                                    
40007098:	81 c7 e0 08 	ret 
                                          
4000709c:	81 e8 00 00 	restore 
                                      

                                                                     

40017950 <_Objects_Information_table>: 40017950: 00 00 00 00 40 01 a7 d4 40 01 a7 a8 40 01 a7 74 ....@...@...@..t 40017960: 5f 41 6c 6c 6f 63 61 74 6f 72 00 00 00 00 00 00 _Allocator...... 40017970: 28 66 6d 74 20 6e 75 6c 6c 29 0a 00 00 00 00 00 (fmt null)...... 40017980: 28 6e 75 6c 6c 29 00 (null).
40008b70 <rtems_chain_extract>: __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40008b70:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  next           = the_node->next;
                                   
40008b74:	c6 02 00 00 	ld  [ %o0 ], %g3
                              <== NOT EXECUTED
  previous       = the_node->previous;
                               
40008b78:	c4 02 20 04 	ld  [ %o0 + 4 ], %g2
                          <== NOT EXECUTED
  next->previous = previous;
                                         
40008b7c:	c4 20 e0 04 	st  %g2, [ %g3 + 4 ]
                          <== NOT EXECUTED
  previous->next = next;
                                             
40008b80:	c6 20 80 00 	st  %g3, [ %g2 ]
                              <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40008b84:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40008b88:	01 00 00 00 	nop 
                                          
  rtems_interrupt_lock_context lock_context;
                         

                                                                     
  chain_acquire( &lock_context );
                                    
  _Chain_Extract_unprotected( node );
                                
  chain_release( &lock_context );
                                    
}
                                                                    
40008b8c:	81 c3 e0 08 	retl 
                                         
40008b90:	01 00 00 00 	nop 
                                          

                                                                     

40008b94 <rtems_chain_insert>: __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40008b94:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  the_node->previous    = after_node;
                                
40008b98:	d0 22 60 04 	st  %o0, [ %o1 + 4 ]
                          <== NOT EXECUTED
  before_node           = after_node->next;
                          
40008b9c:	c4 02 00 00 	ld  [ %o0 ], %g2
                              <== NOT EXECUTED
  after_node->next      = the_node;
                                  
40008ba0:	d2 22 00 00 	st  %o1, [ %o0 ]
                              <== NOT EXECUTED
  the_node->next        = before_node;
                               
40008ba4:	c4 22 40 00 	st  %g2, [ %o1 ]
                              <== NOT EXECUTED
  before_node->previous = the_node;
                                  
40008ba8:	d2 20 a0 04 	st  %o1, [ %g2 + 4 ]
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40008bac:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40008bb0:	01 00 00 00 	nop 
                                          
  rtems_interrupt_lock_context lock_context;
                         

                                                                     
  chain_acquire( &lock_context );
                                    
  _Chain_Insert_unprotected( after_node, node );
                     
  chain_release( &lock_context );
                                    
}
                                                                    
40008bb4:	81 c3 e0 08 	retl 
                                         
40008bb8:	01 00 00 00 	nop 
                                          

                                                                     

40008bbc <rtems_chain_prepend>: __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40008bbc:	91 d0 20 09 	ta  9
                                         <== NOT EXECUTED
  the_node->previous    = after_node;
                                
40008bc0:	d0 22 60 04 	st  %o0, [ %o1 + 4 ]
                          <== NOT EXECUTED
  before_node           = after_node->next;
                          
40008bc4:	c4 02 00 00 	ld  [ %o0 ], %g2
                              <== NOT EXECUTED
  after_node->next      = the_node;
                                  
40008bc8:	d2 22 00 00 	st  %o1, [ %o0 ]
                              <== NOT EXECUTED
  the_node->next        = before_node;
                               
40008bcc:	c4 22 40 00 	st  %g2, [ %o1 ]
                              <== NOT EXECUTED
  before_node->previous = the_node;
                                  
40008bd0:	d2 20 a0 04 	st  %o1, [ %g2 + 4 ]
                          <== NOT EXECUTED
  __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));

40008bd4:	91 d0 20 0a 	ta  0xa
                                       <== NOT EXECUTED
40008bd8:	01 00 00 00 	nop 
                                          
  rtems_interrupt_lock_context lock_context;
                         

                                                                     
  chain_acquire( &lock_context );
                                    
  _Chain_Prepend_unprotected( chain, node );
                         
  chain_release( &lock_context );
                                    
}
                                                                    
40008bdc:	81 c3 e0 08 	retl 
                                         
40008be0:	01 00 00 00 	nop 
                                          

                                                                     

40008a80 <rtems_extension_create>: rtems_status_code rtems_extension_create( rtems_name name, const rtems_extensions_table *extension_table, rtems_id *id ) {
40008a80:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  Extension_Control *the_extension;
                                  

                                                                     
  if ( !id )
                                                         
40008a84:	80 a6 a0 00 	cmp  %i2, 0
                                   
40008a88:	02 80 00 1b 	be  40008af4 <rtems_extension_create+0x74>
    <== NEVER TAKEN
40008a8c:	80 a6 20 00 	cmp  %i0, 0
                                   
    return RTEMS_INVALID_ADDRESS;
                                    

                                                                     
  if ( !rtems_is_name_valid( name ) )
                                
40008a90:	02 80 00 17 	be  40008aec <rtems_extension_create+0x6c>
    <== NEVER TAKEN
40008a94:	82 10 20 03 	mov  3, %g1
                                   

                                                                     
extern Objects_Information  _Extension_Information;
                  

                                                                     
RTEMS_INLINE_ROUTINE Extension_Control *_Extension_Allocate( void )
  
{
                                                                    
  return (Extension_Control *) _Objects_Allocate( &_Extension_Information );

40008a98:	39 10 00 67 	sethi  %hi(0x40019c00), %i4
                   
40008a9c:	40 00 08 8f 	call  4000acd8 <_Objects_Allocate>
            
40008aa0:	90 17 20 14 	or  %i4, 0x14, %o0	! 40019c14 <_Extension_Information>

    return RTEMS_INVALID_NAME;
                                       

                                                                     
  the_extension = _Extension_Allocate();
                             

                                                                     
  if ( !the_extension ) {
                                            
40008aa4:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
40008aa8:	02 80 00 16 	be  40008b00 <rtems_extension_create+0x80>
    <== NEVER TAKEN
40008aac:	94 10 20 24 	mov  0x24, %o2
                                
RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(
       
  User_extensions_Control     *extension,
                            
  const User_extensions_Table *extension_table
                       
)
                                                                    
{
                                                                    
  extension->Callouts = *extension_table;
                            
40008ab0:	92 10 00 19 	mov  %i1, %o1
                                 
40008ab4:	40 00 23 c0 	call  400119b4 <memcpy>
                       
40008ab8:	90 07 60 24 	add  %i5, 0x24, %o0
                           

                                                                     
  _User_extensions_Add_set( extension );
                             
40008abc:	40 00 17 1d 	call  4000e730 <_User_extensions_Add_set>
     
40008ac0:	90 07 60 10 	add  %i5, 0x10, %o0
                           
  information->local_table[ index ] = the_object;
                    
40008ac4:	c2 17 60 0a 	lduh  [ %i5 + 0xa ], %g1
                      
  the_object->name = name;
                                           
40008ac8:	f0 27 60 0c 	st  %i0, [ %i5 + 0xc ]
                        
  information->local_table[ index ] = the_object;
                    
40008acc:	b8 17 20 14 	or  %i4, 0x14, %i4
                            
40008ad0:	c6 07 20 1c 	ld  [ %i4 + 0x1c ], %g3
                       
40008ad4:	c4 07 60 08 	ld  [ %i5 + 8 ], %g2
                          
40008ad8:	83 28 60 02 	sll  %g1, 2, %g1
                              
40008adc:	fa 20 c0 01 	st  %i5, [ %g3 + %g1 ]
                        
  _RTEMS_Unlock_allocator();
                                         
40008ae0:	40 00 00 68 	call  40008c80 <_RTEMS_Unlock_allocator>
      
40008ae4:	c4 26 80 00 	st  %g2, [ %i2 ]
                              
    (Objects_Name) name
                                              
  );
                                                                 

                                                                     
  *id = the_extension->Object.id;
                                    
  _Objects_Allocator_unlock();
                                       
  return RTEMS_SUCCESSFUL;
                                           
40008ae8:	82 10 20 00 	clr  %g1
                                      
}
                                                                    
40008aec:	81 c7 e0 08 	ret 
                                          
40008af0:	91 e8 00 01 	restore  %g0, %g1, %o0
                        
    return RTEMS_INVALID_ADDRESS;
                                    
40008af4:	82 10 20 09 	mov  9, %g1
                                   <== NOT EXECUTED
}
                                                                    
40008af8:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40008afc:	91 e8 00 01 	restore  %g0, %g1, %o0
                        <== NOT EXECUTED
40008b00:	40 00 00 60 	call  40008c80 <_RTEMS_Unlock_allocator>
      <== NOT EXECUTED
40008b04:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
    return RTEMS_TOO_MANY;
                                           
40008b08:	10 bf ff f9 	b  40008aec <rtems_extension_create+0x6c>
     <== NOT EXECUTED
40008b0c:	82 10 20 05 	mov  5, %g1	! 5 <_TLS_Alignment+0x4>
          <== NOT EXECUTED

                                                                     

400070ac <rtems_extension_delete>: #include <rtems/score/userextimpl.h> rtems_status_code rtems_extension_delete( rtems_id id ) {
400070ac:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  _RTEMS_Lock_allocator();
                                           
400070b0:	40 00 00 6d 	call  40007264 <_RTEMS_Lock_allocator>
        
400070b4:	39 10 00 5c 	sethi  %hi(0x40017000), %i4
                   
  _Objects_Free( &_Extension_Information, &the_extension->Object );
  
}
                                                                    

                                                                     
RTEMS_INLINE_ROUTINE Extension_Control *_Extension_Get( Objects_Id id )

{
                                                                    
  return (Extension_Control *)
                                       
400070b8:	90 10 00 18 	mov  %i0, %o0
                                 
    _Objects_Close( &_Extension_Information, &the_extension->Object );

    _User_extensions_Remove_set( &the_extension->Extension );
        
    _Extension_Free( the_extension );
                                
    status = RTEMS_SUCCESSFUL;
                                       
  } else {
                                                           
    status = RTEMS_INVALID_ID;
                                       
400070bc:	b0 10 20 04 	mov  4, %i0
                                   
400070c0:	40 00 09 07 	call  400094dc <_Objects_Get_no_protection>
   
400070c4:	92 17 23 b8 	or  %i4, 0x3b8, %o1
                           
  if ( the_extension != NULL ) {
                                     
400070c8:	80 a2 20 00 	cmp  %o0, 0
                                   
400070cc:	02 80 00 0b 	be  400070f8 <rtems_extension_delete+0x4c>
    <== NEVER TAKEN
400070d0:	ba 10 00 08 	mov  %o0, %i5
                                 
    _Objects_Close( &_Extension_Information, &the_extension->Object );

400070d4:	92 10 00 08 	mov  %o0, %o1
                                 
400070d8:	40 00 07 f1 	call  4000909c <_Objects_Close>
               
400070dc:	90 17 23 b8 	or  %i4, 0x3b8, %o0
                           
    _User_extensions_Remove_set( &the_extension->Extension );
        
400070e0:	40 00 15 36 	call  4000c5b8 <_User_extensions_Remove_set>
  
400070e4:	90 07 60 10 	add  %i5, 0x10, %o0
                           
  _Objects_Free( &_Extension_Information, &the_extension->Object );
  
400070e8:	92 10 00 1d 	mov  %i5, %o1
                                 
400070ec:	90 17 23 b8 	or  %i4, 0x3b8, %o0
                           
400070f0:	40 00 08 b7 	call  400093cc <_Objects_Free>
                
400070f4:	b0 10 20 00 	clr  %i0
                                      
  _RTEMS_Unlock_allocator();
                                         
400070f8:	40 00 00 60 	call  40007278 <_RTEMS_Unlock_allocator>
      
400070fc:	01 00 00 00 	nop 
                                          
  }
                                                                  

                                                                     
  _Objects_Allocator_unlock();
                                       
  return status;
                                                     
}
                                                                    
40007100:	81 c7 e0 08 	ret 
                                          
40007104:	81 e8 00 00 	restore 
                                      

                                                                     

40007034 <rtems_fatal_error_occurred>: #include <rtems/score/interr.h> void rtems_fatal_error_occurred( uint32_t the_error ) {
40007034:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  _Terminate( INTERNAL_ERROR_RTEMS_API, the_error );
                 
40007038:	90 10 20 01 	mov  1, %o0
                                   <== NOT EXECUTED
4000703c:	40 00 02 46 	call  40007954 <_Terminate>
                   <== NOT EXECUTED
40007040:	92 10 00 18 	mov  %i0, %o1
                                 <== NOT EXECUTED
40007044:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

400064e4 <rtems_fatal_source_text>: const char *rtems_fatal_source_text( rtems_fatal_source source ) { size_t i = source; const char *text = "?"; if ( i < RTEMS_ARRAY_SIZE( fatal_source_text ) ) {
400064e4:	80 a2 20 0c 	cmp  %o0, 0xc
                                 <== NOT EXECUTED
400064e8:	18 80 00 06 	bgu  40006500 <rtems_fatal_source_text+0x1c>
  <== NOT EXECUTED
400064ec:	03 10 00 43 	sethi  %hi(0x40010c00), %g1
                   <== NOT EXECUTED
    text = fatal_source_text[ i ];
                                   
400064f0:	91 2a 20 02 	sll  %o0, 2, %o0
                              <== NOT EXECUTED
400064f4:	82 10 63 c0 	or  %g1, 0x3c0, %g1
                           <== NOT EXECUTED
400064f8:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
400064fc:	d0 00 40 08 	ld  [ %g1 + %o0 ], %o0
                        <== NOT EXECUTED
  const char *text = "?";
                                            
40006500:	11 10 00 42 	sethi  %hi(0x40010800), %o0
                   <== NOT EXECUTED
  }
                                                                  

                                                                     
  return text;
                                                       
}
                                                                    
40006504:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
40006508:	90 12 22 f0 	or  %o0, 0x2f0, %o0	! 40010af0 <rtems_filesystem_null_handlers+0x40>
<== NOT EXECUTED

                                                                     

40007048 <rtems_get_version_string>: #include <rtems.h> #include <rtems/system.h> const char *rtems_get_version_string(void) { return _RTEMS_version;
40007048:	11 10 00 60 	sethi  %hi(0x40018000), %o0
                   <== NOT EXECUTED
}
                                                                    
4000704c:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
40007050:	90 12 23 68 	or  %o0, 0x368, %o0	! 40018368 <_RTEMS_version>
<== NOT EXECUTED

                                                                     

40006fe8 <rtems_initialize_executive>: RTEMS_SYSINIT_DEVICE_DRIVERS, RTEMS_SYSINIT_ORDER_MIDDLE ); void rtems_initialize_executive(void) {
40006fe8:	9d e3 bf a0 	save  %sp, -96, %sp
                           

                                                                     
RTEMS_INLINE_ROUTINE uintptr_t _Linker_set_Obfuscate( const void *ptr )

{
                                                                    
  uintptr_t addr;
                                                    

                                                                     
  addr = (uintptr_t) ptr;
                                            
40006fec:	3b 10 00 60 	sethi  %hi(0x40018000), %i5
                   
  const rtems_sysinit_item *item;
                                    

                                                                     
  /* Invoke the registered system initialization handlers */
         
  RTEMS_LINKER_SET_FOREACH( _Sysinit, item ) {
                       
40006ff0:	39 10 00 61 	sethi  %hi(0x40018400), %i4
                   
  RTEMS_OBFUSCATE_VARIABLE( addr );
                                  
40006ff4:	ba 17 63 c0 	or  %i5, 0x3c0, %i5
                           
40006ff8:	b8 17 20 08 	or  %i4, 8, %i4
                               
40006ffc:	80 a7 40 1c 	cmp  %i5, %i4
                                 
40007000:	02 80 00 09 	be  40007024 <rtems_initialize_executive+0x3c>
<== NEVER TAKEN
40007004:	03 10 00 6b 	sethi  %hi(0x4001ac00), %g1
                   
    ( *item->handler )();
                                            
40007008:	c2 07 40 00 	ld  [ %i5 ], %g1
                              
4000700c:	9f c0 40 00 	call  %g1
                                     
40007010:	ba 07 60 04 	add  %i5, 4, %i5
                              
  RTEMS_LINKER_SET_FOREACH( _Sysinit, item ) {
                       
40007014:	80 a7 40 1c 	cmp  %i5, %i4
                                 
40007018:	32 bf ff fd 	bne,a   4000700c <rtems_initialize_executive+0x24>

4000701c:	c2 07 40 00 	ld  [ %i5 ], %g1
                              
  _System_state_Current = state;
                                     
40007020:	03 10 00 6b 	sethi  %hi(0x4001ac00), %g1
                   
40007024:	84 10 20 02 	mov  2, %g2
                                   

                                                                     
  _System_state_Set( SYSTEM_STATE_UP );
                              

                                                                     
  _SMP_Request_start_multitasking();
                                 

                                                                     
  _Thread_Start_multitasking();
                                      
40007028:	40 00 14 d3 	call  4000c374 <_Thread_Start_multitasking>
   
4000702c:	c4 20 61 c4 	st  %g2, [ %g1 + 0x1c4 ]
                      
40007030:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

40006518 <rtems_internal_error_text>: const char *rtems_internal_error_text( rtems_fatal_code error ) { size_t i = error; const char *text = "?"; if ( i < RTEMS_ARRAY_SIZE( internal_error_text ) ) {
40006518:	80 a2 20 27 	cmp  %o0, 0x27
                                <== NOT EXECUTED
4000651c:	18 80 00 06 	bgu  40006534 <rtems_internal_error_text+0x1c>
<== NOT EXECUTED
40006520:	03 10 00 45 	sethi  %hi(0x40011400), %g1
                   <== NOT EXECUTED
    text = internal_error_text[ i ];
                                 
40006524:	91 2a 20 02 	sll  %o0, 2, %o0
                              <== NOT EXECUTED
40006528:	82 10 62 a4 	or  %g1, 0x2a4, %g1
                           <== NOT EXECUTED
4000652c:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
40006530:	d0 00 40 08 	ld  [ %g1 + %o0 ], %o0
                        <== NOT EXECUTED
  const char *text = "?";
                                            
40006534:	11 10 00 42 	sethi  %hi(0x40010800), %o0
                   <== NOT EXECUTED
  }
                                                                  

                                                                     
  return text;
                                                       
}
                                                                    
40006538:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000653c:	90 12 22 f0 	or  %o0, 0x2f0, %o0	! 40010af0 <rtems_filesystem_null_handlers+0x40>
<== NOT EXECUTED

                                                                     

4000e4fc <rtems_io_close>: rtems_status_code rtems_io_close( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) {
4000e4fc:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  rtems_device_driver_entry callout;
                                 

                                                                     
  if ( major >= _IO_Number_of_drivers )
                              
4000e500:	03 10 00 5c 	sethi  %hi(0x40017000), %g1
                   
4000e504:	c2 00 62 e4 	ld  [ %g1 + 0x2e4 ], %g1	! 400172e4 <_IO_Number_of_drivers>

{
                                                                    
4000e508:	90 10 00 18 	mov  %i0, %o0
                                 
  if ( major >= _IO_Number_of_drivers )
                              
4000e50c:	80 a0 40 08 	cmp  %g1, %o0
                                 
4000e510:	08 80 00 11 	bleu  4000e554 <rtems_io_close+0x58>
          <== NEVER TAKEN
4000e514:	b0 10 20 0a 	mov  0xa, %i0
                                 
    return RTEMS_INVALID_NUMBER;
                                     

                                                                     
  callout = _IO_Driver_address_table[major].close_entry;
             
4000e518:	83 2a 20 01 	sll  %o0, 1, %g1
                              
4000e51c:	82 00 40 08 	add  %g1, %o0, %g1
                            
4000e520:	85 28 60 03 	sll  %g1, 3, %g2
                              
4000e524:	03 10 00 65 	sethi  %hi(0x40019400), %g1
                   
4000e528:	82 10 60 6c 	or  %g1, 0x6c, %g1	! 4001946c <_IO_Driver_address_table>

4000e52c:	82 00 40 02 	add  %g1, %g2, %g1
                            
4000e530:	c2 00 60 08 	ld  [ %g1 + 8 ], %g1
                          
  return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;

4000e534:	80 a0 60 00 	cmp  %g1, 0
                                   
4000e538:	02 80 00 06 	be  4000e550 <rtems_io_close+0x54>
            <== NEVER TAKEN
4000e53c:	94 10 00 1a 	mov  %i2, %o2
                                 
4000e540:	9f c0 40 00 	call  %g1
                                     
4000e544:	92 10 00 19 	mov  %i1, %o1
                                 
4000e548:	81 c7 e0 08 	ret 
                                          
4000e54c:	91 e8 00 08 	restore  %g0, %o0, %o0
                        
4000e550:	b0 10 20 00 	clr  %i0
                                      <== NOT EXECUTED
}
                                                                    
4000e554:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000e558:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

4000e55c <rtems_io_control>: rtems_status_code rtems_io_control( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) {
4000e55c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  rtems_device_driver_entry callout;
                                 

                                                                     
  if ( major >= _IO_Number_of_drivers )
                              
4000e560:	03 10 00 5c 	sethi  %hi(0x40017000), %g1
                   <== NOT EXECUTED
4000e564:	c2 00 62 e4 	ld  [ %g1 + 0x2e4 ], %g1	! 400172e4 <_IO_Number_of_drivers>
<== NOT EXECUTED
{
                                                                    
4000e568:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
  if ( major >= _IO_Number_of_drivers )
                              
4000e56c:	80 a0 40 08 	cmp  %g1, %o0
                                 <== NOT EXECUTED
4000e570:	08 80 00 11 	bleu  4000e5b4 <rtems_io_control+0x58>
        <== NOT EXECUTED
4000e574:	b0 10 20 0a 	mov  0xa, %i0
                                 <== NOT EXECUTED
    return RTEMS_INVALID_NUMBER;
                                     

                                                                     
  callout = _IO_Driver_address_table[major].control_entry;
           
4000e578:	83 2a 20 01 	sll  %o0, 1, %g1
                              <== NOT EXECUTED
4000e57c:	82 00 40 08 	add  %g1, %o0, %g1
                            <== NOT EXECUTED
4000e580:	85 28 60 03 	sll  %g1, 3, %g2
                              <== NOT EXECUTED
4000e584:	03 10 00 65 	sethi  %hi(0x40019400), %g1
                   <== NOT EXECUTED
4000e588:	82 10 60 6c 	or  %g1, 0x6c, %g1	! 4001946c <_IO_Driver_address_table>
<== NOT EXECUTED
4000e58c:	82 00 40 02 	add  %g1, %g2, %g1
                            <== NOT EXECUTED
4000e590:	c2 00 60 14 	ld  [ %g1 + 0x14 ], %g1
                       <== NOT EXECUTED
  return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;

4000e594:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000e598:	02 80 00 06 	be  4000e5b0 <rtems_io_control+0x54>
          <== NOT EXECUTED
4000e59c:	94 10 00 1a 	mov  %i2, %o2
                                 <== NOT EXECUTED
4000e5a0:	9f c0 40 00 	call  %g1
                                     <== NOT EXECUTED
4000e5a4:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
4000e5a8:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000e5ac:	91 e8 00 08 	restore  %g0, %o0, %o0
                        <== NOT EXECUTED
4000e5b0:	b0 10 20 00 	clr  %i0
                                      <== NOT EXECUTED
}
                                                                    
4000e5b4:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000e5b8:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

4000e5bc <rtems_io_initialize>: rtems_status_code rtems_io_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) {
4000e5bc:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  rtems_device_driver_entry callout;
                                 

                                                                     
  if ( major >= _IO_Number_of_drivers )
                              
4000e5c0:	03 10 00 5c 	sethi  %hi(0x40017000), %g1
                   
4000e5c4:	c2 00 62 e4 	ld  [ %g1 + 0x2e4 ], %g1	! 400172e4 <_IO_Number_of_drivers>

{
                                                                    
4000e5c8:	90 10 00 18 	mov  %i0, %o0
                                 
  if ( major >= _IO_Number_of_drivers )
                              
4000e5cc:	80 a0 40 08 	cmp  %g1, %o0
                                 
4000e5d0:	08 80 00 10 	bleu  4000e610 <rtems_io_initialize+0x54>
     <== NEVER TAKEN
4000e5d4:	b0 10 20 0a 	mov  0xa, %i0
                                 
    return RTEMS_INVALID_NUMBER;
                                     

                                                                     
  callout = _IO_Driver_address_table[major].initialization_entry;
    
4000e5d8:	83 2a 20 01 	sll  %o0, 1, %g1
                              
4000e5dc:	07 10 00 65 	sethi  %hi(0x40019400), %g3
                   
4000e5e0:	82 00 40 08 	add  %g1, %o0, %g1
                            
4000e5e4:	86 10 e0 6c 	or  %g3, 0x6c, %g3
                            
4000e5e8:	83 28 60 03 	sll  %g1, 3, %g1
                              
4000e5ec:	c2 00 c0 01 	ld  [ %g3 + %g1 ], %g1
                        
  return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;

4000e5f0:	80 a0 60 00 	cmp  %g1, 0
                                   
4000e5f4:	02 80 00 06 	be  4000e60c <rtems_io_initialize+0x50>
       
4000e5f8:	94 10 00 1a 	mov  %i2, %o2
                                 
4000e5fc:	9f c0 40 00 	call  %g1
                                     
4000e600:	92 10 00 19 	mov  %i1, %o1
                                 
4000e604:	81 c7 e0 08 	ret 
                                          
4000e608:	91 e8 00 08 	restore  %g0, %o0, %o0
                        
4000e60c:	b0 10 20 00 	clr  %i0
                                      
}
                                                                    
4000e610:	81 c7 e0 08 	ret 
                                          
4000e614:	81 e8 00 00 	restore 
                                      

                                                                     

4000e618 <rtems_io_open>: rtems_status_code rtems_io_open( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) {
4000e618:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  rtems_device_driver_entry callout;
                                 

                                                                     
  if ( major >= _IO_Number_of_drivers )
                              
4000e61c:	03 10 00 5c 	sethi  %hi(0x40017000), %g1
                   
4000e620:	c2 00 62 e4 	ld  [ %g1 + 0x2e4 ], %g1	! 400172e4 <_IO_Number_of_drivers>

{
                                                                    
4000e624:	90 10 00 18 	mov  %i0, %o0
                                 
  if ( major >= _IO_Number_of_drivers )
                              
4000e628:	80 a0 40 08 	cmp  %g1, %o0
                                 
4000e62c:	08 80 00 11 	bleu  4000e670 <rtems_io_open+0x58>
           <== NEVER TAKEN
4000e630:	b0 10 20 0a 	mov  0xa, %i0
                                 
    return RTEMS_INVALID_NUMBER;
                                     

                                                                     
  callout = _IO_Driver_address_table[major].open_entry;
              
4000e634:	83 2a 20 01 	sll  %o0, 1, %g1
                              
4000e638:	82 00 40 08 	add  %g1, %o0, %g1
                            
4000e63c:	85 28 60 03 	sll  %g1, 3, %g2
                              
4000e640:	03 10 00 65 	sethi  %hi(0x40019400), %g1
                   
4000e644:	82 10 60 6c 	or  %g1, 0x6c, %g1	! 4001946c <_IO_Driver_address_table>

4000e648:	82 00 40 02 	add  %g1, %g2, %g1
                            
4000e64c:	c2 00 60 04 	ld  [ %g1 + 4 ], %g1
                          
  return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;

4000e650:	80 a0 60 00 	cmp  %g1, 0
                                   
4000e654:	02 80 00 06 	be  4000e66c <rtems_io_open+0x54>
             <== NEVER TAKEN
4000e658:	94 10 00 1a 	mov  %i2, %o2
                                 
4000e65c:	9f c0 40 00 	call  %g1
                                     
4000e660:	92 10 00 19 	mov  %i1, %o1
                                 
4000e664:	81 c7 e0 08 	ret 
                                          
4000e668:	91 e8 00 08 	restore  %g0, %o0, %o0
                        
4000e66c:	b0 10 20 00 	clr  %i0
                                      <== NOT EXECUTED
}
                                                                    
4000e670:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000e674:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

4000e678 <rtems_io_read>: rtems_status_code rtems_io_read( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) {
4000e678:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  rtems_device_driver_entry callout;
                                 

                                                                     
  if ( major >= _IO_Number_of_drivers )
                              
4000e67c:	03 10 00 5c 	sethi  %hi(0x40017000), %g1
                   <== NOT EXECUTED
4000e680:	c2 00 62 e4 	ld  [ %g1 + 0x2e4 ], %g1	! 400172e4 <_IO_Number_of_drivers>
<== NOT EXECUTED
{
                                                                    
4000e684:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
  if ( major >= _IO_Number_of_drivers )
                              
4000e688:	80 a0 40 08 	cmp  %g1, %o0
                                 <== NOT EXECUTED
4000e68c:	08 80 00 11 	bleu  4000e6d0 <rtems_io_read+0x58>
           <== NOT EXECUTED
4000e690:	b0 10 20 0a 	mov  0xa, %i0
                                 <== NOT EXECUTED
    return RTEMS_INVALID_NUMBER;
                                     

                                                                     
  callout = _IO_Driver_address_table[major].read_entry;
              
4000e694:	83 2a 20 01 	sll  %o0, 1, %g1
                              <== NOT EXECUTED
4000e698:	82 00 40 08 	add  %g1, %o0, %g1
                            <== NOT EXECUTED
4000e69c:	85 28 60 03 	sll  %g1, 3, %g2
                              <== NOT EXECUTED
4000e6a0:	03 10 00 65 	sethi  %hi(0x40019400), %g1
                   <== NOT EXECUTED
4000e6a4:	82 10 60 6c 	or  %g1, 0x6c, %g1	! 4001946c <_IO_Driver_address_table>
<== NOT EXECUTED
4000e6a8:	82 00 40 02 	add  %g1, %g2, %g1
                            <== NOT EXECUTED
4000e6ac:	c2 00 60 0c 	ld  [ %g1 + 0xc ], %g1
                        <== NOT EXECUTED
  return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;

4000e6b0:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000e6b4:	02 80 00 06 	be  4000e6cc <rtems_io_read+0x54>
             <== NOT EXECUTED
4000e6b8:	94 10 00 1a 	mov  %i2, %o2
                                 <== NOT EXECUTED
4000e6bc:	9f c0 40 00 	call  %g1
                                     <== NOT EXECUTED
4000e6c0:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
4000e6c4:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000e6c8:	91 e8 00 08 	restore  %g0, %o0, %o0
                        <== NOT EXECUTED
4000e6cc:	b0 10 20 00 	clr  %i0
                                      <== NOT EXECUTED
}
                                                                    
4000e6d0:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000e6d4:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

4000e6d8 <rtems_io_write>: rtems_status_code rtems_io_write( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) {
4000e6d8:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  rtems_device_driver_entry callout;
                                 

                                                                     
  if ( major >= _IO_Number_of_drivers )
                              
4000e6dc:	03 10 00 5c 	sethi  %hi(0x40017000), %g1
                   <== NOT EXECUTED
4000e6e0:	c2 00 62 e4 	ld  [ %g1 + 0x2e4 ], %g1	! 400172e4 <_IO_Number_of_drivers>
<== NOT EXECUTED
{
                                                                    
4000e6e4:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
  if ( major >= _IO_Number_of_drivers )
                              
4000e6e8:	80 a0 40 08 	cmp  %g1, %o0
                                 <== NOT EXECUTED
4000e6ec:	08 80 00 11 	bleu  4000e730 <rtems_io_write+0x58>
          <== NOT EXECUTED
4000e6f0:	b0 10 20 0a 	mov  0xa, %i0
                                 <== NOT EXECUTED
    return RTEMS_INVALID_NUMBER;
                                     

                                                                     
  callout = _IO_Driver_address_table[major].write_entry;
             
4000e6f4:	83 2a 20 01 	sll  %o0, 1, %g1
                              <== NOT EXECUTED
4000e6f8:	82 00 40 08 	add  %g1, %o0, %g1
                            <== NOT EXECUTED
4000e6fc:	85 28 60 03 	sll  %g1, 3, %g2
                              <== NOT EXECUTED
4000e700:	03 10 00 65 	sethi  %hi(0x40019400), %g1
                   <== NOT EXECUTED
4000e704:	82 10 60 6c 	or  %g1, 0x6c, %g1	! 4001946c <_IO_Driver_address_table>
<== NOT EXECUTED
4000e708:	82 00 40 02 	add  %g1, %g2, %g1
                            <== NOT EXECUTED
4000e70c:	c2 00 60 10 	ld  [ %g1 + 0x10 ], %g1
                       <== NOT EXECUTED
  return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;

4000e710:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000e714:	02 80 00 06 	be  4000e72c <rtems_io_write+0x54>
            <== NOT EXECUTED
4000e718:	94 10 00 1a 	mov  %i2, %o2
                                 <== NOT EXECUTED
4000e71c:	9f c0 40 00 	call  %g1
                                     <== NOT EXECUTED
4000e720:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
4000e724:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000e728:	91 e8 00 08 	restore  %g0, %o0, %o0
                        <== NOT EXECUTED
4000e72c:	b0 10 20 00 	clr  %i0
                                      <== NOT EXECUTED
}
                                                                    
4000e730:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000e734:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

4000e4e8 <rtems_shutdown_executive>: #include <rtems/init.h> #include <rtems/score/interr.h> void rtems_shutdown_executive( uint32_t result ) {
4000e4e8:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  _Terminate( RTEMS_FATAL_SOURCE_EXIT, result );
                     
4000e4ec:	90 10 20 05 	mov  5, %o0
                                   
4000e4f0:	7f ff e5 19 	call  40007954 <_Terminate>
                   
4000e4f4:	92 10 00 18 	mov  %i0, %o1
                                 
4000e4f8:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

400070a0 <rtems_timecounter_simple_install>: rtems_timecounter_simple *tc, uint32_t frequency_in_hz, uint32_t counter_ticks_per_clock_tick, timecounter_get_t *get_timecount ) {
400070a0:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  uint32_t mask;
                                                     
  uint64_t scaler;
                                                   
  int i;
                                                             

                                                                     
  for ( i = 0; i < 32; ++i ) {
                                       
    if ( power_of_two >= counter_ticks_per_clock_tick ) {
            
400070a4:	80 a6 a0 01 	cmp  %i2, 1
                                   
400070a8:	08 80 00 28 	bleu  40007148 <rtems_timecounter_simple_install+0xa8>
<== NEVER TAKEN
400070ac:	b8 10 00 18 	mov  %i0, %i4
                                 
400070b0:	82 10 20 1f 	mov  0x1f, %g1
                                
      break;
                                                         
    }
                                                                

                                                                     
    power_of_two *= 2;
                                               
400070b4:	10 80 00 05 	b  400070c8 <rtems_timecounter_simple_install+0x28>

400070b8:	90 10 20 02 	mov  2, %o0
                                   
  for ( i = 0; i < 32; ++i ) {
                                       
400070bc:	82 80 7f ff 	addcc  %g1, -1, %g1
                           
400070c0:	02 80 00 1c 	be  40007130 <rtems_timecounter_simple_install+0x90>
<== NEVER TAKEN
400070c4:	90 10 00 02 	mov  %g2, %o0
                                 
    if ( power_of_two >= counter_ticks_per_clock_tick ) {
            
400070c8:	80 a6 80 08 	cmp  %i2, %o0
                                 
400070cc:	18 bf ff fc 	bgu  400070bc <rtems_timecounter_simple_install+0x1c>

400070d0:	85 2a 20 01 	sll  %o0, 1, %g2
                              
400070d4:	21 20 00 00 	sethi  %hi(0x80000000), %l0
                   
400070d8:	ba 00 bf ff 	add  %g2, -1, %i5
                             
400070dc:	a0 2a 00 10 	andn  %o0, %l0, %l0
                           
  }
                                                                  

                                                                     
  mask = ( 2 * power_of_two ) - 1;
                                   
  scaler = ( (uint64_t) power_of_two << 32 ) / counter_ticks_per_clock_tick;

400070e0:	94 10 20 00 	clr  %o2
                                      
400070e4:	96 10 00 1a 	mov  %i2, %o3
                                 
400070e8:	40 00 3c e2 	call  40016470 <__udivdi3>
                    
400070ec:	92 10 20 00 	clr  %o1
                                      
  tc->scaler = scaler;
                                               
  tc->real_interval = counter_ticks_per_clock_tick;
                  
  tc->binary_interval = ( mask + 1 ) / 2;
                            
  tc->tc.tc_get_timecount = get_timecount;
                           
  tc->tc.tc_counter_mask = mask;
                                     
  tc->tc.tc_frequency = (uint32_t) ( ( frequency_in_hz * scaler ) >> 32 );

400070f0:	82 5e 40 08 	smul  %i1, %o0, %g1
                           
400070f4:	86 56 40 09 	umul  %i1, %o1, %g3
                           
400070f8:	85 40 00 00 	rd  %y, %g2
                                   
  tc->scaler = scaler;
                                               
400070fc:	d0 27 20 30 	st  %o0, [ %i4 + 0x30 ]
                       
  tc->tc.tc_frequency = (uint32_t) ( ( frequency_in_hz * scaler ) >> 32 );

40007100:	84 00 40 02 	add  %g1, %g2, %g2
                            
  tc->scaler = scaler;
                                               
40007104:	d2 27 20 34 	st  %o1, [ %i4 + 0x34 ]
                       
  tc->tc.tc_quality = RTEMS_TIMECOUNTER_QUALITY_CLOCK_DRIVER;
        
40007108:	82 10 20 64 	mov  0x64, %g1
                                
  tc->real_interval = counter_ticks_per_clock_tick;
                  
4000710c:	f4 27 20 38 	st  %i2, [ %i4 + 0x38 ]
                       
  tc->binary_interval = ( mask + 1 ) / 2;
                            
40007110:	e0 27 20 3c 	st  %l0, [ %i4 + 0x3c ]
                       
  tc->tc.tc_get_timecount = get_timecount;
                           
40007114:	f6 27 00 00 	st  %i3, [ %i4 ]
                              
  tc->tc.tc_counter_mask = mask;
                                     
40007118:	fa 27 20 08 	st  %i5, [ %i4 + 8 ]
                          
  tc->tc.tc_frequency = (uint32_t) ( ( frequency_in_hz * scaler ) >> 32 );

4000711c:	c4 27 20 14 	st  %g2, [ %i4 + 0x14 ]
                       
40007120:	c0 27 20 10 	clr  [ %i4 + 0x10 ]
                           
  tc->tc.tc_quality = RTEMS_TIMECOUNTER_QUALITY_CLOCK_DRIVER;
        
40007124:	c2 27 20 1c 	st  %g1, [ %i4 + 0x1c ]
                       
  _Timecounter_Install( &tc->tc );
                                   
40007128:	40 00 06 b0 	call  40008be8 <_Timecounter_Install>
         
4000712c:	91 e8 00 1c 	restore  %g0, %i4, %o0
                        
40007130:	85 28 a0 01 	sll  %g2, 1, %g2
                              <== NOT EXECUTED
40007134:	21 1f ff ff 	sethi  %hi(0x7ffffc00), %l0
                   <== NOT EXECUTED
40007138:	ba 00 bf ff 	add  %g2, -1, %i5
                             <== NOT EXECUTED
4000713c:	a0 14 23 ff 	or  %l0, 0x3ff, %l0
                           <== NOT EXECUTED
40007140:	10 bf ff e8 	b  400070e0 <rtems_timecounter_simple_install+0x40>
<== NOT EXECUTED
40007144:	a0 0a 00 10 	and  %o0, %l0, %l0
                            <== NOT EXECUTED
    if ( power_of_two >= counter_ticks_per_clock_tick ) {
            
40007148:	ba 10 20 01 	mov  1, %i5
                                   <== NOT EXECUTED
4000714c:	a0 10 20 01 	mov  1, %l0
                                   <== NOT EXECUTED
40007150:	10 bf ff e4 	b  400070e0 <rtems_timecounter_simple_install+0x40>
<== NOT EXECUTED
40007154:	90 10 20 01 	mov  1, %o0
                                   <== NOT EXECUTED